URDF统一机器人建模语言

news2024/11/24 20:59:03

统一机器人建模语言

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" />

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2208985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据新视界 --大数据大厂之差分隐私技术在大数据隐私保护中的实践

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

ribbon和nginx负载均衡图解

通俗来说 nginx&#xff1a; 规定一个地址v&#xff08;比如v代理了地址a,b,c,d且他们都实现了同一个服务e&#xff09;&#xff0c;然后当我们的请求想要实现e服务而去请求v的时候&#xff0c;v实际上就会从a,b,c,d中选一个来让他们给请求者提供服务。 ribbon&#xff1a; …

[Halcon矩阵] 通过手眼标定矩阵计算相机旋转角度

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

idear2024-Springcloud项目一个服务创建多个实例/端口

国庆重装系统&#xff0c;安装了最新版的idear,结果带来一堆bug。 解决办法&#xff1a; 初始配置&#xff1a; 初始状态&#xff1a; 1.点击右上角3个点&#xff0c;再点击编辑 2.点击修改选项 3.点击允许多个实例 可以发现下面多了个选项 点击&#xff1a;应用-》确定 4.修…

windows自动化(一)---windows关闭熄屏和屏保

电脑设置关闭屏幕和休眠时间不起作用解决方案 一共三个方面注意&#xff1a; 一、关闭屏保设置&#xff1a; 二、电源管理设置 三、关闭盖子不做操作&#xff1a; 第一点很重要&#xff0c;就算二三都做了&#xff0c;一没做&#xff0c;照样不行。

win软件 超强的本地视频 图片去水印 动态水印!

AI视频图片去水印 HitPaw Watermark Remover 电脑软件&#xff0c;内涵安装教程&#xff0c;以后看到有水印的视频不怕啦&#xff0c;用这个就行了&#xff0c;可以去除动态水印&#xff01; 【下载】 https://pan.quark.cn/s/1ba6f088f0b2 【应用名称】:HitPaw Watermark R…

[Linux] Linux 进程程序替换

标题&#xff1a;[Linux] Linux 进程程序替换 个人主页水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 O、前言 一、进程程序替换的直观现象&#xff08;什么是进程程序替换&#xff1f;&#xff09; 二、进程程序替换的原理 三、进程程序替换的函数&#xff08…

软件游戏d3dx9_43.dll丢失怎么解决,总结6个解决方法

d3dx9_43.dll是DirectX 9组件的一部分&#xff0c;这是一个由微软开发的图形API&#xff0c;用于处理与游戏和多媒体相关的图形渲染。d3dx9_43.dll库包含了DirectX 9中用于3D图形渲染和处理的许多实用程序函数。这些函数为开发者提供了创建复杂3D模型、纹理映射、光影效果以及各…

涂鸦革新WebRTC技术!让IPC监测低延时、高可靠更安全

随着科技的飞速发展&#xff0c;越来越多人开始关注居家安全、食品安全、校园安全等领域&#xff0c;大家对实时监测的需求也在不断升级。想象一下&#xff0c;无论身处何地&#xff0c;只需轻触屏幕&#xff0c;就能实时查看家中、办公室或任何你关心的地方&#xff0c;这不再…

MySQL中表的操作

目录 一、查看所有表 1.1、语法 二、创建表 2.1、语法 2.2、示例&#xff1a; 2.3、创建数据加时使⽤校验语句[if not exists] 三、查看表结构 3.1、语法 3.2、示例 四、删除表 4.1、语法 4.2、示例 4.3、注意事项 五、主要数据类型 5.1、数值类型 5.2、日期和…

揭秘语音识别巨头1:国内外顶尖技术服务商全解析01(万字长文)

一、学习导航 解密语音识别巨头&#xff1a;国内顶尖技术服务商全解析00&#xff1a;学习地图 解密语音识别巨头&#xff1a;国内顶尖技术服务商全解析01&#xff1a;微软语音&#xff0c;商业No.1 解密语音识别巨头&#xff1a;国内顶尖技术服务商全解析02&#xff1a;百度…

ProxyPin 抓包,原来可以这么简单!

你是否还在为网络请求的抓包发愁&#xff1f;其实&#xff0c;ProxyPin 可以让抓包操作变得异常简单&#xff01;不需要复杂的设置&#xff0c;也不用繁琐的配置&#xff0c;轻松几步就能实现。让我们一起来看看吧&#xff01; 抓包操作常用于测试网络请求、分析接口响应&#…

Javascript剩余参数、arguments对象和柯里化函数

在JavaScript中&#xff0c;函数的剩余参数&#xff08;Rest Parameters&#xff09;和arguments对象都是用于处理函数接收的不定数量参数的机制。虽然它们的功能相似&#xff0c;但使用方式和适用场景有所不同。下面详细解释这两个概念。 剩余参数&#xff08;Rest Parameter…

手撕数据结构 —— 栈(C语言讲解)

目录 1.认识栈 什么是栈 栈的示意图 2.如何实现栈 3.栈的实现 Stack.h中接口总览 具体实现 结构的定义 初始化栈 销毁栈 入栈 出栈 取栈顶元素 获取有效元素的个数 判断栈是否为空 4.完整代码附录 Stack.h Stack.c 1.认识栈 什么是栈 栈是一种特殊的线性表…

【动物识别系统】Python+卷积神经网络算法+人工智能+深度学习+机器学习+计算机课设项目+Django网页界面

一、介绍 动物识别系统。本项目以Python作为主要编程语言&#xff0c;并基于TensorFlow搭建ResNet50卷积神经网络算法模型&#xff0c;通过收集4种常见的动物图像数据集&#xff08;猫、狗、鸡、马&#xff09;然后进行模型训练&#xff0c;得到一个识别精度较高的模型文件&am…

DS线性表之单链表的讲解和实现(2)

文章目录 前言一、链表的概念二、链表的分类三、链表的结构四、前置知识准备五、单链表的模拟实现定义头节点初始化单链表销毁单链表打印单链表申请节点头插数据尾插数据头删数据尾删数据查询数据在pos位置之后插入数据删除pos位置之后的数据 总结 前言 本篇的单链表完全来说是…

使用PyTorch从0实现Fashion-MNIST数据集分类

完整代码&#xff1a; from d2l import torch as d2l import torch from torchvision import transforms from torchvision import datasets from torch.utils.data import DataLoader import matplotlib.pyplot as plt from IPython import displaydef get_fashion_mnist_la…

BBR 的不公平性

BBR 公平收敛在相图中的细节 和 aimd&#xff0c;bbr&#xff0c;inflt 守恒的收敛相图总结 已经介绍了 BBR 的 gain 不公平性&#xff0c;本文介绍 BBR 的 RTT 不公平性。 直觉上&#xff0c;BBR 采用 probe_quota gain * maxbw * minrtt 来 probe 带宽&#xff0c;minrtt 越…

掌握Postman,开启API测试新纪元!

Postman是一款流行的API测试工具和开发环境&#xff0c;旨在简化API开发过程、测试和文档编制。它提供了一套功能强大的工具&#xff0c;帮助开发人员更轻松地构建、测试和调试Web服务。 Postman 工具的优势 Postman 可以快速构建请求、还可以保存以后再使用。 Postman 还提…

改进系列:TransUnet结合SAM box改进对MICCAI FLARE腹部13器官图像分割

目录 1、前言 2、实现思路 3、实验代码 3.1 环境配置 3.2 数据集 3.3 训练 3.4 指标 3.5 推理 4、其他 1、前言 本章尝试将TransUnet和SAM结合&#xff0c;以期望达到更换的模型 TransUnet作为医学图像分割的基准&#xff0c;在许多数据集上均取得了很好的效果&#x…