URDF统一机器人建模语言

统一机器人建模语言

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

我们从下面四个方面介绍URDF:

URDF的组成介绍

URDF-Link介绍

URDF-Joint介绍

创建一个简单的URDF并在RVIZ2中可视化

1.URDF的组成介绍

一般情况下,URDF由一个声明信息和两种关键组件共同组成

1.1 声明信息

声明信息包含两部分,第一部分是xml的声明信息,放在第一行

<?xml version="1.0"?>

第二部分是机器人的声明,通过robot标签就可以声明一个机器人模型

<robot name="fishbot">

</robot>

1.2 两种关键组件

可以简化为如下五个部件组成:

  • 躯体

  • 左右轮子

  • 支撑轮

  • 雷达激光

  • IMU模块

这五个部件之间的固定方式为:

我们把左轮,右轮、支撑轮子,IMU和雷达部件称为机器人的Link

而Link和Link之间的连接部分称之为Joint关节

接着我们给每个link和joint取个名字。

l

所以我们就可以使用6个link和5个joint来描述这个机器人,接着我们分别对link和joint进行详细的介绍。

2.Link介绍

上面我们介绍完了link,那一个link该怎么写呢?

我们来看一个base_link的,通过link标签即可声明一个link,属性name指定部件名字

<link name="base_link">

</link>

通过两行代码就可以定义好base_link,但现在的base_link是空的,我们还要声明我们的base_link长什么样,通过visual子标签就可以声明出来机器人的visual形状。

<!-- base link -->

<link name="base_link">

<visual>

<origin xyz="0 0 0.0" rpy="0 0 0"/>

<geometry>

<cylinder length="0.12" radius="0.10"/>

</geometry>

</visual>

</link>

2.1 link标签定义

link的子标签列表

visual 显示形状

<geometry> (几何形状)

<box> 长方体

标签属性: size-长宽高

举例:<box size="1 1 1" />

<cylinder> 圆柱体

标签属性:radius -半径 length-高度

举例:<cylinder radius="1" length="0.5"/>

sphere 球体

属性:radius -半径

举例:<sphere radius="0.015"/>

mesh 第三方导出的模型文件

属性:filename

举例: <mesh filename="package://robot_description/meshes/base_link.DAE"/>

origin (可选:默认在物体几何中心)

属性 xyz默认为零矢量 rpy弧度表示的翻滚、俯仰、偏航

举例:<origin xyz="0 0 0" rpy="0 0 0" />

material 材质

属性 name 名字

color

属性 rgba a代表透明度

举例:<material name="white"><color rgba="1.0 1.0 1.0 0.5" /> </material>

collision 碰撞属性,仿真章节中讲解

inertial 惯性参数 质量等,仿真章节中讲解

3.Joint介绍

joint为机器人关节,机器人关节用于连接两个机器人部件,主要写明父子关系

  • 父子之间的连接类型,是否固定的,可以旋转的等

  • 父部件名字

  • 子部件名字

  • 父子之间相对位置

  • 父子之间的旋转轴,绕哪个轴转

再建立一个雷达部件laser_link,然后将laser_link固定到base_link

<?xml version="1.0"?>

<robot name="fishbot">

<!-- base link -->

<link name="base_link">

<visual>

<origin xyz="0 0 0.0" rpy="0 0 0"/>

<geometry>

<cylinder length="0.12" radius="0.10"/>

</geometry>

</visual>

</link>

<!-- laser link -->

<link name="laser_link">

<visual>

<origin xyz="0 0 0" rpy="0 0 0"/>

<geometry>

<cylinder length="0.02" radius="0.02"/>

</geometry>

<material name="black">

<color rgba="0.0 0.0 0.0 0.5" />

</material>

</visual>

</link>

<!-- laser joint -->

<joint name="laser_joint" type="fixed">

<parent link="base_link" />

<child link="laser_link" />

<origin xyz="0 0 0.075" />

</joint>

</robot>

3.1 joint标签详解

joint属性

name 关节的名称

type 关节的类型

revolute: 旋转关节,绕单轴旋转,角度有上下限,比如舵机0-180

continuous: 旋转关节,可以绕单轴无限旋转,比如自行车的前后轮

fixed: 固定关节,不允许运动的特殊关节

prismatic: 滑动关节,沿某一轴线移动的关节,有位置极限

planer: 平面关节,允许在xyz,rxryrz六个方向运动

floating: 浮动关节,允许进行平移、旋转运动

joint的子标签

parent 父link名称

<parent link="base_link" />

child子link名称

<child link="laser_link" />

origin 父子之间的关系xyz rpy

<origin xyz="0 0 0.014" />

axis 围绕旋转的关节轴

<axis xyz="0 0 1" />

相关推荐
B站计算机毕业设计之家18 分钟前
深度学习实战:python动物识别分类检测系统 计算机视觉 Django框架 CNN算法 深度学习 卷积神经网络 TensorFlow 毕业设计(建议收藏)✅
python·深度学习·算法·计算机视觉·分类·毕业设计·动物识别
程序猿小D24 分钟前
【完整源码+数据集+部署教程】 【运输&加载码头】仓库新卸物料检测系统源码&数据集全套:改进yolo11-DRBNCSPELAN
python·yolo·计算机视觉·目标跟踪·数据集·yolo11·仓库新卸物料检测系统
SiYuanFeng36 分钟前
《Synthetic Visual Genome》论文数据集的预处理
python·场景图
MUTA️37 分钟前
python中进程和线程
python
jie*1 小时前
小杰深度学习(seventeen)——视觉-经典神经网络——MObileNetV3
人工智能·python·深度学习·神经网络·numpy·matplotlib
麦麦大数据1 小时前
F025 基于知识图谱图书可视推荐系统 vue+flask+neo4j | python编写、知识图谱可视化+推荐系统
vue.js·python·知识图谱·推荐算法·协同过滤·图书推荐
飞翔的佩奇1 小时前
【完整源码+数据集+部署教程】烟叶植株计数与分类系统源码和数据集:改进yolo11-TADDH
python·yolo·计算机视觉·目标跟踪·分类·数据集·yolo11
wh_xia_jun1 小时前
Python串口通信与MQTT物联网网关:连接STM32与物联网平台
python·stm32·物联网
啊森要自信2 小时前
【GUI自动化测试】Python 自动化测试框架 pytest 全面指南:基础语法、核心特性(参数化 / Fixture)及项目实操
开发语言·python·ui·单元测试·pytest