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

關閉該節點.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM