【ROS】古月《ROS机器人开发实践》第6章-1_学习URDF文件

【ROS】古月《ROS机器人开发实践》第6章-1_学习URDF文件

一、什么是URDF

1、URDF(Unified Robot Description Format):统一机器人描述格式

URDF格式的文件可以创建机器人模型,使用xml格式的标记语言对机器人的关节、连杆、外观、属性等进行描述,然后在仿真环境中将机器人模型展现出来。

2、相关标签

<robot> 标签是机器人模型的根标签,<link>、<joint>标签都要包含在<robot>标签中
<link>标签用来描述机器人某个刚体(连杆)部分的外观和物理属性
<joint>标签用来描述机器人某个关节的运动学和动力学属性
<gazebo>标签用来描述机器人模型在Gazebo中仿真所需要的参数

二、自己对URDF文件的一些理解

  1. 在rviz界面中存在一个世界坐标系,是固定不动的,是整个机器人模型的起点。
  2. 在界面中,坐标系代表关节(joint)显示出来的实体代表刚体(link)。(其中坐标系是由红 绿 蓝 3个直线段两两垂直组成的,红色代表x轴,绿色代表y轴,蓝色代表z轴)
  3. 创建link:创建link时的 起始坐标(origin) 是相对于与其父link连接的joint的坐标系而言的。(第一个link除外,第一个link的起始坐标是相对于世界坐标系而言的)
  4. 创建joint:创建joint时的 起始坐标(origin) 是相对于上一个joint的坐标系而言的。
  5. 子link与joint之间是固接 (固定连接) 的,会随着joint的转动(移动)而转动(移动)。
  6. 坐标系代表joint,但是界面中会多出一个坐标系,多出来的那个坐标系便是世界坐标系(可以理解成是世界坐标系(parent)与第一个link(child)之间的joint,只不过该joint坐标系与世界坐标系重合,且类型为固定不动(fixed))

1

三、解读代码

以古月《ROS机器人开发实践》第6章的mrobot_chassis.urdf文件为例,学习一下URDF文件。

1、首先是第一行,用来声明该文件使用XML描述。

<?xml version="1.0" ?>

2、整个机器人模型都包含在<robot>标签当中。name属性是该机器人模型的名字。

<robot name="mrobot_chassis">
   ...
</robot>

3、<robot>标签下包含了<link>和<joint>两个子标签,分别用来定义连杆和关节。

<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 0.5"/>
		</material>
	</visual>
</link>

首先是<link>元素,<link>下的<visual>标签用来定义连杆的外形。其中

<origin> :设置连杆的起始坐标,xyz单位为m,角度单位为弧度制
<geometry>:定义连杆的几何外形;
<cylinder>:圆柱型,以m为单位,z轴方向为轴向,x、y轴方向为径向
<material>下的子标签<color>:定义外观的颜色,rgb为三原色,a为透明度,都是归一化单位(0-1)。

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

然后是<joint>元素,name属性定义关节名字,type属性定义关节的类型,描述关节是如何运动的。

<origin>:设置关节的起始坐标,xyz单位为m,角度单位为弧度制
<parent >:定义关节的父link
<child>:定义关节的子link
<axis>:如果是转动关节,则是设置绕哪个轴转动,置1的轴为转动轴。因为是固定关节,所以上述代码没有该标签。

关节的类型有以下6种:

2

四、在rviz中显示模型

使用launch文件

<param name="robot_description" textfile="$(find mrobot_description)/urdf/mrobot_chassis.urdf" />

在参数服务器中设置一个名为robot_description的变量,保存了mrobot_chassis.urdf文件的路径。

<param name="use_gui" value="true"/>

在参数服务器中设置一个名为use_gui的变量,值为"true",显示关节控制插件。

<node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />

运行joint_state_publisher_gui节点,发布机器人的关节状态 。

<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

运行robot_state_publisher节点,发布TF。

<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mrobot_description)/config/mrobot_urdf.rviz" required="true" \>

运行rviz可视化界面。


参考:

古月居《ROS机器人开发实践》

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值