• 第十八课 Gazebo仿真器


    1.Gazebo概述

    在Gazebo中的模拟效果是非常好的.

    它的特性

    Dynamics Simulation

    直接控制物理引擎参数

    Building Editor

    无需代码即可在Gazebo中创建机器人模型(只用insert就可以插入各种模型,可以在基于Gazebo的云端中创建机器人模型)

    Advanced 3DGraphics

    提高真实性

    Sensors

    提供激光雷达,摄像头,RGBD摄像头,IMU等传感器

    Robot Models

    提供多种机器人模型,包括PR2,iRobot,Create,TurtleBot,机械臂,灵巧手等

    Environments

    提供多种模拟环境

    Programmatic Interfaces

    支持ROS,API接口.

    Gazebo构架(由服务器和客户端组成)

    服务器:其作用是执行物理循环,生成传感器数据

    执行文件:gzserver

    Libraries:Physics(物理环境模拟),Sensors(传感器),Rendering(用于渲染),Transport(传输数据)

    客户端:其作用提供用户交互和可视化仿真

    执行文件:gzclient

    Libraries:Transport,Rendering,GUI

    如何运行gazebo

    有两种方式:

    1.单独运行server和client

    gzserver

    gzclient

    2.同时运行gazebo server和client

    gazebo

    如果从ros中启动,则使用

    rosrun gazebo_ros gazebo

    本版本的ros是indigo,gazebo的版本为2.2,它有一个故障问题,即找不到models,

    Ubuntu下显示隐藏文件,使用快捷键ctrl+h

    下载完上面的文件之后,才可以运行Gazebo.

    运行之前启动roscore,再运行rosrun gazebo_ros gazebo

    从上面可以看出在world下面提供了Scene,Physics,Models(模拟各种模型,默认只有一个地平面),LIghts(模拟光线).

    insert下面包含各种Models.

    按住shift+z可以进行左右旋转

    将上面内容保存 save world as,其格式为sdf

    它默认的launch文件

    在上面的文件中paused表示以暂停模式运行

    use_sim_time表示使用模拟时间

    extra_gazebo_args表示表示外部的其他参数

    gui表示窗口模式

    world_name默认是worlds/empty.world,我们可以指定自己的文件比如之前保存的demo_world.sdf文件,在后面直接把launch文件里面empty_world继承一下,然后把下面的参数默认换成自己的demo_world.world来运行刚刚配置好的世界.

    上面的3个参数是跟在gazebo_ros中的参数,第一个参数是否暂停运行,第二个参数为headless,第三个参数为是否详细运行.

    下面的script_type,如果是debug就运行debug,否则运行gzserver.

    最下面是client的参数,如果选择gui的话.

    willowgarage_world.launch文件继承自empty_world.launch文件

    刚开始直接包含了empty_world.launch文件,然后把参数换成willowgarage.wold文件.

    下面的参数是跟empty_world.launch是一样的可以不用指定.

    TurtleBot in gazebo

    下面看一下turtlebot的urdf文件

    xacro::macro是支持描述文件的一种格式,

    URDF(机器人描述的文件)的生成,

    Turtlebot navigation

    为了能够控制启动的机器人,把下面的一行加入文件turtlebot_gmapping.launch

    如果不加就会出现如下错误

    按照上面修改过后正确运行之后,再运行rviz

    rosrun rviz rviz

    然后再在rviz中添加如下内容

    最后rviz中的显示结果如下:

    看一下上面都发布了那些主题

    它发布的主题跟move_base基本上是一致的.

    它也有/move_base/goal这个主题,就是rviz上面的2d导航.

    下面来启动一下turtlebot的gmapping

    roslaunch turtlebot_navigation turtlebot_gmapping.launch ,同样需要按照上面的方式进行修改.

    下面来写一个避障的程序,首先需要一个/scan主题,用它来发现离障碍物的距离.以及控制机器人运动的主题为

    /cmd_vel_mux/input/teleop

    在之前的包为turtlebot_navigation下的src下创建源文件turtlebot_walk.cpp

     

    CMakeLists.txt

    文件内容

    package.xml

    然后在launch文件的turtlebot_amcl.launch中加入下面内容,启动本程序的节点

    下面运行一个turtlebot_amcl.launch文件

    roslaunch turtlebot_navigation turtlebot_amcl.launch

    关闭该节点.

  • 相关阅读:
    C# 将Excel中的数据到DataSet中
    Struts select标签在 FreeMarker 中的使用。
    .Net 中显式实现接口
    C#抽象类和抽象方法的应用
    iframe 自动控制高
    兔子问题总结(总结)
    MySQL group_concat 方法的使用
    服务发现与负载均衡机制的实现
    ChannelFuture
    服务发布、订阅及远程通信
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6776264.html
Copyright © 2020-2023  润新知