• 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关节能够动起来,见另一篇文章
  • 相关阅读:
    HDU 3081 Marriage Match II
    HDU 4292 Food
    HDU 4322 Candy
    HDU 4183 Pahom on Water
    POJ 1966 Cable TV Network
    HDU 3605 Escape
    HDU 3338 Kakuro Extension
    HDU 3572 Task Schedule
    HDU 3998 Sequence
    Burning Midnight Oil
  • 原文地址:https://www.cnblogs.com/lizhensheng/p/11117523.html
Copyright © 2020-2023  润新知