[ros-users] Webcam Use

Eric Perko wisesage5001 at gmail.com
Wed Jan 5 22:06:55 UTC 2011


Homer,

Some numbers on using a webcam with my uvc_cam driver (they are a little
fuzzy since it's been a while since I did the tests, but it should be about
right). No changes to the driver were made between these tests, and all were
running the same version of Ubuntu (64-bit unless it wasn't supported, like
on the Core Duo). We were doing 640x480 @ 30fps and I believe had to do a
YUYV to RGB conversion in the driver because the cameras did not support
outputting RGB (though I can't recall if that is the Logitech Webcam Pro
9000 or these other crappy, no brand cameras we were using before the Webcam
Pro 9000s).

Anyways, the numbers:

1. Intel Core Duo, somewhere between 2.0 and 2.4 GHz (Mac Mini, circa
2006-2007): somewhere around 40% CPU per camera. Basically, what I remember
was that we were gonna lose a whole CPU core to just a pair of cameras and
that was unacceptable.
2. Intel Core 2 Duo, 2.0 GHz (IBM Thinkpad T61, circa 2007): about 10-15%
CPU per camera.
3. Intel Core i7 920, 2.66GHz (Custom build, Summer 2009): very low usage,
sometimes even showing up at 0% in the System Monitor. 5-8% tops when it
does show up.

As you can see, for whatever reason, the Core 2 kicks the crap out of the
Core Duo. 64-bits vs 32-bits, extra SSE voodoo, better USB drivers on the
T61 than the Mac Mini, who knows why? Anyways, definitely something to think
about. Also, any webcam that you can use in an RGB mode as opposed to YUYV
where the driver is going to have to spend time converting from YUYV to RGB
will be good.

That said, we've been quite happy with the Webcam Pro 9000s. Let me know if
you have any other questions about it. I'm including the console output of
guvcview, which lists the different image sizes and 1/FPS pairs that the
camera clams to support in different modes (MJPG or YUYV in this case), in
case anyone wonders about that and doesn't have a Webcam Pro 9000 on hand to
find out :)

Hope that helps.

- Eric

guvcview console output:

> video device: /dev/video0
> /dev/video0 - device 1
> Init. UVC Camera (046d:0809) (location: usb-0000:00:1d.7-5)
> { pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
> { discrete: width = 640, height = 480 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 160, height = 120 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 176, height = 144 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 320, height = 240 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 352, height = 288 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 640, height = 360 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 640, height = 400 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 768, height = 480 }
> Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 800, height = 456 }
> Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 800, height = 504 }
> Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 800, height = 600 }
> Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 864, height = 480 }
> Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 960, height = 720 }
> Time interval between frame: 1/15, 1/10, 1/5,
> { discrete: width = 1280, height = 720 }
> Time interval between frame: 2/15, 1/5,
> { discrete: width = 1280, height = 800 }
> Time interval between frame: 2/15, 1/5,
> { discrete: width = 1600, height = 904 }
> Time interval between frame: 1/5,
> { discrete: width = 1600, height = 1000 }
> Time interval between frame: 1/5,
> { discrete: width = 1600, height = 1200 }
> Time interval between frame: 1/5,
> { pixelformat = 'MJPG', description = 'MJPEG' }
> { discrete: width = 640, height = 480 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 160, height = 120 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 176, height = 144 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 320, height = 240 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 352, height = 288 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 640, height = 360 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 640, height = 400 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 768, height = 480 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 800, height = 456 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 800, height = 504 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 800, height = 600 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 864, height = 480 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 960, height = 720 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 1280, height = 720 }
> Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 1280, height = 800 }
> Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5,
> { discrete: width = 1600, height = 904 }
> Time interval between frame: 1/10, 1/5,
> { discrete: width = 1600, height = 1000 }
> Time interval between frame: 1/10, 1/5,
> { discrete: width = 1600, height = 1200 }
> Time interval between frame: 1/10, 1/5,
> checking format: 1196444237
> VIDIOC_G_COMP:: Invalid argument
>    compression control not supported
> vid:046d
> pid:0809
> driver:uvcvideo
> Adding control for Pan (relative)
> Adding control for Tilt (relative)
> Adding control for Pan Reset
> Adding control for Tilt Reset
> Adding control for Pan/tilt Reset
> Adding control for Focus (absolute)
> mapping control for Pan (relative)
> mapping control for Tilt (relative)
> mapping control for Pan Reset
> mapping control for Tilt Reset
> mapping control for Pan/tilt Reset
> mapping control for Focus (absolute)
> mapping control for LED1 Mode
> mapping control for LED1 Frequency
> mapping control for Disable video processing
> mapping control for Raw bits per pixel



On Wed, Jan 5, 2011 at 12:00 PM, Patrick Goebel
<patrick at casbs.stanford.edu>wrote:

> Hi Homer,
>
> I have had several years of good experience with the Philips SPC1300NC
> both under Windows using RoboRealm and now more recently under
> Ubuntu+ROS using Eric Perko's uvc_cam package (git clone
> https://github.com/ericperko/uvc_cam.git) and OpenCV.  I haven't done
> any benchmarking under Linux but under Windows I was getting as high as
> 80 fps at 160x120 resolution and manual exposure.
>
> --patrick
>
> On 1/5/2011 6:53 AM, Homer Manalo wrote:
> > Thanks! Anyone had used Philips SPC1300NC or a creative webcam?
> >
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20110105/ee4ad27b/attachment-0003.html>


More information about the ros-users mailing list