快速链接:【ROS小车仿真】从零实现gezebo小车仿真

一、urdf简介

URDF(Unified Robot Description Format): 统一机器人描述格式,URDF是使用XML格式描述机器人的文件。

参考链接:从零开始仿真ROS小车(一)urdf模型+rviz可视化

1.1 urdf文件格式示例

  • 由<link>和<joint>两部分组成
  • <link>部分主要由<origin> <geometry> <matreial>定义
  • <joint>部分主要由<origin> <parent> <child> <axis>定义
<?xml version="1.0" ?>
<robot name="jubot">
    
<!--base_car--> <!--环节--> 
    <link name="base_link">   
        <visual>
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
            <geometry>
                <cylinder radius="0.20" length="0.16"/>             
            </geometry>
            <material name="yellow"> 
                <color rgba="1 0.4 0 1"/>  
            </material>
        </visual>
    </link>

<!--left_wheel-->>
    <joint name="left_wheel_joint" type="continuous">   
        <origin xyz="0.0 0.19 -0.05" rpy="0.0 0.0 0.0"/> 
        <parent link="base_link"/>  
        <child link="left_wheel_link"/> 
        <axis xyz="0.0 1.0 0.0"/>  
    </joint>

    <link name="left_wheel_link">
        <visual>
            <!-- 1.偏移量和角度设置,单位弧度,相对于底部joint -->
            <origin xyz="0.0 0.0 0.0" rpy="1.5707 0.0 0.0"/>
            <!-- 2.形状 -->
            <geometry>
                <cylinder radius="0.06" length="0.025"/>
            </geometry>
            <!-- 3.颜色 -->
            <!-- 颜色: rgba = "" r=red g=green b=blue a=alpha(透明度) 四者的取值都是0-1 -->
            <material name="white">
                <color rgba="1 1 1 0.9"/>
            </material>
        </visual>
    </link>
 
<!--right_wheel-->>
    <joint name="right_wheel_joint" type="continuous">
        <origin xyz="0.0 -0.19 -0.05"/>
        <parent link="base_link"/>
        <child link="right_wheel_link"/>
        <axis xyz="0.0 1.0 0.0"/>
    </joint>

    <link name="right_wheel_link">
        <visual>
            <origin xyz="0.0 0.0 0.0" rpy="1.5707 0.0 0.0"/>
            <geometry>
                <cylinder radius="0.06" length="0.025"/>
            </geometry>
            <material name="white">
                <color rgba="1 1.0 1.0 0.9"/>
            </material>
        </visual>
    </link>

<!--front_caster-->
    <joint name="front_caster_joint" type="continuous">
        <origin xyz="0.18 0.0 -0.095" rpy="0.0 0.0 0.0"/>
        <parent link="base_link"/>
        <child link="front_caster_link"/>
        <axis xyz="0.0 1.0 0.0"/>
    </joint>

    <link name="front_caster_link">
        <visual>
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
                <geometry>
                    <sphere radius="0.015"/>
                </geometry>
                <material name="black">
                    <color rgba="0.0 0.0 0.0 0.95"/>
                </material>
        </visual>
    </link>

<!--back_caster-->
    <joint name="back_caster_joint" type="continuous">
        <origin xyz="-0.18 0.0 -0.095" rpy="0.0 0.0 0.0"/>
        <parent link="base_link"/>
        <child link="back_caster_link"/>
        <axis xyz="0.0 1.0 0.0"/>
    </joint>

    <link name="back_caster_link">
        <visual>
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
                <geometry>
                    <sphere radius="0.015"/>
                </geometry>
            <material name="black">
                <color rgba="0.0 0.0 0.0 0.95"/>
            </material>
        </visual>
    </link>
</robot>

二、在rviz中显示小车urdf模型

  • launch文件定义

        1. 设置urdf模型文件路径

        2. 运行joint_state_publisher节点,发布机器人关节状态

        3. 运行robot_state_publish节点,发布tf

        4. 运行rviz

<launch>
    <!-- set robot parameter filepath -->
    <param name="robot_description" textfile="$(find jubot_demo)/urdf/jubot_base.urdf"/>

    <!-- run joint_state_publisher node, publish joint state -->
    <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui"/>

    <!-- run robot_state_publisher node, publish tf -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/>

    <!-- run rviz -->
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find jubot_demo)/config/jubot_urdf.rviz" required="true"/>
</launch>

tips: 

ERROR: 如果找不到joint_state_publisher_gui

TRY: sudo apt-get install ros-kinetic-joint-state-publisher-gui


版权声明:本文为weixin_43453505原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43453505/article/details/124868012