Dofbotは、yahboomが開発している教育用ロボットです。 開発用のリポジトリも公開されているのですがROS1の環境しかありません。
ROS 2でとりあえずurdfの表示までできたのでまとめました。 環境はwindows10で動いているwslです。
ファイルのコピー
公開されているファイルをを自分の環境にコピーします。今回はdofbot_urdfという名前にしました。
dofbot_ws\src\dofbot_moveitから、urdf, rviz, meshes, launchファイルがあればOK。
自分のpackageに対してcolcon buildをします。 meshesがinstall\dofbot_urdf\share\dofbot_urdf にコピーされないので手でコピーしました。 まあファイル変更することないのでよいでしょう。正しいやり方はあるはず。
urdfの修正
urdf内でSTLファイルを読み込むパスを指定しているので、filename="package:の所を自分のパッケージ名に修正します。
<?xml version="1.0" encoding="utf-8"?> <robot name="dofbot"> <link name="base_link"> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://dofbot_urdf/meshes/base_link.STL"/> </geometry> <material name=""> <color rgba="0.7 0.7 0.7 1"/> </material> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://dofbot_urdf/meshes/base_link.STL"/> </geometry> </collision> </link> 省略 </robot>
rvizの修正
起動時のrvizファイルがROS1からROS2で少しパスが変っているので、一個ずつ直します。
例えばrviz/Displaysとなっているところを、rviz_common/Displaysへ変更していきます。
Panels: - Class: rviz_common/Displays Help Height: 78 Name: Displays Property Tree Widget: Expanded: - /Status1
rviz -d でこのファイルを読み込んで表示します。
よっしゃ、baselinkまでOKになった。 pic.twitter.com/QiGgltzEYp
— natsutan (@natsutan) 2024年6月13日
ここまでが折り返し。 後は姿勢を上手くやるだけです。
launchファイルの修正
dislpay.launch.pyを修正する。
ポイントは、robot_descriptionにurdfへのパスではなく、ファイルを読み込んでその中身を与えること。
from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.substitutions import Command, FindExecutable, LaunchConfiguration, PathJoinSubstitution from launch_ros.actions import Node from launch_ros.substitutions import FindPackageShare rviz_config_file = "/mnt/q/wsl/mashiro_ws/src/dofbot_urdf/rviz/dofbot.rviz" urdf_file = "/mnt/q/wsl/mashiro_ws/src/dofbot_urdf/urdf/dofbot.urdf" def generate_launch_description(): with open(urdf_file, 'r') as infp: robot_desc = infp.read() robot_description = {"robot_description": robot_desc} robot_state_pub_node = Node( package="robot_state_publisher", executable="robot_state_publisher", output="both", parameters=[robot_description], ) joint_state_pub_gui_node = Node( package="joint_state_publisher_gui", executable="joint_state_publisher_gui", output="screen", ) rviz_node = Node( package="rviz2", executable="rviz2", name="rviz2", output="log", arguments=["-d", rviz_config_file], ) nodes = [ rviz_node, robot_state_pub_node, joint_state_pub_gui_node, ] return LaunchDescription(nodes)
最後に
colcon build source install/setup.bash
を行った後
ros2 launch dofbot_urdf display.launch.py
でロボットが表示されます。
GUIで角度も変更できます。