技术标签: ROS中urdf与xacro对比 # XML
"urdf" 是最初也是比较简单的机器人描述文件,它的结构简单明了,容易理解。但是这也导致当机器人模型变得复杂时,urdf的结构描述就变得冗长,无法简洁有效的描述机器人部件; "Xacro" 的出现在一定程度上有效地解决这种问题。在本质上,xacro与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" />
<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>
<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>
文章:《HDR image reconstruction from a single exposure using deep CNNs》代码:https://github.com/gabrieleilertsen/hdrcnn关于python3运行OpenEXR的坑使用sudo apt-get install libopenexr-dev安装的是1.2.0的版本,不过这个只能在python2...
我有一个运行在服务器上的密钥存储库文件keystore,以支持TomcatTLS/HTTPS服务,供JavaWebApp用。在这个密钥存储库文件中,有3个证书:终端证书(tomcat)中间CA证书(my_ssl_ca_v2_b)CA根证书(my_root_ca)这是库里面的证书列表。Plain Text code? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Hessian矩阵以及在血管增强中的应用—OpenCV实现原文链接:https://www.cnblogs.com/jsxyhelu/p/12114981.html有别于广为人知的Sobel、Canny等一阶算法,基于Hessian矩阵能够得到图像二阶结果,这将帮助我们深入分析图像本质。Hessian矩阵在图像处理中有着广泛的应用:其中在图像分割领域,包括边缘检测、纹理分析等;在图像增强领域,包括边缘增强、边缘消除等。本文从Hessian矩阵定义出发,通过清晰简洁的数学推导和讲解实现公式到C
001 常见词向量表达https://blog.csdn.net/sinat_26917383/article/details/52162589https://blog.csdn.net/hubin232/article/details/81272126 【比较新】
本篇教程介绍了jQuery如何获取各种input输入框的值,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入。<1.获取一组radio单选框的值(name属性为一组的radio的name属性)varq1=$("input[name=element_name]:checked").val();2.获取select下拉框的值varq2=$...
1遗传基因算法遗传算法(Genetic Algorithms,GA)由J.Holland教授(美国)1975年首先提出,是一种灵感源于达尔文自然进化理论的启发式搜索算法。该算法反映了自然选择的过程,即最适者被选定繁殖,并产生下一代。运算过程为初始化→个体评价→选择运算→交叉运算→变异运算→终止条件判断,运算过程就如物竞天择、适者生存,只有被选择的个体才会把自己的基因传下去。下面就用一个有趣的例子,帮助大家理解。我想让机器人小i画出我的梦中情人(最优解)。小i当然不知道我梦中情人长啥样。小i.
端口包括两种,一种是硬件的,就是插网线的那个口。一种是软件的,是一种虚拟的口。一个应用程序需要一个虚拟的连接口。比如你上网页所需要的HTTP协议。它所使用的就是80端口。你文件传输所使用的FTP用的就是22、23两个端口。比如在TCP/IP协议中,运输层与应用层的连接就是靠端口来实现的.端口其实是一种虚拟的东西!在Internet上,各主机间通过...
在使用QScrollArea时,有时候需要将滚动条滚动到最新位置,Qt本身并没有提供相应的说明,来如何实现,通过仔细阅读Qt帮助文档,给出了一种比较完美的解决方案。这里以竖直滚动条为例,来说明如何实现。
WinExec的缺点:1 不支持汉字路径2 默认是非阻塞模式运行。改为阻塞模式较麻烦3 不能跨平台以上恰恰都是QProcess所能完成的事情。1 先看汉字支持:以下代码删除目录C:\\汉字\\abc#include "mainwindow.h"#include "ui_mainwindow.h"#include <QProcess>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent
用Windows Api控制窗口置顶、窗口风格等操作
原标题:基于Python语言的自动化测试实战第二章(上)测试环境搭建2.1 Windows 下的环境搭建如果想要学习一门编程语言,对于新手来说只需到其官方网站上去下载最新版本安装即可,但对于想要学习Python 的新手来说,将会面临一个版本选择的问题。因为Python同时存在两个版本(Python2 和Python 3),而这两个版本目前处于并行更新状态。之所以会有两个版本并存的情况,是因为早期的...
https://blog.csdn.net/duxu24/article/details/77414298Py2.x:Urllib库 Urllin2库Py3.x:Urllib库变化:在Pytho2.x中使用import urllib2——-对应的,在Python3.x中会使用import urllib.request,urllib.error。 在Pytho2.x中使用im...