1.urdf与Xacro简单比较

"URDF" 是最初也是比较简单的机器人描述文件,它的结构简单明了,容易理解。但是这也导致当机器人模型变得复杂时,urdf的结构描述就变得冗长,无法简洁有效的描述机器人部件;
"Xacro" 的出现在一定程度上有效地解决这种问题。在本质上,Xacro与URDF是等价的,但Xacro格式提供了一些更高级的方式来组织和编辑机器人描述。

2.urdf文件结构与Xacro文件结构

URDF--主要部件

示例如下:定义个robot name, 将其他的部件都放在里面,然后针对每一个关键(joint ), 坐标外观(geometry), 材料(material)分别进行描述。 其中,每个child link是以parent link 为原点的三维坐标系位置(Origin), 若没有parent link的origin则是相对于本身原位置的转换。

<?xml version="<?xml version="1.0"?>
<robot name="test_robot">
<link name="base_link" />
<link name="link2" />
<link name="link3" />
<link name="link4" /> <link name="base_link">
<visual>
<geometry>
<box size="0.25 .16 .05"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="blue">
<color rgba="0 0 .8 1"/>
</material>
</visual>
</link> <joint name="joint1" type="continuous">
<parent link="base_link"/>
<child link="link2"/>
<origin xyz="0.3 0 0" rpy="1 0 0" />
</joint> <joint name="joint2" type="continuous">
<parent link="base_link"/>
<child link="link3"/>
<origin xyz="0 0.3 0" rpy="0 1 0" />
</joint> <joint name="joint3" type="continuous">
<parent link="base_link"/>
<child link="link4"/>
<origin xyz="0 0 0.3" rpy="0 0 1" />
</joint>
</robot>

其他部件标签如: "Collision", "Axis joint", "Limit"暂略.

Xacro--主要部件

  • 定义宏属性: Constants

    <xacro:property name="WIDTH" value="2.0"/>
    <xacro:property name="PI" value="3.14159265" />
    使用:${PI/2}
  • Macros: 小模块的定义,方便重用,以及可以使用参数来标识不同的部分

    <xacro:macro name="default_link" params="prefix *origin">
    <link name="${prefix}_link1" >
    <xacro:insert_block name="prigin" />
    </link>
    </xacro:macro> <xacro:default_link prefix="my">
    <origin xyz="0 0 0" rpy="0 0 0" />
    </xacro:default_link>
  • include:很多模型已经定义好分成多个文件,我们可以用include格式将各个部件加进来,并且还可以加入urdf文件。

    <xacro:include firename="${find packages}/urdf/***.xarco" />
    <xacro:include firename="${find packages}/urdf/***.urdf" />

3.两种不同机器人描述文件的显示方式

URDF

<launch>
<arg name="model" />
<arg name="gui" default="false" />
<param name="robot_description" textfile="$(find basic_3d_visualizer)/urdf/First01learn.urdf" />
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find basic_3d_visualizer)/urdf/urdf_test.rviz" />
</launch>

Xacro

<launch>
<arg name="model" />
<arg name="gui" default="true" />
<param name="robot_description" command="$(find xacro)/xacro --inorder $(find basic_3d_visualizer)/urdf/First01learn.urdf" />
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" />
</launch>

[参考链接]

1. URDF与Xacro的语法比较

2. Xacro文件详述

3. URDF 结构详解

4. URDF初级

5. URDF 链接标签详解

6. 创客智造的一个完整机器人的分步阐述URDF

Author: Ian
星期二, 09. 七月 2019 11:03上午

最新文章

  1. adb connect 出现timeout的处理方式
  2. The operation couldn’t be completed. (LaunchServicesError error 0.)
  3. mysql dba系统学习(6)二进制日志binlog之二
  4. mybatis,Spring等工具对xml文件正确性的验证
  5. php Hash Table(二) Hash函数
  6. 如何让linux定时任务crontab按秒执行
  7. Net use命令
  8. Codeforces Round #277 (Div. 2)
  9. PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG在客户端不能确定的解决办法
  10. SQL Server2008数据库导入导出兼容性处理
  11. Contact Form 7邮件发送失败的解决办法
  12. POJ1094 Sorting It All Out(拓扑排序)
  13. Java -- WeakHashMap
  14. 【.NET】Repeater控件简单的数据绑定(有bool,日期,序号)
  15. Linux下 Unison 实现文件双向同步
  16. 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的
  17. python实现:最长子字符串
  18. JBOSS EAP实战(2)-集群、NGINX集成、队列与安全
  19. Java设计模式之《适配器模式》及应用场景
  20. pwnable.kr-fd-witeup

热门文章

  1. Win8 Metro(C#)数字图像处理--2.63图像指数增强
  2. C#数据导出Excel详细介绍
  3. [PowerDesign]将数据库从SQL Server数据库转换为MySQL
  4. 改善C#程序的建议1:非用ICloneable不可的理由
  5. InfoPath分别定义New/Edit 表单
  6. ABP开发框架前后端开发系列---(10)Web API调用类的简化处理
  7. C# 设计模式,工厂方法
  8. 如何在虚拟环境里运行spyder?如解决import tensorflow as tf 出现importError:no module named &#39;tensorflow&#39;
  9. Ubuntu 配置docker镜像加速器
  10. C# RESTful API 访问辅助类