• urdf标签理解


    如何理解

    可以先记住link是连接,引申为连接杆,或其他可见的被连接起来的组件,一定是看得见摸得着的实体;
    joint可以理解为两个link之间的关节,但他是抽象出来的,并不是实体,更像是一种属性。

    link子标签

    理解可link是实体后,我们就可以对这个实体进行描述,一个实体可以从很多方面去描述,我们大致分为几类,
    描述机器人link部分的外观参数,即肉眼观察到的
    描述link的惯性参数
    描述link的碰撞属性
    然后具体来看每一个的详细信息

    visual视觉
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
      	<box size="0.001 0.001 0.001" />
      </geometry>
      <material name="white">
    	<color rgba="1 1 1 0.9"/>
      </material>
    </visual>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    origin指几何中心,xyz即中心坐标(距离原点距离,单位米),rpy分别对应roll横滚角(绕x),pitch俯仰角(绕y),yaw航向角(绕z)

    geometry指几何形状,常见box立方体,sphere球体,cylinder圆柱体等,不同的形状有不同的几何描述,较为简单,不再赘述。

    material指材料,通常就是描述颜色。

    inertial惯性
    <inertial>
    	<origin xyz="0.0 0 0"/>
    	<mass value="0.1" />
        <inertia ixx="0.001" ixy="0.0" ixz="0.0"
    	    iyy="0.001" iyz="0.0" izz="0.001" />
    </inertial>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    origin几何中心

    mass质量

    inertia表示一个3*3旋转惯性矩阵

    texture纹理,根据文件决定

    collision碰撞
    <collision>
       <origin xyz="0 0 0" rpy="0 0 0" />
       <geometry>
          <cylinder length="3" radius="2"/>
       </geometry>
    </collision>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    origin几何中心

    geometry几何形状

    joint子标签

    joint就是两个连接物之间的关节,可以描述的属性并不多

    <joint name="base_footprint_joint" type="fixed">
        <origin xyz="0 0 ${wheel_radius}" rpy="0 0 0" />        
        <parent link="base_footprint"/>
        <child link="base_link" />
        <axis xyz="0 1 0"/>
    </joint>
    
    //type常见类型
    continuous: 旋转关节,可以绕单轴无限旋转
    revolute: 旋转关节,类似于 continues,但是有旋转角度限制
    prismatic: 滑动关节,沿某一轴线移动的关节,有位置极限
    planer: 平面关节,允许在平面正交方向上平移或旋转
    floating: 浮动关节,允许进行平移、旋转运动
    fixed: 固定关节,不允许运动的特殊关节
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    其中origin,parent,child标签是必选的,他们也很容易理解。joint还有其他标签,但不常用

    xacro

    urdf语法中的宏
    常见的用法有以下几种

    1. 定义常量
    <xacro:property name="M_PI" value="3.14159"/>
    
    • 1

    用的时候用${}取值,也可以在${}中进行数学运算,这也是${}的一个作用

    <origin xyz="0 0 0" rpy="${M_PI} 0 0" />
    <origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />
    
    • 1
    • 2

    1. 虽然叫宏,但更像是函数(或者叫方法)因为他可以传参,方便复用
    <xacro:macro name="mrobot_standoff_2in" params="parent number x_loc y_loc z_loc">
          <joint name="standoff_2in_${number}_joint" type="fixed">
              <origin xyz="${x_loc} ${y_loc} ${z_loc}" rpy="0 0 0" />
              <parent link="${parent}"/>
              <child link="standoff_2in_${number}_link" />
          </joint>
    </xacro:macro>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    以上定义可以理解为

    mrobot_standoff_2in(parent,number,x_loc,y_loc,z_loc)
    {.....}
    
    • 1
    • 2

    用法

    <mrobot_standoff_2in parent="base_link" number="1" x_loc="-${standoff_x/2 + 0.03}" y_loc="-${standoff_y - 0.03}" z_loc="${plate_height/2}"/>
    <mrobot_standoff_2in parent="base_link" number="2" x_loc="-${standoff_x/2 + 0.03}" y_loc="${standoff_y - 0.03}" z_loc="${plate_height/2}"/>
    <mrobot_standoff_2in parent="base_link" number="3" x_loc="${standoff_x/2}" y_loc="-${standoff_y}" z_loc="${plate_height/2}"/>
    <mrobot_standoff_2in parent="base_link" number="4" x_loc="${standoff_x/2}" y_loc="${standoff_y}" z_loc="${plate_height/2}"/>
    
    • 1
    • 2
    • 3
    • 4

    可以看到4个组件其实都是相似的,只有部分参数不同,所以可以用宏传参的方式来描述。

    1. 文件包含
    <xacro:include filename="$(find mrobot_description)/urdf/camera.xacro" />
    
    • 1
  • 相关阅读:
    史上最难618,TCL夺得电视行业京东和天猫份额双第一
    微信小程序怎么制作?制作一个微信小程序需要多少钱?
    vue搭建项目详细介绍
    产品经理专业知识50篇(七)-如何建立一套完整的用户成长体系?
    手机玻璃盖板为什么需要透光率检测
    盒子阴影和文本阴影
    2023深圳CPSE安博会亮点指引
    jacob解决freemaker导出word文档手机无法预览问题(附下载地址)
    PMP每日一练 | 考试不迷路-8.25(包含敏捷+多选)
    力扣 -- 322. 零钱兑换(完全背包问题)
  • 原文地址:https://blog.csdn.net/qq_40789688/article/details/134501315