外观
踩坑Robotics Stack Exchange2021-07-23
ROS2 与 Arduino 串口读写挂起怎么办
本文由 AI 根据公开内容整理,可能有误,请以原文为准:When reading serial data between Arduino and a node, it hangs. How can I properly send and read data?(Robotics Stack Exchange #22438)
状态:已解决
问题
ROS2 节点与 Arduino 串口通信时读写挂起;executeCallback 中每次执行 serial.Serial(port="/dev/ttyUSB0"),可能导致 Arduino 因建立串口连接自动复位,写入时不在线而读不到响应。
环境
Ubuntu 21.04 x64,Linux 5.8.0-59-generic,ROS2 Foxy,Python serial,老款 Arduino Nano(legacy bootloader)。
解决办法
- 不要在每次
executeCallback里重新创建串口连接;在节点初始化时建立serial.Serial,把连接句柄保存为成员变量,或作为回调参数传入复用。 - 或禁用 Arduino 的串口连接自动复位:在
5V与reset之间接约120 ohm上拉电阻,需恢复自动复位时拔掉;不要低于110 ohm或高于124 ohm,且不要在连接 ISP 编程器时这样做。
原问题作者:rasa911216;采纳答案作者:Chuck。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。
来源
本页事实对应的公开页面,以原文为准。