【基于ROS Melodic环境安装rosserial arduino】
- 1. 简介
- 2. 安装
- 2.1 Ubuntu下的Arduino IDE安装
- 2.2 Ubuntu下rosserial arduino软件安装
- 2.3 安装ros_lib到Arduino IDE开发环境
- 3. 将ros_lib配置到 Arduino 环境库中
- 4. 使用helloword
- 5. 实验验证
- 6.总结
1. 简介
- 这个教程展示如何安装arduino IDE和使用rosserial
- Arduino和Arduino IDE是进行硬件开发的非常好的辅助工具
- rosserial_arduino包可让ROS和ArduinoIDE一起工作
- rosserial提供的ROS通讯协议工作在Arduino的UART上,它让Arduino成为标准的ROS节-点,可以发布和订阅ROS消息,发布TF转换,获取ROS系统时间
- 通过arduino ide将编写好的程序上传到arduino,ROS通过串口运行该arduino结点
ROS环境配置参考:【1. ubuntu18.04安装ROS Melodic】
2. 安装
Arduino 和 Arduino IDE 是快速轻松地对硬件进行编程的绝佳工具。使用rosserial_arduino包,您可以直接将ROS与Arduino IDE一起使用。rosserial提供了一个ROS通信协议,可以在Arduino的UART上运行。它允许你的Arduino成为一个成熟的ROS节点,可以直接发布和订阅ROS消息,发布TF转换,并获取ROS系统时间。
注意:如果您尚未安装 Arduino IDE,请从 Arduino 网站下载。最好将应用程序安装到应用程序 PATH、桌面或主文件夹上的文件夹中。安装后,启动应用程序以选择您的素描本位置。(参见arduino官方网站,sketchbook是存储程序或草图的标准位置)。完成后关闭 IDE。
我们的 ROS 绑定作为 Arduino 库实现。与所有Arduino库一样,ros_lib将其库实现放入素描本的库文件夹中。如果您的素描簿中还没有库文件夹,请创建一个。然后,您可以使用以下说明安装库。
为了在您自己的代码中使用 rosserial 库,您必须首先将
#include <ros.h>
在包含任何其他头文件之前,例如
#include <std_msgs/String.h>
否则,Arduino IDE将无法找到它们。
2.1 Ubuntu下的Arduino IDE安装
去官网下载最新arduino(1.8.19),Ubuntu18.04不支持安装2.0
https://www.arduino.cc/en/software
然后解压安装
cd arduino-1.8.19/
ll
sudo ./install.sh
解决方法是:插上你的arduino到电脑的USB上,在命令行里运行:
dmesg | tail# 初始化设备
ls -l /dev/ttyUSB0#这个0就是上面检测到的
sudo usermod -a -G dialout name#这里的name是自己电脑用户的名字
ls -ld /run/lock#锁定设备
sudo chmod +rwx /run/lock# 添加🔓权限
sudo chmod 777 /dev/ttyUSB0# 添加端口权限
2.在ubuntu下,预置安装了一个叫brltty的程序与Arduino有冲突,卸载即可。这个东西是为盲人设计的,所以大可放心卸载,没有什么问题。卸载完重启电脑。
sudo apt-get remove brltty
打开Arduino
arduino
测试blink
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
在工具中绑定端口和开发板,点击上传妙传
开发板就会闪烁
2.2 Ubuntu下rosserial arduino软件安装
您可以通过运行以下命令为 Arduino 安装 rosserial :
sudo apt-get install ros-melodic-rosserial-arduino
sudo apt-get install ros-melodic-rosserial
2.3 安装ros_lib到Arduino IDE开发环境
上面的安装会得到ros_lib,它需要复制到Arduino的开发环境,以启用Arduino与ROS通讯。Rosserial自时髦版本以来就被猫化了,工作流程与Fuerte和早期版本略有不同。与其在要使用的每个包上运行库生成器,不如运行一次并为所有已安装的消息生成库。在下面的说明中,<arduino_ws> 表示您的 catkin 工作区。
conda deactivate
mkdir -p arduino_ws/src
cd ~/arduino_ws/src/
git clone https://github.com/ros-drivers/rosserial.git
cd arduino_ws
catkin_make
catkin_make install
这些命令从 github 存储库克隆 rosserial,生成通信所需的rosserial_msgs,并在 /devel/lib 目录中创建库文件。
注意:目前您必须运行catkin_make安装,否则ros_lib目录的某些部分将丢失。希望这将很快得到解决。
3. 将ros_lib配置到 Arduino 环境库中
前面的安装步骤创建了必要的库,现在下面的步骤将创建Arduino构建环境所需的ros_lib文件夹,以使Arduino程序能够与ROS交互。
在以下步骤中,是Linux Arduino环境保存草图的目录。通常,这是主目录中称为素描簿或Arduino的目录。例如 cd ~/Arduino/libraries
conda deactivate
cd Arduino/libraries
rm -rf ros_lib
rosrun rosserial_arduino make_libraries.py .
注意:目前您可以直接在Arduino IDE中安装Arduino libaries。只需从 Sketch -> 包含库 -> 管理库“中的 IDE 菜单中打开库管理器。然后搜索“rosserial”。如果您需要处理Arduino草图,但又不想设置完整的ROS工作站,这将非常有用。而其需要在python2.7环境
4. 使用helloword
打开example>ros_lib>helloworld,创建一个helloword的话题
helloworld.ino
/*
* 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
5. 实验验证
运行roscore:
roscore
运行结点
开新终端运行结点(这里我的arduino串口为/dev/ttyUSB0):
conda deactivate
rosrun rosserial_python serial_node.py /dev/ttyUSB0
再开新终端,查看该话题消息:
rostopic echo /chatter
创建成功
消息通讯机制
rqt_graph
6.总结
首先配置了arduino匹配的ROS环境,通过arduino 将编写好的程序上传到Uno,ROS通过串口运行该arduino结点,打印hello word
.非常感谢你的阅读,如果有任何问题请在下面流言!!!
本文学习了Arduino与ros通讯,我会作树莓派小车,后期会分享更多有趣的操作从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。✨✨✨
参考文献:
- rosserial arduino的安装及使用
- Arduino IDE Setup
- Ubuntu下Arduino中Serial port不能识别的问题