Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ROS Masterの起動に合わせて自動で再起動するノード

More than 3 years have passed since last update.

まえがき

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をデスクトップショートカットとして登録できます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away