赞
踩
1.创建机器人描述功能包,在工作空间的src文件夹中打开终端,输入以下命令:
$ catkin_create_pkg mbot_description urdf xacro
2.在mrobot_description功能包中新建urdf、meshes、launch和config四个文件夹
urdf:用于存放机器人模型的URDF或xacro文件
meshes:用于放置URDF中引用的模型渲染文件
launch:用于保存相关启动文件
config:用于保存rviz的配置文件
3.在urdf文件夹中打开终端输入以下命令新建一个模型文件,然后就可以在这个文件中编写该模型的具体内容:
$ touch mbot_bash.urdf
4.URDF提供了一些命令行工具可以帮助我们检查、梳理模型文件,我们需要先在终端中独立安装
$ sudo apt-get install liburdfdom-tools
使用check_urdf命令可以对.urdf文件进行检查,先在该文件夹下打开终端,然后输入以下命令:
$ check_urdf name.urdf
使用urdf_to_graphiz命令可以查看URDF模型的整体结构,执行该命令后,会在当前目录下生成一个pdf文件,打开该文件就可以看见该模型的整体结构了:
$ urdf_to_graphiz name.urdf
URDF建模的缺点:
模型冗长,重复内容过多
参数修改麻烦,不便于二次开发
没有参数计算功能等
URDF模型的进化版本——xacro模型文件,它具备以下优势:
精简模型代码:可以通过创建宏定义的方式定义常量或者复用代码,让模型代码更加模块化,更具可读性
提供可编程接口:xacro的语法支持一些可编程接口,如常量、变量、数学公式、条件语句等
xacro是URDF的升级版,模型文件的后缀名由.urdf改为.xacro,并且在模型<robot>标签中需要加入xacro的声明:
- <?xml version="1.0 "?>
- <robot name="robot_name" xmlns:xacro="http://www.ros.org/wiki/xacro">
1.常量的定义与使用
- <xacro:property name="M_PI" value="3.14159" />
- <origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />
2.调用数学公式,在"${}"语句中,不仅可以调用常量,还可以使用一些常用的数学运算,包括加、减、乘、除、负号、括号等,为了保证运算精度,所有数学运算都会转换成浮点数进行:
<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rgy="0 0 0" />
3.宏定义与宏调用,使用宏定义来声明重复使用的代码模块,而且可以包含输入参数,类似编程中的函数概念:
- <xacro:macro name="name" params="A B C">
- ......
- </xacro:macro>
-
- <name A="A_value" B="B_value" C="C_value" />
4.xacro文件的引用
<xacro:include filename="$(find mbot_description)/urdf/mbot_base_gazebo.xacro" />
5.显示优化后的模型
方法一:将xacro文件转换成URDF文件,使用如下命令会在当前目录下生成一个转化后的URDF文件,然后用之前介绍的launch文件可将该URDF模型显示在rviz中:
$ rosrun xacro xacro.py mbot.urdf.xacro > mbot.urdf
方法二:直接调用xacro文件解析器,自动将xacro转换成URDF文件,该过程可以在launch文件中使用如下语句进行配置。然后在终端运行修改过的launch文件即可:
- <arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/mbot.urdf.xacro'" />
- <param name="mbot_description" command="$(arg model)" />
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。