ROS入門 (44) - Unityから/tfトピックをパブリッシュ
Unityから/tfをパブリッシュする方法をまとめました。
前回
1. Unityから/tfトピックをパブリッシュ
Unityから/tfトピックをパブリッシュするには、URDFモデルに「Robotics-Nav2-SLAM-Example」の 「ROSTransformTreePublisher」を追加します。これによって、外部でURDFモデルの姿勢を取得できます。
(1) 「Robotics-Nav2-SLAM-Example」の 以下のファイルをダウンロードし、UnityのAssetsに配置。
(2) URDFモデル(toio_style)に空のGameObjectを追加し、名前「ROSPublishers」を指定。
(3) 「ROSPublishers」に「ROSTransformTreePublisher」を追加し、以下のように設定。
「Robot Game Object」には、URDFモデルのbase_linkをドラッグ&ドロップします。
2. ROS2コマンドでの/tfトピックの確認
ROS2コマンドでの/tfトピックの確認手順は、次のとおりです。
(1) エンドポイントの起動。
$ ros2 run ros_tcp_endpoint default_server_endpoint --ros-args -p ROS_IP:=0.0.0.0
(2) /tfトピックが存在することを確認。
$ ros2 topic list
/cmd_vel
/parameter_events
/rosout
/tf
(3) /tfトピックの中身の確認。
$ ros2 topic echo /tf
transforms:
- header:
stamp:
sec: 35
nanosec: 864012140
frame_id: map
child_frame_id: base_link
transform:
translation:
x: 0.0036436456721276045
y: -3.143894957702287e-07
z: 0.12480859458446503
rotation:
x: -6.655823767687252e-07
y: -3.76763296117133e-07
z: 9.396488167112693e-06
w: -1.0
- header:
stamp:
sec: 35
nanosec: 864012140
frame_id: base_link
child_frame_id: left_wheel
transform:
translation:
x: 2.148539124391391e-09
y: 0.1250000149011612
z: -0.09999997913837433
rotation:
x: 0.7061359286308289
y: -0.037066373974084854
z: -0.03706619143486023
w: -0.7061333060264587
- header:
stamp:
sec: 35
nanosec: 864012140
frame_id: base_link
child_frame_id: right_wheel
transform:
translation:
x: 2.103767826611147e-09
y: -0.1250000149011612
z: -0.09999997913837433
rotation:
x: 0.7061364650726318
y: -0.03705677390098572
z: -0.03705659508705139
w: -0.7061338424682617
- header:
stamp:
sec: 35
nanosec: 864012140
frame_id: base_link
child_frame_id: back_wheel
transform:
translation:
x: -0.09999999403953552
y: 4.364437700132839e-09
z: -0.10000000894069672
rotation:
x: 0.706138551235199
y: -0.03701629117131233
z: -0.037016112357378006
w: -0.7061359286308289
- header:
stamp:
sec: 35
nanosec: 864012140
frame_id: base_link
child_frame_id: front_wheel
transform:
translation:
x: 0.10000003129243851
y: 4.607613846019376e-09
z: -0.09999999403953552
rotation:
x: 0.7061392068862915
y: -0.03700389340519905
z: -0.03700371831655502
w: -0.7061365842819214
:
3. rviz2での/tfトピックの確認
rviz2での/tfトピックの確認手順は、次のとおりです。
(1) URDFを表示するlaunchファイルの準備。
(2) launchファイルの「joint_state_publisher_node」「joint_state_publisher_gui_node」をコメントアウト。
今回は、Unityから送信する/tfトピックを使います。
・urdf_tutorial/launch/display.launch.py
:
return LaunchDescription([
gui_arg,
model_arg,
rviz_arg,
# joint_state_publisher_node,
# joint_state_publisher_gui_node,
robot_state_publisher_node,
rviz_node
])
(3) rviz2を起動。
$ ros2 launch urdf_tutorial display.launch.py model:=toio_style.urdf
(4) Displaysの「Global Options → Fixed Frame」に「map」を指定。
原点を「map」に固定します。
(5) DisplaysのAddで「tf」を追加。
/tfの軸が表示されるようになります。「teleop-twist-keyboard」でURDFモデルを操作すると動くことがわかります。
(6) DisplaysのAddで「RobotModel」を追加し、「Description Souce」に「Topic」、「Description Toic」に「/robot_description」を指定。
次回
この記事が気に入ったらサポートをしてみませんか?