一,简介

  • 这个教程展示如何安装arduino IDE和使用rosserial
  • Arduino和Arduino IDE是进行硬件开发的非常好的辅助工具
  • rosserial_arduino包可让ROS和ArduinoIDE一起工作
  • rosserial提供的ROS通讯协议工作在Arduino的UART上,它让Arduino成为标准的ROS节-点,可以发布和订阅ROS消息,发布TF转换,获取ROS系统时间
  • 通过arduino ide将编写好的程序上传到arduino,ROS通过串口运行该arduino结点

二,安装

1,Ubuntu下的Arduino IDE安装

安装Arduino

$ sudo apt-get install arduino

启动arduino并进行相关设置, 完成后增加sketchbook/libraries目录等

$ arduino

2,Ubuntu下rosserial arduino软件安装

sudo apt-get install ros-indigo-rosserial-arduino
sudo apt-get install ros-indigo-rosserial
rospack profile

3,安装ros_lib到Arduino IDE开发环境

  • 上面的安装会得到ros_lib,它需要复制到Arduino的开发环境,以启用Arduino与ROS通讯。
  • linux系统下,生成ros_lib到Linux下的Arduino库目录sketchbook/libraries(一般在用户的根目录下)
  • ​cd Arduino/libraries/​
  • ​rm -rf ros_lib #如之前有,可以先删除​
  • ​rosrun rosserial_arduino make_libraries.py .​4,检查ros_lib是否安装成功
    重启Arduino IDE,查看Sketch->includeLibrary->ros_lib 导入ROS库
  • rosserial arduino的安装及使用(ROS控制arduino,arduino创建ROS结点)_开发环境

三,使用

创建一个helloword的话题

/*
* 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);
}

使用arduino ide上传到arduino

rosserial arduino的安装及使用(ROS控制arduino,arduino创建ROS结点)_Ubuntu_02


运行roscore:

roscore

五,运行结点

开新终端运行结点(这里我的arduino串口为/dev/ttyUSB0):

rosrun rosserial_python serial_node.py /dev/ttyUSB0

rosserial arduino的安装及使用(ROS控制arduino,arduino创建ROS结点)_结点_03


再开新终端,查看该话题消息:

rostopic echo /chatter

rosserial arduino的安装及使用(ROS控制arduino,arduino创建ROS结点)_开发环境_04


创建成功