ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

ROS 2でdofbotのurdfを表示する。

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 でこのファイルを読み込んで表示します。

ここまでが折り返し。 後は姿勢を上手くやるだけです。

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で角度も変更できます。