参考视频:【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程_哔哩哔哩_bilibili

参考文档:http://www.autolabor.com.cn/book/ROSTutorials/

xacro 提供了可编程接口,类似于计算机语言,包括变量声明调用、函数声明与调用等语法实现。在使用 xacro 生成 urdf 时,根标签robot中必须包含命名空间声明:xmlns:xacro="http://wiki.ros.org/xacro"

1.属性与算数运算

用于封装 URDF 中的一些字段,比如: PAI 值,小车的尺寸,轮子半径 ....

属性定义

<xacro:property name="xxxx" value="yyyy" />

属性调用

${属性名称}

算数运算

${数学表达式}

例如:新建一个 demo02_field.urdf.xacro ,编写如下代码:

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro" ><!--1.属性定义--><xacro:property name="PI" value="3.1415927" /><xacro:property name="radius" value="0.03" /><!--2.属性调用--><myUsePropertyXxx name="${PI}" /><myUsePropertyXxx name="${radius}" /><!--3.算术运算--><myUsePropertyYyy result="${PI / 2}" /><myUsePropertyYyy result="${radius * 2}" /></robot>

运行:

rosrun xacro xacro demo02_field.urdf.xacro 

输出:

cys@ubuntu:~/demo05_ws/src/urdf01_rviz/urdf/xacro$ rosrun xacro xacro demo02_field.urdf.xacro
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from demo02_field.urdf.xacro        | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="mycar"><!--2.属性调用--><myUsePropertyXxx name="3.1415927"/><myUsePropertyXxx name="0.03"/><!--3.算术运算--><myUsePropertyYyy result="1.57079635"/><myUsePropertyYyy result="0.06"/>
</robot>

2.宏

类似于函数实现,提高代码复用率,优化代码结构,提高安全性

宏定义

<xacro:macro name="宏名称" params="参数列表(多参数之间使用空格分隔)">.....参数调用格式: ${参数名}</xacro:macro>

宏调用

<xacro:宏名称 参数1=xxx 参数2=xxx/>

例子:创建求和的宏并调用

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro" ><!--1.宏的定义--><xacro:macro name="getSum" params="num1 num2"><result value="${num1 + num2}" /></xacro:macro><!--2.宏调用--><xacro:getSum num1="1" num2="2" />
</robot>

输出:

cys@ubuntu:~/demo05_ws/src/urdf01_rviz/urdf/xacro$ rosrun xacro xacro demo03_macro.urdf.xacro
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from demo03_macro.urdf.xacro        | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="mycar"><result value="3"/>
</robot>

3.文件包含

机器人由多部件组成,不同部件可能封装为单独的 xacro 文件,最后再将不同的文件集成,组合为完整机器人,可以使用文件包含实现

文件包含

<robot name="xxx" xmlns:xacro="http://wiki.ros.org/xacro"><xacro:include filename="my_base.xacro" /><xacro:include filename="my_camera.xacro" /><xacro:include filename="my_laser.xacro" />....
</robot>

例子:包含上述两个例子的xacro

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro" ><!--1.演示文档包含--><xacro:include filename="demo02_field.urdf.xacro" /><xacro:include filename="demo03_macro.urdf.xacro" />
</robot>

运行输出:

cys@ubuntu:~/demo05_ws/src/urdf01_rviz/urdf/xacro$ rosrun xacro xacro demo04_sum.urdf.xacro
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from demo04_sum.urdf.xacro          | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="mycar"><!--2.属性调用--><myUsePropertyXxx name="3.1415927"/><myUsePropertyXxx name="0.03"/><!--3.算术运算--><myUsePropertyYyy result="1.57079635"/><myUsePropertyYyy result="0.06"/><result value="3"/>
</robot>

 

机器人系统仿真(七)——xacro语法详解相关推荐

  1. ROS入门笔记(七):详解ROS文件系统

    ROS入门笔记(七):详解ROS文件系统 文章目录 01 Catkin编译系统 1.1 Catkin特点 1.2 Catkin工作原理 1.3 使用`catkin_make`进行编译 02 Catki ...

  2. Velocity魔法堂系列二:VTL语法详解

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  3. HBase数据结构与基本语法详解

    HBase数据结构与基本语法详解.背景: 阅读新闻 [日期:2019-01-06] 来源:Linux社区 作者:Linux [字体:大 中 小] HBase中的表一般有这样的特点: 1 大:一个表可以 ...

  4. OSI七层模型详解物理层、数据链路层、网络层、传输层.....应用层协议

    OSI七层模型详解(物理层.数据链路层.网络层.传输层.....应用层协议与硬件) OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型 ...

  5. Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了)---zhangkaitao

    Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了) http://jinnianshilongnian.iteye.com/blog/1415606    --zha ...

  6. MySQL常用操作之创建存储过程语法详解

    MySQL常用操作之创建存储过程语法详解 前言 简介 语法 创建结构 变量结构 入参变量和出参变量 流程控制 判断(IF 语句) 判断(CASE 语句) 循环(LOOP 语句) 循环(WHILE 语句 ...

  7. @Pointcut语法详解

    @Pointcut语法详解 目录 @Pointcut语法详解 定义 表达式标签 execution execution格式: 例子: AspectJ类型匹配的通配符: within和@within t ...

  8. 6.3.3 URDF语法详解03_joint

    ROS入门 6.3.3 URDF语法详解03_joint <ROS入门-理论与实践>视频教程镇楼 joint urdf 中的 joint 标签用于描述机器人关节的运动学和动力学属性,还可以 ...

  9. 初识网络基础《网络七层模型详解》

    坚持原创输出,点击蓝字关注我吧 图片来自网络 目录 一.初识网络基础 二.网络七层模型详解 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层 三.总结 一.初识网 ...

  10. ROS学习:URDF语法详解一link篇

    ROS学习:URDF语法详解一link篇 1.概述 1.1 URDF语法详解_robot 1.2 URDF语法详解_link 1.2.3.案例需求:分别生成长方体.圆柱与球体的机器人部件 1.概述 参 ...

最新文章

  1. 商汤组了「最强大脑」局,正儿八经解释为啥搞起电竞AI
  2. python中tolist_高效的张量操作 Pytorch中就占5种
  3. github 修改项目为public_在GitHub上为开源项目做贡献
  4. 【Boost】boost库中thread多线程详解10——condition条件变量
  5. 最新天猫面试题(含总结):线程池+并发编程+分布式设计+中间件
  6. 用window.location.href实现页面跳转
  7. Linux工作笔记-使用alias简化Linux命令(包含.bash和.cshrc)
  8. ICCV 2019 | Adobe 无需大量数据训练,内部学习机制实现更好的视频修补
  9. 关于量子计算机的科学论文,量子计算机论文,关于科学家尝试用量子计算机创造时间旅行论文范文-毕业论文网...
  10. weblogic进程自动关闭_手机总是清理内存?原来是6个设置没关,1秒关闭多用3年...
  11. JavaWeb开发通过Socket编程实现网页访问(附源代码)
  12. WCF编程系列(七)信道及信道工厂
  13. Telnet Sequence Diagram
  14. Locahost和本地IP地址有什么区别?
  15. 6.5-6.7 理解线性方程组解的结构
  16. 生物信息相关国家自然科学基金汇总(持续更新中)
  17. Java实现人脸识别登录、注册等功能
  18. 《谈美》读书感想:读书于人生的意义
  19. 广告点击率预估是怎么回事?
  20. CSS生日快乐:CSS之父Håkon Wium Lie访谈录

热门文章

  1. JVM学习笔记(13) 垃圾回收-相关概念
  2. 大数据——DBT:数据治理、血缘关系DBT的安装及测试(基础使用篇)
  3. Photoshop中27种图层混合模式原理图文详解
  4. PVR图像文件格式初探
  5. mybatis用注解实现 一对一,一对多,多对多哟
  6. 包络线公式如何用计算机求,包络线公式
  7. Pseudo Inverse 伪逆
  8. win7任务管理器快捷键
  9. 但行好事 莫问前程 学习笔记
  10. 基于微信小程序的小说阅读系统(小程序+Nodejs)