统一机器人描述格式——URDF

这篇具有很好参考价值的文章主要介绍了统一机器人描述格式——URDF。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

URDF(Unified Robot Description Format,统一机器人描述格式)是ROS中一个非常重要的机器人模型描述格式,ROS同时也提供URDF文件的C++解析器,可以解析URDF文件中使用XML格式描述的机器人模型。

在使用URDF文件构建机器人模型之前,有必要先梳理一下URDF文件中常用的XML标签,对URDF有一个大概的了解。

<link>标签

<link> 标签用于描述机器人某个刚体部分的外观和物理属性,包括尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)等。

机器人的link结构一般如图6-1所示,其基本的URDF描述语法如下:

<link name="<link name>">
	<inertial> . . . . . . </inertial>
	<visual> . . . . . . </visual>
	<collision> . . . . . . </collision>
</link>

标签用于描述机器人link部分的外观参数,标签用于描述link的惯性参
数,而标签用于描述link的碰撞属性。从下图可以看到,检测碰撞的link区域大于外
观可视的区域,这就意味着只要有其他物体与collision区域相交,就认为link发生碰撞。

统一机器人描述格式——URDF,ROS2,AGV,人工智能,机器人,人工智能
标签用于描述机器人关节的运动学和动力学属性,包括关节运动的位置和速度限制。根据机器人的关节运动形式,可以将其分为六种类型

URDF模型中的joint类型

统一机器人描述格式——URDF,ROS2,AGV,人工智能,机器人,人工智能
与人的关节一样,机器人关节的主要作用是连接两个刚体link,这两个link分别称为parent link和child link,如图

统一机器人描述格式——URDF,ROS2,AGV,人工智能,机器人,人工智能
标签的描述语法如下:

<joint name="<name of the joint>">
	<parent link="parent_link"/>
	<child link="child_link"/>
	<calibration .... />
	<dynamics damping ..../>
	<limit effort .... />
	....
</joint>

其中必须指定joint的parent link和child link,还可以设置关节的其他属性。

calibration>:关节的参考位置,用来校准关节的绝对位置。

dynamics>:用于描述关节的物理属性,例如阻尼值、物理静摩擦力等,经常在动力学仿真中用到。

limit>:用于描述运动的一些极限值,包括关节运动的上下限位置、速度限制、力矩限制等。

mimic>:用于描述该关节与已有关节的关系。

safety_controller>:用于描述安全控制器参数。

robot>标签

是完整机器人模型的最顶层标签,和标签都必须包含在标签 内。

如下图所示,一个完整的机器人模型由一系列和组成。

统一机器人描述格式——URDF,ROS2,AGV,人工智能,机器人,人工智能

<robot name="<name of the robot>">
	<link> ....... </link>
	<link> ....... </link>
	<joint> ....... </joint>
	<joint> ....... </joint>
</robot>

标签

标签用于描述机器人模型在Gazebo中仿真所需要的参数,包括机器人材料的属性、Gazebo插件等。该标签不是机器人模型必需的部分,只有在Gazebo仿真时才需加入。

该标签的基本语法如下:

<gazebo reference="link_1">
<material>Gazebo/Black</material>
</gazebo>

创建机器人URDF模型

在ROS中,机器人的模型一般放在RobotName_description功能包下。下面尝试仿照MRobot 机器人从零开始创建一个移动机器人的URDF模型

创建机器人描述功能包

可以使用如下命令创建一个新的功能包:

catkin_create_pkg mrobot_description urdf xacro

mrobot_description功能包中包含urdf、meshes、launch和config四个文件夹

  • urdf:用于存放机器人模型的URDF或xacro文件。
  • meshes:用于放置URDF中引用的模型渲染文件。
  • launch:用于保存相关启动文件。
  • config:用于保存rviz的配置文件

创建URDF模型

在之前的学习中,我们已经大致了解了URDF模型中常用的标签和语法,接下来使用这些基本语法创建一个如图所示的机器人底盘模型。

统一机器人描述格式——URDF,ROS2,AGV,人工智能,机器人,人工智能
这个机器人底盘模型有7个link和6个joint。

7个link包括1个机器人底板、2个电机、2个驱动轮和2个万向轮;
6个joint负责将驱动轮、万向轮、电机安装到底板上,并设置相应的连接方式。

先来看一下该模型文件mrobot_description/urdf/mrobot_chassis.urdf的具体内容:

<?xml version="1.0" ?>
<robot name="mrobot_chassis">
<link name="base_link">
	<visual>
	<origin xyz=" 0 0 0" rpy="0 0 0" />
		<geometry>
		<cylinder length="0.005" radius="0.13"/>
		</geometry>
	<material name="yellow">
	<color rgba="1 0.4 0 1"/>
	</material>
	</visual>
</link>
<joint name="base_left_motor_joint" type="fixed">
	<origin xyz="-0.055 0.075 0" rpy="0 0 0" />
	<parent link="base_link"/>
	<child link="left_motor" />
 </joint>
<link name="left_motor">
	<visual>
	<origin xyz="0 0 0" rpy="1.5707 0 0" />
	<geometry>
	<cylinder radius="0.02" length = "0.08"/>
	</geometry>
	<material name="gray">
	<color rgba="0.75 0.75 0.75 1"/>
	</material>
	</visual>
</link>
<joint name="left_wheel_joint" type="continuous">
<origin xyz="0 0.0485 0" rpy="0 0 0"/>
<parent link="left_motor"/>
<child link="left_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="left_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.033" length = "0.017"/>
</geometry>
<material name="white">
<color rgba="1 1 1 0.9"/>
</material>
</visual>
</link>
<joint name="base_right_motor_joint" type="fixed">
<origin xyz="-0.055 -0.075 0" rpy="0 0 0" />
<parent link="base_link"/>
<child link="right_motor" />
</joint>
<link name="right_motor">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.02" length = "0.08" />
</geometry>
<material name="gray">
<color rgba="0.75 0.75 0.75 1"/>
</material>
</visual>
</link>
<joint name="right_wheel_joint" type="continuous">
<origin xyz="0 -0.0485 0" rpy="0 0 0"/>
<parent link="right_motor"/>
<child link="right_wheel_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="right_wheel_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0" />
<geometry>
<cylinder radius="0.033" length = "0.017"/>
</geometry>
<material name="white">
<color rgba="1 1 1 0.9"/>
</material>
</visual>
</link>
<joint name="front_castor_joint" type="fixed">
<origin xyz="0.1135 0 -0.0165" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="front_castor_link"/>
<axis xyz="0 1 0"/>
</joint>
<link name="front_castor_link">
<visual>
<origin xyz="0 0 0" rpy="1.5707 0 0"/>
<geometry>
 <sphere radius="0.0165" />
</geometry>
<material name="black">
<color rgba="0 0 0 0.95"/>
</material>
</visual>
</link>
</robot>

URDF提供了一些命令行工具,可以帮助我们检查、梳理模型文件,需要在终端中独立安装:

sudo apt-get install liburdfdom-tools

然后使用check_urdf命令对mrobot_chassis.urdf文件进行检查:

check_urdf mrobot_chassis.urdf

check_urdf命令会解析URDF文件,并且显示解析过程中发现的错误。如果一切正常,在终端中会输出如图所示的信息。

统一机器人描述格式——URDF,ROS2,AGV,人工智能,机器人,人工智能
还可以使用urdf_to_graphiz命令查看URDF模型的整体结构:

urdf_to_graphiz mrobot_chassis.urdf

执行urdf_to_graphiz命令后,会在当前目录下生成一个pdf文件,打开该文件,可以看到模型的整体结构图

统一机器人描述格式——URDF,ROS2,AGV,人工智能,机器人,人工智能文章来源地址https://www.toymoban.com/news/detail-722906.html

到了这里,关于统一机器人描述格式——URDF的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ros2机器人urdf内<gazebo>标签解释(非传感器)(源自sdf文件官网)

    原文链接SDFormat extensions to URDF (the \\\'gazebo\\\' tag) — Documentation 注意了ros2的gazebo部分已经跟ros1的gazebo部分不一样了: Toggle navigation  Specification API Documentation Download Back Edit                  Version: 1.6            Table of Contents SDFormat extensions to URDF (the gazebo tag) gazebo Element

    2024年02月01日
    浏览(46)
  • 【ROS2机器人入门到实战】ROS2话题入门

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 话题是ROS2中最常用的通信方式之一,话题通信采取的是订阅发布

    2024年02月04日
    浏览(61)
  • 【ROS2机器人入门到实战】ROS2服务入门

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 大家好,帅鱼又蹬蹬蹬的游回来了。本节小鱼将要带大家一起了解

    2024年02月07日
    浏览(55)
  • 【ROS2机器人入门到实战】ROS2节点介绍

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn ROS2中每一个节点也是只负责一个单独的模块化的功能(比如一个

    2024年02月06日
    浏览(49)
  • 【ROS2机器人入门到实战】ROS2接口介绍

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 本节小鱼将会带你学习认识一个新的概念,叫做interface,即接口。

    2024年02月05日
    浏览(48)
  • 【ROS2机器人入门到实战】2.ROS与ROS2对比

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 经过上一节的学习,相信你已经对ROS和ROS2的发展有了一定的了解

    2024年02月04日
    浏览(44)
  • 【ROS2机器人入门到实战】3.动手安装ROS2

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 到了这一节,终于可以开始安装ROS2了。安装ROS2本来是一件比较麻

    2024年02月13日
    浏览(50)
  • 【ROS2机器人入门到实战】4.ROS2初体验

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 通过几个简单的小例子来体验ROS2软件库和工具集。 游戏内容:很

    2024年02月04日
    浏览(67)
  • 【ROS2机器人入门到实战】

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 第 1 章 ROS2介绍与安装 基础篇-Linux基础 1.Linux与Ubuntu系统介绍 2.在

    2024年02月16日
    浏览(49)
  • 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令

    目录 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 一、上讲回顾 二、ROS2核心命令讲解 1、daemon-各种守护进程相关的子命令 2、node-各种节点进程相关的子命令  3、pkg-各种包进程相关的子命令  4、run运行特定软件包的可行性文件 5、topic各种话题进程相关的子命令 6、

    2024年02月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包