オンラインイベント参加録 2020

COVID-19の影響によりオンラインでインベントが開催されるようになりました.私が実際に参加したイベントを以下に示します.

Academic

IEEE

Robot

ML / DL

Python

Others

Engineer

Google

Tongali

cluster

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

最後に

最終的にこうなります.

f:id:nha6ki:20201029170801p:plain


  1. rvizやGazeboは実行できません.

  2. エラーが出るときは,以下のコマンドを実行してください.
    brew update-reset && brew update

  3. 「入力」タブの「3 ボタンマウスをエミュレート」にチェックを入れると,Option + クリック でペーストできるようになります.

  4. “Address already in use"と出力されたときは,プロセスを終了させてから実行してください.
    lsof -n -i | grep 6000
    kill -9 xxxx