Firefly开源社区

打印 上一主题 下一主题

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

117

积分

0

威望

0

贡献

技术小白

积分
117

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

发表于 2015-10-16 15:26:15      浏览:7329 | 回复:0        打印      只看该作者   [复制链接] 楼主
参考: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
复制代码
    最后,启动一个窗口并输入:
  1. rostopic echo chatter
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表