12.29-ros-gazebo高级

高级教程

前言

  • 不是基础,需要深入理解且实践

参考

urdf to sdf
ros 插件详解
ROS Control
在ros中创建gazebo插件

TOC

学习记录

在Gazebo中使用URDF

  • 在所有之前需要说明,我们往往都是编写的Xacro文件,而Xacro文件仅仅是使用了常量(Constants),数学公式(Maths)和宏(Macros)来简化URDF文件的编写和维护,实际上还是URDF文件。
  • 第二个需要说明的是,数据的单位是米和千克
  • 关于对于模型的各种选项见在ros中创建gazebo插件

背景

  • URDF(Universal Robotics Descrption Format)本是ROS中定义的机器人XML模式文件,为了在Gazebo中使用这种文件,一些与仿真相关的元素(tags)需要添加进去,这样已经开始使用ROS的人并不需要再定义SDF文件,gazebo会自动进行转换
  • 原生的,在ROS系统中的URDF文件,只能定义某一个机器人的运动学和动力学特性,却不能确定一个机器人在整个环境(World)中的姿态(pose)。它并不是一个万能的描述格式,因为它还不能描述循环的关节(Joint Loops)又称平行杆件(parallel linkages),还缺乏对摩擦等属性的定义。还有,它不能定义其它不是机器人的东西,如灯光,高度地图等。
  • 另外,URDF的向后兼容性也不太好
  • 基于上述问题,gazebo的SDF(Simulation Description Format)应运而生,SDF能够定义上至整个环境,下至某个机器人,它也是XML格式的,所以也是自描述的。

概述

  • 必须要添加的东西是:每一个都必须添加
  • 可选的:
    • 对于每一个,添加一个来:将可见颜色转换为gazebo格式;将stl文件转换为dae文件;添加传感器插件
    • 对于每一个,添加来:设置阻尼系数;添加执行器(Actuator)插件
    • 对于添加元素
    • 如果某一个机器人需要作为刚体嵌入到环境中,添加一个

元素

  • 这是urdf文件的扩展,有三种类别的,分别对应于

URDF文件头

<robot name="rrbot" xmlns:xacro="http://www.ros.org/wiki/xacro">

元素

  • If a element is used without a reference="" property, it is assumed the element is for the whole robot model.
  • Elements within a tag that are not in the above table are directly inserted into the SDF tag for the generated SDF.

模型与环境的刚性连接

<!-- Used for fixing robot to Gazebo 'base_link' -->
  <link name="world"/>

  <joint name="fixed" type="fixed">
    <parent link="world"/>
    <child link="link1"/>
  </joint>

元素

  • 建议同时显式定义好,因为gazebo不会把当作,而是,所以这个模型将不会被激光传感器所捕获

STL还是dae文件

  • 推荐dae文件,因为dae自带颜色和纹理,stl不带

元素

  • 必须要大于0才行,可以先在CAD软件中建模来获取一些值。
<!-- Base Link -->
  <link name="link1">
    <collision>
      <origin xyz="0 0 ${height1/2}" rpy="0 0 0"/>
      <geometry>
        <box size="${width} ${width} ${height1}"/>
      </geometry>
    </collision>

    <visual>
      <origin xyz="0 0 ${height1/2}" rpy="0 0 0"/>
      <geometry>
        <box size="${width} ${width} ${height1}"/>
      </geometry>
      <material name="orange"/>
    </visual>

    <inertial>
      <origin xyz="0 0 1" rpy="0 0 0"/>
      <mass value="1"/>
      <inertia
        ixx="1.0" ixy="0.0" ixz="0.0"
        iyy="1.0" iyz="0.0"
        izz="1.0"/>
    </inertial>
  </link>

关节Joints

  • 并不是所有的元素都能够被Gazebo用上:
    • The , and are required
    • and are ignored
    • In the tag, only the damping property is used for gazebo4 and earlier. Gazebo5 and up also uses the friction property.
    • All of properties in the tag are optional

插件详解

  • gazebo中已经有很多类型插件,包括相机,kinect等传感器和motor等控制器
  • 你要做的只是在xacro中添加相应的可视化元素和在gazebo属性文件中添加plugin的定义
  • 关于如何写程序使用这些插件,看最后一节的内容

ROS-Control

  • 讲述如何使用gazebo中的控制器,使得某joint关节能够动起来,见另一篇文章
posted @ 2019-07-01 23:28  哈骑士  阅读(457)  评论(0编辑  收藏  举报