在ROS中创建并优化机器人URDF模型

创建URDF模型

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

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)" />

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值