ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

This looks less like a protocol mismatch, and more like you have garbled data on your serial line. In particular, I see lots of messages complaining that checksums on various parts of the message are wrong, and they seem to spread across lots of different parts of the message, not just the type field.

There are a couple of ways that this could be happening: 1. Incomplete messages are getting transmitted. Normally the arduino libraries should prevent this, but it can happen if you're trying to transmit data from inside an interrupt handler. 1. You're sending raw data out the serial port, and its confusing rosserial. 1. Your USB to serial chip is dropping bytes. 1. There's electrical noise in your system.

To approach the first problem, you should look through your code and make sure that there's only one place where you call publish. Preferably not in an interrupt handler.

Don't do #2. If there's anywhere in your program that you're using Serial.print or similar functions, remove them.

If you're still having problems, it's possible that your USB to serial chip is dropping bytes. In particular, my experience with the newer arduinos that don't use the FTDI chip have trouble with higher baud rates like 115.2k. Try lowering your baud rate to see if that helps.

If you're still having trouble, it's possible that there's some kind of electrical noise on your serial line. If you're using an arduino with a built-in USB port, this is incredibly unlikely. If you have your serial lines running over exposed wires, it's more likely. If you're tried everything else and are still having problems, you can try hooking an oscilloscope to the serial lines and looking at the signal quality.