在ROS中使用Arduino

让我们首先来看一下如何在ROS中使用Arduino。

现在其实我们已经一步一步迈入实用阶段了。使用传感器是创建你自己机器人的第一步。


Arduino环境的搭建

Arduino的搭建相当简单。 

1. 从arduino.cc/en/Main/Software下载最新的IDE。在你的系统中解压。

2. 执行以下命令让你的帐号可以打开串口设备

sudo adduser yourname dialout

3. 连接你的Arduino设备,进行测试

如果你的Sketch的Tool > Port 菜单不为灰色的话,选中他,然后你的Arduino可以正常使用了。


键入下列代码,

首先编译 Sketch > Verify/Compile

然后上传到你的Arduino File > Upload

const unsigned int LED_PIN = 13;
const unsigned int PAUSE = 10000;
void setup(){
  pinMode(LED_PIN,OUTPUT);
}

void loop(){
  digitalWrite(LED_PIN,HIGH);
  delay(PAUSE);
  digitalWrite(LED_PIN,LOW);
  delay(PAUSE);
}

你会看到板子上的红灯以10秒为周期闪灭。


在ROS中使用Arduino

你现在终于让Arduino在你的环境里面工作了,让我们在Arduino中使用ROS的库吧。

1. 安装ROS相关包

sudo apt-get install ros-hydro-rosserial-arduino
cd /opt/ros/hydro/share/rosserial_arduino/
./make_libraries.py <sketchbook>/libraries/

2. 第一个程序

从下列工程中找到example5_1.ino

 https://github.com/AaronMR/Learning_ROS_for_Robotics_Programming

编译并上传到你的Arduino

在你的终端分别运行下列命令:

终端1

roscore

终端2 (注意ttyACM0的设备名可能根据你使用的Arduino不同而不同,可以用Sketch确认)

rosrun rosserial_python serial_node.py /dev/ttyACM0

终端3

rostopic echo /chatter

然后你就会从终端3上得到以下Log的循环输出

data: chapter4_tutorials
---
data: chapter4_tutorials
---
data: chapter4_tutorials
---
data: chapter4_tutorials
---

3. 第二个程序。

example5_1相当简单易懂我们就不再做说明,现在来看一下example5_2

这下我们终于可以干些和硬件相关的活了。

终端1和终端2的命令不变

在程序里,我们可以看到只要接收到/toggle_led topic的消息,我们就会改变红色LED的明亮状态。

void messageCb( const std_msgs::Empty& toggle_msg){
  digitalWrite(13, HIGH-digitalRead(13));   // blink the led
}

ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );

所以在终端3中我们的命令是

rostopic pub toggle_led std_msgs/Empty -r 0.5

即每2秒发送一个空命令。随着终端3的命令,我们可以看到Arduino的LED周期性的闪烁了。


Arduino支持的传感器很多,相信很快你就能从ROS中获取各种各样的传感器数据了。那么,下一步你想要干什么呢?

参考文档:

Learning ROS for Robotics Programming》 Chapter 4

猜你喜欢

转载自blog.csdn.net/u013506236/article/details/18867973
今日推荐