ROS: ROS与Arduino-Arduino IDE 安装和使用
2017-11-06 10:52
369 查看
Arduino IDE 安装说明这个教程展示如何安装arduino IDE和使用rosserial
Arduino和Arduino IDE是进行硬件开发的非常好的辅助工具
rosserial_arduino包可让ROS和ArduinoIDE一起工作
rosserial提供的ROS通讯协议工作在Arduino的UART上,它让Arduino成为标准的ROS节点,可以发布和订阅ROS消息,发布TF转换,获取ROS系统时间。
Ubuntu下的Arduino IDE安装安装Arduino
上面的安装会得到ros_lib,它需要复制到Arduino的开发环境,以启用Arduino与ROS通讯。
linux系统下,生成ros_lib到Linux下的Arduino库目录sketchbook/libraries(一般在用户的根目录下)
生成后在复制到windows系统的Arduino库目录sketchbook/libraries(一般在我的文档里)
检查ros_lib是否安装成功
重启Arduino IDE,查看File->Examples->ros_lib
使用实例:
代码:
下面来看一下代码的解释:
#include <ros.h>
#include <std_msgs/String.h>
上面的两行代码是任何ROS arduino 程序的一部分。你需要包含ros.h和其它可能会用到的消息的头文件。
ros::NodeHandle nh;
创建了一个节点的句柄,它允许我们用来创建发布者和订阅者。这个节点的句柄同样与串口通信有关。
std_msgs::String str_msg;
ros:
ublisher chatter("chatter", &str_msg);
我们需要创建一个将要使用的发布者和订阅者。在上面的两行代码中,我们在话题chatter上创建了一个发布者。第二个参数是被发布者将来用于发布消息的一个消息的引用。
void setup()
{
nh.initNode();
nh.advertise(chatter);
}
在arduino的setup函数中,需要去初始化节点句柄,告知那些话题将会有发布,以及订阅你想收听的话题。
void loop()
{
str_msg.data = hello;
chatter.publish( &str_msg );
nh.spinOnce();
delay(1000);
}
最后在loop函数中,节点在chatter话题上发布了消息“hello world”,并且调用了ros::spinOnce(),也就是说所有ROS通信的回调都被处理。
Arduino和Arduino IDE是进行硬件开发的非常好的辅助工具
rosserial_arduino包可让ROS和ArduinoIDE一起工作
rosserial提供的ROS通讯协议工作在Arduino的UART上,它让Arduino成为标准的ROS节点,可以发布和订阅ROS消息,发布TF转换,获取ROS系统时间。
Ubuntu下的Arduino IDE安装安装Arduino
$ sudo apt-get install arduino启动arduino并进行相关设置, 完成后增加sketchbook/libraries目录等
$ arduinoUbuntu下rosserial arduino软件安装二进制方式安装在ROS工作站(推荐)
sudo apt-get install ros-indigo-rosserial-arduino sudo apt-get install ros-indigo-rosserial rospack profile源码方式安装在ROS工作站
cd <ws>/src git clone https://github.com/ros-drivers/rosserial.git cd <ws> catkin_makews为ROS的工作空间,克隆代码并编译,生成rosserial_msgs用于通讯,生成的ros_lib库放在/Install目录下安装ros_lib到Arduino IDE开发环境
上面的安装会得到ros_lib,它需要复制到Arduino的开发环境,以启用Arduino与ROS通讯。
linux系统下,生成ros_lib到Linux下的Arduino库目录sketchbook/libraries(一般在用户的根目录下)
cd <sketchbook>/libraries rm -rf ros_lib #如之前有,可以先删除 rosrun rosserial_arduino make_libraries.py .windows系统下,先生成ros_lib到linux下的空目录.
生成后在复制到windows系统的Arduino库目录sketchbook/libraries(一般在我的文档里)
mkdir -p <some_empty_directory> cd <some_empty_directory> rosrun rosserial_arduino make_libraries.py .注意:rosrun 命令最后一个"." 代表在当前目录下生成。
检查ros_lib是否安装成功
重启Arduino IDE,查看File->Examples->ros_lib
使用实例:
代码:
/* * 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); }
下面来看一下代码的解释:
#include <ros.h>
#include <std_msgs/String.h>
上面的两行代码是任何ROS arduino 程序的一部分。你需要包含ros.h和其它可能会用到的消息的头文件。
ros::NodeHandle nh;
创建了一个节点的句柄,它允许我们用来创建发布者和订阅者。这个节点的句柄同样与串口通信有关。
std_msgs::String str_msg;
ros:
ublisher chatter("chatter", &str_msg);
我们需要创建一个将要使用的发布者和订阅者。在上面的两行代码中,我们在话题chatter上创建了一个发布者。第二个参数是被发布者将来用于发布消息的一个消息的引用。
void setup()
{
nh.initNode();
nh.advertise(chatter);
}
在arduino的setup函数中,需要去初始化节点句柄,告知那些话题将会有发布,以及订阅你想收听的话题。
void loop()
{
str_msg.data = hello;
chatter.publish( &str_msg );
nh.spinOnce();
delay(1000);
}
最后在loop函数中,节点在chatter话题上发布了消息“hello world”,并且调用了ros::spinOnce(),也就是说所有ROS通信的回调都被处理。
相关文章推荐
- 机器人操作系统(ROS)教程19:安装ARDUINO IDE使用rosserial
- ROS学习(十七)安装ARDUINO IDE使用rosserial
- ros_arduino_bridge的安装及使用
- ROS IDE - RoboWare Studio 安装与使用教程
- WIN7下使用sublime text3替代arduino IDE(安装方法和所遇到的问题)
- ROS-kinetic 与Arduino-Arduino IDE 安装
- arduino 2560不能安装驱动或者安装驱动后不能使用的解决办法
- Ulipad——python IDE的安装使用
- 快速上手Spring--4.安装和使用IDE
- 使用带Arduino IDE & WIZ820io的ATmega1284P
- Eclipse Java EE IDE for Web Developers安装使用【转载】
- Code::Blocks IDE安装使用
- 【Linux软件安装】Ubuntu 12.04:Arduino IDE
- 在ROS中使用Arduino
- MEMO:Sphinx学习笔记——安装与使用入门(+在ROS中的使用)
- sata硬盘使用IDE模式安装WinXP,Win7,Win8之后切换回AHCI模式的方法
- Ubuntu安装Arduino及使用Emacs开发
- Arduino入门教程--课前准备--Arduino驱动安装及1.0 IDE菜单介绍
- 在服务器有IDE光驱的情况下使用光驱安装RAID驱动