DockerでもROSのイメージがあるということで使ってみようと思ったのですが、
ROSに関しては初心者なので、実機でやるよりは、シミュレーションから始めて見ようと思いました。
シミュレーションをするならgazeboとかrvizのGUIを開くと便利だと思い、調べてみたら、なんとGUI付きのROS環境イメージがあるではないですか!
tiryoh/ros-desktop-vnc – Docker Image | Docker Hub
Dockerの公式イメージではないようですが、たぶん、ROSイメージにLXDEのGUIを付けただけのものかな~と思うので、今回はこれを使って、myCobotのシミュレーション環境を作ってみます。
※今回使用するのはROSですが、ROS2バージョンもあるようです。
tiryoh/ros2-desktop-vnc – Docker Image | Docker Hub
とりあえず使ってみる
以下を参考に、取りあえず立ち上げてみます。
Docker上でGUIのROS1/ROS2を一瞬でセットアップする方法 – Qiita
ただし、dockerコマンド、つまり
$ docker run -p 6080:80 --shm-size=512m tiryoh/ros-desktop-vnc:melodic
みたいな感じで立ち上げてもいいのですが、後々環境を改造していくことを考えると、docker-composeで立ち上げたほうがいいので、筆者は以下のdocker-compose.yml、Dockerfileを用意して立ち上げました。
Dockerfile
FROM tiryoh/ros-desktop-vnc:melodic
docker-compose.yml
version: '3'
services:
mycobot:
build: .
container_name: 'mycobot'
tty: true
ports:
- 8080:80
後でmyCobotシミュレータをインストールするので、コンテナ名はmycobotにしてありますが、分かりやすければなんでもいいです。
この状態で、docker-compose.ymlがあるディレクトリでビルド、コンテナ起動します。
$ docker-compose build
$ docker-compose up
コンテナが起動したら、ブラウザで『http://127.0.0.1:8080/』に接続します。
すると、以下のようなGUIが表示されました。

※もしブラウザに表示されない場合はファイアウォールなどでブロックされているかもしれないので、設定を確認してみてください。
このGUIの左下のメニューからSystem Tools > LXTerminal
でターミナルを起動できるので、ターミナルで以下を実行します。
$ roscore
さらに、別ターミナルを開き、以下を実行します。
$ rosrun turtlesim turtlesim_node
すると、以下のようにカメさんのシミュレータが開きます。

カメさんの動かし方:ROS_11:基本 ROSのサンプルを使ってみる。(turtleSim) – Qiita
とりあえず、ROS環境は問題ないことが確認できました。
myCobotシミュレータを動かす
以下を参考に、myCobotシミュレータを起動しました(というか、以下の記事だけできます)。
DockerでmyCobotのROSシミュレータを動かす|myCobotのすべて (zenn.dev)

※ROS環境準備のところでコンテナ内で環境整備するよりDockerfileにコマンドを書いてビルドしようと思いましたが、Dockerだとbashではなくshで実行されるようで、bashとshを読み替える操作を入れるのが面倒だったので、結局記事通り「コンテナ内で環境構築→Docker commit」で環境を保管しました。
Docker commitの後にDockerfile+docker-compose.ymlで起動する場合は、イメージ名をmycobotとして保存したので、Dockerfileは以下のようにします。
FROM mycobot
これで、mycobotなどをインストールしたイメージを再度使用できます。
コメント