美文网首页
Gazebo创建机器人教程(一,二)

Gazebo创建机器人教程(一,二)

作者: LangweiligeMens | 来源:发表于2018-11-21 22:13 被阅读0次

教程一:创建一个模型

一.简述

该教程主要讲述SDF文件的细节.

二.SDF模型的组成部分

links:它描述了一个模型的的一部分身体的物理属性.每一个link都可能包含许多个collision和visual属性.减少links的数量能够提升模型的稳定性.

    collision:它封装了geometry属性来用于碰撞检测.一个link可能由多个collision元素.

    visual:它用于可视化link的各个部分.一个link可能包含0个或多个visual元素.

    inertial:它描述了link的动态属性,例如质量和转动惯量矩阵.

    sensor:它为插件收集外界数据.一个link可能包含0个或多个sensors.

    light:它描述光源.一个link可能包含0个或多个lights.

joints:它连接两个link.

plugins:它是由第三方为了控制模型建立的共享库.

三.建立一个模型

第一步:收集meshes(网格)

这一步包括获取你所需要的所有三维mesh文件.Gazebo提供了一些简单的形状:方形,圆形,圆柱.如果需要更复杂的形状,继续往下读.

Meshes可以从许多地方获得.Google's 3D warehouse是一个获取3D模型的不错的库.或者如果你已经有了必要的文件的话,可以通过BlenderSketchup建立一个自己的mesh.

Gazebo要求mesh文件以STL,Collada或OBJ格式存储,后两者是首选.

第二步:为你的模型建立SDF文件

最好以一个简单的模型开始,或者复制已有的模型文件来开始.这样的好处是不用从头开始且便于调试.

现在有一个非常基础的小盒子模型文件.

创建 box.sdf 模型文件

    gedit box.sdf

复制下列内容到 box.sdf 文件中

<?xml version='1.0'?>

<sdf version="1.4">

<model name="my_model">

  <pose>0 0 0.5 0 0 0</pose>

  <static>true</static>

    <link name="link">

      <inertial>

        <mass>1.0</mass>

        <inertia> <!-- inertias are tricky to compute -->

          <!-- http://gazebosim.org/tutorials?tut=inertia&cat=build_robot -->

          <ixx>0.083</ixx>      <!-- for a box: ixx = 0.083 * mass * (y*y + z*z) -->

          <ixy>0.0</ixy>        <!-- for a box: ixy = 0 -->

          <ixz>0.0</ixz>        <!-- for a box: ixz = 0 -->

          <iyy>0.083</iyy>      <!-- for a box: iyy = 0.083 * mass * (x*x + z*z) -->

          <iyz>0.0</iyz>        <!-- for a box: iyz = 0 -->

          <izz>0.083</izz>      <!-- for a box: izz = 0.083 * mass * (x*x + y*y) -->

        </inertia>

      </inertial>

      <collision name="collision">

        <geometry>

          <box>

            <size>1 1 1</size>

          </box>

        </geometry>

      </collision>

      <visual name="visual">

        <geometry>

          <box>

            <size>1 1 1</size>

          </box>

        </geometry>

      </visual>

    </link>

  </model>

</sdf>

要注意这个物体的原点在盒子的几何中心,所以为了把它放在地面上,设置<pose>0 0 0.5 0 0 0</pose>

Tip:在建立模型时设置为不可移动是很有用的.一旦那你完成了模型的建立,可以设置<static>属性为false来使模型能够移动.

第三步:向SDF文件中添加属性

添加特征的一个比较好的顺序是:

1.添加一个link

2.设置collision标签

3.设置visual标签

4.设置inertial属性

5.回到步骤1直到所有links都被添加

6.添加所有的joints(如果有)

7.添加所有的plugins(如果有)



教程二:创建一个移动机器人

一.创建你的model文件夹

1.创建model文件夹

mkdir -p ~/.gazebo/models/my_robot

2.创建一个model config文件

gedit ~/.gazebo/models/my_robot/model.config

3.复制以下内容

<?xml version="1.0"?>

<model>

  <name>My Robot</name>

  <version>1.0</version>

  <sdf version='1.4'>model.sdf</sdf>

  <author>

  <name>My Name</name>

  <email>me@my.email</email>

  </author>

  <description>

    My awesome robot.

  </description>

</model>

4.在该路径~/.gazebo/models/my_robot/下创建model.sdf文件

gedit  ~/.gazebo/models/my_robot/model.sdf

5.复制以下内容

<?xml version='1.0'?>

<sdf version='1.4'>

  <model name="my_robot">

  </model>

</sdf>

通过这一部分内容我们已经拥有了模型的一些基础内容.model.config文件描述了这个机器人的一些额外的属性.model.sdf文件包含了必要的标签,来实例化名为my_robot的模型.

二.建立模型框架

这一步将建立一个带两个轮子的长方体模型

第一步是布局模型的基本形状.为了完成这个我们需要使模型固定.

1.在 ~/.gazebo/models/my_robot/model.sdf中通过<static>true</static>使模型固定.

2.添加长方体

这里建立了一个0.4x0.2x0.1米的长方体.在大多数情况下,collision和visual元素是相同的.

3.运行Gazebo查看你的模型,通过Insert Model插入模型并显示.

gazebo

你会看到一个白的漂浮的长方体.在地面上方1m处.

4.现在我们可以添加一些附属物.比如一个没有摩擦的球体.这种方法比添入一个带关节的车轮好,因为他带来的限制更少.

确认它在模型中出现了.(不需要重启Gazebo)

5.现在我们添加一个左轮.在上面的程序中添加如下代码

再次确认.

6.我们可以复制左轮然后调整他的位姿来作为右轮.继续添加如下代码

7.设置<static>为false使模型能够移动,并添加为左右轮各添加一个合页

这两个关节绕y轴旋转<xyz>0 1 0</xyz>,并连接车轮和车身.

8.启动Gazebo,并插入模型.然后拖拽屏幕右边的小点.

9.这样会出现一个包含各个关节不同类型控制器的窗口.

10.在Force栏下,给每个关节添加一个0.1N/m的力,这个机器人会向前移动.


相关文章

网友评论

      本文标题:Gazebo创建机器人教程(一,二)

      本文链接:https://www.haomeiwen.com/subject/dcxafqtx.html