ROS GUI on macOS
macOSでROSのturtlesimやrqtを実行できるDockerイメージを紹介します1.
Dockerイメージはここで公開しています.
noeticはubuntu:20.04,melodicはubuntu:18.04のDockerイメージから作成しています.
環境構築
HomebrewやDockerが既にインストールされている環境を想定しています.
1. Socatのインストール
Homebrewを使ってインストールします.
brew install socat
2. XQuartzのインストール
こちらもHomebrewを使ってインストールします2.
brew cask install xquartz
3. XQuartzの設定変更
XQuartzを以下のコマンドで起動した後に,環境設定を開いて「セキュリティ」タブの「ネットワーク・クライアントからの接続を許可」にチェックを入れてください3.
open -a XQuartz
使い方
ターミナルを複数開いてturtlesimを実行します.
1つ目のターミナル
XQuartzでturtlesimが表示されるように準備します.
1. ホストのIPアドレスを確認
ifconfig en0 | grep inet | awk '$1=="inet" {print $2}'
2. XQuartzが接続を受け入れるコンピュータのリストにホスト名を追加する
xhost +xxx.xxx.x.x
3. Socatでポートを起動4
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
2つ目のターミナル
Dockerイメージからコンテナを作成して,roscoreによってROSマスターとパラメータサーバーを起動します.
XQuartzを起動
open -a XQuartz
Dockerコンテナを作成
docker run -it -e DISPLAY="xxx.xxx.x.x:0" nha6ki/ros-gui:noetic
roscoreを実行
root@xxxxxxx:/# roscore
3つ目のターミナル
作成したDockerコンテナに入り,turtlesimを起動します.
Dockerコンテナに入る
docker ps docker exec -it xxxxxxxx bash
turtlesimを起動
root@xxxxxxx:/# rosrun turtlesim turtlesim_node
4つ目のターミナル
turtlesimの亀を動かすROSノードを起動します.
turtle_teleop_keyを起動
docker exec -it xxxxxxxx bash root@xxxxxxx:/# rosrun turtlesim turtle_teleop_key
5つ目のターミナル
rqt_graphを使って,ノードとトピックの接続状態を可視化します.
rqt_graphを起動
docker exec -it xxxxxxxx bash root@xxxxxxx:/# rosrun rqt_graph rqt_graph
最後に
最終的にこうなります.