ROS x Dockerのお勉強
やりたいこと
ROSをDockerで動かしたい。
参考資料
Docker + ROS(kinetic)でチュートリアル - Qiita
https://hub.docker.com/r/_/ros/
ROS-Docker-tutorial.md · GitHub
docs/ros at master · docker-library/docs · GitHub
Mac版DockerでROSを動かしてみたメモ - Qiita
ロボット向けアプリケーションをDockerコンテナで動かす - Qiita
Ubuntu16.04上でDocerを使いROSを動かす: たこ104のブログ
ros.youtalk.jp — ROS 2 + Dockerによるフォールトトレランス実践 (1)
参考動画
Dockerfile
FROM ros:kinetic # install ros tutorials packages RUN apt-get update && apt-get install -y RUN apt-get install -y ros-kinetic-ros-tutorials \ ros-kinetic-common-tutorials \ && rm -rf /var/lib/apt/lists/
Build
- docker build --tag ros:ros-tutorials .
Tutorial
master, talker, listenerの3つを動作させ,talkerが発するメッセージをlistenerが聞く
networkの作成
- docker network create rosnet
masterの起動
- docker run -it --net rosnet --name master ros:ros-tutorials roscore
talkerの起動
- docker run -it --net rosnet --name talker --env ROS_HOSTNAME=talker --env ROS_MASTER_URI=http://master:11311 ros:ros-tutorials rosrun roscpp_tutorials talker
listenerの起動
- docker run -it --net rosnet --name listener --env ROS_HOSTNAME=listener --env ROS_MASTER_URI=http://master:11311 ros:ros-tutorials rosrun roscpp_tutorials listener
Docker Compose
Now that you have an appreciation for bootstrapping a distributed ROS example manually, lets try and automate it using docker-compose.
rosでいうlaunchファイル的なもの
docker-compose.yml
version: '2' services: master: build: . container_name: master command: - roscore talker: build: . container_name: talker environment: - "ROS_HOSTNAME=talker" - "ROS_MASTER_URI=http://master:11311" command: rosrun roscpp_tutorials talker listener: build: . container_name: listener environment: - "ROS_HOSTNAME=listener" - "ROS_MASTER_URI=http://master:11311" command: rosrun roscpp_tutorials listener
docker build -> runを実行
- 起動方法
- docker-compose up
Docker composeの参考
docker-composeを使うと複数コンテナの管理が便利に - Qiita
ROS x Docker x GUI
docker/Tutorials/GUI - ROS Wiki
手順
xhost +
以下コマンドを実行
docker run -it \ --env="DISPLAY" \ --env="QT_X11_NO_MITSHM=1" \ --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ osrf/ros:indigo-desktop-full \ rqt export containerId=$(docker ps -l -q)
ROS(kinetic) x Docker x GPU
docker/Tutorials/Hardware Acceleration - ROS Wiki
1: Dockerfileの準備
FROM osrf/ros:kinetic-desktop-full # nvidia-docker hooks LABEL com.nvidia.volumes.needed="nvidia_driver" ENV PATH /usr/local/nvidia/bin:${PATH} ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64:${LD_LIBRARY_PATH}
2: build
docker build --tag ros:nvidia .
3: run
nvidia-docker run -it \ --env="DISPLAY" \ --env="QT_X11_NO_MITSHM=1" \ --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ ros:nvidia \ bash -c "roscore & rosrun rviz rviz"
うごけばおけぃ
Deep Learningのフレームワークをいろいろ動かす
Dockerfile
以下を追記
RUN apt-get update RUN apt-get install emacs RUN apt-get install tmux RUN apt-get install wget RUN apt-get install -y python-pip RUN pip install tensorflow-gpu keras RUN pip install http://download.pytorch.org/whl/cu80/torch-0.3.0.post4-cp27-cp27mu-linux_x86_64.whl RUN pip install torchvision
kerasを動かす
docker cp cuda-8.0/ [コンテナID]:/usr/local/
コンテナ内でPATHの設定
wget https://raw.githubusercontent.com/fchollet/keras/master/examples/mnist_cnn.py
python mnist_cnn.py
pytorchを動かす
- python pytorch_sample.py
線形回帰をといてみる
TODO
torch.nn — PyTorch master documentation
chainer
FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04 RUN apt-get update -y && \ apt-get install -y --no-install-recommends \ python-dev \ python-setuptools \ python-pip && \ rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* RUN pip install --upgrade pip RUN pip install cupy==1.0.3 chainer==2.1.0 # install packages RUN apt-get update && apt-get install -y --no-install-recommends \ dirmngr \ gnupg2 \ && rm -rf /var/lib/apt/lists/* # setup keys RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 421C365BD9FF1F717815A3895523BAEEB01FA116 # setup sources.list RUN echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list # install bootstrap tools RUN apt-get update && apt-get install --no-install-recommends -y \ python-rosdep \ python-rosinstall \ python-vcstools \ && rm -rf /var/lib/apt/lists/* # setup environment ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 # bootstrap rosdep RUN rosdep init \ && rosdep update # install ros packages ENV ROS_DISTRO kinetic RUN apt-get update && apt-get install -y \ ros-kinetic-ros-core=1.3.1-0* \ && rm -rf /var/lib/apt/lists/* # install cv2 RUN apt-get update && apt-get install -y ros-kinetic-cv-bridge # install editor and tools RUN apt-get install emacs RUN apt-get install tmux # setup entrypoint COPY ./ros_entrypoint.sh / ENTRYPOINT ["/ros_entrypoint.sh"] CMD ["bash"]
TODO
- TX2 x ROS上でpytorchを動かす