ROS-URDF-Tutorials(1)

前言:建立一个简单的urdf模型

详解请参看教程http://wiki.ros.org/urdf/Tutorials/Building%20a%20Visual%20Robot%20Model%20with%20URDF%20from%20Scratch

教程写的非常好,这里只做最终版解析部分。

查看是否安装了joint_state_publisher功能包:

 rospack find joint_state_publisher

一、基本要素模型

建立一个半径是0.2米,高0.6米的圆柱体。

1.1 新建urdf_tutorial功能包

1.2 新建urdf文件

新建01-myfirst.urdf文件

<?xml version="1.0"?>
<robot name="materials">

  <material name="blue">
    <color rgba="0 0 0.8 1"/>
  </material>

  <material name="white">
    <color rgba="1 1 1 1"/>
  </material>


  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
      <material name="blue"/>
    </visual>
  </link>

  <link name="right_leg">
    <visual>
      <geometry>
        <box size="0.6 0.1 0.2"/>
      </geometry>
      <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/>
      <material name="white"/>
    </visual>
  </link>

  <joint name="base_to_right_leg" type="fixed">
    <parent link="base_link"/>
    <child link="right_leg"/>
    <origin xyz="0 -0.22 0.25"/>
  </joint>

  <link name="left_leg">
    <visual>
      <geometry>
        <box size="0.6 0.1 0.2"/>
      </geometry>
      <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/>
      <material name="white"/>
    </visual>
  </link>

  <joint name="base_to_left_leg" type="fixed">
    <parent link="base_link"/>
    <child link="left_leg"/>
    <origin xyz="0 0.22 0.25"/>
  </joint>

</robot>
View Code

----------------------------------------------------------------------------------------------------------------------------

代码解释:

<robot name="materials">此文件的机器人名称

<material name="blue">定义材料属性名称为蓝色
     <color rgba="0 0 0.8 1"/>材料属性为rgba值
</material>

<link name="base_link">定义基本连杆
    <visual>可视化属性
      <geometry>几何形状
        <cylinder length="0.6" radius="0.2"/>圆柱,半径0.2米,高0.6米
      </geometry>
      <material name="blue"/>材料属性引用为蓝色
    </visual>
 </link>

<link name="right_leg">定义右腿连杆
    <visual>
      <geometry>
        <box size="0.6 0.1 0.2"/>盒状,长宽高为0.6米,0.1米,0.2米
      </geometry>
      <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/>位置,位于关节点base_to_right_legz轴负方向0.3米,绕y轴旋转90°=π/2=1.57075
      <material name="white"/>
    </visual>

<joint name="base_to_right_leg" type="fixed">定义基本连杆和右腿之间的关节,属性为固定。其实就是新建了一个相对坐标系。
    <parent link="base_link"/>父连杆为base_link
    <child link="right_leg"/>子连杆为right_leg
    <origin xyz="0 -0.22 0.25"/>关节位置,位于父连杆关节y轴负方向0.22米,z轴正方向0.25米
</joint>

----------------------------------------------------------------------------------------------------------------------------

1.3 新建launch文件

<launch>

  <arg name="model" default="$(find urdf_tutorial)/urdf/01-myfirst.urdf"/>
  <arg name="gui" default="true" />
  <arg name="rvizconfig" default="$(find urdf_tutorial)/rviz/urdf.rviz" />

  <param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
  <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 $(arg rvizconfig)" required="true" />

</launch>
View Code

1.4 查看模型

roslaunch urdf_tutorial display.launch 

二、进阶模型

扫描二维码关注公众号,回复: 5121271 查看本文章

-END-

猜你喜欢

转载自www.cnblogs.com/chendeqiang/p/10335632.html