Monday, March 29, 2010

Rovio Hacking

Some quick hacking notes on the Rovio, some of this is Linux specific.

Here are scans of the Rovio's main processor board, I used a flatbed scanner at 2400dpi to scan the board. This makes following the traces significantly easier than using a microscope. I had some assistance working out the pin-outs and I got the idea for scanning the boards from somewhere.

VLC can be used to connect to the rovio via RTSP
vlc rtsp://admin:password@192.168.10.18:554/webcam

However after testing it was found that the RTSP video feed has significantly more lag than the MJPEG stream. The trade off is that MJPEG stream lacks audio.

You can connect to the MJPEG stream with gstreamer.

gst-launch souphttpsrc user-id=admin user-pw=password \
location=http://192.168.10.18/GetData.cgi do-timestamp=true \
! queue ! multipartdemux ! capsfilter caps = "image/jpeg, \
width=320, height=240" ! jpegdec ! autovideosink

Now that it works with gstreamer, we can connect that to ROS. Probe is part of the ROS packages developed at Brown University.

Once you get it downloaded and compiled using rosmake. Then you can use Probe to publish images from the Rovio to a ROS topic, this allows you to use the existing computer vision tools developed for ROS.  I'll probably finish writing a ROS driver for controlling the Rovio later this week.

export PROBE_CONFIG="souphttpsrc user-id=admin user-pw=password \
location=http://192.168.10.18/GetData.cgi do-timestamp=true ! \
queue ! multipartdemux ! capsfilter caps = \"image/jpeg, \
width=320, height=240\" ! jpegdec ! ffmpegcolorspace ! identity \
name=ros ! fakesink"
rosrun probe probe

Update
This should work better
PROBE_CONFIG="souphttpsrc user-id=admin user-pw=password \
location=http://192.168.10.18/GetData.cgi\?Status=false \
do-timestamp=true ! queue ! multipartdemux ! capsfilter \
caps = 'image/jpeg' ! jpegdec ! ffmpegcolorspace \
! video/x-raw-rgb ! identity name=ros ! fakesink"

1 comment:

Anonymous said...

Thanks for the scans. I'm an electronics noob. I'm guessing to power this board by itself, I can supply 7.2 volts to the +7VDC pin, but I can't just supply power directly from my 7.2 NiMH battery can I? I'm guessing I need to regulate power to it without blowing up the module? The unit is going inside my Heng Long RC tank, which uses an RX18 receiver. Thanks.