当我尝试使用' Hello World'重启我的电脑后,程序与rosserial和arduino。代码工作正常,但是一旦我停止串行通信并尝试重新运行相同的代码。我收到以下错误。
[INFO] [WallTime: 1399983521.604184] ROS Serial Python Node
[INFO] [WallTime: 1399983521.617853] Connecting to /dev/ttyACM0 at 57600 baud
[ERROR] [WallTime: 1399983538.726124] Unable to sync with device; possible link problem or link software version mismatch such as hydro rosserial_python with groovy Arduino
我使用arduino UNO和arduino Nano都面临同样的问题。我尝试在ros.h中增加缓冲区大小,使用Serial.begin(57600)设置arduino代码中的波特率以及link中提到的所有解决方案。我还能做些什么来解决这个问题?
以下是我正在使用的库代码的链接:http://wiki.ros.org/rosserial_arduino/Tutorials/Hello%20World
答案 0 :(得分:0)
这个问题是因为波特率。请交叉检查波特率。尝试较慢的波特率,如9600.
您的波特率也会随着F_CPU频率而变化。如果您的电路板正在处理其他频率。 在arduino中刻录hex文件之前使用#define F_CPU。 通过运行以下命令来更改波特率:
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=9600
答案 1 :(得分:0)
检查您是否在Arduino代码中使用了任何Serial.print()。 发布时不能使用串行监视器,因为ROS串行使用相同的通信端口。因此,请在您的Arduino代码中删除所有与Serial相关的代码,包括Serial.begin()。