Closed daisuke0203 closed 5 years ago
issue ありがとうございます。当方に同一のハードウェアがないため推測になりますが、回答致します。
rosrun で usb_cam ノードを引数無しで実行した場合、デフォルトのパラメータが適用された上で実行されると思われますが、そのデフォルト値がお使いになっているカメラの設定値と一致していないことによりエラーが生じている可能性が考えられます。
例えば、本書サンプル内の下記 launch ファイル内における、画像サイズやフレームレート等が、現在ご使用されている USB カメラの設定と矛盾していないかをご確認頂き、パラメータ調整の上でそちらをご利用頂くことは可能でしょうか。
https://github.com/Nishida-Lab/rosbook_pkgs/blob/master/chapter5/launch/usb_cam.launch
$ roslaunch chapter5 usb_cam.launch
エラーメッセージの情報量から、推定原因をベースとした議論となっているため的はずれな発言でしたらすみません。まずはご検証の方を宜しくおねがいします。
@daisuke0203 メールで届いていたものの,こちらの投稿が消えてしまっていたので, メールよりコピーして引用します.
下記,引用
迅速な対応ありがとうございます。 以下、$ roslaunch chapter5 usb_cam.launchを実行した結果です。 daiuske@daiuske-VirtualBox:~$ roslaunch chapter5 usb_cam.launch ... logging to /home/daiuske/.ros/log/23a6245e-96e6-11e9-8d4a-080027134c6c/roslaunch-daiuske-VirtualBox-2157.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://daiuske-VirtualBox:33287/ SUMMARY
PARAMETERS
/image_view/autosize: True
/rosdistro: kinetic
/rosversion: 1.12.14
/usb_cam/autofocus: True
/usb_cam/brightness: 32
/usb_cam/contrast: 32
/usb_cam/focus: 51
/usb_cam/framerate: 30
/usb_cam/image_height: 960
/usb_cam/image_width: 1280
/usb_cam/pixel_format: mjpeg
/usb_cam/saturation: 32
/usb_cam/video_device: /dev/video0
NODES / image_view (image_view/image_view) usb_cam (usb_cam/usb_cam_node)
auto-starting new master process[master]: started with pid [2199] ROS_MASTER_URI=http://localhost:11311
setting /run_id to 23a6245e-96e6-11e9-8d4a-080027134c6c process[rosout-1]: started with pid [2212] started core service [/rosout] process[usb_cam-2]: started with pid [2215] process[image_view-3]: started with pid [2216] [ INFO] [1561425082.047664101]: using default calibration URL [ INFO] [1561425082.047859849]: camera calibration URL: file:///home/daiuske/.ros/camera_info/head_camera.yaml [ INFO] [1561425082.047982557]: Unable to open camera calibration file [/home/daiuske/.ros/camera_info/head_camera.yaml] [ WARN] [1561425082.048060375]: Camera calibration file /home/daiuske/.ros/camera_info/head_camera.yaml not found. [ INFO] [1561425082.048184743]: Starting 'head_camera' (/dev/video0) at 1280x960 via mmap (mjpeg) at 30 FPS [ERROR] [1561425082.322147180]: VIDIOC_STREAMON error 5, Input/output error [ INFO] [1561425082.362763473]: Using transport "raw" [usb_cam-2] process has died [pid 2215, exit code 1, cmd /opt/ros/kinetic/lib/usb_cam/usb_cam_node /usb_cam/image_raw:=/usb_cam/image_raw __name:=usb_cam __log:=/home/daiuske/.ros/log/23a6245e-96e6-11e9-8d4a-080027134c6c/usb_cam-2.log]. log file: /home/daiuske/.ros/log/23a6245e-96e6-11e9-8d4a-080027134c6c/usb_cam-2*.log
@daisuke0203 手元に同じ Logicool C270 があったので,試しました. おっしゃるとおり,同様のエラーで起動しませんでした. 下記に原因と解決策を示します.
Ubuntu 18.04 LTS ROS melodic Kernel : 4.18.0-22-generic
これから記載する原因,解決策には,カメラ映像のフォーマット形式の指定が大きく関わります. そこで,linux (ubuntu)におけるこれらの情報の確認の仕方について述べます.
UbuntuでUSB接続されたUSBカメラの情報を確認するには,v4l2-ctl
コマンドを利用します.
インストールされていない場合は
$ sudo apt install v4l-utils
でインストールしてください.
インストール後,カメラ情報を知るためには カメラがどこにマウントされているのか知る必要があります.
$ v4l2-ctl --list-devices
というコマンドで,下記のように利用できるカメラの情報が表示できます.
UVC Camera (046d:0825) (usb-0000:00:14.0-1):
/dev/video2
/dev/video3
Integrated_Webcam_HD: Integrate (usb-0000:00:14.0-12):
/dev/video0
/dev/video1
上記の例では,ノートPC内蔵カメラとUSBカメラの2つが表示されています.
今回接続している Logicool C270 は上の UVC Cameraというものなので,カメラがマウントされているのは/dev/video2
ということになります.
カメラのマウント場所が分かったので,下記コマンドでマウントされているカメラで利用可能な
フォーマット形式,解像度,フレームレート
を確認します.
今回は前述の通り,カメラのマウントポイントが/dev/video2
だったのでそのように指定しています.
内蔵カメラ等が無い場合は,おそらく/dev/video0
になるかと思います.適宜読み替えてください.
$ v4l2-ctl -d /dev/video2 --list-formats-ext
いずれにせよ,上記コマンドで以下のような結果を得ました.
octl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 320x176
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 432x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 544x288
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 752x416
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 800x448
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 800x600
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 864x480
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 960x544
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 960x720
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1024x576
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1184x656
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.133s (7.500 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1280x960
Interval: Discrete 0.133s (7.500 fps)
Interval: Discrete 0.200s (5.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 320x176
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 432x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 544x288
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 752x416
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 800x448
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 800x600
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 864x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 960x544
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 960x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1024x576
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1184x656
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1280x960
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
以上より,
フォーマット形式は YUVY
と MJPG
解像度は1280x960 や 640x480等
フレームレートは30fpsが最大で最小5fps
であることがわかりました.
これらの情報は,後ほどlaunchファイルに指定するパラメータの値になりますので,
カメラが変わった際等にも同様の手続きで情報を調べることになります.
v4l2-ctl
の情報は,下記のサイトが参考になると思います.
https://leico.github.io/TechnicalNote/Linux/webcam-usage
usb_cam
パッケージの起動時,launchファイルの中で
pixel_format
をmjpeg
に設定しています.
しかし,このオプションでは起動に失敗してしまっていたようです.
同様の失敗についてはROS Wiki でも議論されているようで,mjpegフォーマットの場合,
画像の圧縮を行うのですが,このときに利用するライブラリが想定しているものと異なるものでリンクされるため,失敗するようです...
これが本失敗の原因かどうか確証がまだ持てていないので,これについては申し訳ありません.
http://answers.ros.org/question/217382/garbled-image-problem-on-usb_cam/
ご指摘いただいたものとは別に,chapter5
に記載されているlaunchファイルではimage_view
パッケージの起動も記載されています.
しかし,このパッケージの起動も想定しているようには動かないようです...
image_view
では,圧縮して取得した画像を様々な形式に変換する役割と,取得した画像を別Windowに表示する役割があるのですが,私の試した環境ではどちらもうまく行きませんでした....
これについては,本件で初めて発見しました.
別Issueを立てて対処させていただきます.
ご迷惑をお掛けし,申し訳ありません.
解決策は2つあります.
また,前述のimage_view
パッケージの問題から,image_view
は起動しないlaunchファイルに変更しています.
予めご了承ください.
これまでのpixel_format
のパラメータをmjpeg
からyuyv
に変更
つまり,下記のようなlaunchファイルに変更をお願いします.
なお,解像度は640x480,フレームレートは30 fpsに設定し,
カメラのマウントポイントは/dev/video2
に設定してあります.
<launch>
<!-- usb_camノードを実行する -->
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen">
<remap from="/usb_cam/image_raw" to="/usb_cam/image_raw"/>
<param name="video_device" value="/dev/video2" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="framerate" value="30" />
<param name="contrast" value="32" />
<param name="brightness" value="32" />
<param name="saturation" value="32" />
<param name="autofocus" value="true" />
<param name="focus" value="51" />
</node>
</launch>
上記記述をchapter5
のusb_cam.launch
に上書きし,改めてlaunchしてください.
すると,/usb_cam/image_raw
という名前のTopicに取得したカメラ画像の情報がPublishされます.
確認方法は,Rvizを起動し,Add
->By topic
タブ->/usb_cam/image_raw
の下のImageの洗濯ボタンをraw
に合わせてクリックすると,映像が確認できます.
解決策1ではYUYV
フォーマットを使い解決しましたが,カメラ自体はMPEG
フォーマットでも起動できます.
そこで,uvc_camera
パッケージを利用し,これを利用します.
$ sudo apt install ros-melodic-uvc-camera
解決策1の時と同様,chapter5
のusb_cam.launch
ファイルを下記の内容で上書きしてください.
なお,このlaunchファイルも同様に
解像度を640x480,フレームレートを30 fpsに設定し,
カメラのマウントポイントを/dev/video2
に設定しています.
また,今回はformat
パラメータにjpeg
を設定することでMPEG
方式に対応させていますが,
通常はrgb
を設定すれば圧縮された形式(MPEG)と未圧縮の形式(YUYV)をPublishできます.
<!-- uvc_cam -->
<node name="uvc_camera" pkg="uvc_camera" type="uvc_camera_node" output="screen">
<remap from="image_raw" to="/uvc_camera/image_raw"/>
<remap from="image_raw/compressed" to="/uvc_camera/image_raw/compressed"/>
<remap from="camera_info" to="/uvc_camera/camera_info"/>
<param name="device" value="/dev/video2"/>
<param name="fps" value="30"/>
<param name="width" value="640"/>
<param name="height" value="480"/>
<param name="format" value="jpeg"/>
</node>
完了したら,下記コマンドで実行してください.
$ roslaunch chapter5 usb_cam.launch
うまく起動すれば,/uvc_camera/image_raw
や/uvc_camera/image_raw/compressed
等のトピックがPublishされます.
確認方法は,Rvizを起動し,Add
->By topic
タブ->/uvc_camera/image_raw
の下のImageの洗濯ボタンをraw
やcompressed
に合わせてクリックすると,映像が確認できます.
長文,そして大幅な変更となってしまい,大変申し訳ありません. 急ぎソースコードの修正や確認作業を行います. その他ご不明点等ございましたらいつでもお問い合わせください. この度はご迷惑をお掛けし,申し訳ありませんでした. 何卒よろしくお願いします.
@MoriKen254 大幅に修正が必要なことが判明しました. 急ぎIssueを立てますので,修正の指南等いただけると幸いです. 何卒よろしくお願いします.
詳細な解決策のご提示ありがとうございます。しかし、残念ながら 解決策2つとも試しましたが、カメラが起動しません(LEDが消えたまま)。 もう少しだけお付き合い頂けると助かります。 以下、解決策2における実行結果です(解決策1のエラーは前回とほぼ同様)。 `$ roslaunch chapter5 usb_cam.launch ... logging to /home/daiuske/.ros/log/7e2ccd52-9735-11e9-95d1-080027134c6c/roslaunch-daiuske-VirtualBox-9118.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://daiuske-VirtualBox:36363/
PARAMETERS
NODES / uvc_camera (uvc_camera/uvc_camera_node)
ROS_MASTER_URI=http://localhost:11311
process[uvc_camera-1]: started with pid [9135] [ INFO] [1561475099.154578921]: using default calibration URL [ INFO] [1561475099.154871094]: camera calibration URL: file:///home/daiuske/.ros/camera_info/camera.yaml [ INFO] [1561475099.156699876]: Unable to open camera calibration file [/home/daiuske/.ros/camera_info/camera.yaml] [ WARN] [1561475099.156822884]: Camera calibration file /home/daiuske/.ros/camera_info/camera.yaml not found. opening /dev/video0 pixfmt 0 = 'YUYV' desc = 'YUYV 4:2:2' discrete: 640x480: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 160x120: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 176x144: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 320x176: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 320x240: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 352x288: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 432x240: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 544x288: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 640x360: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 752x416: 1/25 1/20 1/15 1/10 1/5 discrete: 800x448: 1/20 1/15 1/10 1/5 discrete: 800x600: 1/20 1/15 1/10 1/5 discrete: 864x480: 1/20 1/15 1/10 1/5 discrete: 960x544: 1/15 1/10 1/5 discrete: 960x720: 1/10 1/5 discrete: 1024x576: 1/10 1/5 discrete: 1184x656: 1/10 1/5 discrete: 1280x720: 2/15 1/5 discrete: 1280x960: 2/15 1/5 pixfmt 1 = 'MJPG' desc = 'Motion-JPEG' discrete: 640x480: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 160x120: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 176x144: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 320x176: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 320x240: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 352x288: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 432x240: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 544x288: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 640x360: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 752x416: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 800x448: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 800x600: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 864x480: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 960x544: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 960x720: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 1024x576: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 1184x656: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 1280x720: 1/30 1/25 1/20 1/15 1/10 1/5 discrete: 1280x960: 1/30 1/25 1/20 1/15 1/10 1/5 int (Brightness, 0, id = 980900): 0 to 255 (1) int (Contrast, 0, id = 980901): 0 to 255 (1) int (Saturation, 0, id = 980902): 0 to 255 (1) bool (White Balance Temperature, Auto, 0, id = 98090c): 0 to 1 (1) int (Gain, 0, id = 980913): 0 to 255 (1) menu (Power Line Frequency, 0, id = 980918): 0 to 2 (1) 0: Disabled 1: 50 Hz 2: 60 Hz int (White Balance Temperature, 16, id = 98091a): 0 to 10000 (10) int (Sharpness, 0, id = 98091b): 0 to 255 (1) int (Backlight Compensation, 0, id = 98091c): 0 to 1 (1) menu (Exposure, Auto, 0, id = 9a0901): 0 to 3 (1) int (Exposure (Absolute), 16, id = 9a0902): 1 to 10000 (1) bool (Exposure, Auto Priority, 0, id = 9a0903): 0 to 1 (1) menu (LED1 Mode, 0, id = a046d05): 0 to 3 (1) 0: Off 1: On 2: Blink 3: Auto int (LED1 Frequency, 0, id = a046d06): 0 to 131 (1) terminate called after throwing an instance of 'std::runtime_error' what(): unable to start capture [uvc_camera-1] process has died [pid 9135, exit code -6, cmd /opt/ros/kinetic/lib/uvc_camera/uvc_camera_node image_raw:=/uvc_camera/image_raw image_raw/compressed:=/uvc_camera/image_raw/compressed camera_info:=/uvc_camera/camera_info __name:=uvc_camera __log:=/home/daiuske/.ros/log/7e2ccd52-9735-11e9-95d1-080027134c6c/uvc_camera-1.log]. log file: /home/daiuske/.ros/log/7e2ccd52-9735-11e9-95d1-080027134c6c/uvc_camera-1*.log all processes on machine have died, roslaunch will exit shutting down processing monitor... ... shutting down processing monitor complete done ` ネットでも自分と似たエラーを見つけ、次のような事を試しましたが結果は同じままです。 ・再起動する ・sudo apt-get update sudo apt-get upgrade を試す ・USBポートを変える
何か他に解決方法ありましたらよろしくお願いします。
@daisuke0203 ご検討いただきありがとうございます. また,解決に至れず申し訳ありません.
手元の環境でmelodicだけではなく,kineticでも試してみました. が,私の環境では同様のエラーを再現できませんでした. しかし,他の方の環境で同様のエラーが再現したため,現在原因を調査中です. 大変申し訳ありませんが,もう少々お待ちください.
解決策になるかは不明ですが,試しにパラメータとしてformat
に与えている値をrgb
に設定していただいた場合,どのようになりますか?
お手数とご迷惑をおかけしますが,よろしくお願いします.
@daisuke0203
お使いのLogicool C270でuvc_camera
パッケージの起動時にformat
パラメータをrgb
に設定することで起動する確認が取れました.
ですので,chapter5
のusb_camera.launch
ファイルを下記のように修正し,起動を確認していただけると幸いです.
launchファイルの起動後のカメラ映像の確認方法は以前と同様,
Rvizを起動し,Add
->By topic
タブ->/uvc_camera/image_raw
の下のImageの選択ボタンをraw
やcompressed
に合わせてクリックすると,映像が確認できます.
<launch>
<!-- uvc_cam -->
<node name="uvc_camera" pkg="uvc_camera" type="uvc_camera_node" output="screen">
<remap from="image_raw" to="/uvc_camera/image_raw"/>
<remap from="image_raw/compressed" to="/uvc_camera/image_raw/compressed"/>
<remap from="camera_info" to="/uvc_camera/camera_info"/>
<param name="device" value="/dev/video0"/>
<param name="fps" value="30"/>
<param name="width" value="640"/>
<param name="height" value="480"/>
<param name="format" value="rgb"/>
</node>
</launch>
以上,よろしくお願いします. 無事起動が確認取れましたら,こちらでソースコードの修正,本の記載事項の更新を予定しておりますので,よろしくお願いします.
上記のlaunchファイルに修正しましたが, jpegの時と同じエラーが出てしまいます
@daisuke0203 なるほど... 私が再アップロードした投稿 https://github.com/Nishida-Lab/rosbook_pkgs/issues/52#issuecomment-505274838 を拝見していた所,VirtualBoxを使用されているかと思います. これが直接の原因であるということは断言できませんが,ROSのパッケージの問題なのか,それ以外が原因なのかを切り分けさせていただきたいです. そこでお手数なのですが,Ubuntuに標準でインストールされている Cheese というアプリを使ってUSBカメラが起動できるか確認していただきたいです. エラーログを拝見する限りおそらく起動はすると思うのですが,ご協力いただけると幸いです. お手数をお掛けしますが,よろしくお願いします.
Cheese の使い方に関しては下記URLが参考になるかと思います. よろしくお願いします. https://gihyo.jp/admin/serial/01/ubuntu-recipe/0147
Cheeseでも以下のようなエラーが出て起動しません. `daiuske@daiuske-VirtualBox:~$ cheese libv4l2: error turning on stream: 入力/出力エラーです
(cheese:7073): cheese-WARNING **: リソースから読み込むことができません: gstv4l2bufferpool.c(1054): gst_v4l2_buffer_pool_poll (): /GstCameraBin:camerabin/GstWrapperCameraBinSrc:camera_source/GstBin:bin18/GstV4l2Src:v4l2src1: poll error 1: 入力/出力エラーです (5)
libv4l2: error turning on stream: 入力/出力エラーです`
Windows10では普通に起動できたのでカメラの問題では無いようです.
@daisuke0203 検証ありがとうございます! となると,今回の問題はROSのカメラドライバの前に VirtualBoxを使用していることに起因する問題がまずあるようですね! とりあえず問題の切り分けができてよかったです.
VirtualBoxでカメラにアクセスできない問題について調査します. 今すぐに解決策等を提示できずすみません. 何か糸口を見つけ次第,こちらにコメントします. お時間かかっており,申し訳ありませんが,よろしくお願いします.
@daisuke0203 こちらのサイトが参考になりそうです. よろしければお試しください. https://yatta47.hateblo.jp/entry/2019/01/12/202843
紹介していただいたサイトに従ってやってみました.
daiuske@daiuske-VirtualBox:~$ v4l2-ctl --list-devices
UVC Camera (046d:0825) (usb-0000:00:06.0-2):
/dev/video0
デバイスとしては認識されているみたいですが, この状態でCheeseを使ってもカメラは起動しません. 問題解決にご協力頂きとても助かります. 自分でも少しでも早く解決できるよう頑張ります. よろしくお願いします.
@daisuke0203 早速の検証ありがとうございます. 大変申し訳ありません.当方,デュアルブート環境でUbuntuをインストールしているため,すぐに同じ環境を構築し,検証する事が難しい状態です. 解決になかなか至れず申し訳ありません. 進展ありましたらこちらにコメントいたしますので,何卒よろしくお願いします.
どなたか本件についての見識があれば,ご協力いただけると幸いです. よろしくお願いします.
@daisuke0203 お手数ですが
をお伺いしてもよろしいですか? お手数をお掛けしますが,よろしくお願いします.
現在Twitterにて識者の方の意見をいただこうとしているところです. https://twitter.com/RyodoTanaka/status/1144160823004106753
よろしくお願いします.
@daisuke0203 Twitterにていくつか良いサイトを教えていただいたので共有します. 手元で試したわけではないので申し訳ないですが,ご参考になれば幸いです.
一通りのことが書かれてありそうなQiitaの記事 https://qiita.com/civic/items/684c4b82428feb0c4ae1
かなり詳細な設定情報まで書かれている記事 https://unskilled.site/virtualbox-64bit-linux/
Qiitaの記事を参考にしたところ,
・Cheese
・$ roslaunch chapter5 usb_cam.launch
・$ rosrun usb_cam usb_cam node
の全てにおいてカメラが正常に起動し問題を解決できました!
VirtualBoxのUSBの設定がデフォルトでUSB1.1になっていました. これをUSB3.0に変更すると全て解決出来ました.
自分の無知のためにここまで議論を引き延ばしてしまい本当に申し訳ないです. 皆さんのお力がなければ解決はもっと先になっていました. そして, @RyodoTanaka 氏には約5日間, 最初から最後まで神対応していただきました. 本当に感謝しています. ありがとうございました.
@daisuke0203 おおお! 解決されたのですね! 本当に良かったです!
本Issueでは、私どもも確認できていなかったミスを確認させていただくことができ、大変助かりました。 また、普段触っていないVBの技術習得にもなったので良かったです。 長い間お付き合い頂き、本当にすみませんありがとうございました。 何よりIssue建て本当にありがとうございました。
@daisuke0203 さん この度は issue でのご報告ありがとうございます。
今後の他の読者で同様の問題が起きたときにスムーズに解決できるよう、今回の issue での対策についてノウハウ蓄積の歯止めをかけたく存じております。
そこで、最終的に起動が成功した launch ファイルの内容をここに共有いただけないでしょうか?そのファイルは、もとのサンプルファイルと全く同様のものであればVBの設定のみが問題であったと思われますので、注釈として記載します。
一方で、画像フォーマット等の設定を変更した上で、かつVBの設定も修正したということであれば、我々の書籍の内容のエラッタを発行したいと思います。
大変ご多忙のところ申し訳ございませんが、最後のひと押しだけ、今後のROSデベロッパの皆様のため、お付き合いいただけましたら幸いです。
宜しくおねがいいたします。
もとのサンプルファイルでも問題なく起動できたのでVBの設定のみの問題だったと思います. 大変ご迷惑をおかけしてすみませんでした. よろしくお願いします.
承知しました。ありがとうございます。参考にさせていただきますね。
改めまして、本件クローズといたします。
第5章のp58にある $ rosrun usb_cam usb_cam node を実行すると以下のようなエラーが表示されます。 VIDIOC_STREAMON error 5, Input/output error
USBカメラはLogicoolのC270です。
以下のコマンドを実行してもできませんでした。 sudo apt-get update sudo apt-get dist-upgrade