Bootstrap

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

一,简介

  • 这个教程展示如何安装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库
    在这里插入图片描述

三,使用

创建一个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
在这里插入图片描述
运行roscore:

roscore

五,运行结点

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

rosrun rosserial_python serial_node.py /dev/ttyUSB0

在这里插入图片描述
再开新终端,查看该话题消息:

rostopic echo /chatter

在这里插入图片描述
创建成功

;