On Fri, Jun 8, 2012 at 8:06 PM, John Galloway <jrg@toasterfish.com> wrote:
It appears (i.e. just reading the docs, I haven't brought up a ROS env yet) that at present every ROS device has to have an executable (or driver) on a host (which is found in the package for that device).  It would seem ideal that a device using USB (for example) could have its driver embedded to allow a generic USB driver to detect that this is a ROS device and link it into the graph of nodes (allowing the device to publish and subscribe etc) without a device specific driver being needed.  Is this possible within the current APIs?

John,

There are definitely others who are interested in pushing computation into embedded systems. At ROSCon last month, Morgan Quigley presented this related idea, motivated by the needs of realtime control.

You can check out his thoughts on the subject here: 
http://www.youtube.com/watch?v=3wnab6AjAwc&feature=player_detailpage#t=1648s

As to having a ROS USB device driver, I don't see any reason why you couldn't have an embedded system identify itself as a device that talks in ROS messages, and then have a single driver recognize it via udev rules or something and hook it up to a given ROS master.

Have you looked at rosserial? http://ros.org/wiki/rosserial While I haven't used it, it seems like it gets part of the way there by having embedded devices that talk in ROS messages, and they just connect to a generic rosserial driver on a host machine: http://ros.org/wiki/rosserial_python

(ahhh it looks like Morgan also replied while I was finishing writing this!)

best,
-j
 


--
Jonathan Bohren
PhD Student
Dynamical Systems and Control Laboratory
Laboratory for Computational Sensing and Robotics
The Johns Hopkins University

(707) 520-4736
jbo@jhu.edu