ROS講座33 車輪ロボットを作る1(rvizで表示)


| 項目 | 値 |
|:-:|:-:|
| CPU | Core i5-8250U |
| Ubuntu | 20.04 |
| ROS | Noetic |
| Gazebo | 11.9.0 |

インストールについては[ROS講座02 インストール](https://qiita.com/srs/items/e0e0a9dc3f94c2d3348e)を参照してください。
またこの記事のプログラムはgithubにアップロードされています。[ROS講座11 gitリポジトリ](https://qiita.com/srs/items/25a56a6abda41dcf396e)を参照してください。

# 概要
Gazeboでシミュレーションした車輪ロボットをRvizで表示してみます。まずは第1弾としてロボットの形をurdfで記述して表示します。

# ソースコード

```xml:gazebo1_lecture/urdf/wheel_robot_simple.urdf
<?xml version="1.0"?>
<robot name="dtw_robot">
  <material name="gray">
    <color rgba="0.5 0.5 0.5 1.0"/>
  </material>
  <material name="red">
    <color rgba="1.0 0.0 0.0 1.0"/>
  </material>

  <link name="base_link"/>

  <joint name="body_joint" type="fixed">
    <origin xyz="0 0 0.1" rpy="0 0 0" />
    <parent link="base_link"/>
    <child  link="body_link"/>
  </joint>
  <link name="body_link">
    <visual>
      <origin xyz="-0.1 0 0" rpy="0 0 0" />
      <geometry>
        <box size="0.4 0.3 0.1" />
      </geometry>
      <material name="gray" />
    </visual>
  </link>

  <joint name="back_ball_joint" type="fixed">
    <origin xyz="-0.23 0 -0.05" rpy="0 0 0" />
    <parent link="body_link"/>
    <child  link="back_ball_link"/>
  </joint>
  <link name="back_ball_link">
    <visual>
      <geometry>
        <sphere radius="0.05" />
      </geometry>
      <material name="gray" />
    </visual>
  </link>

  <joint name="left_wheel_joint" type="fixed">
    <origin xyz="0 0.18 0" rpy="-1.5707 0 0" />
    <parent link="body_link"/>
    <child  link="left_wheel_link"/>
  </joint>
  <link name="left_wheel_link">
    <visual>
      <geometry>
        <cylinder length="0.04" radius="0.072" />
      </geometry>
      <material name="red" />
    </visual>
  </link>

  <joint name="right_wheel_joint" type="fixed">
    <origin xyz="0 -0.18 0" rpy="-1.5707 0 0" />
    <parent link="body_link"/>
    <child  link="right_wheel_link"/>
  </joint>
  <link name="right_wheel_link">
    <visual>
      <geometry>
        <cylinder length="0.04" radius="0.072" />
      </geometry>
      <material name="red" />
    </visual>
  </link>
</robot>
```

* Gazeboで使用するSDFモデルを同様のリンクの構成にします。
* 物理演算に必要な重さなどの要素は必要ありません。
* タイヤのlinkとつながるjointは本来は回転するジョイントですが、ROSのレイヤーではこの回転は扱わないので、urdfではfixedで記述します。

```xml:gazebo1_lecture/launch/wheel_robot_simple_rviz_only.launch
<?xml version="1.0" encoding="UTF-8"?>
<launch>
  <arg name="model" default="$(find gazebo1_lecture)/urdf/wheel_robot_simple.urdf"/>   
  <arg name="rvizconfig" default="$(find gazebo1_lecture)/rviz/wheel_robot_simple.rviz" />
  <param name="robot_description" command="$(find xacro)/xacro $(arg model)"/>

  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>
```

# 実行
上記のurdfをRvizで表示します。
各ターミナルごとに実行前にsource ~/catkin_ws/devel/setup.bashを実行する必要があります。

```shell:実行
roslaunch gazebo1_lecture wheel_robot_simple_rviz_only.launch 
```

![gazebo1_wheel4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254442/4156a192-6226-de37-1f08-bd0bceddaed7.png)

# 参考
[urdfの書き方](https://qiita.com/RyodoTanaka/items/174e82f06b10f9885265)

# 目次ページへのリンク
[ROS講座の目次へのリンク](https://qiita.com/srs/items/5f44440afea0eb616b4a)