ROS Noetic이 설치된 가상 머신이 있고 USB 웹캠에서 카메라 보정을 실행하고 싶습니다. 나는 다음 가이드를 따랐고 런처에 다음 코드를 입력했습니다.
<launch>
<!-- This launchfile should bring up a node that broadcasts a ros image
transport on /webcam/image_raw -->
<arg name="DEVICEl" default="/dev/video0"/>
<!-- The GStreamer framerate needs to be an integral fraction -->
<arg name="FPS" default="30/1"/>
<arg name="PUBLISH_FRAME" default="false"/>
<node ns="left" name="gscam_driver_v4l" pkg="gscam" type="gscam" output="screen">
<param name="camera_name" value="default"/>
<param name="camera_info_url" value="package://gscam/examples/uncalibrated_parameters.ini"/>
<param name="gscam_config" value="v4l2src device=$(arg DEVICEl) ! video/x-raw-rgb,framerate=$(arg FPS) ! ffmpegcolorspace"/>
<param name="frame_id" value="/v4l_frame_l"/>
<param name="sync_sink" value="true"/>
</node>
<node if="$(arg PUBLISH_FRAME)" name="v4l_transform" pkg="tf" type="static_transform_publisher" args="1 2 3 0 -3.141 0 /world /v4l_frame 10"/>
</launch>
시작하려고 하면 다음과 같은 응답을 받습니다.
... logging to /home/dragonros/.ros/log/e62adeac-5d96-11eb-b879-09066182755f/roslaunch-ubuntu-42560.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
invalid ROS_HOSTNAME (an empty string)
invalid ROS_HOSTNAME (an empty string)
started roslaunch server http://ubuntu:35479/
SUMMARY
========
PARAMETERS
* /left/gscam_driver_v4l/camera_info_url: package://gscam/e...
* /left/gscam_driver_v4l/camera_name: default
* /left/gscam_driver_v4l/frame_id: /v4l_frame_l
* /left/gscam_driver_v4l/gscam_config: v4l2src device=/d...
* /left/gscam_driver_v4l/sync_sink: True
* /rosdistro: noetic
* /rosversion: 1.15.9
NODES
/left/
gscam_driver_v4l (gscam/gscam)
ROS_MASTER_URI=http://localhost:11311
process[left/gscam_driver_v4l-1]: started with pid [42574]
[ WARN] [1611445425.340701580]: invalid ROS_HOSTNAME (an empty string)
[ INFO] [1611445425.361034554]: Using gstreamer config from rosparam: "v4l2src device=/dev/video0 ! video/x-raw-rgb,framerate=30/1 ! ffmpegcolorspace"
[ INFO] [1611445425.366515919]: camera calibration URL: package://gscam/examples/uncalibrated_parameters.ini
[ INFO] [1611445425.366725052]: Loaded camera calibration from package://gscam/examples/uncalibrated_parameters.ini
(gscam:42574): GStreamer-WARNING **: 15:43:45.455: 0.10-style raw video caps are being created. Should be video/x-raw,format=(string).. now.
[ INFO] [1611445425.455679084]: Time offset: 1611418553.717
[ INFO] [1611445425.555216304]: Publishing stream...
[ INFO] [1611445425.555412447]: Started stream.
[ERROR] [1611445425.555446013]: Could not get gstreamer sample.
[ INFO] [1611445425.555455586]: Stopping gstreamer pipeline...
[ INFO] [1611445425.557306732]: GStreamer stream stopped!
[ INFO] [1611445425.557374812]: Cleaning up stream and exiting...
[left/gscam_driver_v4l-1] process has finished cleanly
log file: /home/dragonros/.ros/log/e62adeac-5d96-11eb-b879-09066182755f/left-gscam_driver_v4l-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
gstreamer 샘플을 얻을 수 없다고 합니다. 또한 어떤 이유로 카메라를 컴퓨터에 연결하면 /dev/video0
과 /dev/video1
. 이것은 내가 달릴 때 얻는 것이기도 하다 rosrun gscam gscam
. 어떻게 해야 합니까?
답변1
환경 변수를 사용한 "잘못된 ROS_HOSTNAME" 연결의 경우. 이 페이지를 살펴보십시오:
https://wiki.ros.org/ROS/EnvironmentVariables
이는 귀하의 Cam이 ROS와 호환된다고 가정합니다.
교정하기 전에 다음을 시도해 보셨습니까?
roscd gscam
cd bin
export GSCAM_CONFIG="v4l2src device=/dev/video0 ! video/x-raw-rgb,framerate=30/1 ! ffmpegcolorspace"
rosrun gscam gscam
Camera_calibration 패키지를 사용해 보셨나요?
http://wiki.ros.org/camera_calibration
gscam이 noetic과 호환되는지 잘 모르겠습니다.
https://index.ros.org/r/gscam/#noetic
그 당시 사람들은 gscam 종속성이 충족되었는지 확인하고 추가하여 이 문제를 해결했습니다.
"<param if="$(arg GST10)" name="gscam_config" value="v4l2src.....".
확인 해봐:
https://github.com/ros-drivers/gscam/issues/25
https://github.com/ros-drivers/gscam/tree/master/examples
또한 종료를 고려해보세요:::https://stackoverflow.com/questions/65865736/ros-camera-calibration
그래서 우리는 같은 질문에 두 번 대답하지 않습니다.
저는 Indigo를 가지고 있으며 호환성 문제가 얼마나 고통스러운지 알고 있습니다.
행운을 빌어요!