树莓派ubuntu20.04实现ROS noetic与Arduino通信
基于个人笔记本(主机)与树莓派ubuntu(从机)的分布式ROS系统(如何设置分布式ROS可以参考本人另一篇文章:ROS的多机通信 pc端 (主机) 树莓派 (从机)//hosts文件自动还原的解决方案),将树莓派与Arduino通过USB接口连接,并安装rosserial arduino功能包,实现在个人笔记本发布指令,远程操控与Arduino连接的舵机、电机等。
1.在树莓派ubuntu系统安装Arduino IDE
到arduino官网下载比较新的Arduino IDE安装包:Arduino官网
选择Linux ARM 64版本,下载完将压缩文件提取到文件夹,在Arduino-1.8.19文件夹中打开终端
sudo bash install.sh
等待一段时间后即可完成安装。
2.配置ROS与Arduino通讯的功能包
安装软件包rosserial arduino
sudo apt-get install ros-noetic-rosserial-arduino
sudo apt-get install ros-noetic-rosserial
安装完成后运行ROS
roscore
新开一个终端,运行
rosrun rosserial_arduino make_libraries.py [PathToYourSketchbookLibraries]
下载与ROS相关的文件到主目录下的PathToYourSketchbookLibraries文件夹
然后,打开PathToYourSketchbookLibraries文件夹,将ros_lib文件夹复制到主目录/Arduino/libraries中最后,删除PathToYourSketchbookLibraries文件夹。
3.分布式ROS与Arduino通讯
将树莓派与Arduino通过USB连接,将Arduino接收话题的代码通过Arduino IDE烧录到Arduino,并在IDE通过串口功能栏查看Arduino占用的树莓派的端口名称(/dev/ttyUSB0或者/dev/ttyACM0)。
然后在个人笔记本开启三个新终端,第一个终端启动ROS,第二个终端通过ssh功能包远程操控树莓派ubuntu,第三个终端运行ROS发布话题功能包,运行功能包后在第二个终端运行:
rosrun rosserial_python serial_node.py /dev/ttyUSB0
(如果在IDE查看的端口是/dev/ttyACM0,就把上面代码最后替换为/dev/ttyACM0)
运行成功后,即可在个人笔记本远程操控Arduino。
注:如果先运行rosserial,再运行ROS发布话题功能包,可能无法正常通讯,暂未发现原因。
参考文章:
ubuntu20.04实现ROS noetic与arduino通信