zoukankan      html  css  js  c++  java
  • 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关节能够动起来,见另一篇文章
  • 相关阅读:
    SDUT-3376_数据结构实验之查找四:二分查找
    SDUT-3375_数据结构实验之查找三:树的种类统计
    SDUT-3373_数据结构实验之查找一:二叉排序树
    深度优先遍历和广度优先遍历
    SDUT-2498_AOE网上的关键路径
    SDUT-2140_判断给定图是否存在合法拓扑序列
    SDUT-2144_最小生成树
    SDUT-3364_欧拉回路
    SDUT-3363_驴友计划
    Java练习 SDUT-2271_Eddy的难题
  • 原文地址:https://www.cnblogs.com/lizhensheng/p/11117523.html
Copyright © 2011-2022 走看看