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

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五年以上倾斜摄影osgb模型转3dtiles如何在mars3d加载

方案一&#xff1a; // 兼容1.50 &#xff08;2018-10-01)版本更改了名称&#xff0c;造成部分3dtiles可能会出现加载不上导致渲染停止的错误。 // 错误说明为&#xff1a;RuntimeError: Unsupported glTF Extension: KHR_technique_webgl // 原因&#xff1a;KHR_technique_w…

Java基础常见面试题总结(上)

基础概念与常识 Java 语言有哪些特点? 简单易学&#xff08;语法简单&#xff0c;上手容易&#xff09;&#xff1b;面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff1b;平台无关性&#xff08; Java 虚拟机实现平台无关性&#xff09;&…

【9724】基于springboot+vue的篮球竞赛预约平台

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 本次设计任务是要设计一个篮球竞赛预约平台&#xff0c…

软件架构师 PV

PV操作与生产者消费者问题是操作系统中进程管理和同步机制的重要概念。以下是对PV操作以及生产者消费者问题的详细解释&#xff1a; 一、PV操作 PV操作由P操作原语和V操作原语组成&#xff0c;这两个原语是不可中断的过程&#xff0c;它们对信号量进行操作。 P操作&#xff…

泰克MDO3054示波器特性和规格Tektronix MSO3054 500M 四通道

Tektronix MDO3054 示波器&#xff0c;混合域&#xff0c;500 MHz&#xff0c;4 通道&#xff0c;5 GS/s 泰克 MDO3054 混合域示波器是终极 6 合 1 集成示波器&#xff0c;包括可选的集成频谱分析仪、任意函数发生器、逻辑分析仪、协议分析仪和数字电压表/计数器。泰克 MDO305…

(25)QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真

文章目录 前言一、MATLAB仿真代码二、仿真结果 前言 QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真MATLAB代码。 一、MATLAB仿真代码 代码如下&#xff1a; nSamp 8; % 矩形脉冲的采样点数 nSymbol 1000000; % 传输的符号…

霍夫圆型硬币检测Matlab程序

1. 图像读取和预处理 使用MATLAB的uigetfile函数读取图像&#xff0c;可以从文件系统中选择图像文件。读取的图像随后经过灰度化处理&#xff0c;将彩色图像转换为灰度图像&#xff0c;以降低计算复杂度并去除不必要的颜色信息。 2. 中值滤波 在图像预处理过程中&#xff0c;…

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态&#xff0c;对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码&#xff0c;发现web-view是给绝对定…

EasyOCR——超强超便捷的OCR开源算法介绍与文本检测模型CRAFT微调方法

背景 最近在实际操作阿拉伯文小语种OCR功能的时候&#xff0c;尝试了诸多开源算法&#xff0c;但效果均不尽如人意。 说实在的&#xff0c;针对阿拉伯文的OCR开源算法&#xff0c;若仅仅是效果没那么优秀&#xff0c;比如识别率能有个70%80%&#xff0c;我还能微调微调&#…

例行性工作(at,crontab)

&#xff08;一&#xff09;单一执行的例行性工作&#xff1a; ----at &#xff08;1&#xff09;原理&#xff1a;仅处理执行一次就结束了 &#xff08;2&#xff09;命令及其解释&#xff1a; &#xff08;2.1&#xff09;at命令格式&#xff1a;at [参数] [执行时间] &am…

C++ Builder XE12关于KonopkaControls与TMS VCL UI Pack组件的安装

1、先打开open project&#xff0c;选中安装的组件工程&#xff0c;并打开。 2、在option中设置 3、点击编译并进行安装install

【SpringAI】(一)从实际场景入门大模型——适合Java宝宝的大模型应用开发

一、简单场景介绍 假设你需要为一个商城项目接入一个基于SpringAI的智能客服系统&#xff0c;现在我们来基本模拟一下&#xff1a; 当我通过系统提问&#xff0c;大模型会针对我的问题进行回答。 当我们通过程序提问时&#xff0c;SpringAI会将我们的提问封装成Prompts&#x…

一分钟带你认清Java抽象类

abstrat——抽象&#xff0c;抽象类真的有像它的名字一样那么抽象吗&#xff1f;其实不然&#xff0c;它只是一个比较特殊的类别&#xff0c;我们只需要简单地认清它的作用就行&#xff0c;一起来看看吧~ 抽象类的概念 首先我们要明确一个事情&#xff1a;在面向对象的概念中&…

基于vue框架的宠物管理系统fyv66(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,宠物分类,宠物信息,宠物用品,用品分类,洗护类型,商家,宠物洗护 开题报告内容 基于Vue框架的宠物管理系统开题报告 一、背景与意义 随着城市化进程的加速和生活水平的提高&#xff0c;宠物已成为许多家庭的重要成员&#xff0c;宠…

RabbitMQ service is already present - only updating service parameters

Windows下卸载RabbitMQ之后,然后重新注册RabbitMQ服务的时候,报错以下信息: D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin>D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin\rabbitmq-service.bat install RabbitMQ service is already …

FFmpeg 简介及其下载安装步骤

目录 一、FFmpeg 简介 二、FFmpeg 安装步骤 2.1 打开官网 2.2 选择FFmpeg系统版本 2.3 下载FFmpeg压缩包 2.4 将下载好的压缩包进行解压 2.5 设置环境变量 2.5.1 在搜索栏中搜索【环境变量】&#xff0c;然后单击将其打开 2.5.2 找到系统变量中的【Path】&#xff0c;点…

Python异常处理详解:try, except, else, finally的使用方法与示例

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

力反馈手套如何在VR培训解决方案中为用户提供沉浸式体验?

在VR训练中如何为用户带来更加沉浸式的使用体验一直是该领域不断向前探索的发展方向。力反馈手套的融入为VR训练中的沉浸式交互指出了全新的发展方向。通过使用像SenseGlove Nova这样的虚拟现实力反馈手套&#xff0c;用户能够在VR虚拟训练场景中真实的感受到虚拟物体的尺寸大小…

uniapp 小程序0到1教程

先说明一下&#xff0c;uni-app的文档很乱 一、注册微信小程序 如果你还没有微信公众平台的账号&#xff0c;请先进入微信公众平台首页&#xff0c;点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信&#xff0c;我们选择 “小程序”…

java代码生成器集成dubbo,springcloud详解以及微服务遐想

摘要 今天终于有了点空闲时间&#xff0c;所以更新了一下代码生成器&#xff0c;修复了用户反馈的bug&#xff0c;本次更新主要增加了dubbo和springcloud脚手架的下载功能&#xff0c;架子是本人亲自搭建&#xff0c;方便自由扩展或者小白学习使用&#xff0c;你也许会问为什么…