ROS2 Tutorials – Using turtlesim, ros2, and rqt

はじめに

今回もチュートリアルをトレースする備忘.このチュートリアルでは,今後のチュートリアルを進めるためのシミュレータやツールの導入及び実行ができるようにする.そのため細かい解説は省略する.

Using turtlesim, ros2, and rqt — ROS 2 Documentation: Iron documentation

Turtlesim

Turtlesim は ROS2 を学習するための軽量なシミュレータ.私の環境では ROS2 をソースコードからビルドしているので,その際に Turtlesim もコンパイルされている.

$ source ros2_iron/install/setup.bash
$ ros2 pkg executables turtlesim
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

Turtlesim を起動する.

$ ros2 run turtlesim turtlesim_node
[INFO] [turtlesim]: Starting turtlesim with node name /turtlesim
[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

カメを操作するためのプログラムを起動する.矢印キーとかでカメを移動できる.

$ source ros2_iron/install/setup.bash
$ ros2 run turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. 'F' to cancel a rotation.
'Q' to quit.

ros2 コマンド

ros2 コマンドを使うと状態確認やアクション等様々な操作をコマンドライン上で実行できる.新しいターミナルを立てて ros2 コマンドで状態を確認してみる.

$ source ros2_iron/install/setup.bash
$ ros2 --help
usage: ros2 [-h] [--use-python-default-buffering] Call `ros2 <command> -h` for more detailed usage. ...

ros2 is an extensible command-line tool for ROS 2.

options:
  -h, --help            show this help message and exit
  --use-python-default-buffering
                        Do not force line buffering in stdout and instead use the python default buffering, which might be affected by PYTHONUNBUFFERED/-u
                        and depends on whatever stdout is interactive or not

Commands:
  action     Various action related sub-commands
  bag        Various rosbag related sub-commands
  component  Various component related sub-commands
  daemon     Various daemon related sub-commands
  doctor     Check ROS setup and other potential issues
  interface  Show information about ROS interfaces
  launch     Run a launch file
  lifecycle  Various lifecycle related sub-commands
  multicast  Various multicast related sub-commands
  node       Various node related sub-commands
  param      Various param related sub-commands
  pkg        Various package related sub-commands
  run        Run a package specific executable
  security   Various security related sub-commands
  service    Various service related sub-commands
  test       Run a ROS2 launch test
  topic      Various topic related sub-commands
  trace      Trace ROS nodes to get information on their execution
  wtf        Use `wtf` as alias to `doctor`

  Call `ros2 <command> -h` for more detailed usage.

ノード一覧.

$ ros2 node list
/teleop_turtle
/turtlesim

トピック一覧.

$ ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

サービス一覧.

$ ros2 service list
/clear
/kill
/reset
/spawn
/teleop_turtle/describe_parameters
/teleop_turtle/get_parameter_types
/teleop_turtle/get_parameters
/teleop_turtle/get_type_description
/teleop_turtle/list_parameters
/teleop_turtle/set_parameters
/teleop_turtle/set_parameters_atomically
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/describe_parameters
/turtlesim/get_parameter_types
/turtlesim/get_parameters
/turtlesim/get_type_description
/turtlesim/list_parameters
/turtlesim/set_parameters
/turtlesim/set_parameters_atomically

アクション一覧.

$ ros2 action list
/turtle1/rotate_absolute

rqt ツール

rqt では ros2 コマンドで行っていたような操作を GUI 上で行うことができる.

今回のチュートリアルでは,Plugins > Services > Service Caller からカメのスポーンと軌跡のプロパティを設定してみる.

spawn service

rqt を起動して,Service Caller から /spawn サービスを選択.適当に Topic に値を設定して Call ボタンを押す.

$ rqt

そうするとカメがスポーンする.

set_pen service

今度は /turtle1/set_pen を開いてき適当に値を設定して Call を押す.

Termenal2 からカメを操作すると軌跡が設定したとおりの色になった.

remapping

ここまでのチュートリアルでカメは2匹になったが,2匹目のカメは操作できない状態だった.ここでは cmd_vel トピックをリマップして追加した2匹目のカメを操作する.

$ source ros2_iron/install/setup.bash
$ ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=t2/cmd_vel
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. 'F' to cancel a rotation.
'Q' to quit.

こんな感じ.

おわりに

まだトピックベースのサービスやアクション等の勝手が分かってないが,とりあえずツールはなんとなく使えるようになった.

コメント

タイトルとURLをコピーしました