mac + docker でrosを設定できるところまでやる


概要

macとdockerを使ってrosを立ち上げる時の備忘録

ros image + ubuntu vnc

ここを参考にしてVNCを用いてrosイメージのubuntu環境を触ることができる。

docker 環境にusbデバイスを認識させる

そもそもmacがどうusbデバイスを認識しているのかがわかっていないが、
docker コンテナにusbデバイスを認識させるためにはvirtualbox ベースのdocker hyperviser を使用する必要がある。

その際、https://qiita.com/shungok/items/6c5a7b5a9d63d51e6615#2-docker%E3%83%9B%E3%82%B9%E3%83%88os%E7%94%A8%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3dockervm%E4%BD%9C%E6%88%90
ここをフォローする。

https://github.com/jlhonora/lsusb
ここを使いmacからlsusbコマンドを実行できるようにすると便利。

ハイパーバイザを用いる時のvncへのポートフォーワーディング

https://qiita.com/hnakamur/items/3640825cf2c5d2d4a52a
ここを参考にし、VMにポートフォーワーディングを設定する。

よくわからないところ

vnc でros環境のubuntuに接続し、
/dev/video
などのデバイスドライバを確認しようとしても、見つからないこと。

使ったコマンド

docker-machine ls 
eval $(docker-machine env docker-host-default)
vboxmanage controlvm "docker-host-default" natpf1 "test,tcp,127.0.0.1,6080,,6080"
docker  run --rm --device /dev/usbmon0 --device /dev/usbmon1 --device /dev/usbmon2 -p 6080:80 --shm-size=512m tiryoh/ros-desktop-vnc:kinetic

docker run -p 6080:80 --shm-size=512m tiryoh/ros-desktop-vnc:kinetic

sudo apt-get update
sudo apt-get install -y usbutils

$ lsusb
$ sudo apt-get install ros-kinetic-uvc-camera
(console-1) $ roscore
$ rosparam set usb_cam/video_device "/dev/video1"
$ rosparam set usb_cam/pixel_format yuyv
(console-2) $ rosrun usb_cam usb_cam_node
(console-3) $ rosrun image_view image_view image:=/usb_cam/image_raw
(console-2) $ rosrun uvc_camera uvc_camera_node _device:=/dev/video1

camera callibration
(console-1) $ roscore
(console-2) $ rosrun usb_cam usb_cam_node
(console-3) $ rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.024 image:=/usb_cam/image_raw
$ cp /tmp/calibrationdata.tar.gz /path/to/destination