ROS urdf学习笔记

来源:互联网 发布:网络安全法的特征 编辑:程序博客网 时间:2024/04/30 08:08

一,主要参考的几个网站。
http://blog.csdn.net/crazyquhezheng/article/details/42840955
这个里面讲了怎样写urdf对应的launch文件,以及建立小车的底板的urdf文件
http://blog.csdn.net/crazyquhezheng/article/details/42974817
这个讲了完整的小车的urdf文件。
学习到的东西:

<span style="font-size:18px;"><?xml version="1.0"?>  <robot name="sp1s">    <link name="base_link">      <visual>        <geometry>          <box size="0.27 .15 .003"/>        </geometry>        <material name="white">           <color rgba="1 1 1 .5"/>      </material>      </visual>    </link>    <link name="front_left">      <visual>        <geometry>         <cylinder length=".025" radius="0.034"></cylinder>        </geometry>        <material name="yellow">            <color rgba="1 1 0 1"/>        </material>        </visual>    </link>    <joint name="base_to_front_left" type="<span style="color:#FF0000;"><strong>continuous</strong></span>">      <origin rpy="1.57075  0  0" xyz="0.06  0.064  -0.011"/>      <parent link="base_link"/>      <child link="front_left"/>          <axis xyz="0 0 1"/>    </joint>  </robot></span>  

其中<link></link>之间的部分只是决定这个link的各种属性。
link可以指定许多属性:
<inertial>定义惯性
<visual>定义一个link的外观,大小,颜色和材质纹理贴图
<collision>定义碰撞检测属性
我们详细看一下<visual>的定义:
<geometry> 定义了几何形状为一个立方体,三个参数分别为长宽高,单位是米(m). 这里我们指定下层小车板子的板的尺寸。<geometry>可以有好几个选项:<box> 立方体 <cylinder>圆柱体 <sphere>球体
<material> 指定颜色rgb和透明度a. 它们取值范围都是[0,1] 区间。

只有<joint></joint>之间的才是定义的两个link之间的位置关系。
1. 首先定义的是关节的类型,将joint的类型改为”continuous” ,设置的是两个关节之间的转动关系。还有“fixed”,就是表示第二个关节相对于第一个关节是不运动的。
2. 转动的位置就是由 origin定义的,它同时定义了tyer_front_left的原点,就是这个原先相对于上一个链接之间的关系。
pry 是分别以 x y z 轴为中心转动的角度(弧度制) 1.57075 就是90度。
3. axis重新定义转动轴在原点的方向,它是一个矢量,只指示方向,它们必须满足 x * x + y * y + z * z = 1,所以这里定义Z轴方向为转动方向。
二,我需要根据这个做的事情
1)我现在存在的问题是jaco2的urdf,和kinova ros package中调用的kinova API不能对应起来。我需要自己试图建立能够对应起来的urdf,从而检测我建立的urdf是否正确。就是在kinova-ros的kinova_description文件夹中建立一个新的urdf的文件,然后写一个新的launch的文件就可以。
2)或许我的问题可以通过只修改最后一个joint的rpy参数就可以解决,可以先试一下这个。最后确实是修改了这一部分之后才没有问题了。
三,发现ros tutorial中比较有用的东西。http://wiki.ros.org/urdf
因为现在在搞gazebo仿真的部分,需要用到jaco2的urdf文件,我的做法是看懂xacro文件中写的内容,然后自己动手将xacro文件改成需要格式的urdf文件。改得差不多了之后,去看了ros官方的关于urdf的tutorial,发现很多东西很有价值。
第一条,xacro转换成urdf的命令。

rosrun xacro xacro.py `rospack find pr2_description`/robots/pr2.urdf.xacro -o /tmp/pr2.urdf

第二条,check urdf的命令,直接可以得到link之间的连接关系。

check_urdf pr2.urdf

我得到的结果

robot name is: j2n6a300---------- Successfully Parsed XML ---------------root Link: root has 1 child(ren)    child(1):  j2n6a300_link_base        child(1):  j2n6a300_link_1            child(1):  j2n6a300_link_2                child(1):  j2n6a300_link_3                    child(1):  j2n6a300_link_4                        child(1):  j2n6a300_link_5                            child(1):  j2n6a300_link_6                                child(1):  j2n6a300_end_effector                                child(2):  j2n6a300_link_finger_1                                    child(1):  j2n6a300_link_finger_tip_1                                child(3):  j2n6a300_link_finger_2                                    child(1):  j2n6a300_link_finger_tip_2                                child(4):  j2n6a300_link_finger_3                                    child(1):  j2n6a300_link_finger_tip_3

第三条,将urdf文件用图表的形式表示出来。

urdf_to_graphiz pr2.urdf

上述三条完全解决了我今天自己阅读xacro文件需要的问题。

0 0
原创粉丝点击