ROS学习:URDF语法详解一link篇

1.概述

参考链接:
1.http://www.autolabor.com.cn/book/ROSTutorials/di-6-zhang-ji-qi-ren-xi-tong-fang-zhen/62-fang-zhen-urdf-ji-cheng-rviz/622-urdfyu-fa-xiang-jie.html
2.https://wiki.ros.org/urdf/XML

URDF 文件是一个标准的 XML 文件,在 ROS 中预定义了一系列的标签用于描述机器人模型,虽然机器人模型可能较为复杂,但是 ROS 的 URDF 中机器人的组成却是较为简单,可以主要简化为两部分:连杆(link标签,实体部分一般可见) 与 关节(joint标签,实体与实体的链接处,一般不可见),
URDF 中的不同标签:

  • robot 根标签,类似于 launch文件中的launch标签
  • link 连杆标签
  • joint 关节标签
  • gazebo 集成gazebo需要使用的标签(关于gazebo标签,后期在使用 gazebo 仿真时,才需要使用到,用于配置仿真环境所需参数,比如: 机器人材料属性、gazebo插件等,但是该标签不是机器人模型必须的,只有在仿真时才需设置)

1.1 URDF语法详解_robot

robot
urdf 中为了保证 xml 语法的完整性,使用了robot标签作为根标签,所有的 link 和 joint 以及其他标签都必须包含在 robot 标签内,在该标签内可以通过 name 属性设置机器人模型的名称

1.属性
name: 指定机器人模型的名称

2.子标签
其他标签都是子级标签

1.2 URDF语法详解_link

link
urdf 中的 link 标签用于描述机器人某个部件(也即刚体部分)的外观和物理属性,比如: 机器人底座、轮子、激光雷达、摄像头等一般可见的实体部件都对应一个 link, 在 link 标签内,可以设计该部件的形状、尺寸、颜色、惯性矩阵、碰撞参数等一系列属性,这些属性一般可分为三大类:例形状、尺寸、颜色称为可视化部分,而惯性矩阵、碰撞参数单独分类。
在这里插入图片描述
这是官网提供的一个图片,基于这个图片大致解释一下惯性矩阵(intertial)、碰撞参数(collision),在仿真环境中我们的机器人也会与环境方式碰撞,那么怎样区分是否碰撞呢,其实就是在刚体部分划出一个区域,只要环境进入这个区域测定性为碰撞,惯性矩阵(intertial)可描述每个刚体的质量、柔韧性不同导致的惯性不同的现实情况。
1.属性
name —> 为连杆命名

2.子标签(三个)

  • visual —> 描述外观(对应的数据是可视的)

     geometry 设置连杆的形状
    
     	标签1: box(盒状)
     	属性:size=长(x) 宽(y) 高(z)
     	
     	标签2: cylinder(圆柱)
     	属性:radius=半径 length=高度
     	
     	标签3: sphere(球体)
     	属性:radius=半径
     	
     	标签4: mesh(为连杆添加皮肤)
     	属性: filename=资源路径(格式:package://<packagename>/<path>/文件)
     	
    
     origin 设置偏移量与倾斜弧度
    
     	属性1: xyz=x偏移 y便宜 z偏移
    
     	属性2: rpy=x翻滚 y俯仰 z偏航 (单位是弧度)
    
     metrial 设置材料属性(颜色)
    
     	属性: name
    
     	标签: color
    

属性: rgba=红绿蓝权重值与透明度 (每个权重值以及透明度取值[0,1])

  • collision —> 连杆的碰撞属性

  • Inertial —> 连杆的惯性矩阵

在此,只演示visual使用,

1.2.3.案例需求:分别生成长方体、圆柱与球体的机器人部件

第一部分形状设置

<robot name = "mycar">
    <link name = "base_link">
        <!-- 可视化标签 -->
        <visual>
            <!-- 1.形状 -->
            <geometry>
                <!-- 1.1立方体 -->
                <box size = "0.4 0.2 0.1"/>
                <!-- 1.2圆柱 -->
                    <!-- <cylinder radius="0.5" length="0.1" /> -->
                <!-- 1.3球体 -->
                    <!-- <sphere radius="0.3" /> -->
                <!-- 1.4皮肤 -->
                <mesh filename = "package://urdf01_rviz/meshes/autolabor_mini.stl"/>
            </geometry>
            <!-- 2.偏移量和弧度设置 -->
            <!-- 3.颜色 -->
        </visual>

    </link>
</robot>

大家需要注意各个标签的层级关系
在这里插入图片描述
第二部分:偏移量和弧度设置
在描述好形状之后,出现的图形可能不是我们想要的姿态出现,这时候就要设置偏移量和弧度设置

<robot name = "mycar">
    <link name = "base_link">
        <!-- 可视化标签 -->
        <visual>
            <!-- 1.形状 -->
            <geometry>
                <!-- 1.1立方体 -->
                <box size = "0.4 0.2 0.1"/>
            </geometry>
            <!-- 2.偏移量和弧度设置 -->
              <!-- xyz坐标 
                rpy x(翻滚) y(俯仰) z (偏航)翻滚俯仰与偏航角度(3.14=1801.57=90) -->
            <origin xyz = "0 0 0 " rpy = " 0 0  "/>
            <!-- 3.颜色 -->
        </visual>

    </link>
</robot>

第三部分颜色设置:

<robot name = "mycar">
    <link name = "base_link">
        <visual>
            <geometry>
                <box size = "0.4 0.2 0.1"/>
            </geometry>
            <origin xyz = "0 0 0 " rpy = " 0 0 0 "/>
            
            <!-- 3.颜色 -->
            <!-- 颜色: rgba = ""r=red g=green b=blue a=alpha(透明度) 四者的取值都是0-1 -->
            <material name = "car_locor">
                <color rgba = "0.2 0.5 0.2 0.6" />
            </material> -->
        </visual>
    </link>
</robot>

补充这里补充一下launch文件得内容:

<launch>
     <!-- 在参数服务器载入URDF文件 -->
    <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/test2.urdf" />

    <!-- 启动 rviz -->
    <node pkg="rviz" type="rviz" name="rviz" args = "-d $(find urdf01_rviz)/config/my_car.rviz" />

</launch>
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值