rosserial_arduino包可让ROS和ArduinoIDE一起工作 rosserial提供的ROS通讯协议工作在Arduino的UART上,它让Arduino成为标准的ROS节点,可以发布和订阅ROS消息,发布TF转换,获取ROS系统时间。 Arduino IDE安装 安装Arduino
sudo apt-get install arduino
安装ROS-SERIAL功能包
sudo apt-get install ros-kinetic-rosserial-arduino
sudo apt-get install ros-kinetic-rosserial
rosstack profile
安装ROS-SERIAL库到arduino中 首先需要打开Ardunio查看一下库程序的位置 下图的/home/shibo/sketchbook就是库在我电脑上的位置
找好位置后,进入此空间复制库文件
cd sketchbook/libraries
rm -rf ros_lib
rosrun rosserial_arduino make_libraries.py .
(此处注意最后面一个才书为“.”代表当前位置) 完成之后重启Arduino IDE就能看到ros_lib库了
把下面这个代码烧进Arduino,也就是ros_lib中的helloword例程,我在下面给大家略微注释一下
/*
* rosserial Publisher Example
* Prints "hello world!"
*/
//两个头文件,一个是ros.h头文件。这个是必需的。另一个是std_msgs/String.h头文件,是消息程序包。用于节点之间发送消息功能。
#include <ros.h>
#include <std_msgs/String.h>
//创建节点句柄
ros::NodeHandle nh;
// 声明一个消息对象str_msg。其参数为data内容为消息内容。
std_msgs::String str_msg;
// 发布一个话题,名字叫做chatter,消息内容
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 );//发布一个消息 话题.publish(&消息)
nh.spinOnce();
delay(1000);
}
接下来打开终端 分别运行 1.把ros master请出来
roscore
2.新终端运行,/dev/ttyUSB0为Arduino设备
rosrun rosserial_python serial_node.py /dev/ttyUSB0
3.显示主题chatter,获取Arduino板反馈的信息
rostopic echo chatter
可以看我下一篇:ROS中话题的订阅与发布+ROS下上位机与Arduino单片机通讯