我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位
Arduino的版本:Arduino 1.6.11 Linux 32位
Arduino 板子的型号:Arduino UNO R3
使用 的ROS版本:ROS Indigo
下面的步骤,就是编写 Arduino For ROS 程序的模板,即大概步骤。
1 . 下面的头文件必须要有:
#include <ros.h>
2 . 并定义一个 ROS Node Handle :
ros::NodeHandle nh;
3 . 同时添加你需要发布( 或订阅 )的话题中消息类型 头文件:e.g.
#include <std_msgs/String.h>
#include <tf/transform_broadcaster.h>
#include <rosserial_arduino/Adc.h>
4 . 同时定义相关消息变量:
std_msgs::String str_msg;
tf::TransformBroadcaster broadvaster;
rosserial_arduino::Adc adc_msg;
5 . 定义发布器:
ros::Publisher chatter(“chatter”, &str_msg);
6 . 定义订阅器 和 编写回调函数:
void servo_cb(const std_msgs::Uint16& cmd_msg){
//自定义
}
ros::Subscriber<std_msgs::Uint16> sub(“servo”, servo_cb);
7 . 在setup()
函数中初始化ROS Node Handle,并给它添加你定义的发布器:
void setup(){
nh.initNode();
nh.advertise(chatter);
}
8 . 在 loop()
函数中, 更新数据:
void loop(){
char hello[13] = “hello world!”; //获取数据
str_msg.data = hello;
chatter.publish(&str_msg);
nh.spinOnce();
}
运行,一共是两大步:
将程序烧写到 Arduino 板子上。请参考这篇博客:
在 电脑上, 分别开3个终端,执行下面的命令:
1 . 启动 ros 主程序节点:
roscore
2 . 启动 ros 串口监视节点:
rosrun rosserial_python serial_node.py /dev/ttyACM0 # 这个 /dev/ttyACM0 端口根据你的事情情况进行修改
# rosrun rosserial_python serial_node.py [端口名]
3 . 这个命令就要根据你程序的情况而定了。比如对于 来说,这个命令就是: 监听 /chatter
话题:
rostopic echo /chatter