第十八课 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

关闭该节点.
第十八课 Gazebo仿真器的更多相关文章
- NeHe OpenGL教程 第四十八课:轨迹球
		
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
 - NeHe OpenGL教程 第三十八课:资源文件
		
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
 - NeHe OpenGL教程 第二十八课:贝塞尔曲面
		
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
 - NeHe OpenGL教程 第十八课:二次几何体
		
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
 - 深入浅出CChart 每日一课——第十八课 女神的套娃,玩转对话框
		
前面笨笨已经给大家展示了CChart编程的N个例子.这些例子中,我们的CChart图像都是绘制在程序的主窗口中的. 在很多情况下,我们面对的情形不是这样的.这节课笨笨就给大家介绍一下怎样在对话框中用C ...
 - 斯坦福第十八课:应用实例:图片文字识别(Application Example: Photo OCR)
		
18.1 问题描述和流程图 18.2 滑动窗口 18.3 获取大量数据和人工数据 18.4 上限分析:哪部分管道的接下去做 18.1 问题描述和流程图
 - Asp.Net Web API 2第十八课——Working with Entity Relations in OData
		
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html. 本文的示例代码的下载地址 ...
 - 第二十八课:focusin与focusout,submit,oninput事件的修复
		
focusin与focusout 这两个事件是IE的私有实现,能冒泡,它代表获得焦点或失去焦点的事件.现在只有Firefox不支持focusin,focusout事件.其实另外两个事件focus和bl ...
 - 第十八课:js样式操作需要注意的问题
		
样式分为,外部样式(<link />),内部样式(<style></style>),行内样式(style:).再加上一个important对选择器权重的干扰. 大体 ...
 
随机推荐
- C#的基类都有哪些方法
			
之前面试有被问到这个问题,平时没去注意,回答的不好,在此整理一下. 在C#中,个方法,重载的方法没有算进来: 构造函数 ToString()函数 GetHashCode函数 Equals函数 Refe ...
 - SCARA——OpenGL入门学习一、二
			
参考博客:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 简介 最近开始一个机械手臂的安装调试,平面关节型机器人又称SCA ...
 - json数据格式字符串在java中的转移
			
说明:项目中遇到请求的json数据字符串,打印出来没有问题,但是想加入到代码中,就需要进行转移 原数据为(用src代替)(没有写完): {"adjust_fee":"0. ...
 - mysql  统计sql
			
1.按照月份统计数据 SELECT DATE_FORMAT(d.create_time,'%Y-%m') months,COUNT(id) AS scannum FROM detail d GROUP ...
 - 字符串(PHP学习)
			
1.什么是字符串 答:一串字符组成(参考羊肉串) 2.字符串定义 答:单引号,双引号,包含单引号或双引号的字符串(1.双引号里面有单引号2.单引号里面有双引号3.转义4.字符拼接) 3.单双引号定义字 ...
 - python开发面向对象进阶:反射&内置函数
			
isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象或者子类的对象 class Foo(object): pass class ba ...
 - HTTP 无法注册 URL http://+:8000/。进程不具有此命名空间的访问权限
			
转到bin/debug/目录下, 右键管理员启动
 - andriod/ios webview与js交互 html_demo
			
<html> <head> <title>测试</title> </head> <body> <h3>Android ...
 - Vue源码学习(一):调试环境搭建
			
最近开始学习Vue源码,第一步就是要把调试环境搭好,这个过程遇到小坑着实费了点功夫,在这里记下来 一.调试环境搭建过程 1.安装node.js,具体不展开 2.下载vue项目源码,git或svn等均可 ...
 - Git 常用命令速查手册
			
来源:https://www.jianshu.com/p/5ee9897b6b65 1.初始化仓库 git init 2.将文件添加到仓库 git add 文件名 # 将工作区的某个文件添加到暂存区 ...