【ROS-Gazebo】SDF机器人描述格式解析

2023-05-16

这篇很好的一点最后讲了加载world的两种方式,通过gazebo直接加载和通过launch加载。

还有SDF格式是在SDF官网有着清晰清晰的介绍的。

转载自:https://www.guyuehome.com/6809

【ROS-Gazebo】SDF机器人描述格式解析

小明工坊

分类:ROS

发布时间 2020.05.12阅读数 2752 评论数 0

什么是SDF?

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

SDF Home​sdformat.org

SDF定义机器人

SDF定义环境

SDF和URDF的区别

SDF和URDF都是基于XML的机器人描述格式。区别在于URDF只能描述单个机器人的运动和动态属性,而无法描述环境信息,也不支持多机器人、闭链(并联)机器人;SDF是相对更新的格式,它可以包含从世界环境到机器人属性相关的全部信息,且支持闭链结构。

尽管SDF格式具备更明显的优点,Gazebo官方也主推SDF格式,甚至已经下架了部分关于URDF的教程。但到目前为止,大多数网络上能找到的中文ROS教程仍然是基于URDF的,部分插件工具也只支持URDF。因此,在选择机器人描述格式时,如果对自己的开发能力有信心且有长期做Gazebo仿真开发的打算,或必须要用到闭链结构的机器人,推荐使用SDF格式;如果是刚入门的新手,还是建议采用教学资源更加丰富的URDF/XACRO格式建立自己的机器人

SDF格式规范

世界环境(world)的基本结构

前面说到,SDF既可以描述环境信息,也可以描述机器人本身的信息。我们以一个典型的世界文件 example.world看一看SDF世界环境文件的基本结构。为了便于浏览,下面的文件中我删除了三级以上的标签,完整的文件见我的项目:

XM522706601/robotics_tutorial_for_zhihu​github.com


  

  
<sdf version='1.6'>

  
<world name='default'>

  
<model name='ground_plane'>

  
定义地面环境

  
</model>

  
<light name='sun' type='directional'>

  
定义环境光照

  
</light>

  
<gui fullscreen='0'>

  
定义界面参数,如用户相机视角的相关参数

  
</gui>

  
<gravity> 定义重力加速度 </gravity>

  
<magnetic_field> 定义磁场 </magnetic_field>

  
<atmosphere type='adiabatic'/> 定义大气环境

  
<physics name='default_physics' default='0' type='ode'>

  
定义物理参数,主要是仿真求解参数

  
</physics>

  
<scene>

  
定义场景参数,包括环境、背景、阴影等

  
</scene>

  
<spherical_coordinates>

  
定义球坐标系,包括类型、海拔、经度、纬度、航向角等(作用暂未知)

  
</spherical_coordinates>

  
<model name='unit_box'>

  
自定义机器人或物体模型

  
</model>

  
<state world_name='default'>

  
定义世界状态,包括仿真时间、真实时间、墙上时间以及各模型的位姿参数等

  
</state>

  
</world>

  
</sdf>

可以看到,SDF格式的环境文件对环境参数做了详细的定义。而更多的机器人或者物体模型,可以利用<model>标签来插入。

模型标签(model)的基本结构

我们的机器人或者其它物体都是以模型标签<model>进行定义并插入到环境中的。下面以一个简单的正方体为例,说明<model>标签的基本结构。


  

  
<model name='unit_box'>

  
<pose frame=''>0.357849 -0.310577 0.5 0 -0 0</pose>

  
<link name='link'>

  
<inertial>

  
惯性参数,包括质量、惯量等

  
</inertial>

  
<collision name='collision'>

  
碰撞参数,用于碰撞检测

  
</collision>

  
<visual name='visual'>

  
可视化参数,用于显示

  
</visual>

  
<self_collide>是否检测自碰撞</self_collide>

  
<enable_wind>是否受到风的影响</enable_wind>

  
<kinematic>运动学</kinematic>

  
</link>

  
</model>

SDF格式中的<model>标签和URDF的<robot>标签结构基本一致,但细节略有不同。每个标签的细节信息,我们可以查阅官方规范文档:http://sdformat.org/spec ,文档分层图表的形式进行说明,查询十分方便。

SDF官方规范文档

SDF文件的使用

SDF格式的world文件既可以利用终端单独加载到gazebo中,也可以利用ros的launch文件进行启动。举例说明,先将example.world下载到Documents目录下。

(1)终端加载

打开一个新终端,执行如下命令:

cd ~/Documents/

gazebo example.world

即可启动gazebo并加载example.world文件:

(2)roslaunch加载

在大型项目中,我们更习惯用launch文件一次性加载模型、控制器、节点等文件。SDF文件同样可以在launch文件中加载。在launch文件中添加如下代码:


  

  
<launch>

  
<include file="$(find gazebo_ros)/launch/empty_world.launch">

  
<arg name="world_name" value="<your_world>.world"/>

  
</include>

  
</launch>

<your_world>即为world文件所在的完整路径,例如:


  

  
<launch>

  
<include file="$(find gazebo_ros)/launch/empty_world.launch">

  
<arg name="world_name" value="~/Documents/example.world"/>

  
</include>

  
</launch>

然后用roslaunch启动launch文件即可。

参考文献

[1] http://sdformat.org/

[2] Gazebo学习随记2 SDF和XML

[3] Gazebo学习总结之制作一个模型及导入网格

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

【ROS-Gazebo】SDF机器人描述格式解析 的相关文章

  • ROS中使用VLP16激光雷达获取点云数据

    ROS中使用VLP16激光雷达获取点云数据 个人博客地址 本文测试环境为 Ubuntu20 04 ROS Noetic 需要将激光雷达与PC连接 然后在设置 gt 网络 gt 有线中将IPv4改为手动 并且地址为192 168 1 100
  • 无人驾驶论坛

    1 百度Apollo论坛 http www 51apollo com 2 人工智能中文资讯网 http www ailab cn
  • V-REP安装

    小知识 是当前目录 是父级目录 是根目录 1 下载V REP 官网地址 http www v rep eu downloads html 我用ubuntu16 04下载V REP PRO EDU V3 5 0 Linux tar 2 解压安
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • ROS学习(1)——ROS1和ROS2的区别

    因为机器人是一个系统工程 它包括了机械臂结构 电子电路 驱动程序 通信框架 组装集成 调试和各种感知决策算法等方面 任何一个人甚至是一个公司都不可能完成机器人系统的研发工作 但是我们又希望自己能造出一个机器人跑一跑 验证一下自己的算法 所以
  • 1-如何安装ROS

    如何安装ROS 大家好 我是如何 今天尝试在Ubantu下安装ROS Robot Operating System 测试环境 虚拟机VMware Ubantu20 04 准备步骤 添加ROS软件源 sudo sh c echo deb ht
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • Hypervisor介绍及在智能驾驶的应用

    转自Hypervisor 智能座舱和智能驾驶融合的关键技术 腾讯新闻
  • 激光雷达LMS111在ROS上的使用

    LMS111 10100 在ROS上的测试与使用 准备工作 设备 硬件 LMS111 101000激光雷达 软件 ubuntu16 04 ROS 开始 设备连接 将激光雷达与处理器 电脑 工控机等 通过以太网连接好 激光雷达默认的IP地址为
  • ROS 第四天 ROS中的关键组件

    1 Launch文件 通过XML文件实现多节点的配置和启动 可自动启动ROS Master
  • 服务数据的定义和使用

    1 自定义数据服务 在包下创建srv文件夹 在文件夹下创建Person srv 在Person srv下输入以下内容 代表数据类型 string name uint8 age uint8 sex uint8 unknown 0 uint8
  • 进入 docker 容器,exec 丢失 PATH 环境变量

    这是我的 Dockerfile FROM ros kinetic ros core xenial CMD bash 如果我跑docker build t ros docker run it ros 然后从容器内echo PATH 我去拿 o
  • 如何将视频或图像序列转换为包文件?

    我是 ROS 新手 我需要转换预先存在的视频文件 或者large可以连接到视频流中的图像数量 bagROS 中的文件 我在网上找到了这段代码 http answers ros org question 11537 creating a ba
  • 在 CLion 中设置 ROS 包

    我正在使用 CLion C IDE 来编辑 ROS 包 我可以通过打开CMakeLists txt文件 但是 我收到一个错误 FATAL ERROR find package catkin 失败 在工作区和 CMAKE PREFIX PAT
  • 从 pcl::PointCloud 中删除点

    我是 PCL 新手 我正在使用 PCL 库 并且正在寻找一种从点云中提取点或将特定点复制到新点的方法 我想验证每个点是否符合条件 并且我想获得仅包含优点的点云 谢谢 使用 ExtractIndices 类 将要删除的点添加到 PointIn
  • 如何将曲面拟合到一组数据点并获得曲面方程

    乌班图 ROS 思维 Python程序 我正在尝试获取适合点云数据中的一组点的表面方程 数据来自激光雷达扫描仪 我在 rviz 中选择整个扫描的一部分 并获得该选择的坐标选定表面的图片 所选曲面并不总是如此线性 因为材质中可能存在轻微的曲线
  • 在 Ubuntu 18.10 上安装 ROS Melodic

    I can t是唯一对 Cosmic 与 Wayland 和 Melodic 的组合感兴趣的人 我会坦白说 我似乎已经在 XPS 13 9370 上成功管理了此操作 或者至少安装脚本 最终 成功完成 然而 有一个非常棘手的解决方法 无论结果
  • 可以在catkin工作区之外创建ROS节点吗?

    我想在catkin工作区之外创建一个ROS发布者节点 可以创建吗 当然可以 像对待任何其他 cpp 库或 python 包一样对待 ROS 在Python中你必须保留PYTHONPATH环境变量指向ros包 opt ros kinetic
  • 无法在 Ubuntu 20.04 上安装 ROS Melodic

    我正在尝试使用这些命令在 Ubuntu 20 04 上安装 ROS Melodic sudo sh c echo deb http packages ros org ros ubuntu lsb release sc main gt etc
  • 如何在Windows上安装机器人操作系统ROSJava?

    ROS 的文档很糟糕 一个很大的讽刺是 ROS 的 Groovy 和 ROSJava 版本的创建是为了让 Windows 等平台上的开发人员能够利用出色的机器人 SDK 而所有安装说明仍然面向 Linux ubuntu 用户 The ROS

随机推荐