Closed ronekko closed 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>
上のやつは無理でした。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>
接続されているHokuyoのデバイスファイル名(
/dev/ttyACM1
とかいうの)を列挙するスクリプトです。 これは実機で試す必要があります。実行方法1
結果 (1つだけ接続されている場合の例)
/dev/ttyACM0 /dev/ttyACM1