zoukankan      html  css  js  c++  java
  • ROS之urdf 1

    URDF  玩虚拟机的时候用得着, 因为它可以用来在rviz跟gazebo里面用xml定义出一个虚拟的机器人, 全称为Universal Robot Discription Format, 记住这个, 就不会老记成urdf/udrf, 傻傻分不清楚了..

    这里有很多别人的urdf:

    http://wiki.ros.org/urdf/Examples

    xml是如何对模型, 传感器, 关节之类进行编码的呢?

    首先模型

    http://wiki.ros.org/urdf/XML/model

    如上图, 一个机器人, 根儿是Link1, 通过关节1, 2 连接Link3, Link2, 然后Link3通过关节2连接Link4.

    格式基本上是这样:

    <robot name="pr2">
      <link> ... </link>
      <link> ... </link>
      <link> ... </link>
    
      <joint>  ....  </joint>
      <joint>  ....  </joint>
      <joint>  ....  </joint>
    </robot>
    

     Link就是能单独移动的东西,比如轮子啦, 机械臂之类:

    <link name="my_link">
       <inertial>
         <origin xyz="0 0 0.5" rpy="0 0 0"/>
         <mass value="1"/>
         <inertia ixx="100"  ixy="0"  ixz="0" iyy="100" iyz="0" izz="100" />
       </inertial>
    
       <visual>
         <origin xyz="0 0 0" rpy="0 0 0" />
         <geometry>
           <box size="1 1 1" />
         </geometry>
         <material name="Cyan">
           <color rgba="0 1.0 1.0 1.0"/>
         </material>
       </visual>
    
       <collision>
         <origin xyz="0 0 0" rpy="0 0 0"/>
         <geometry>
           <cylinder radius="1" length="0.5"/>
         </geometry>
       </collision>
     </link>
    

     

    结合上面的图, 看看下面的实例:

     <link name="my_link">
       <inertial>
         <origin xyz="0 0 0.5" rpy="0 0 0"/>
         <mass value="1"/>
         <inertia ixx="100"  ixy="0"  ixz="0" iyy="100" iyz="0" izz="100" />
       </inertial>
    
       <visual>
         <origin xyz="0 0 0" rpy="0 0 0" />
         <geometry>
           <box size="1 1 1" />
         </geometry>
         <material name="Cyan">
           <color rgba="0 1.0 1.0 1.0"/>
         </material>
       </visual>
    
       <collision>
         <origin xyz="0 0 0" rpy="0 0 0"/>
         <geometry>
           <cylinder radius="1" length="0.5"/>
         </geometry>
       </collision>
     </link>
    

     先不管惯性跟碰撞, 先看看有关visual的部分, 就是外貌啊.. : )

    xyz就是xyz, 没啥可解释的, rpy, 这个...听着很污啊, 其实是roll, pitch, yaw, 中文只有一个字形容这三个状态, 就是滚, 但是英语里面分为向前滚, 向侧面滚, 跟就地旋转三个词, 厉害吧, 其实科学点说, 是前倾角, 侧倾角, 偏航角, 玩过G-Sensor的就是熟悉这个了.

    origin就是相对frame的起始位置

    geometry就是外形, 如果是个立方体, 就是直接用box, size...不用说了吧.

    还有类似的: cylinder(圆柱), sphear(球体)

    meterial就是刷漆, 刷什么颜色的漆, 或者贴图.

    当你导入类似dae, stl的结构文件的时候, 就需要制定导入的文件, 用mesh:

    <geometry>
         <mesh filename="package://carModel/meshes/l_finger.dae"/>
    </geometry>
    
  • 相关阅读:
    c语言 数组合并
    c++ 静态函数
    c++ 多继承 公有,私有,保护
    c++ 多继承 public
    stat用法:获取文件对应权限的数字
    sublime text3 (Mac) 快捷键
    c++ 多继承
    C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
    更换主机后SSH无法登录的问题
    ssh 连接不同无线网且IP以及用户名都相同
  • 原文地址:https://www.cnblogs.com/Montauk/p/6911658.html
Copyright © 2011-2022 走看看