時間差でnodeを立ち上げたい

http://wiki.ros.org/ira_laser_tools

例えば上記パッケージの laserscan_multi_merger は複数のscanトピックを組み合わせて1つのscanトピックを吐き出してくれるnodeです。このnodeは起動時にトピックを全て取得して、laserscan_topics で設定した名前と一致していたトピックを組み合わせ用に使用しています。

しかし、組み合わせ用のトピックの取得は起動時にしか選択されないため、このnodeが立ち上がった後に起動されたscanトピックは反映されません。(記事執筆当時)

そのため、全てのscanトピックが立ち上がってからnode起動をしたい、というニーズが発生します。(もちろんコードを修正する形でも良い)

launch-prefixを用いる方法

  • Set delay between starting nodes within launch file

https://answers.ros.org/question/233353/set-delay-between-starting-nodes-within-launch-file/

上記の回答を参考にさせていただきました。

  <arg name="node_start_delay" default="5.0" />
  <node pkg="ira_laser_tools" name="laserscan_multi_merger" type="laserscan_multi_merger" output="screen" launch-prefix="bash -c 'sleep $(arg node_start_delay); $0 $@' ">
    <param name="destination_frame" value="/base_link"/>
    <param name="cloud_destination_topic" value="/merged_cloud"/>
    <param name="scan_destination_topic" value="/scan_multi"/>
    <param name="laserscan_topics" value ="/scan_left /scan_front /scan_right" />

    <param name="angle_min" value="-3.14"/>
    <param name="angle_max" value="3.14"/>
    <param name="angle_increment" value="0.0058"/>
    <param name="scan_time" value="0.0333333"/>
    <param name="range_min" value="0.30"/>
    <param name="range_max" value="50.0"/>
  </node>

 このように、launch-prefixを用いてbashコマンドを実行して、sleepしてしまうという手法で、ハック的なところがありますが、上記の例ではlaunchファイルが起動してから5秒後に laserscan_multi_mergerノードが立ち上がるため、無事に全てのscanをsubscribeすることができました。

Ros

Related Posts

AWS RoboMakerでワールドを生成してシミュレーションに使う
AWS RoboMakerでワールドを生成してシミュレーションに使う
AWS RoboMakerでのワールド生成 AWS RoboMakerは、ROSのロボットアプリケーションの開発をクラウド上で行うことができる、AWSのサービスです。詳しくは下記の記事をご覧ください。 RoboStation htt...
Read More
ロボットに非常停止スイッチを取り付ける
ロボットに非常停止スイッチを取り付ける
概要 ロボットが予期せぬ動作をし、危害を及ぼしそうになった場合に緊急停止をするスイッチをつけておくことは重要です。 その際、非常停止スイッチは必ず回路的に遮断する設計にする必要があるため、電源との間に非常停止スイッチを挟んでおいて、ス...
Read More
ブレッドボードでジャンパ線が外れる時は端子台がおすすめ
ブレッドボードでジャンパ線が外れる時は端子台がおすすめ
ブレッドボードでジャンパ線が外れる ブレッドボードは気軽に配線を組むことができるのでとても便利ですが、引っかかってしまったり穴がゆるくなったりすると、ジャンパ線が抜けてしまうことも良くあると思います。 とはいえ、プロトタイピングの途中...
Read More

サイトについて

RoboStationは誰でも手軽にロボットを製作できるようにすることを目的としたEC・ハウツーサイトです。