否则,
Arduino IDE不能定位到它们。 接着我们将实例化一个节点句柄,允许我们的程序创建发布者和订阅者。注意,节点需要通过串口通信。
- std_msgs::String str_msg;
- ros::Publisher chatter(“chatter”,&str_msg);
复制代码 我们需要实例化我们将会使用到的发布者和订阅者。这里我们实例化主题名为“
chatter”的发布者。发布者的第二个参数是用于发布的消息实例的引用。- void setup()
- {
- nh.initNode();
- nh.advertise(chatter);
- }
复制代码 在
Arduino setup()函数里,需要初始化ROS节点句柄,广播将要发布的任何主题,订阅你想监听的任何主题。- void loop()
- {
- str_msg.data = hello;
- chatter.publish( &str_msg );
- nh.spinOnce();
- delay(1000);
- }
复制代码最后,在loop函数里,节点发布“Hello World”,并调用spinOnce(),在这个函数里处理所有的ROS通信回掉。
上传代码到Arduino里。这与上传其他任何sketch相同。
运行代码:
现在,在新的
terminal窗口,启动roscore 接着,在新的窗口运行
rosserial客户端程序,将你的Arduino消息传到ROS。Python需要安装串口模块,如果没有安装的话,使用下面的命令:- sudo apt-get install python-serial
复制代码可能需要执行下面的指令:
- source ~/<ws>/install/setup.bash
复制代码 <ws>为你安装rosserial的工作空间
确保使用正确的串口:
- rosrun rosserial_python serial_node.py/dev/ttyACM0
复制代码 最后,启动一个窗口并输入: