A while back, I did some basic profiling of the image pipeline and it
looked like a large percentage of time was being spent de/serializing
the data. For some reason packaging up 640x480x15fps uncompressed color
images into messages and sending them over a wifi connection doesn't
work that well when you are running on an Atom Processor.

Improvements here might be useful, though the effort is probably better
spent converting the image pipeline to use nodelets or waiting for
another rev of Moore's Law.


Images are unfortunately just about the best case for serialization -- they end up as mostly just a single big memcpy.  There is a deserialization improvement that may be possible though, which I just codified in a ticket: https://code.ros.org/trac/ros/ticket/3000
 
On several occasions we have worried that ROS would be slow but our
experience has shown that the best approach is to skip worrying about
the performance of ROS and just get the code working. Once the code is
working it is a lot easier to optimize and we have almost always found
that the slowest part is our code or the WiFi connection.


This is good to hear, thanks.  That has been our experience as well in most cases -- and nodelets seem to satisfy the others so far.

Josh