ekf pose使用方法 ros_【ROS-Gazebo】为什么选择SDF?

2023-05-16

前言

这是一个系列小文章,主要介绍在ROS-Gazebo中如何更好地使用SDF格式建模与仿真。众所周知,URDF是ROS的原生支持格式,但在某些情况下(尤其是Gazebo仿真时),使用SDF格式会更加合理。鉴于中文网络上几乎没有成体系的SDF介绍博文,因此我将自己在硕士期间关于SDF模型的使用经验稍作总结。如有谬误,还望友好地指出。

本系列规划如下内容,建议按顺序阅读。尤其是第一篇,以确认你是否有必要使用SDF建模:

  • 为什么选择SDF?
  • SDF规范文档与模型资源
  • SDF的建模与使用
  • ERB:模块化生成SDF模型
  • SDF与URDF的相互转换
  • 基于SDF的多机器人仿真
  • 使用与编写自定义插件——以PID控制插件为例

1 什么是SDF?

SDF是一种XML格式,能够描述机器人、静态和动态物体、照明、地形甚至物理学的各方面的信息。SDF可以精确描述机器人的各类性质,除了传统的运动学特性之外,还可以为机器人定义传感器、表面属性、纹理、关节摩擦等;SDF还提供了定义各种环境的方法。包括环境光照、地形等。

SDF描述的机器人

SDF描述的地形

2 SDF和URDF有什么区别?

以下基本摘自官方说明[2]

URDF(Unified Robot Description Format)在ROS中是一种功能强大且标准化的机器人描述格式,但依然缺少许多功能。例如,

  • URDF只能单独定义单个机器人的运动学和动力学特性;
  • 无法定义机器人本身在世界中的姿态;
  • 不能定义闭链结构(并联机器人);
  • 缺乏摩擦和等更丰富的动力学特性;
  • 不能定义非机器人物体,例如灯光,高度图等。

在实现方面,URDF语法大量使用XML的属性(Attribute)特性,使得URDF更加不灵活。 也没有向后兼容的机制。

为了解决以上问题,开发人员创建了一种称为SDF(Simulation Description Format)的新格式,专门供Gazebo使用。

SDF完整描述了从世界级到机器人级的所有内容。 它具有良好的可扩展性。 SDF格式使用XML元素而非属性来自我描述(因为属性往往难以阅读和维护[3]),这有助于使用简单的升级工具将旧版本迁移到新版本。 SDF也是具有自描述性的格式。

3 我应该使用哪种格式?

尽管目前有一些SDF与URDF的之间的转换方法(我在后面的文章里会讲到),但往往十分复杂且易出错。因此,我建议刚开始就根据自己的需求选择最合适的模型格式。对此我有以下建议:

3.1 必须使用URDF的情况

  • 我要使用Rviz对我的机器人进行可视化

3.2 必须使用SDF的情况

  • 我研究并联机器人,或机器人中存在闭链结构

3.3 建议使用URDF的情况

  • 我是新手,面临毕业压力想快点做出可展示的成果
  • 我使用Solidworks建模,想方便地导出用于ROS的三维模型

关于第2条:有专用的Solidworks插件,可以将装配体直接导出成URDF模型。如果想要SDF模型,只能手动导出网格文件,再在SDF中引用。

3.4建议使用SDF的情况

  • 我想深入研究ROS-Gazebo仿真,使仿真的动力学特性更加真实
  • 我想开发自己专用的Gazebo仿真插件

参考资料

[1] SDF官方网站

[2] Gazebo教程:如何使用URDF

[3] XML属性的定义与分析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ekf pose使用方法 ros_【ROS-Gazebo】为什么选择SDF? 的相关文章

  • git找回丢失的代码

    多人开发时找回丢失的代码 1 先保证所有分支的代码都已经提交并拉取到最新状态 2 最重要的是需要找到最近一条自己代码还存在的记录 xff0c 然后复制到最近的更早一条的提交记录的id xff0c 比如e36e9e76da144536c196

随机推荐

  • Docker容器进入的4种方式

    Docker容器进入的4种方式 在使用Docker创建了容器之后 xff0c 大家比较关心的就是如何进入该容器了 xff0c 其实进入Docker容器有好几多种方式 xff0c 这里我们就讲一下常用的几种进入Docker容器的方法 进入Do
  • HTTP Basic和Digest认证介绍与计算

    一 说明 web用户认证 xff0c 最开始是get提交 43 把用户名密码存放在客户端的cookie中的形式 xff1b 在意识到这样不安全之后逐渐演变成了post提交 43 把用户凭证放到了服务端的session中的形式 xff08 当
  • TeamViewer 的替代品 ZeroTier + NoMachine

    之前不怎么用 TeamViewer xff0c 最近用的多了 xff0c 特别好用 xff0c 有点上瘾 xff0c 在哪儿都能连家里的 RTX xff0c 太棒了 然后它就开始作了 有没有好的替代方案呢 xff1f 有人推荐向日葵 xff
  • Kubernetes tutorial - K8S 官方入门教程 中文翻译

    官方教程 xff0c 共 6 个小节 每一小节的第一部分是知识讲解 xff0c 第二部分是在线测试环境的入口 kubectl 的命令手册 原文地址 1 创建集群 1 1 使用 Minikube 创建集群 Kubernetes 集群 Kube
  • 两年,从纯小白到腾讯阿里,应届非计算机毕业生的2014互联网求职之路

    0 写在前面 以此文 xff0c 献给自己这两年的青葱岁月 xff0c 感谢淘宝的朗英师兄和微博的旭爷 全栈pm莹姐姐 酷炫石女王 以及我逝去的头发 参照Lucida的 9个offer xff0c 12家公司 xff0c 35场面试 一文
  • 在cmd中使用start运行exe文件闪退问题

    如果我们是使用的bat批处理文件来执行某件事 xff0c 我们可以直接使用 k参数 xff0c 或者pause命令来让容器 cmd 执行完文件后不退出 如果我们是在cmd中使用start或其他命令直接执行任务 xff0c 导致当前容器退出
  • GreenPlum 5.0的安装

    基本环境 xff1a serverIPMDW172 16 16 31SDW1172 16 16 34SDW2172 16 16 35 1 xff1a 检查操作系统是否符合要求 xff0c 以及系统设置 我这里使用的系统是CentOS 操作系
  • 转载:Pixhawk源码笔记八:添加新的参数

    转载 xff1a 新浪 64 WalkAnt 第九部分 添加新的参数 英文参考 xff1a http dev ardupilot com wiki code overview adding a new parameter 本节源自 xff1
  • Ubuntu(Linux) 下 unzip 命令使用详解

    1 功能作用 xff1a 解压缩zip文件 2 位置 xff1a usr bin unzip 3 格式用法 xff1a unzip Z opts modifiers file zip list x xlist d exdir 4 主要参数
  • Linux之Libcurl库的介绍与应用20170509

    一 LibCurl简介 LibCurl是免费的客户端URL传输库 xff0c 支持FTP FTPS HTTP HTTPS SCP SFTP TFTP TELNET DICT FILE xff0c LDAP等协议 xff0c 其主页是http
  • 面试问题之操作系统:动态链接库和静态链接库的区别

    动态链接库是一个可以被其它应用程序共享的程序模块 xff0c 其中封装了一些可以被共享的例程和资源 动态链接库文件名的扩展名一般是dll xff0c 也有可能是drv xff0c sys和fon xff0c 它和可执行文件 exe 非常类似
  • (uC/OS-II学习笔记) 消息邮箱&&消息队列

    原文出处 xff1a http www cnblogs com hebaichuanyeah 与信号量一样 xff0c 消息邮箱与消息列队都是一种事件块 消息邮箱可以在任务间实现信息传递 比如 xff0c 在任务1中发送一条消息 xff0c
  • rosbag使用--记录深度相机数据

    首先看一下教程 xff1a http wiki ros org openni launch Tutorials BagRecordingPlayback 知道了rosbag如何进行使用记录深度数据 但是按照以上教程记录下来的bag file
  • Postman 基本操作学习

    History 所有使用postman发送的request都会保存在这里 点击之后会在当前Tab打开 参考 xff1a Requests History Environments 这里用来设定当前request 发送时使用的环境 xff0c
  • linux内核去掉设备驱动,基于嵌入式Linux内核的系统设备驱动程序开发设计

    引言 Linux是一个遵循POSIX标准的免费操作系统 具有BSD和SYSV的扩展特性 与其他操作系统相比 xff0c 嵌入式Linux系统以其可应用于多种硬件平台 内核高效稳定 源码开放 软件丰富 网络通信和文件管理机制完善等优良特性而正
  • html onmouseover 注释掉,HTML onmouseover事件用法及代码示例

    将鼠标指针移到元素或其子元素上时 xff0c 将发生HTML中的DOM onmouseover事件 用法 在HTML中 xff1a 在JavaScript中 xff1a object onmouseover 61 function mySc
  • stylegan3自己导出的requirements.txt环境文件

    stylegan3官方给的环境文件是 environment yml xff0c 需要用conda安装 在linux上安装总会遇见奇奇怪怪的问题 xff0c 因此我导出requirements txt文件 xff0c 用pip安装 requ
  • html5 在线摄像头,HTML5在线摄像头使用

    HTML5在线摄像头应用 最近在搞一个考试系统 xff0c 系统要求要有随机拍照的功能 xff0c 并且摄像头能够收到js的控制 在线摄像头嘛 xff0c 就那两种实现的方式 xff1a cab或者flash 暂且不论本人从没学过的flas
  • STM32固件库文件编程结构思想的理解

    STM32的固件库文件功能相当完善 xff0c 提供的API完全能满足一般的项目需要 刚从51单片机转到STM32的人 xff0c 肯定会被这么庞大的东东吓到 xff0c 51单片机上对IO口操作 xff0c 简简单单几行代码就搞定了 xf
  • ekf pose使用方法 ros_【ROS-Gazebo】为什么选择SDF?

    前言 这是一个系列小文章 xff0c 主要介绍在ROS Gazebo中如何更好地使用SDF格式建模与仿真 众所周知 xff0c URDF是ROS的原生支持格式 xff0c 但在某些情况下 xff08 尤其是Gazebo仿真时 xff09 x