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

教程一:创建一个模型

一.简述

该教程主要讲述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的力,这个机器人会向前移动.



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 我想要的似乎远远没有获得,但是有时又觉得特别满足。生活是个狩猎场,你付出了多少能收获多少未必成正比,你可以用...
    静静鱼阅读 259评论 0 1
  • 【连载】《阡陌》目录 【连载】《阡陌》(一) 一切秩序存在必有缘由,不是私欲的膨胀,就是矛盾调停的产物。然则矛盾,...
    于昰阅读 435评论 1 2
  • 刷朋友圈刷微博成了多少人晒幸福的工具,可能是为了炫耀,可能是为了分享,但这背后。。。。。 好多人为了炫耀发...
    2005景彦婷阅读 243评论 1 0