DockerでGUI付きROSシミュレーション環境構築(myCobot)

Docker

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などをインストールしたイメージを再度使用できます。

コメント

タイトルとURLをコピーしました