当前位置:   article > 正文

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

ros2创建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的声明:

  1. <?xml version="1.0 "?>
  2. <robot name="robot_name" xmlns:xacro="http://www.ros.org/wiki/xacro">

1.常量的定义与使用

  1. <xacro:property name="M_PI" value="3.14159" />
  2. <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.宏定义与宏调用,使用宏定义来声明重复使用的代码模块,而且可以包含输入参数,类似编程中的函数概念:

  1. <xacro:macro name="name" params="A B C">
  2. ......
  3. </xacro:macro>
  4. <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文件即可:

  1. <arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/mbot.urdf.xacro'" />
  2. <param name="mbot_description" command="$(arg model)" />

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/979126
推荐阅读
相关标签
  

闽ICP备14008679号