【基于ROS Melodic环境安装rosserial arduino】

简介: 【基于ROS Melodic环境安装rosserial arduino】

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结点

1.png

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

2.png

然后解压安装


cd arduino-1.8.19/
ll
sudo ./install.sh

3.png

解决方法是:插上你的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
}

4.png

在工具中绑定端口和开发板,点击上传妙传

开发板就会闪烁


2.2 Ubuntu下rosserial arduino软件安装

您可以通过运行以下命令为 Arduino 安装 rosserial :



sudo apt-get install ros-melodic-rosserial-arduino
sudo apt-get install ros-melodic-rosserial

5.png


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


7.png


这些命令从 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 .

8.png


注意:目前您可以直接在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);
}

9.png

使用arduino ide上传到arduino

10.png


5. 实验验证

运行roscore:



roscore

运行结点


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



conda deactivate
rosrun rosserial_python serial_node.py /dev/ttyUSB0

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


rostopic echo /chatter

11.png

创建成功

消息通讯机制



rqt_graph

12.png


6.总结

首先配置了arduino匹配的ROS环境,通过arduino 将编写好的程序上传到Uno,ROS通过串口运行该arduino结点,打印hello word.非常感谢你的阅读,如果有任何问题请在下面流言!!!


本文学习了Arduino与ros通讯,我会作树莓派小车,后期会分享更多有趣的操作从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。✨✨✨


参考文献:

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
9月前
|
Python
Ubuntu18.04 ROS Melodic安装和卸载
Ubuntu18.04 ROS Melodic安装和卸载简单过程
191 0
|
11月前
|
Ubuntu Python
ROS Melodic Arbotix报错
ROS Melodic Arbotix报错
|
11月前
|
IDE Ubuntu 机器人
Ubuntu 18.04 配置Ros melodic
Ubuntu 18.04 配置Ros melodic
ros/melodic/include/sensor_msgs中激光雷达的数据结构
ros/melodic/include/sensor_msgs中激光雷达的数据结构
60 0
【1. ubuntu18.04安装ROS Melodic】
【1. ubuntu18.04安装ROS Melodic】
218 0
|
Ubuntu Linux
Ubuntu 18.04.05 LTS配置ROS Melodic各种问题详细解决(填坑)
Ubuntu 18.04.05 LTS配置ROS Melodic各种问题详细解决(填坑)
207 0
Ubuntu 18.04.05 LTS配置ROS Melodic各种问题详细解决(填坑)
解决安装 ROS Melodic 后终端出现NameError: name ‘reload‘ is not defined的问题
解决安装 ROS Melodic 后终端出现NameError: name ‘reload‘ is not defined的问题
104 0
ROS Melodic安装教程
ROS Melodic安装教程
217 0
|
存储 传感器 编解码
ROS Melodic中costmap2D详解(下)
ROS Melodic中costmap2D详解(下)
1028 0
ROS Melodic中costmap2D详解(下)
|
传感器 存储 数据可视化
ROS Melodic中costmap2D详解(上)
ROS Melodic中costmap2D详解(上)
ROS Melodic中costmap2D详解(上)

推荐镜像

更多