ROS学习(1)使用URDF创建机器人3D仿真模型

来源:互联网 发布:水浒少年知乎 编辑:程序博客网 时间:2024/04/30 09:32

在一个真实的机器人上编程很让我们更好的理解机器人的控制方式,因为真实的机器人会给我们反馈。但是在没有真实机器人供我们实践的时候,ROS的仿真功能是一个不错的选择。

ROS通过URDFUnifiedRobot Description Format) 就是描述机器人硬件尺寸布局.

一,软件环境

OS:Ubuntu 14.04

ROS:Indigo Full package

二,智能车尺寸数据

因为建立的是一个非常简单的机器人,所以我们尽量使用简单的元素:使用长方体代替车模,使用圆柱代替车轮,具体尺寸如下:

准备:

1.创建Rospackage命名为smartcar

catkin_create_pkgsmartcar  std_msgs rospy roscpp urdf 

2.建立文件夹launchurdf分别用来存放.launch文件和.urdf文件


三、建立urdf文件

smartcar文件夹下建立urdf文件夹,创建智能车的描述文件smartcar.urdf,描述代码如下:

<?xml version="1.0"?><robot name="smartcar">  <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"><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>

该文件可以帮助启动RViz来观察机器人。其中有三个node,一个是rviz,另外两个joint_state_publisher robot_state_publisher是必须的node。

第一个输入参数 model 就是要启动的urdf文件路径。

第二个输入参数 gui 指定是否启用关节转动控制面板窗口

四,创建display.launch文件

<launch><arg name="model" /><arg name="gui" default="False" /><param name="robot_description" textfile="($find smartcar)/urdf/smartcar.urdf)" /><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 $(find urdf_tutorial)/urdf.rviz" required="true" /></launch>



link可以指定许多属性:

  • <inertial>    定义惯性
  • <visual>     定义一个link的外观,大小,颜色和材质纹理贴图
  • <collision>定义碰撞检测属性

我们详细看一下<visual>的定义:

  • <geometry> 定义了几何形状为一个立方体,三个参数分别为长宽高,单位是米(m). 这里我们指定下层小车板子的板的尺寸。<geometry>可以有好几个选项:<box> 立方体  <cylinder>圆柱体  <sphere>球体
  • <material> 指定颜色rgb和透明度a.  它们取值范围都是[0,1] 区间。

使用下面命令启动RViz来查看我们刚刚完成的机器人模型:


运行

roslaunch smartcar display.launch gui:=true 







参考:

1.Learning ROS for Robotics Peogramming

2.ROS探索总结(五)——创建简单的机器人模型smartcar

3.ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 link使用

2 0
原创粉丝点击