I'm trying to control a few Arduinos (Uno and Leonardo) from ROS. What's the "right" way to do this?
I started with Rosserial, by following the simple [Blink tutorial](http://wiki.ros.org/rosserial_arduino/Tutorials/Blink). It installed and compiled just fine, but much to my surprise, Rosserial simply doesn't work. First, the compiled hex file consumes almost 75% of the Arduino's memory...so I'd have almost nothing left for my application code. Second, it can't actually communicate with the host. Attempting to run `serial_node.py` fails with the error:
Unable to sync with device; possible link problem or link software version mismatch such as hydro rosserial_python with groovy Arduino
My PC is a fresh install of Ubuntu 14.04 with Indigo, so I'm sure it's not a version mismatch. Googling this error shows it's a bug in Rosserial related to it being unable to handle certain Arduino USB interfaces, which has gone unresolved for years and has several open bug reports filed for it.
I spent six hours trying to figure this out, and got nowhere. So then I tried implementing the same "blink" functionality with a simple pure Arduino+Python interface using Pyserial....and got it to work in 10 minutes.
Unfortunately, this has been my experience with ROS in general. It claims to make your life easier, but it has a huge learning curve and even after you read through all the docs and follow all the steps without error...it still doesn't work very well. Am I missing something here? If ROS can't even blink and LED, why should I rely on it for anything more complicated?
↧