Dockerコンテナ上でBWT901CL(IMUセンサ)を使おうとして,調べたことをまとめる.
やらないといけないことは以下の2点.
-
docker run
でホストとコンテナ間でUSBデバイスのフォルダを共有する. -
chmod
で実行権限を与える.
1. ホストとコンテナ間でUSBデバイスの共有
そのときのdocker run
用のシェルスクリプトは以下のとおり
run.sh
USER_NAME=dorebom
WORKSPACE=workspace/ros2docker/ros2_ws
docker run --rm -it --privileged \
--gpus all \
--device=/dev/ttyUSB0:/dev/ttyUSB0 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /etc/localtime:/etc/localtime \
-v /home/$USER_NAME/$WORKSPACE:/home/developer/ros2_ws \
-e DISPLAY=$DISPLAY \
--name ros2test \
ros2docker:foxy
ここで,今回のUSBデバイスのアドレスは/dev/ttyUSB0
であったので,--device
オプションで共有.
[NOTE]その他のオプションは,Dockerコンテナ上でGPUを使うためと,ROSのGazeboなどのGUIをホスト側で利用するためのものであり,また後日解説する.
2. 実行権限を与える
このままでは,コンテナ内でUSBデバイスを認識できても実行できないので権限を与える.
$ sudo chmod 777 /dev/ttyUSB0
ここで,私の環境ではDockerコンテナ内でユーザアカウントを利用しているため,sudo
を使用している.
参考にしたページ