【Docker】MacにDocker+ROS環境を入れる
さて、前回記事で自分のMACにDockerを入れたので、Docker上にROS環境を構築しようと思います。
Docker上でGUIのROS1/ROS2を一瞬でセットアップする方法
目次
Docker上にGUIのROS環境を構築
手順としては、なんと以下のコマンドを叩くだけで環境が構築されるようです。
|
1 |
$ docker run -p 6080:80 --shm-size=512m tiryoh/ros-desktop-vnc:melodic |
MACのTerminalを開いて、上記コマンドを実行してみます。
しばらくすると、Docker desktop上のコンテナが動作中になりました。
最初実行時は、それなりに時間がかかりましたが、次回以降は、Docker desktopからコンテナを起動するか、同様にコマンド入力ですぐに起動しました。

MACのブラウザで以下にアクセスしてみます。
http://127.0.0.1:6080/
TerminalからROSバージョンを確認してみます。ROS melodicが入っています。コマンド一発でROS環境が入るのはすごく便利です。
melodic
コマンドの意味

せっかくDockerを勉強中なので、今回実行したコマンドの意味を調べました。
イメージがまだ存在しないのに、docker runでなぜコンテナが立ち上がるのか疑問でしたが、docker runはイメージのダウンロードからやってくれるのですね。
docker run
docker runは、Dockerコンテナを作成して起動するコマンド。なおコンテナ作成にはイメージが必要ですが、イメージが無い場合は、イメージのダウンロードから行ってくれるそうです。
オプション -p
-p 6080:80: ポートフォワーディングのオプション。ホストのポート6080をコンテナのポート80にマッピングします。
これにより、ホストマシンのhttp://localhost:6080にアクセスすると、コンテナ内のWebサーバーに接続されます。
オプション –shm-size=512m
–shm-size=512m: コンテナの共有メモリサイズを512MBに設定します。
RVIZで外部のROS環境のデバッグができるか?
私が一番やりたいのが、自分のロボットのデバッグをMAC+Docker+ROSでデバッグすることです。いままでわざわざUbuntuPCを立ち上げて、RVIZを起動してデバッグしてました。
ナビゲーション用のAndroidアプリ開発はMACでやっているので、開発PCをMACに統一したいです。
さて、chatgptにきいてみると、以下を実行すればよいとのこと。
docker run -p 6080:80 –shm-size=512m –env ROS_MASTER_URI=http://
試しにやってみました。
.bashrcを確認しても、ROS_MASTER_URIは変化なし。
ROSマスターは、ロボット側(jetsonNano)にあるので、試しに、コンテナ内の~/.bashrcのROS_MASTER_URIとROS_IPを変更してみました。
[.bashrc]
export ROS_IP=MACのIPアドレス
#export ROS_MASTER_URI=http://$ROS_IP:11311
export ROS_MASTER_URI=http://ROSマスターのIPアドレス(ロボット側):11311
.bashrc編集後、コンテナ内で以下を実行します。
dockerコンテナ内からRVIZを起動してみます。
おぉおー、表示出た! ロボット側からのトピックは受信できているようです。
これはめちゃくちゃ便利。これで、MAC(Docker)でロボット自律走行のデバッグができそうです。
試しにRVIZからロボット側へゴール(/move_base_simple/goal)を送ってみます。
→うーん、動かない。。Publishはうまくいかないのかな?このあたりはまた色々検証してみようとおもいます。
MAC Docker内のRVIZ検証結果
ロボット→MAC(Docker RVIZ)トピック受信・・・・OK
ロボット←MAC(Docker RVIZ)トピック送信・・・・NG(ロボット側でトピック受信できない)
最後に
あとは、MAC(Docker+ROS)側からロボット側へトピック送信ができるようになれば、開発環境を完全にMACへ移行できそうです。
また何かわかったら記事を更新します。
それでは!
スポンサーリンク




