Dobot MG400 を Rviz2 で表示する【ROS2-Foxy】

ROS2
スポンサーリンク

スポンサーリンク

はじめに

今までは、ROS2 で AGV シミュレーションをする方法について説明してきました。

今回からは、4軸ロボットの Dobot MG400 を ROS2 でシミュレーションする方法について説明します。

商品ページはこちらにあります。
詳細スペックは下にまとめておきます。

前提条件

前提条件は以下の通りです。

  • こちらのページでセットアップが完了してる
  • Windows11 – WSL2 で実行しています

MG400 について

MG400 について、主要な性能は以下の通りです。

  • 可搬重量 500g (max 750g)
  • 動作範囲 400mm
  • 軸数:4 (ハンドに 1軸 あれば 5軸)
  • 繰り返し精度 ±0.05mm
  • 衝突検出機能
  • 電源OFF時サーボロック
  • 最大速度 300°/s

ワークスペースの準備

ワークスペースの準備をしていきます。

cd ~/
mkdir -p ~/mg400_workspace/src
cd ~/mg400_workspace/src
ros2 pkg create --build-type ament_python mg400_training
git clone https://github.com/HarvestX/MG400_ROS2.git
cd mg400_training
mkdir launch urdf meshes

cd ~/mg400_workspace
colcon build --packages-select mg400_training

次に、mg400_training フォルダ内の package.xml を編集します。

7 行目
<maintainer email="Kame@example">wsl-ubuntu</maintainer>
↓
<maintainer email="wsl-ubuntu@todo.todo">wsl-ubuntu</maintainer>

setup.py は、以下のように変更してください。

from setuptools import setup
import os
from glob import glob

package_name = 'mg400_training'

setup(
    name=package_name,
    version='0.0.0',
    packages=[package_name],
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),

        (os.path.join("share", package_name, "launch"), glob("launch/*")),
        (os.path.join("share", package_name, "config"), glob("config/*")),
        (os.path.join("share", package_name, "urdf"), glob("urdf/mg400*")),
        (os.path.join("share", package_name, "urdf/common"), glob("urdf/common/*")),
        (os.path.join("share", package_name, "meshes"), glob("meshes/*")),
    ],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='wsl-ubuntu',
    maintainer_email='wsl-ubuntu@todo.todo',
    description='TODO: Package description',
    license='TODO: License declaration',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
        ],
    },
)

.bashrc の編集

次に、.bashrc の最下行に以下の一文を追記してください。(パスは自身の環境に合わせてください)

source /home/wsl-ubuntu/mg400_workspace/install/setup.bash

これで、ワークスペースの準備は完了です。

URDF の準備

URDF の準備をしていきます。
まずは git clone してある MG400_ROS2 フォルダの URDF ファイルを mg400_training へコピーします。

cd ~/mg400_workspace/src
cp -r MG400_ROS2/mg400_description/urdf mg400_training/

現在の mg400_training のフォルダ構造はこのようになっています。

xacro ファイルについて

xacro は URDF を作成するための便利なマクロ機能です。
公式の説明はこちらにあります。

数値や名称を使いまわす際に、非常に便利です。
個人で簡単なシミュレーションをする際には必要ありませんが、大規模になると必要です。

xacro ファイルの修正

xacro ファイルの合成方法について説明します。

cd ~/mg400_workspace/src/mg400_training/urdf

mg400.urdf.xacro を修正していきます。

5 行目
<xacro:include filename="$(find mg400_description)/urdf/mg400.xacro" />
↓
<xacro:include filename="/home/wsl-ubuntu/mg400_workspace/src/mg400_training/urdf/mg400.xacro" />

参照するパッケージを変更しました。

mg400.xacro も同様に修正します。

5 行目
filename="$(find mg400_description)/urdf/common/constants.xacro"
↓
filename="/home/wsl-ubuntu/mg400_workspace/src/mg400_training/urdf/common/constants.xacro"
11 行目
value="mg400_description/meshes" />
↓
value="/home/wsl-ubuntu/mg400_workspace/src/mg400_training/meshes" />

変更後のファイルパスは、自身の環境に合わせてください。

xacro ファイルの合成

ターミナルに戻って、xacro の合成を実行します。

cd ~/mg400_workspace
colcon build --packages-select mg400_training
cd ~/mg400_workspace/src/mg400_training/urdf
ros2 run xacro xacro mg400.urdf.xacro > mg400_training.urdf

urdf フォルダ内に mg400_training.urdf が作成されていれば完了です。

Rviz2 で MG400 を表示

次に、launch ファイルを作成して Rviz2 上で MG400 を表示します。

cd ~/mg400_workspace/src/mg400_training/launch
touch rviz.launch.py

rviz.launch.py の中身は以下のようにしてください。

from launch import LaunchDescription
from launch_ros.actions import Node
from ament_index_python.packages import get_package_share_directory
import os

def generate_launch_description():

    pkg_box_car_description = get_package_share_directory("mg400_training")
    urdf_file = os.path.join(pkg_box_car_description, "urdf", "mg400_training.urdf")
    print(urdf_file)

    joint_state_publisher_node = Node(
        package="joint_state_publisher_gui",
        executable="joint_state_publisher_gui",
    )

    robot_state_publisher_gui = Node(
        package="robot_state_publisher",
        executable="robot_state_publisher",
        output="both",
        arguments=[urdf_file],
    )

    rviz_node = Node(
        package="rviz2",
        executable="rviz2",
        name="rviz2",
        output="log",
    )

    nodes_to_run = [
        robot_state_publisher_gui,
        joint_state_publisher_node,
        rviz_node
    ]

    return LaunchDescription(nodes_to_run)

これで launch ファイルの準備は完了です。

cd ~/mg400_workspace
colcon build --packages-select mg400_training
source ~/.bashrc
ros2 launch mg400_training rviz.launch.py

ros2 launch を実行すると、Rviz2 が起動します。

最初はエラーが出ていますが、下記画像の赤枠の部分を mg400_base_link に変更してください。

すると、Rviz2 のエラーがなくなります。

Rviz2 上では外観まで表示されていませんが、のちに Gazebo では表示されるようにします。

Joint State Publisher GUI で MG400 を動かす

せっかくなので、JointStatePublisherGUI で動かしてみてください。

ありえない動きもできますが、今後、URDF で制限をかけていきます。

おわりに

今回は MG400 の xacro から URDF を作成して、Rviz2 で表示する方法について説明しました。
xacro から 自身のシミュレーションへ落とし込む方法が分かっていただけたかと思います。
現状では、joint の表記がなく、現実ではありえない動きもしてしまいます。

次回は、Gazebo で MG400 を表示する方法について説明します。

コメント

タイトルとURLをコピーしました