IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ROS从入门到精通(七) 机器人3D物理仿真——Gazebo -> 正文阅读

[人工智能]ROS从入门到精通(七) 机器人3D物理仿真——Gazebo

在这里插入图片描述


1 什么是Gazebo?

Gazebo是一款3D物理仿真器,支持机器人开发所需的机器人、传感器和环境模型,并通过其搭载的强大物理引擎产生高品质的图形画面,达到逼真的仿真结果。

在这里插入图片描述
Gazebo功能强大,主要有:

  • 构建机器人运动仿真模型

    Gazebo提供了最基础的球体、圆柱体与立方体,利用它们以及伸缩变换或者旋转变换,可以自主设计机器人三维仿真模型。除此之外,Gazebo提供了CADBlenderSolidWorks等各种2D、3D设计软件接口,可以导入图纸让Gazebo机器人模型更真实。Gazebo提供了 机器人的运动仿真,通过Model Editor下的plugin,添加需要验证的算法文件,就可以在Gazebo里对机器人的运动进行仿真

  • 构建现实世界各种场景的仿真模型

    Gazebo可以建立一个用来测试机器人的仿真场景,通过添加物体库来模仿现实世界,还可以通过添加2D房屋设计图,构建出3D的房屋

  • 构建传感器仿真模型

    Gazebo提供强大的传感器模型库,包括cameradepth cameralaserimu等机器人常用的传感器,并且可以直接使用。Gazebo也允许用户从零创建一个新的传感器,添加它的具体参数,甚至还可以添加传感器噪声模型,让传感器更加真实

  • 为机器人模型添加现实世界的物理性质

    Gazebo提供的物理引擎可以为机器人添加重力、阻力等,提供了在复杂的室内和室外环境中准确有效地模拟机器人群体的能力

2 Gazebo架构

2.1 Gazebo前后端

Gazebo区分

  • 客户端:gzclient,接受数据信息并显示,允许多个客户端存在
  • 服务端:gzserver,运行Gazebo运算分析功能

终端运行指令

gazebo

默认执行指令

gzserver
gzclient

当然也可以分开运行服务端和客户端指令。

2.2 Gazebo文件格式

  • 世界

    扩展名为.world,该文件包含了仿真的所有元素——机器人、环境、传感器等,通过gzserver读取所有信息并构建一个真实的3D场景

  • 模型

    扩展名为.sdf,即仿真描述文件(simulation description format, SDF),模型文件主要用于实现基本组件复用,例如——太阳、平面等,从而简化.world

    下面是一个.world文件,其中包含ground_planesun模型文件

    <?xml version="1.0" ?>
    <sdf version="1.5">
      <world name="default">
        <include>
          <uri>model://ground_plane</uri>
        </include>
        <include>
          <uri>model://sun</uri>
        </include>
        <model name="box">
          <pose>0 0 0.5 0 0 0</pose>
          <link name="link">
            <collision name="collision">
              <geometry>
                <box>
                  <size>1 1 1</size>
                </box>
              </geometry>
            </collision>
          </link>
        </model>  
      </world>
    </sdf>
    

2.3 Gazebo环境变量

Gazebo环境变量表示了内置文件与库的存放位置,列举如下:

  • GAZEBO_MODEL_PATHGazebo所有模型的路径
  • GAZEBO_RESOURCE_PATHGazebo所有资源的路径,例如.world.sdf
  • GAZEBO_MASTER_URI:指定ip与端口,用于Gazebo客户端与服务器连接使用,通常使用服务器运行Gazebo时需要设置
  • GAZEBO_PLUGIN_PATHGazebo搜索插件库的路径
  • GAZEBO_MODEL_DATABASE_URIGazebo下载模型的路径

上述所有的变量查看位置/usr/share/gazebo/setup.sh

3 Gazebo安装与基本界面

Gazebo已经集成在桌面完整版的ROS系统当中,如果没有安装成功,则终端输入以下命令进行手动安装

sudo apt install gazebo9
sudo apt install libgazebo9-dev

启动与测试

roslaunch gazebo_ros empty_world.launch
roslaunch gazebo_ros mud_world.launch
roslaunch gazebo_ros shapes_world.launch
roslaunch gazebo_ros rubble_world.launch

在这里插入图片描述
如上图所示,Gazebo-GUI主要包含以下部分:

  • 场景(Scene):模拟器的主要部分,是仿真模型显示的地方,用户可以在场景中操作仿真对象,使其与环境进行交互

  • 左侧面板

    • WORLD:该选项卡显示当前场景中的模型,并允许查看和修改模型参数
    • INSERT:该选项卡是向仿真场景中添加新对象、模型,可以添加常用模型所在的路径
    • LAYERS:该选项卡组织并显示仿真中可用的不同可视化组,一个图层可以包含一个或多个模型,打开或关闭图层将显示或隐藏该图层中的模型
  • 顶部工具栏:包含与模拟器交互时最常用的选项,如按钮:选择、移动、旋转和缩放;灯光;创建简单形状(例如立方体、球体、圆柱体);复制/粘贴;更改视图;捕捉对齐等。

  • 底部工具栏:显示有关仿真的数据,如仿真时间及其与真实时间。

    • 仿真时间:指当仿真运行时,时间在仿真环境中过得有多快。仿真可以比真实时间慢或快,具体取决于运行仿真所需的计算量
    • 真实时间:指在仿真环境中运行时实际经过的时间。仿真时间和真实时间的比率称为实时因子。
    • 步长:每次仿真迭代都会推进一个固定的秒数,默认情况下,步长为1ms,按“暂停”按钮暂停仿真,并使用“步长”按键一次执行多个步长。

4 搭建自己的地图

本文介绍如何用Gazebo搭建自己的地图,关于Gazebo搭建机器人请参考后面的文章。

4.1 编辑地图

启动Gazebo,依次点击Edit -> Building Editor打开地图编辑器,如下所示

在这里插入图片描述
该编辑器由以下3个区域组成:

  • 调色板:选择建筑特征和材料
  • 2D视图:设计或导入楼层平面图,编辑器会根据平面图自动在3D编辑器中插入墙壁、门窗和楼梯
  • 3D视图:预览平面设计的3D视图,在这里可以为建筑物的不同部分分配颜色和纹理

4.2 保存地图

在顶部菜单上,选择File,然后Save As可以保存模型文件.sdf.config。单击Exit Building Editor退出场景编辑器,注意退出后就不能够再次编辑场景了。

回到主界面再次选择File,然后Save World可以保存世界文件.world

4.3 加载地图

.world中包含模型文件的全部内容,但不利于模型文件.sdf.config复用以及.world文件的可读性,本节进行改进。假设模型文件名为scene1,则模块化加载模型的方式为

  • 存放位置为~/ROS/ros_learning_tutorials/Lecture07/src/gazebo_labmodels/models,则
    <!-- 自定义模型 -->
    <model name='scene1'>
      <include>
        <uri>///home/winter/ROS/ros_learning_tutorials/Lecture07/src/gazebo_lab/models/scene1</uri>
      </include>
    </model>
    
  • 存放位置为~/.gazebo/models,则
    <!-- 自定义模型 -->
    <model name='scene1'>
      <include>
        <uri>model://scene1</uri>
      </include>
    </model>
    

启动地图可以类比turtlebot3_world.launch的结构,将其中的地图改成自己的场景即可,如下所示

<launch>
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find gazebo_lab)/worlds/scene1.world"/>
    <!-- more default parameters can be changed here -->
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/> <!-- Inert - see gazebo_ros_pkgs issue #491 -->
    <arg name="recording" value="false"/>
    <arg name="debug" value="false"/>
  </include>
</launch>

5 常见问题

  1. CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package): Could not find a package configuration file provided by "gazebo_ros_control" with any of the following names:

    gazebo_ros_controlConfig.cmake gazebo_ros_control-config.cmake

    解决方案:安装或者更新gazebo-ros-control功能包即可

    sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control
    
  2. Gazebo出现黑屏

    解决方案:更新Gazebo模型库

    cd ~/.gazebo/
    mkdir -p models
    cd ~/.gazebo/models/
    wget http://file.ncnynl.com/ros/gazebo_models.txt
    wget -i gazebo_models.txt
    ls model.tar.g* | xargs -n1 tar xzvf
    
  3. [gazebo-1] process has died [pid 20736, exit code 255, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -e ode worlds/empty.world __name:=gazebo __log:=/home/winter/.ros/log/2670202e-5ef6-11ec-847d-347df65d6a56/gazebo-1.log].

    解决方案:关闭已有的Gazebo进程

    killall gzserver
    killall gzclient
    

本文的完整工程代码关注下方公众号回复ROS07获取


🔥 更多精彩专栏

🏠 欢迎加入社区和更多志同道合的朋友交流AI 技术社

👇配套代码 · 优质体验 · 系统知识 请关注👇
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 19:03:35  更:2022-06-08 19:04:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:43:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码