まえがき
ROSを使ってロボット実機を動かしている人はロボットにroscore
(+ロボットのコントローラノードなど)を上げておいて、各自のLaptopからROS_MASTER_URI
を設定してロボットと通信して実験をしていると思います。
ここで面倒なのはロボットに何らかの問題が発生し(バッテリ・ネットワーク切れなど)てroscore
が見えなくなると、すべての関連ノードを再起動しないといけないことです。
そこで、masterを監視して、自動で再起動(ROS的にいうとrespawn
)するラッパースクリプトを書いたので、共有します。
やりかた
-
セットアップ
sudo wget https://gist.githubusercontent.com/furushchev/7cb528bdabf650bd067e26685c903a4c/raw/f88c27b225c08b67fcddc60620e5f8b9a5944afe/auto_restart -O /usr/local/bin/auto_restart ## Wow, too low security!
-
起動
# ロボットなど roscore
# ラップトップ auto_restart rosrun rviz rviz
この状態で
roscore
を落とすと、rvizも落ちます。
で、もう一度ロボットでroscore
を上げると、再度rviz
が起動します。
まとめ
- これでロボットを再起動するたびにロボット組み込みディスプレイにデモ用のRVizを上げ直す必要がなくなった。
- PR2などでは
rqt_pr2_dashboard
をこれで起動することで、バッテリ切れに気がつきやすくなった。
おまけ
Ubuntu限定でデスクトップアプリ?を作る方法
下のようなファイルを作ります。(ここではRViZ.desktop
というファイル名)
[Desktop Entry]
Version=1.0
Type=Application
Icon[ja_JP]=task-past-due
Icon=task-past-due
Name[ja_JP]=RViz
Name=RViz
Exec=/bin/bash -l -i -c "DISPLAY=:0.0 ROS_MASTER_URI=http://robot:11311 /usr/local/bin/auto_restart rosrun rviz rviz -d $(rospack find my_awesome_pkg)/config/startup.rviz"
上のファイルを~/.local/share/applications/RViZ.desktop
などとして置きます。
Ubuntuの右上のメニューからrviz
と入力するとアイコンが出ると思います。
これをデスクトップにドラッグすると、RViZをデスクトップショートカットとして登録できます。