How to interface an Arduino with ROS?
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. 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?
hi, have you rebuild and installed the ros_lib for arduino http://wiki.ros.org/rosserial_arduino...
No, I tried that, but catkin_make through a ton of errors, so I just installed the ubuntu packages for indigo.
is there a reason not to use jade?
Yes, I'm using Ubuntu 14.04 and am not in a position to upgrade my entire computer just to tinker around with ROSSerial.
Just an FYI: Jade is supported on Trusty (see REP-003). There is no need to upgrade your OS.