#camera #ros #uvc
#камера #ros #uvc
Вопрос:
Я хочу запустить uvc_camera на ROS kinetic, но возникли проблемы с ошибкой «uvc_start_streaming: недопустимый режим (-51)»
мой параметр камеры:
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Size: Discrete 1280x720
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2560x720
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2560x960
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x480
Interval: Discrete 0.011s (90.000 fps)
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.011s (90.000 fps)
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Size: Discrete 1280x720
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2560x720
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2560x960
Interval: Discrete 0.033s (30.000 fps)
запустите файл:
<launch>
<group ns="camera">
<node pkg="libuvc_camera" type="camera_node" name="mycam">
<!-- Parameters used to find the camera -->
<param name="vendor" value="0x0211"/>
<param name="product" value="0x5838"/>
<param name="serial" value=""/>
<!-- If the above parameters aren't unique, choose the first match: -->
<param name="index" value="0"/>
<!-- Image size and type -->
<param name="width" value="2560"/>
<param name="height" value="960"/>
<!-- choose whichever uncompressed format the camera supports: -->
<param name="video_mode" value="mjpeg"/> <!-- or uncompressed/yuyv/nv12/mjpeg -->
<param name="frame_rate" value="30"/>
<param name="timestamp_method" value="start"/> <!-- start of frame -->
<param name="camera_info_url" value="file:///tmp/cam.yaml"/>
<param name="brightness" value="50" />
<param name="auto_exposure" value="3"/> <!-- use aperture_priority auto exposure -->
<param name="auto_white_balance" value="true"/>
</node>
</group>
</launch>
сообщение при запуске:
... logging to /home/flaver/.ros/log/62ad8bb8-23af-11eb-8725-000c2914e622/roslaunch-ubuntu-6727.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://ubuntu:33305/
SUMMARY
========
PARAMETERS
* /camera/mycam/auto_exposure: 3
* /camera/mycam/auto_white_balance: True
* /camera/mycam/brightness: 50
* /camera/mycam/camera_info_url: file:///tmp/cam.yaml
* /camera/mycam/frame_rate: 30
* /camera/mycam/height: 960
* /camera/mycam/index: 0
* /camera/mycam/product: 0x5838
* /camera/mycam/serial:
* /camera/mycam/timestamp_method: start
* /camera/mycam/vendor: 0x0211
* /camera/mycam/video_mode: uncompressed
* /camera/mycam/width: 2560
* /rosdistro: kinetic
* /rosversion: 1.12.16
NODES
/camera/
mycam (libuvc_camera/camera_node)
ROS_MASTER_URI=http://localhost:11311
process[camera/mycam-1]: started with pid [6744]
unsupported descriptor subtype VS_COLORFORMAT
unsupported descriptor subtype VS_COLORFORMAT
unsupported descriptor subtype VS_COLORFORMAT
attempt to claim already-claimed interface 1
uvc_start_streaming: Invalid mode (-51)
[camera/mycam-1] process has died [pid 6744, exit code 255, cmd
/home/flaver/catkin_ws/devel/lib/libuvc_camera/camera_node __name:=mycam
__log:=/home/flaver/.ros/log/62ad8bb8-23af-11eb-8725-000c2914e622/camera-mycam-1.log].
log file: /home/flaver/.ros/log/62ad8bb8-23af-11eb-8725-000c2914e622/camera-mycam-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
Я знаю, что большинство проблем возникает в области «Размера и типа изображения», но я уделил этому большое внимание.
Я долго ищу в сети. Но бесполезно. Пожалуйста, помогите или попробуйте дать несколько идей, как этого добиться.
Комментарии:
1. извините, ребята, третья часть «* / camera / mycam / video_mode: » — это «mjpeg», я разместил неправильный код
2. не стесняйтесь обновлять свой первоначальный вопрос напрямую с обновлениями 🙂
3. Может быть, вы могли бы также опубликовать код узла?
4. Итак, я заглянул в документ, и, похоже, это возвращает false: uvc_error_t stream_err = uvc_start_streaming(devh_, amp;ctrl, amp;CameraDriver::ImageCallbackAdapter, this, 0); В github.com/ros-drivers/libuvc_ros/blob/master/libuvc_camera/src /… в строке 444