ロボット研究開発、ソフトウェア開発、コンテンツ制作配信

【Docker】MacにDocker+ROS環境を入れる

さて、前回記事で自分のMACにDockerを入れたので、Docker上にROS環境を構築しようと思います。

以下の記事を参考にさせていただきました。ありがとうございます。
Docker上でGUIのROS1/ROS2を一瞬でセットアップする方法
スポンサーリンク

Docker上にGUIのROS環境を構築

手順としては、なんと以下のコマンドを叩くだけで環境が構築されるようです。

MACのTerminalを開いて、上記コマンドを実行してみます。
しばらくすると、Docker desktop上のコンテナが動作中になりました。
最初実行時は、それなりに時間がかかりましたが、次回以降は、Docker desktopからコンテナを起動するか、同様にコマンド入力ですぐに起動しました。

MACのブラウザで以下にアクセスしてみます。
http://127.0.0.1:6080/

すごい、アクセスできました。

TerminalからROSバージョンを確認してみます。ROS melodicが入っています。コマンド一発でROS環境が入るのはすごく便利です。

$ echo $ROS_DISTRO
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://:11311 –env ROS_IP= tiryoh/ros-desktop-vnc:melodic
試しにやってみました。
.bashrcを確認しても、ROS_MASTER_URIは変化なし。

ROSマスターは、ロボット側(jetsonNano)にあるので、試しに、コンテナ内の~/.bashrcのROS_MASTER_URIとROS_IPを変更してみました。
[.bashrc]

#export ROS_IP=127.0.0.1
export ROS_IP=MACのIPアドレス
#export ROS_MASTER_URI=http://$ROS_IP:11311
export ROS_MASTER_URI=http://ROSマスターのIPアドレス(ロボット側):11311

.bashrc編集後、コンテナ内で以下を実行します。

$ source ~/.bashrc

dockerコンテナ内からRVIZを起動してみます。

$ rviz

おぉおー、表示出た! ロボット側からのトピックは受信できているようです。
これはめちゃくちゃ便利。これで、MAC(Docker)でロボット自律走行のデバッグができそうです。
試しにRVIZからロボット側へゴール(/move_base_simple/goal)を送ってみます。
→うーん、動かない。。Publishはうまくいかないのかな?このあたりはまた色々検証してみようとおもいます。

MAC Docker内のRVIZ検証結果

ロボット→MAC(Docker RVIZ)トピック受信・・・・OK
ロボット←MAC(Docker RVIZ)トピック送信・・・・NG(ロボット側でトピック受信できない)

最後に

あとは、MAC(Docker+ROS)側からロボット側へトピック送信ができるようになれば、開発環境を完全にMACへ移行できそうです。
また何かわかったら記事を更新します。
それでは!

スポンサーリンク

いいね!を押すと、
最新記事をお届けします。

Twitter で
関連記事(一部広告含む)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


ページトップボタン