2017/09/16

ROSチュートリアル6-ROSlaunch-(ORB-SLAMを一発起動)

ROSlaunchという,とっても便利なものの説明をします.
ROSやるなら必修だと思います.自分で書けるようになりましょう

例えばUSBカメラノードを立ち上げてその出力を見るには
\$roscose
\$rosparam set /usb_cam/pixel_format yuyv
\$rosrun usb_cam usb_cam_node
\$rosrun image_view image_view image:=/usb_cam/image_raw

が必要でした.

しかも,roscore,usb_cam_node,image_viewで計3つの端末を立ち上げることが必要です.

これを一発でできたらラクですね.コレを可能にするものがroslaunchです.
また,同じノードを2つ立ち上げることも可能になります.

roslaunchのwikiはUsingRqtconsoleRoslaunchで見ることができます.

Rqtconsoleはデバッグ用なので必要なときに説明します.

まず,一応必要なソフトが入っていないなら入れときます.

\$ sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim

ここで<distro>はindigoやjadeなどrosのバージョンです.

launchファイルは複数のノードを起動したり,その時のパラメータや名前などをその時々で変えて実行したりすることができる.


例えば,
ORB-SLAMをカメラで起動したいならば,ORBSLAM.launchなんてファイルをいかのように作って


<launch>

<group ns="SLAM1">
<node pkg="ORB_SLAM" type="ORB_SLAM" name="ORB_SLAM" args="/Data/ORBvoc.txt  /Data/Settings.yaml" output="screen">
<remap from="/camera/image_raw" to="/usb_cam_node/image_raw"/>
</node>
</group>


<node pkg="rviz" type="rviz" name="rviz" args="-d Data/rviz.rviz">
</node>

<node pkg="image_view" type="image_view" name="image_view" args="_autosize:=true">
<remap from="image" to="/SLAM1/ORB_SLAM/Frame"/>
</node>


<node pkg="usb_cam" type="usb_cam_node" name="usb_cam_node" args="__name:=camera">
<param name="video_device" value="/dev/video0" />
</node>

</launch>


\$roslaunch [package名] ORBSLAM.launch
なんてすれば1発で必要なものをすべて起動することができます.

<launch>
</launch>

で,launchファイルがどこからどこまであるかを示します

<group ns="SLAM1">
</group>
は2つ以上同じノードを起動したいとき,区別するためにグループ名をつけています.
同じノードを2つ以上起動しないならなしでおk
<group ns="SLAM2">
<node pkg="ORB_SLAM" type="ORB_SLAM" name="ORB_SLAM" args="/Data/ORBvoc.txt  /Data/Settings.yaml" output="screen">
<remap from="/camera/image_raw" to="/usb_cam_node/image_raw"/>
</node>
</group>
なんて追記すれば,ORB-SLAMを2つ同時に実行することも可能です.

<node pkg="ORB_SLAM" type="ORB_SLAM" name="ORB_SLAM" args="/Data/ORBvoc.txt  /Data/Settings.yaml" output="screen">
<remap from="/camera/image_raw" to="/usb_cam_node/image_raw"/>
は,
\$rosrun ORB_SLAM ORB_SLAM /Data/ORBvoc.txt  /Data/Settings.yaml /camera/image_raw:=/usb_cam_node/image_raw
に対応.

\$rosrun ORB_SLAM ORB_SLAMの後に/Data/ORBvoc.txt  /Data/Settings.yaml
が必要なのでargs=で付け足しています.

また,roslaunchで実行すると出力しないので,出力結果をコンソールに出すためにoutput="screen"をつけています.

remapとはここ参照で,大切なものでした.launch fileの形だと上記のようになります.

同様に
<node pkg="usb_cam" type="usb_cam_node" name="usb_cam_node" args="__name:=camera">
<param name="video_device" value="/dev/video0" />
</node>
は,
\$rosparam set /usb_cam/video_device /dev/video0
\$rosrun usb_cam usb_cam_node
に対応します.
これがどう動くかはここ参考

他にもいろんなタブがあるけど,それは自力で調べてみてね

0 件のコメント:

コメントを投稿