查看: 5750|回复: 2

[经验] 【FirePrime】通过arduino学习ROS系列1来自Arduino的问候

[复制链接]
  • TA的每日心情
    奋斗
    2018-11-15 08:49
  • 签到天数: 1031 天

    连续签到: 2 天

    [LV.10]以坛为家III

    发表于 2015-10-10 12:38:13 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 liuyu-419812 于 2015-10-10 13:37 编辑


          参考:http://wiki.ros.org/rosserial_arduino/Tutorials/Hello%20World
          我们将以在我们的Arduino上创建一个“Hello World”程序来开始我们的rosserial探索之旅。通过选择Arduino examples菜单的ros_lib->HelloWorld,可以获得代码。
          代码如下:
    1. /*
    2. * rosserial Publisher Example
    3. * Prints "hello world!"
    4. */
    5. #include <ros.h>
    6. #include <std_msgs/String.h>
    7. ros::NodeHandle nh;
    8. std_msgs::String str_msg;
    9. ros::Publisher chatter("chatter", &str_msg);
    10. char hello[13] = "hello world!";
    11. void setup()
    12. {
    13.   nh.initNode();
    14.   nh.advertise(chatter);
    15. }
    16. void loop(){
    17.   str_msg.data = hello;  
    18.   chatter.publish( &str_msg );
    19.   nh.spinOnce();
    20.   delay(1000);
    21. }
    复制代码
          代码说明:
    1. #include <ros.h>
    2. #include <std_msgs/String.h>
    复制代码
          作为每一个ROS Arduino程序的一部分,需要包含ros.h头文件和会使用到的任何信息的头文件。为了在代码中使用rosserial库,必须首先放置
          #include  <ros.h>
          先于包含任何其他和ROS相关的头文件,如:
          #include <std_msgs/String.h>
          否则,Arduino IDE不能定位到它们。
    1. ros::NodeHandle nh;
    复制代码
          接着我们将实例化一个节点句柄,允许我们的程序创建发布者和订阅者。注意,节点需要通过串口通信。
    1. std_msgs::String str_msg;
    2. ros::Publisher chatter(“chatter”,&str_msg);
    复制代码
          我们需要实例化我们将会使用到的发布者和订阅者。这里我们实例化主题名为“chatter”的发布者。发布者的第二个参数是用于发布的消息实例的引用。
    1. void setup()
    2. {
    3. nh.initNode();
    4. nh.advertise(chatter);
    5. }
    复制代码
          在Arduino setup()函数里,需要初始化ROS节点句柄,广播将要发布的任何主题,订阅你想监听的任何主题。
    1. void loop()
    2. {
    3. str_msg.data = hello;
    4. chatter.publish( &str_msg );
    5. nh.spinOnce();
    6. delay(1000);
    7. }
    复制代码
            最后,在loop函数里,节点发布“Hello World”,并调用spinOnce(),在这个函数里处理所有的ROS通信回掉。
        上传代码到Arduino里。这与上传其他任何sketch相同。
           运行代码:
           现在,在新的terminal窗口,启动roscore
    1. roscore
    复制代码
          接着,在新的窗口运行rosserial客户端程序,将你的Arduino消息传到ROSPython需要安装串口模块,如果没有安装的话,使用下面的命令:
    1. sudo apt-get install python-serial
    复制代码
          可能需要执行下面的指令:
    1. source ~/<ws>/install/setup.bash
    复制代码
          <ws>为你安装rosserial的工作空间
          确保使用正确的串口:
    1. rosrun rosserial_python serial_node.py/dev/ttyACM0
    复制代码
    P51010-121205.jpg
          最后,启动一个窗口并输入:
    1. rostopic echo chatter
    复制代码
          查看来自Arduino的问候。

    P51010-121154.jpg
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-9-22 22:20
  • 签到天数: 944 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-10-10 14:19:43 | 显示全部楼层
    最近开始学习ros,但真心不知道该怎么下手,希望版主可以分享更多的经验
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-11-15 08:49
  • 签到天数: 1031 天

    连续签到: 2 天

    [LV.10]以坛为家III

     楼主| 发表于 2015-10-10 16:54:23 | 显示全部楼层
    9robot 发表于 2015-10-10 14:19
    最近开始学习ros,但真心不知道该怎么下手,希望版主可以分享更多的经验

    我也是小白,一起学习
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 21:33 , Processed in 0.151557 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.