ROS与Arduino学习(二)HelloWorld
ROS与Arduino学习(二)HelloWorld
Tutorial Level:准备工作
Next Tutorial:订阅与发布
本节我们开始解读第一个历程,HelloWorld往是每一个编程者使用一个新的编译环境的第一个程序,意味着睁眼看世界。
代码如下:
/* * rosserial Publisher Example * Prints "hello world!" */ #include <ros.h> #include <std_msgs/String.h> ros::NodeHandle nh; std_msgs::String str_msg; ros::Publisher chatter("chatter", &str_msg); char hello[13] = "hello world!"; void setup() { nh.initNode(); nh.advertise(chatter); } void loop() { str_msg.data = hello; chatter.publish( &str_msg ); nh.spinOnce(); delay(1000); }
Tips 1 头文件
两个头文件,一个是ros.h头文件。这个是必需的。另一个是std_msgs/String.h头文件,是消息程序包。用于节点之间发送消息功能。
Tips 2 声明
1句柄
ros::NodeHandle nh;
生成节点句柄
2话题
ros::Publisher chatter("chatter", &str_msg);
发布一个话题,名字叫做chatter,消息内容
3消息对象
std_msgs::String str_msg;
声明一个消息对象str_msg。其参数为data内容为消息内容。
Tips 3 发布消息
chatter.publish( &str_msg );
发布一个消息 话题.publish(&消息)
接下来要运行程序,和我们windows中操作一致,用串口就可以下载。下载进去我们做一个简单的测试,用我们的PC看一下这个话题的消息。
- 运行roscore
$ roscore
- 新终端运行,/dev/ttyUSB0为Arduino设备
rosrun rosserial_python serial_node.py /dev/ttyUSB0
或
rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0
- 显示主题chatter,获取Arduino板反馈的信息
rostopic echo chatter
在此可能会遇到一些问题。参考下面处理
/dev/ttyUSB0 permission denied