ROS(五):创建简单的机器人模型smartcar(indigo版本)

什么叫URDF?在rviz中是,经常会出现一个error,就是不存在URDF文件.Unified Robot Description Format,统一机器人描述格式,简称为URDF。ROS中的urdf功能包包含一个URDF的C++解析器,URDF文件使用XML格式描述机器人模型。

1.安装urdf_tutorial,可以使用其中的例子

sudo apt-get install ros-indigo-urdf-tutorial  
//安装liburdfdom-tools,提供对urdf文件的检查
sudo apt-get install liburdfdom-tools
//创建Ros包
 catkin_create_pkg smartcar_description  std_msgs rospy roscpp urdf 

2.智能车尺寸数据

ROS(五):创建简单的机器人模型smartcar(indigo版本)_第1张图片

3.建立urdf文件
在smartcar_description文件夹下建立urdf文件夹 $mkdir -p urdf ,创建智能车的描述文件smartcar.urdf,描述代码如下:

  

<robot name="smartcar">  
//link name 
  <link name="base_link">  

    <visual>  

      <geometry>  
    //这个上面图片的尺寸相对应
        <box size="0.25 .16 .05"/>  

    geometry>  

    <origin rpy="0 0 1.57075" xyz="0 0 0"/>  

    <material name="blue">  
//颜色设定为0-1,这个机器人设定成蓝色,a指透明度,0就不可见了,因为指透明的状态
        <color rgba="0 0 .8 1"/>  

    material>  

    visual>  

link>  


//四个轮子的具体设定
<link name="right_front_wheel">  

    <visual>  

      <geometry>  

        <cylinder length=".02" radius="0.025"/>  

      geometry>  

      <material name="black">  

        <color rgba="0 0 0 1"/>  

      material>  

    visual>  

  link>  



  <joint name="right_front_wheel_joint" type="continuous">  

    <axis xyz="0 0 1"/>  

    <parent link="base_link"/>  

    <child link="right_front_wheel"/>  

    <origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/>  

    <limit effort="100" velocity="100"/>  

    <joint_properties damping="0.0" friction="0.0"/>  

  joint>  



  <link name="right_back_wheel">  

    <visual>  

      <geometry>  

        <cylinder length=".02" radius="0.025"/>  

      geometry>  

      <material name="black">  

        <color rgba="0 0 0 1"/>  

      material>  

    visual>  

  link>  



  <joint name="right_back_wheel_joint" type="continuous">  

    <axis xyz="0 0 1"/>  

    <parent link="base_link"/>  

    <child link="right_back_wheel"/>  

    <origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/>  

    <limit effort="100" velocity="100"/>  

    <joint_properties damping="0.0" friction="0.0"/>  

joint>  



<link name="left_front_wheel">  

    <visual>  

      <geometry>  

        <cylinder length=".02" radius="0.025"/>  

      geometry>  

      <material name="black">  

        <color rgba="0 0 0 1"/>  

      material>  

    visual>  

  link>  



  <joint name="left_front_wheel_joint" type="continuous">  

    <axis xyz="0 0 1"/>  

    <parent link="base_link"/>  

    <child link="left_front_wheel"/>  

    <origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/>  

    <limit effort="100" velocity="100"/>  

    <joint_properties damping="0.0" friction="0.0"/>  

  joint>  



  <link name="left_back_wheel">  

    <visual>  

      <geometry>  

        <cylinder length=".02" radius="0.025"/>  

      geometry>  

      <material name="black">  

        <color rgba="0 0 0 1"/>  

      material>  

    visual>  

  link>  



  <joint name="left_back_wheel_joint" type="continuous">  

    <axis xyz="0 0 1"/>  

    <parent link="base_link"/>  

    <child link="left_back_wheel"/>  

    <origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/>  

    <limit effort="100" velocity="100"/>  

    <joint_properties damping="0.0" friction="0.0"/>  

  joint>  



  <link name="head">  

    <visual>  

      <geometry>  

        <box size=".02 .03 .03"/>  

      geometry>  

      <material name="white">  

          <color rgba="1 1 1 1"/>  

      material>  

    visual>  

  link>  



  <joint name="tobox" type="fixed">  

    <parent link="base_link"/>  

    <child link="head"/>  

    <origin xyz="0 0.08 0.025"/>  

  joint>  

robot>

4.建立launch命令文件

<launch>     

    <arg name="model" />      

    <arg name="gui" default="False" />     

    <param name="robot_description" textfile="$(find smartcar_description)/urdf/smartcar.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>

老版本使用的是urdf.vcg,如果报找不到.vcg文件,通常是因为版本不匹配的问题.

5.效果演示

roslaunch  smartcar_description  base.urdf.rviz.launch  gui:=true

ROS(五):创建简单的机器人模型smartcar(indigo版本)_第2张图片

一个简陋的小车出现啦O(∩_∩)O哈哈~
上面的代码对应显示的上图应该就很好理解了O(∩_∩)O哈哈~

参考博客:https://www.ncnynl.com/archives/201609/842.html

你可能感兴趣的:(ROS)