本リポジトリは、ROS (1/2)をDockerコンテナ上で開発・実行するための環境を提供する。Setup ROS 2 with VSCode and Dockerを参考にして作成した、各ディストリビューション向けのDockerfile
やdocker-compose.yml
を用意してある。GUIにも対応し、rviz等OpenGLアプリケーションも実行できる。vscodeユーザであれば、そのままdevcontainer
として利用することもできる。ホストのディレクトリのマウントやDocker volumeの活用により、ホストの再起動後などにも速やかに環境を復旧できる。
- Ubuntu 20.04 (x86_64, NVIDIA GPU)
- make
- docker
- nvidia-container-runtime (必要な場合)
ディレクトリ構成を次のようにしておく。<ROS workspace>
はROSのworkspaceとして扱うディレクトリのパス。例えば~/ws
など。src
の下のpackage_*
は無くても良い。
<ROS workspace>
└─ src
├─ package_1
├─ package_2
...
cd <任意のディレクトリ>
git clone git@github.com:amslabtech/amsl_ros_docker_ws.git
cd amsl_ros_docker_ws
make install TARGET_WS=<ROS_workspace> ROS_DISTRO=noetic NVIDIA_DOCKER=false
セットアップ後、ディレクトリ構成は以下のようになる。
<ROS workspace>
├─ cache
│ └─ ROS_DISTRO
│ ├─ build
│ ├─ install
│ └─ log
└─ src
├─ .devcontainer
│ ├─ devcontainer.json
│ ├─ Dockerfile
│ └─ docker-compose.yml
├─ package_1
├─ package_2
...
.devcontainer
のあるディレクトリ(<ROS workspace>/src
)でcode .
すると、vscode起動時にReopen in container
のポップアップが表示される。それを実行すれば、Docker imageをビルドし、コンテナを実行、vscodeからコンテナに接続できる。
<ROS workspace>/src
でdocker compose -f .devcontainer/docker-compose.yml up
すれば上記と同様のコンテナが立ち上がる。
上記のように起動したコンテナ内では、パッケージのビルドにcolcon
を使う。colcon
はcatkinパッケージでもamentパッケージでもpure cmakeパッケージでも自動判別して適切にビルドしてくれる。そのため対象のパッケージがROS 1でもROS 2でも同じコマンドでビルドできる。コンテナ内ではcb
というエイリアスが定義されているので、活用すると良い。
なお、colcon
コマンドは<ROS workspace>
ディレクトリで実行する必要がある。
代表的なコマンドを以下に示す。
cb
- ワークスペース全体をビルド
cb --packages-select package_1
package_1
をビルド
colcon test --pacakges-select package_1
package_1
のテストを実行