ROS入门(四)——Gazebo的基本使用

ROS入门(四)——Gazebo的基本使用
  iwehdio的博客园:https://www.cnblogs.com/iwehdio/

参考教程:
gazebo入门教程(一) 安装,UI介绍:https://blog.csdn.net/weixin_41045354/article/details/84881498
gazebo入门教程(二)建立简单模型:https://blog.csdn.net/weixin_41045354/article/details/103668162

1、界面概述

  • 卸载 ros-melodic 版本安装的 Gazebo9,安装 Gazebo11。

    $ sudo apt-get remove gazebo9 gazebo9-common gazebo9-plugin-base libgazebo9:amd64 libgazebo9-dev:amd64 ros-melodic-gazebo-*                   
    
    $ sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
    $ wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
    $ sudo apt-get update
    $ sudo apt-get install gazebo11
    $ sudo apt-get install libgazebo11-dev
    
  • 启动:

    • 命令行:roslaunch gazebo_ros empty_world.launch
    • 全局命令:Alt + F2,键入 gazebo 后回车。
  • 软件视图:

    • 场景:展示仿真模型。
    • 左面板:
      • WORLD:“世界”选项卡,显示当前在场景中的模型,并允许你查看和修改模型参数,例如它们的姿势。你还可以通过展开“GUI”选项并调整相机姿势来更改摄像机视角。
      • INSERT:“插入”选项卡,向模拟添加新对象(模型)。要查看模型列表,您可能需要单击箭头以展开文件夹。在要插入的模型上单击(和释放),然后在场景中再次单击以添加它。
      • LAYER:“图层”选项卡可组织和显示模拟中可用的不同可视化组(如果有)。图层可以包含一个或多个模型。打开或关闭图层将显示或隐藏该图层中的模型。这是一个可选功能,因此在大多数情况下此选项卡将为空。
    • 右面板:默认情况下Gazeb界面隐藏右侧面板。单击并拖动栏以将其打开。右侧面板可用于与所选模型(joint)的移动部件进行交互。如果未在场景中选择任何模型,则面板不会显示任何信息。
    • 上部工具栏:是Gazebo的主工具栏,它包含一些最常用的与模拟器交互的选项,例如:选择,移动,旋转和缩放对象等按钮; 创造一些简单的形状(如立方体,球体,圆柱体); 复制/粘贴模型选项。
      • 选择模式(select mode):在场景中导航。
      • 平移模式(translate mode):选择要移动的模型。
      • 旋转模式(rotate mode):选择要旋转的模型。
      • 缩放模式(scale mode):选择要缩放的模型。
      • 撤消/重做(undo/redo):撤消/重做场景中的操作。
      • 简单形状(simple shape):将简单形状插入场景中。
      • 灯光(lights):为场景添加灯光。
      • 复制/粘贴(copy/paste):在场景中复制/粘贴模型。
      • Align:将模型彼此对齐。
      • Snap:将一个模型与另一个模型对齐。
      • 更改视图(change view):从各个角度查看场景。
    • 底部工具栏:显示有关模拟的数据,如模拟时间及其与实际时间的关系。
      • “模拟时间”是指模拟运行时模拟器中时间流逝的速度。模拟时间可以比实时更慢或更快,具体取决于运行模拟所需的计算量。
      • “实时”是指模拟器运行时在现实生活中经过的实际时间。模拟时间和实时之间的关系称为“实时因子”(RTF)。它是模拟时间与实时的比率。RTF衡量模拟运行与实时相比的速度或速率。
      • Gazebo的世界状况每迭代一次,计算一次。你可以在底部工具栏的右侧看到迭代次数。每次迭代都会将模拟推进固定的秒数,称为步长。默认情况下,步长为1 ms。您可以按暂停按钮暂停模拟,并使用步骤按钮逐步执行几个步骤。
    • 菜单栏:更具体的功能。
    • 鼠标操作:
      • shift + 左键:旋转视角。
      • 左键:平移时间。
      • 滚轮:缩放大小。

2、创建一个简单的机器人

  • 进入模型编辑器,在顶部菜单栏中单击Edit,然后选择Model Editor。或者,使用热键Ctrl + M。

    • 左侧面板和顶部工具栏仅包含用于编辑和创建模型零件的小部件。
    • 上方的工具栏包含用于编辑模型的工具。包括用于与场景中的对象进行交互的工具。可用的工具包括选择,平移,缩放,旋转,撤消和重做,复制和粘贴,对齐,捕捉,视图调整以及联合创建。
    • 左面板有两个用于编辑模型的标签。
      • Insert 插入标签:用于添加关节和模型约束的工具。
        • 您可以将新零件(链接和模型)添加到模型编辑器。共分为三个部分。
        • 简单形状:这些是可以插入以在模型中形成链接的基本几何形状。
        • 自定义形状:该Add按钮允许您从模型的链接中导入自定义网格。目前,它支持COLLADA(.dae),3D Systems(.stl),Wavefront(.obj)和W3C SVG(.svg)文件。
        • 模型数据库:具有模型列表。可以按照与简单形状相同的方式将它们插入到“模型编辑器”中。插入后,它们称为嵌套模型
      • Model “模型”选项卡:允许编辑模型属性和内容。
        • 可以设置要构建的模型的名称和基本参数。它显示了模型中的链接,关节,模型约束和插件的列表。可以使用Link Inspector修改参数。
        • 可以使用下边的这些方法打开它。双击列表中的项目 /
          双击场景中的项目 / 右键单击列表中的项目,然后选择 Open Link Inspector / 右键单击场景中的项目,然后选择 Open Link Inspector。
  • 创建车辆:

    1. 底盘。

      • 在左侧面板的“insert”选项卡中,在“box”图标上单击一次,将光标移至“场景”中的任何位置,然后再次单击以释放框。

      • 接下来,调整盒子的尺寸。我们可以通过选择顶部工具栏上的“缩放”(第四个)工具来做到这一点。在“场景”中选择该框,并且该框上方应显示RGB标记。红色标记代表X轴,绿色代表Y,蓝色代表Z。

      • 将底盘降低到更靠近地面的位置。双击底盘模型以调出检查器链接检查器(link inspector)。向下滚动到 link 选项卡的底部以找到 Pose 参数,并将其更改Z为0.4m,然后在框外单击。单击OK以保存更改并关闭检查器。

      • link 选项卡有两个Pose,一定要注意设置的是下方的Pose。

    2. 前轮。

      • 从左侧面板上的 insert 选项卡插入圆柱体。

      • 使用Link Inspector沿X轴旋转它。双击圆柱体,滚动到底部的 Pose 部分,然后更改Roll为1.5707弧度(90度),然后在框外单击。暂时不要关闭检查器。

      • 接下来,通过提供确切的尺寸来调整轮子的尺寸。转到 visual 视觉选项卡以查看此链接中的视觉列表。向下滚动到Geometry部分,然后将其更改 Radius 为0.3m和 Length 为0.25m。

      • 现在,在较大的圆柱体内可以看到较小的圆柱。因为我们仅更改了视觉几何体,而没有更改碰撞。visual 是链接的图形表示,不影响物理模拟。切换到 collision 选项。设置Radius:0.3m和Length:0.25m 单击OK以保存更改并关闭检查器。

      • 通过复制粘贴创建另一个前轮。选中刚刚创建的前轮,在上方工具栏中点击复制(右起第六个),再点击粘贴(右起第五个),在场景中单击插入副本。

      • 现在,通过沿X轴正方向(场景中的红色标记)对齐底盘,确保车辆能够正确行驶。在下一步中添加车轮时,请确保它们位于沿X轴正方向延伸的车辆末端。

      • 底盘和车轮目前是自由移动的车身。为了限制它们的运动,我们将在每个车轮和底盘之间添加关节。单击顶部工具栏上的 Joint 图标(右起第一个)以弹出 Create Joint 对话框。

      • Create Joint 对话框包含通常为关节指定的关节属性。在配置任何属性之前,系统会提示您选择关节的父级和子级链接。将鼠标移到“场景”中的底盘上以使其突出显示,然后单击以将其设置为关节的父级。

        • 将鼠标移至左前轮;一条线现在应该从机箱的原点延伸到鼠标的末端。单击轮子将其设置为关节的子代。创建一个新的关节。默认情况下,它是旋转关节(Revolute),恰好是我们想要的 Joint Types 。
      • 接下来,我们需要配置轮子的旋转轴。在 Create Joint 对话框中,找到 Joint axis 并将其更改为Z(0,0,1)。注意轮子各个轴上的颜色显示。您应该看到一个黄色的环现在出现在关节图的蓝色箭头上方,表示其为旋转轴 。

      • 为了使车轮与底盘对齐,我们将在“ Joint Creation”对话框的部分中使用不同的对齐选项Align links。首先,我们将在X轴上对齐,因此单击 X Align Max 选项以查看对齐结果。圆柱体应突出显示以指示其姿势已更改。

      • 在我们的示例中,我们要使轮子与底盘平齐。要使车轮更靠近,请单击Y Align Max选项。但是,这还不是我们想要的。单击Y对齐选项旁边的Reverse选项,以将轮子的最小值(最大值的反方向)与底盘的最大值对齐。最后点击按Create。

        • 注意,此 Reverse 选项适用于子链接,因为下面的下拉列表中显示的默认对齐方式配置为 Child to Parent。如果设置了 Parent to Child 配置,则 Reverse 选项将应用于父链接
      • 要将轮子放置在地面上方,请双击轮子以打开链接检查器(link inspector)。我们可以使用Pose对话框底部的部分来移动轮子。假设轮子的半径为0.3m,请继续并将Z位置更改为0.3m以放置在地面上,然后按OK。

      • 将另一个前轮做同样的操作,注意使用 Y Align Min 选项将右轮对准底盘的另一侧。

    3. 脚轮。

      • 单击左侧面板上的“球形”按钮,然后将其插入场景。
      • 通过提供与前轮相同的确切尺寸来调整球体的大小。visual 选项卡Geometry部分并将其更改Radius为0.2m。确保对“collision”选项卡中的碰撞尺寸也执行相同的操作。
      • 要在脚轮和底盘之间创建关节,请单击顶部工具栏上的Joint图标,以显示Joint Creation对话框。将鼠标移至场景,然后选择底盘作为父链接,并选择球作为子链接。
      • 脚轮在所有方向滚动,并且没有特定的旋转轴。在凉亭中,这是使用球形接头模拟的。因此,在Joint types选项中,选择Ball(球连接)。
      • 接下来,对准脚轮,使其与底盘居中,并位于后端。在Align links部分中,选择Y Align Center,选择在Y轴上居中的选项,然后选择X Align Min(最小对齐),使脚轮移动到车轮右后方的选项。按下Create按钮以完成关节创建过程。
      • 打开link inspector并将Z位置设置为0.2m。
    4. 添加传感器。

      • 选择Insert选项卡以查看此部分中可用的模型列表(Model Database)。在列表中找到“深度相机” (Depth Camera),然后单击它以开始下载模型。

      • 看起来像一个小立方体。将鼠标移到场景上,然后单击汽车前面的空白处以插入深度摄像头。移动深度摄像头,使其位于车辆前部底盘的顶部,并大致位于Y轴的中心。

      • 将深度相机固定到机箱上。单击顶部工具栏中的“关节”(joint)图标以打开“关节创建” (Joint Creation )对话框。将鼠标移至场景,然后选择机箱作为父链接,选择深度摄像头作为子链接。选择Fixed选项(即固定连接)。

    5. 添加插件。

      • 在Model Plugins选项下面,单击Add按钮,弹出一个“模型插件检查器”。

      • 插件名为 smallcar_follower,使用的插件为libFollowerPlugin.so。

    6. 保存模型,退出模型编辑器。

      • 要测试插件是否正常工作,请在汽车前面插入一个盒子,然后观察汽车向其缓慢移动。


iwehdio的博客园:https://www.cnblogs.com/iwehdio/

猜你喜欢

转载自www.cnblogs.com/iwehdio/p/12751106.html