从零手写URDF模型

基础知识

urdf

URDF :Unified Robot Description Format 统一机器人描述格式
 urdf是ros中非常重要的机器人模型描述格式,可以解析URDF文件中使用XML格式描述的机器人模型,主要包含link和joint自身及相关属性的描述信息

robot

 完整机器人模型的最顶层标签,link和joint标签都必须包含在robot标签内,一个完整的机器人模型,由一系列的link和joint组成

link

  • 描述机器人某个刚体部分的外观和物理属性;
  • 描述连杆尺寸(size)颜色(color)形状(shape)惯性矩阵(inertial matrix)碰撞参数(collision properties)
  • 每个link都会成为一个坐标系

joint

  • 描述两个link之间的关系,分为六种类型;
  • 包括关节的位置和速度限制
  • 描述机器人关节的运动学和动力学属性
关节类型描述
continuous旋转关节,可以围绕单轴无限旋转
revolute旋转关节,但是有旋转的角度极限
prismatic滑动关节,沿某一轴线移动的关节,带有位置极限
fixed固定关节,不允许运动的特殊关节
floating浮动关节,不允许进行平移、旋转运动
planar平面关节,允许在平面正交方向上平移或者旋转

从零手写移动机器人URDF模型

以下代码在使用中需要将中文注释去除,下面的注释为了便于理解

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

<!-- ///
COLOR定义颜色 /-->
    <material name="Black">
        <color rgba="0 0 0 1"/>
    </material>
    <material name="White">
        <color rgba="1 1 1 0.95"/>
    </material>
    <material name="Blue">
        <color rgba="0 0 1 1"/>
    </material>
    <material name="Yellow">
        <color rgba="1 0.4 0 1"/>
    </material>
<!-- //   BASE   -->
    <link name="base_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>  
                <geometry>  <!--定义几何形状-->
                    <cylinder length="0.16" radius="0.20" />  <!--定义圆柱体的高度和半径-->
                </geometry>
                <material name="Yellow"/>  <!--定义材质,特指颜色-->
        </visual>
    </link>
	
<!-- //   WHEEL   -->
    <link name="left_wheel_link">
        <visual>
            <origin xyz="0 0 0" rpy="1.5707 0 0"/> <!--这里rpy的单位都是弧度 1.5707==90° 这里定义的是轮子相对于坐标系原点的距离-->
            <geometry>
                <cylinder length = "0.025" radius="0.06"/>
            </geometry>
            <material name="White"/>
        </visual>
    </link>

    <joint name="left_wheel_joint" type="continuous">  <!--type代表其活动性质-->
        <origin xyz="0 0.19 -0.05" rpy="0 0 0"/>  <!--轮子坐标系相对于base_link的偏移-->
        <parent link="base_link"/>
        <child  link="left_wheel_link"/>
        <axis xyz="0 1 0"/>    <!--定义其相对于那个轴做运动-->
    </joint>
<!-- //   CASTER 创建支撑  -->
    <link name="front_caster_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="0.015"/>  <!--创建球形-->
            </geometry>
            <material name="Black"/>
        </visual>
    </link>

    <joint name="front_caster_joint" type="fixed">
        <origin xyz="0.18 0 -0.095" rpy="0 0 0"/>  <!--0.095=0.08(底座高度的一半)+0.015(球形的直径)此时球距离底盘是有半个球形的距离-->
        <parent link="base_link"/>
        <child link="front_caster_link"/>
    </joint>

    <link name="back_caster_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <sphere radius="0.015"/>
            </geometry>
            <material name="Black"/>
        </visual>
    </link>

    <joint name="back_caster_joint" type="fixed">
        <origin xyz="-0.18 0 -0.095" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="back_caster_link"/>
    </joint>

<!-- //   LASER   -->

    <link name="laser_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <geometry>
                <cylinder length = "0.04" radius="0.04"/>
            </geometry>
            <material name="Black"/>
        </visual>
    </link>

    <joint name="laser_joint" type="fixed">
        <origin xyz="0 0 0.1" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="laser_link"/>
    </joint>

<!-- //   KINECT   -->

    <link name="kinect_link">
        <visual>
            <origin xyz="0 0 0" rpy="0 0 1.5707"/>
            <geometry>
            	<!--这里通过添加模型的方式,进行构建,导入dae模型还需要有对应的jpg和tga文件,才会更加逼真-->
                <mesh filename="package://mbot_description/meshes/kinect.dae"/>
            </geometry>
            <material name="Black"/>
        </visual>
    </link>

    <joint name="kinect_joint" type="fixed">
        <origin xyz="0.15 0 0.1" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="kinect_link"/>
    </joint>
</robot>

常用命令

检查urdf模型整体结构

urdf_to_graphiz <urdf文件>

 执行完该命令之后,会在文件夹下,生成.gv和.pdf两个格式的文件,打开pdf后缀的文件,我们就可以看到整个urdf文件的结构
在这里插入图片描述

检查urdf语法

check_urdf <urdf文件>

 该命令在urdf文件所在位置执行,或者后面加上urdf所在路径,会对urdf文件的语法进行检查
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼带师小弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值