内容
rosノードプロセスが死んでしまったときに,自動で検知して再起動する方法がないかと調べたところ,roslaunch内でrespawnをtrueにすると自動で再起動してくれることが分かりました。(※例えばデバイスを扱うノードとかはデバイスが無いと死んでしまったりするのですが,これを使うとデバイスをつないだタイミングでノードが立ち上がるなどの動作ができるようになります)
以下のようにrespawn="true"
と記載するだけでOKです。
respawn.launch
<roslaunch>
<node name="foo" pkg="package" type="node" respawn="true" />
</roslaunch>
ちなみに,再起動のdelayなども設定可能みたいですので、興味がある方は公式ドキュメントをご参照ください。(デフォルトではdelayは0秒なので負荷軽減のためには入れた方がいいのかもしれません)
さいごに
自分でbashファイルなどでプロセスが死んだか監視して再起動みたいな事をしなくていいためとても便利ですね!
参考