RoboTry

ROSを使ってロボットを動かすぞ

引数のあるrostest ファイルを実行する方法

ROS のお話です。

launchファイルに引数を与えて起動する$ roslaunch hoge hoge.launch huga:= "abcde" みたいなことやってません?

hoge.launch をコピーしてrostestファイルhoge.testを作ったけど、CMakeLists.txtにどうやって引数与えるんだ!?ってなっていません?

その解決方法を記載します。

今回の目標

  • 引数のあるroslaunch ファイルを準備する
  • 引数のあるrostestファイルを準備する
  • CMakeLists.txtを編集してテストを実行する

引数のあるroslaunchファイル

launch/hoge.launch

<launch> 
    <arg name="huga" default="aiueo" />
    <arg name="huga2" default=98765 />
    <group ns="$(arg huga)">
        <param name="huga_number" type="int" value="$(arg huga2)" />

        <node name="hoge" pkg="hoge_package" type="hoge_node.py"  />

        <!--  省略  -->
    </group>
</launch>

引数のあるrostestファイル

tests/hoge.test

<launch> 
    <arg name="huga" default="aiueo" />
    <arg name="huga2" default=98765 />
    <group ns="$(arg huga)">
        <param name="huga_number" type="int" value="$(arg huga2)" />

        <node name="hoge" pkg="hoge_package" type="hoge_node.py"  />
        <test test-name="test_hoge" pkg="hoge_package" type="test_hoge_node.py"  />
        <!--  省略  -->
    </group>
</launch>

CMakeLists.txt

# 省略

if(CATKIN_ENABLE_TESTING)
    find_package(rostest REQUIRED)
    add_rostest(tests/hoge.test ARGS huga:="abcde" huga2:=123456)
endif()

テストの実行

$ cd ~/catkin_ws #ワーキングスペースに移動

$ catkin_make
$ catkin_make run_tests # テストの実行
$ catkin_test_results # テスト結果の表示 

ポイント

  • add_rostest() に ARGSを加えることで、testファイルに引数を与えられます。

  • catkin_make run_tests は常にsuccessを返しちゃうので、catkin_test_results で結果を確認しましょう

参考資料