ais-lab / ubiquitous_display

Ubiquitous Display
MIT License
0 stars 0 forks source link

接続されているHokuyoのデバイスファイル名を列挙するスクリプトを作成した #7

Closed ronekko closed 8 years ago

ronekko commented 8 years ago

接続されているHokuyoのデバイスファイル名( /dev/ttyACM1 とかいうの)を列挙するスクリプトです。 これは実機で試す必要があります。


* 結果 (2つ接続されている場合の例)

/dev/ttyACM0 /dev/ttyACM1

ronekko commented 8 years ago

hokuyoの起動launchファイルに "/dev/ttyACM1" が埋め込まれているため、接続されているポートが変わると動かなくなってしまう可能性があります。

<launch>
  <node name="hokuyo_1" pkg="hokuyo_node" type="hokuyo_node" respawn="false" output="screen">
    <param name="calibrate_time" type="bool" value="false"/>
    <!-- Set the port to connect to here -->
    <param name="port" type="string" value="/dev/ttyACM1"/>  # ←ここを
    <param name="intensity" type="bool" value="false"/>
  </node>
</launch>

そこでこのスクリプトを使うようにすると、 どこに接続されていても動くようにできます。 無理でした、正しくは下のコメントのようにやればいいようです。

<launch>
  <node name="hokuyo_1" pkg="hokuyo_node" type="hokuyo_node" respawn="false" output="screen">
    <param name="calibrate_time" type="bool" value="false"/>
    <!-- Set the port to connect to here -->
    <param name="port" type="string" value="$(find ubiquitous_display)/scripts/list_hokuyo_devs.sh)"/>  # ←こうする
    <param name="intensity" type="bool" value="false"/>
  </node>
</launch>
ronekko commented 8 years ago

上のやつは無理でした。launchファイルの中で、シェルのコマンド置換( $() )を使うには、以下のように command を使う必要があるようです。

<launch>
  <node name="hokuyo_1" pkg="hokuyo_node" type="hokuyo_node" respawn="false" output="screen">
    <param name="calibrate_time" type="bool" value="false"/>
    <!-- Set the port to connect to here -->
    <param name="port" type="string" command="sh $(find ubiquitous_display)/scripts/list_hokuyo_devs.sh"/>  # ←こうする
    <param name="intensity" type="bool" value="false"/>
  </node>
</launch>