ROS urdf学习笔记

一,主要参考的几个网站。
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> <script type="math/tex" id="MathJax-Element-1705">></script>之间的部分只是决定这个link的各种属性。
link可以指定许多属性:
<inertial> <script type="math/tex" id="MathJax-Element-1706"> </script>定义惯性
<visual> <script type="math/tex" id="MathJax-Element-1707"> </script>定义一个link的外观,大小,颜色和材质纹理贴图
<collision> <script type="math/tex" id="MathJax-Element-1708"> </script>定义碰撞检测属性
我们详细看一下 <visual> <script type="math/tex" id="MathJax-Element-1709"> </script>的定义:
<geometry> <script type="math/tex" id="MathJax-Element-1710"> </script> 定义了几何形状为一个立方体,三个参数分别为长宽高,单位是米(m). 这里我们指定下层小车板子的板的尺寸。 <geometry> <script type="math/tex" id="MathJax-Element-1711"> </script>可以有好几个选项: <box> <script type="math/tex" id="MathJax-Element-1712"> </script> 立方体 <cylinder> <script type="math/tex" id="MathJax-Element-1713"> </script>圆柱体 <sphere> <script type="math/tex" id="MathJax-Element-1714"> </script>球体
<material> <script type="math/tex" id="MathJax-Element-1715"> </script> 指定颜色rgb和透明度a. 它们取值范围都是[0,1] 区间。

只有 <joint></joint> <script type="math/tex" id="MathJax-Element-1716"> </script>之间的才是定义的两个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文件需要的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值