ロボットのモデリングとシミュレーション(2)-ロボットのURDFモデルのシミュレーション

ロボットのモデリングとシミュレーション(2)-ロボットのURDFモデルのシミュレーション

概要概要

ROSでは、ロボットモデルは通常RobotName_description関数パッケージの下に配置されます。

1.ロボット記述機能パッケージを作成します

catkin_create_pkg mbot_description urdf xacro

ロボットモデルと説明ファイルはROSにあり、通常はロボット名_descriptionであり、urdf関数パッケージ、分析モデル、およびxacro(urdfの最適化に使用)の依存関係に依存する必要があります。
RobotName_description関数パッケージの下に、urdf、meshes、launch、configの4つのフォルダーを含む、さまざまな関数を使用していくつかのフォルダーを作成します。

  • urdf:ロボットモデルのURDFまたはxacroファイルを保存します
  • メッシュ:URDFで参照されているモデルレンダリングファイル、ロボットの外観テクスチャを配置し、外観をより現実に近づけ、3Dデザインソフトウェアを介してエクスポートし、このフォルダに配置します
  • 起動:関連するスタートアップファイルを保存します
  • config:汎用パッケージの設定ファイルであるrvizの設定ファイルを保存します

次に、URDFモデルを作成します

URDFモデルで一般的に使用されるタグと構文を理解したら、これらの基本的な構文を使用してロボットシャーシモデルを作成します。
このロボットシャーシモデルには、7つのリンクと6つのジョイントがあります。7つのリンクには、ロボットベースプレート1つ、モーター2つ、駆動輪2つ、ユニバーサルホイール2つが含まれます。6つのジョイントは、駆動輪、ユニバーサルホイール、モーターをベースプレートに取り付け、対応する接続​​方法を設定します。

<?xml version="1.0" ?>
<robot name="mrobot_chassis">

    //robot name 标签用于定义所描述机器人的名称

    <link name="base_link">  
        <visual>  //
            <origin xyz=" 0.1 0.1 0.1" rpy="0 0 0" />                                 
            <geometry>
                <cylinder length="0.005" radius="0.13"/>
            </geometry>
            <material name="yellow">  
                <color rgba="1 0.4 0 1"/>
            </material>
        </visual>
    </link>

    //link标签描述了机器人某个刚体部分的外观和物理属性,包括尺寸,颜色,形状惯性和碰撞参数等,visual...../visual 标签描述机器人某个部件的外观参数等。origin 标签描述了所绘制外观geometry的坐标起点,一般对于规则形状的外观坐标起点位于规则形状的重心位置, cylinder 标签描述了这个圆柱体的尺寸,material 标签用于描述外观的颜色等信息

    <joint name="base_left_motor_joint" type="fixed"> //joint...../joint标签用于描述机器人关节的运动学和动力属性
        <origin xyz="0.1 0.1 0.1" rpy="0 0 0" />        
        <parent link="base_link"/>
        <child link="left_motor" />
    </joint>

   //上述joint...../joint标签中一般描述origin parent child等参数,origin描述了joint连接点基于parent link="base_link"
     坐标的偏移量,一般在rviz仿真中左上角Fixed Frame 的map选项设置成base_link,则base_link在rviz中为坐标原点,那么        origin所描述的joint为基于坐标原点的偏移量,parent为jiont的支撑连接部件,child为子部件,joint就为子部件和支撑连接部件     的关节

    <link name="left_motor">
        <visual>
            <origin xyz="0.2 0.2 0.2" rpy="0 0 0" />
            <geometry>
                <cylinder radius="0.02" length = "0.08"/>
            </geometry>
            <material name="gray">
                <color rgba="0.75 0.75 0.75 1"/>
            </material>
        </visual>
    </link>
   //link name="left_motor"标签为base_left_motor_joint连接件的子部件,其中origin描述了该部件基于base_left_motor_joint关节
     坐标的偏移点,base_left_motor_joint关节的坐标原点为origin xyz="0.1 0.1 0.1",若left_motor部件的origin xyz="0.2 0.2 0.2"
     则表示left_motor所描述部件基于base_left_motor_joint关节坐标xyz="0.1 0.1 0.1"的偏移量为xyz="0.2 0.2 0.2"

    <joint name="left_wheel_joint" type="continuous">
        <origin xyz="0.5 0.0485 0" rpy="0 0 0"/>
        <parent link="left_motor"/>
        <child link="left_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>

   //连接关节joint name="left_wheel_joint" 为left_motor和left_wheel_link关节点,left_wheel_link为left_motor的子部件,其中
     left_wheel_joint的基础坐标是基于parent link="left_motor"的关节joint name="base_left_motor_joint" 的基础坐标偏移量
     而非left_motor的origin偏移量

.......

..........

</robot>

URDFは、ターミナルに個別にインストールする必要があるモデルファイルをチェックおよび分類するのに役立ついくつかのコマンドラインツールを提供します。

sudo apt-get install liburdfdom-tools

次に、check_urdfコマンドを使用して、ロボットファイルの説明を確認します。

check_urdf #<机器人描述名称>.urdf

check_urdfコマンドは、URDFファイルを解析し、解析プロセス中に検出されたエラーを表示します。すべてが正常であれば、端末にエラー出力はありません。
urdf_to_graphizコマンドを使用して、URDFモデルの全体的な構造を表示することもできます。

urdf_to_graphiz #<机器人描述名称>.urdf

urdf_to_graphizコマンドを実行すると、現在のディレクトリにpdfファイルが生成されます。ファイルを開くと、モデルの全体的な構造図が表示されます。

3、URDFモデル分析

4、モデルをrvizで表示します

URDFモデルの設計が完了したら、rvizを使用してモデルを視覚化し、設計目標を満たしているかどうかを確認できます。
起動ファイルを編集する

<launch>
    <!-- param是要加载ros的一个参数:robot_description (描述机器人的具体模型)-->
	<param name="robot_description" textfile="$(find mbot_description)/urdf/mbot_base.urdf" />

	<!-- 设置GUI参数,显示关节控制插件 -->
	<param name="use_gui" value="true"/>
	
	<!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
	<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
	
	<!-- 运行robot_state_publisher节点,发布tf  -->
	<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
	
	<!-- 运行rviz可视化界面 -->
	<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>
  • Joint_state_publisher:各ジョイント(固定タイプを除く)の状態を公開し、UIインターフェイスを介してジョイントを制御できます
  • robot_state_publisher:ロボットのリンクと関節の関係をTF形式の3次元姿勢情報リリースに整理し
    ます。ターミナルを開いて起動ファイルを実行します。すべてが正常であれば、開いた状態でロボットモデルを確認できます。 rviz。

5、URDFモデルを改善する

1.物理属性と衝突属性を追加し
ます2.xacroを使用してURDFを最適化します
(1)定数定義を使用します
(2)数式を呼び出します
(3)マクロ定義を使用します
3. Xacroファイル参照
4.最適化されたモデルを表示します
(1)xacroファイルをURDFに変換しますファイル
(2)xacroファイルパーサーを直接呼び出す

6、センサーモデルを追加

1.カメラを
追加し
ます2.Kinectを追加します3.LIDARを追加します

7.ArbotiXおよびrvizに基づくエミュレーター

1.ArbotiXをインストールします2.ArbotiX
コントローラーを構成し
ます<1>起動ファイルを作成します
<2>構成ファイルを作成します
3.シミュレーション環境を実行します

おすすめ

転載: blog.csdn.net/weixin_45661757/article/details/113250487