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

news/2024/10/17 16:25:48/

【基于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

/*BlinkTurns 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 ZEROit is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set tothe 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 Arduinomodel, check the Technical Specs of your board at:https://www.arduino.cc/en/Main/Productsmodified 8 May 2014by Scott Fitzgeraldmodified 2 Sep 2016by Arturo Guadalupimodified 8 Sep 2016by Colby NewmanThis 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 seconddigitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOWdelay(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不能识别的问题

http://www.ppmy.cn/news/86650.html

相关文章

总结879

学习目标&#xff1a; 月目标&#xff1a;5月&#xff08;1800基础部分&#xff0c;背诵15篇短文&#xff0c;熟词僻义300词基础词&#xff09; 周目标&#xff1a;1800高等数学部分并完成错题记录&#xff0c;英语背3篇文章并回诵 每日必复习&#xff08;5分钟&#xff09; …

react介绍,react语法,react高级特性,react编程技巧

React是一个用于构建用户界面的JavaScript库。它由Facebook开发&#xff0c;于2013年首次发布。React的主要目标是提高应用程序的性能和可维护性。React采用了一种称为“组件”的模式&#xff0c;使开发人员可以将应用程序拆分为小而独立的部分&#xff0c;从而更容易编写和维护…

5.22牛客做题

链表头尾指针 判断&#xff1a;在表头和表尾都可能有元素被插入的情况下&#xff0c;在单循环链表中设置尾指针比设置头指针好。 &#xff08; &#xff09; 正确。原因如下&#xff1a; 在设置尾指针时&#xff0c;对于链表的头插和尾插操作都可以在O(1)时间复杂度内完成。 …

运营-18.积分体系概念

积分体系是一种通过平台补贴来提升用户忠诚度、为平台各项业务的导流的运营手段&#xff1b; 作用 1. 积分体系可以引导用户逐渐投入沉没成本&#xff0c;包括时间、精力和金钱&#xff1b; 2. 沉没成本越高&#xff0c;用户越难以离开&#xff1b; 3. 积分体系可以给其他业务导…

类和对象【3】初始化列表

全文目录 引言初始化列表定义特性 总结 引言 上一篇文章中介绍了构造函数&#xff0c;它可以在实例化一个类对象的时候自动调用&#xff0c;以初始化类对象&#xff1a; 戳我看默认成员函数详解 但是&#xff0c;不难发现&#xff0c;在构造函数体中对成员变量的初始化其实是属…

Toolformer and Tool Learning(LLMs如何使用工具)

大模型的能力让学术和工业界都对通用人工智能的未来充满幻想&#xff0c;在前一篇博文中已经粗略介绍&#xff0c; Augmented Language Models&#xff08;增强语言模型&#xff09; ALM的两大思路是推理和工具&#xff0c;本篇博文整理两篇关于Toolformer或Tool Learning的论…

【CH32】| 02——常用外设 | GPIO

系列文章目录 【CH32】| 00——开发环境搭建 【CH32】| 01——新建工程 | 下载 | 运行 |调试 【CH32】| 02——常用外设 | GPIO 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 前言1. GPIO简介2. IO口的内部结构框图保护二极管上下拉电阻施密特触发器两个MOS管输出寄存器…

STM8 使用74HC164外扩IO

背景 在嵌入式开发过程中&#xff0c;经常使用时、甚至设计时候&#xff0c;考虑成本等因素&#xff0c;需要外扩IO。这里就是使用STM8S003F3P6&#xff0c;这个芯片比较常用的&#xff0c;这个芯片封装很小&#xff0c;只有20个管脚的MCU&#xff0c;实际产品上用的非常多。 …