粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

Docker を用いて ROS 環境構築

最近ROSをちゃんとはじめようとチュートリアルとかとにらめっこしています.
ROSといえば昔なんとなくで導入したらAnacondaの他のPython環境とブッキングして大変な目に合ってからさわってません.
ossyaritoori.hatenablog.com

他の環境とのブッキングを避けていろいろやりたいという背景からDockerを使用しています.
Virtualenv?知らね.

Dockerのインストール

公式のDocumentに従ってください.
日本語化してもいいけど面倒なので...
docs.docker.com


ROSのイメージをPull

ROSのイメージをさくっとpullできます.
docker/Tutorials/Docker - ROS Wiki

以下のコードを実行しますが,Permissionがなかったのでsudoでやりました.

docker pull ros

Permissionが無いと言われたら?

https://techoverflow.net/2017/03/01/solving-docker-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket/

以下のとおり.$USERは自分のUSER名を用いてください.

sudo usermod -a -G docker $USER

終わったら再起動するのが安心です.

使い方

初回は

docker run -it ros 

でrosのイメージを起動してください.

その後別のターミナルでIDなどを確認します.

docker ps -l

僕の環境ではこうなりました.

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
1b38c11303cd        ros                 "/ros_entrypoint.s..."   2 hours ago         Up 14 seconds                           lucid_sinoussi

Dockerを立ち上げるときはこちら.<ID>は変えてね.なお,複数ターミナルからstartしないよう注意.

sudo docker start -i 1b38c11303cd

そして立ち上げたDockerに入るときはこちら.IDは(略).こちらもstartされてないコンテナには入れませんので注意.

sudo docker exec -it 1b38c11303cd bash

出るときはexitで出ます.
正しく動作するはずですが正しい手順かはしりません.

ROSテスト

書いてから思ったのですがROSのチュートリアルをある程度読んでいる前提で記事を書いています.
何もわからない人は,とりあえずなんか動いていることを確認したら後はご自由に.

startしたターミナルでMasterプログラムを走らせましょう.

roscore

これは簡単.
(はじめての人へ:これはサーバ的なプログラムでこれを立ち上げて他のターミナルからこいつにアクセスします.プログラムが待機状態になりっぱなのは仕様です.)

なお,execを用いて客として入った?場合は以下のコードを実行しないとROSのコードを実行できません.

source /opt/ros/kinetic/setup.bash 

ああん?

rostopic list

でroscoreが動いていることを確かめればOK.