1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ROS 2 でxacroを使う

Last updated at Posted at 2024-11-28

なぜわざわざurdfではなく、xacroを使うのか

urdfでも十分にロボットモデルを記述することができるが、xacroだとモデュール化をすることができる。
例えば、蛇ロボットのような同じ部品が連続するロボットを作る場合、一つの関節ユニットに関してモデルを記述し、これを繰り返す処理を行うことでモデルの記述量の肥大化を防ぐことができる。

環境

項目 環境
CPU Intel Core Ultra5 125H
RAM 16GB
OS Ubuntu22.04
ROS 2 Humble

事前準備

Humble以外なら、"humble"を書き換える。foxyとか。

sudo apt install ros-humble-xacro

URDFを扱えるパッケージを作る

cd ros2_ws/src
ros2 pkg create urdf_test --build-type ament_python --dependencies rclpy
cd urdf_test
mkdir urdf
cd urdf

xacroファイルを作る

urdfディレクトリの下に、次のxacroファイルを作る。

test_xacro.xacro
<robot name="test_robot" xmlns:xacro="http://www.ros.org/wiki/xacro">
  <xacro:property name="side" value="0.5" />

  <link name="base_link">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="${side} ${side} ${side}" />
      </geometry>
      <material name="red">
        <color rgba="1.0 0.0 0.0 1.0"/>
      </material>
    </visual>
  </link>
</robot>

xacroをurdfに変換する

xacro test_xacro.xacro -o test_xacro.urdf

変換でエラーが生じた場合、xacroが間違っている。
変換後は次のurdfファイルができる。

test_xacro.urdf
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from test_xacro.xacro               | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="test_robot">
  <material name="red">
    <color rgba="1.0 0.0 0.0 1.0"/>
  </material>
  <link name="base_link">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0.5 0.5 0.5"/>
      </geometry>
      <material name="red"/>
    </visual>
  </link>
</robot>

作成したモデルを確認する

rviz2からファイル指定する

rviz2

rviz2の左下のaddボタンから、RobotModelを選択する。

RobotModelのDescription SourceをFileに変更し、Description Fileから先ほど変換したtest_xacro.urdfを選択する。ここまででモデルが出てくる。

その後、Fixed Frameをmapからbase_linkを選択する。ここまですると色がつく。

urdf_launch display.launch.pyで表示する

パスを正しく指定する必要がある。

cd urdf_test/urdf
ros2 launch urdf_launch display.launch.py urdf_package:=urdf urdf_package_path:=/home/yama/ros2_ws/src/urdf_test/urdf/test_xacro.urdf

次のように表示される。
Screenshot from 2024-11-28 16-38-33.png

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?