Hi, folks:
I’m trying to connect the low light USB camera to the usb_cam ROS node, and it works fine at 640x480, but I can’t seem to get higher resolutions to work. Can you provide details about the chipset and supported resolutions and encodings?
Hi, folks:
I’m trying to connect the low light USB camera to the usb_cam ROS node, and it works fine at 640x480, but I can’t seem to get higher resolutions to work. Can you provide details about the chipset and supported resolutions and encodings?
The camera presents two video devices to the OS (you might see more here if you have a webcam):
$ ls /dev/video*
/dev/video0 /dev/video1
The first device outputs MJPG format and the second device outputs H.264 format:
$ v4l2-ctl --device=0 --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Index : 1
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Use --list-formats-ext
to see the supported framesizes and frameintervals:
$ v4l2-ctl --device=1 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'H264' (compressed)
Name : H.264
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 800x600
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Use --list-ctrls
to see the v4l controls you can change:
$ v4l2-ctl --device=1 --list-ctrls
brightness (int) : min=-64 max=64 step=1 default=0 value=0
contrast (int) : min=0 max=64 step=1 default=32 value=32
saturation (int) : min=0 max=128 step=1 default=56 value=56
hue (int) : min=-40 max=40 step=1 default=0 value=0
white_balance_temperature_auto (bool) : default=1 value=1
gamma (int) : min=72 max=500 step=1 default=100 value=100
gain (int) : min=0 max=100 step=1 default=0 value=0
power_line_frequency (menu) : min=0 max=2 default=1 value=1
white_balance_temperature (int) : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
sharpness (int) : min=0 max=6 step=1 default=3 value=3
backlight_compensation (int) : min=0 max=2 step=1 default=1 value=1
exposure_auto (menu) : min=0 max=3 default=3 value=3
exposure_absolute (int) : min=1 max=5000 step=1 default=156 value=156 flags=inactive
exposure_auto_priority (bool) : default=0 value=0
I don’t have any information on the chipset, and I don’t know how to deal with any of this on Windows.
Thanks for the quick response and info! This appears to be a bug in the ROS usb_cam driver. You can follow along here, if you want: outbuf size mismatch; YUV420P vs. YUV422P · Issue #79 · ros-drivers/usb_cam · GitHub