关于ROS和Arduino通信方式,刚开始大多使用的是rosserial_arduino这个库,随后又诞生了一个新的库名为ros_arduino_bridge,两者对比如下:
rosserial_arduino:由于将Arduino内的程序写成ros节点形式,所以能够快速的通过ROS控制Arduino,并且可以忽略通信协议层,与之相同的还有rosserial_stm32f1库,但是由于将Arduino作为ROS节点,不可避免的产生通信延时较大的问题,而且运行该库是通过rosserial_python包内的serial_node.py启动,该脚本使用了tcpip协议,有点大材小用,uno速率会跟不上,导致启动过程中一崩溃很难在连接上的问题,学习ROS可以使用。
ros_arduino_bridge:是自定义通信协议方式来与Arduino进行通信,和大多数控制形式一致,将通信协议固定可以让初学者在使用过程中了解通信协议,由于是自定义通信协议形式,可以即插即用,和rosserial_arduino有本质差别,不过在使用过程中需要自己配置,所以需要有一定的arudino编程基础,早期的EAI dashgo D1采用的就是这种形式,使用这个库可以缩短底盘开发时间,并且Arduino有很多开源包供使用,会相对轻松一些。
关于如何使用rosserial_arduino_bridge,作者在github的Readme中写的很清楚,当然,是使用英文编写,如果大家想要查看中文,这里是一个很好的方式,我做的小车就是参考这篇博客,写的很清楚。
https://blog.csdn.net/github_30605157/article/details/51344150/
https://blog.csdn.net/u011118482/article/details/77528798
2022 03 12更新
——————————分割线———————————
根据官网还有翻译我们可以把ros arduino bridge的包烧到板子里面接下来就是代码调式https://blog.csdn.net/weixin_41772246/article/details/100585276?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&utm_relevant_index=2