用ROS自帶的gazebo仿真器搭建自己的環境

近期需要搭建一個室內仿真環境,用於實驗調試,所以想把相關技巧記錄下來,如有錯誤,還請批評指正,謝謝。

參考網頁:使用gazebo中的building editor創建一個建築環境並用於仿真

1.配置要求

系統:ubuntu14.04(其他版本也行,這個要求不嚴)
ROS版本:indigo版本(這個關係到gazebo版本,每個ROS的都會有對應的gazebo版本,所以還是用indigo版本自帶gazebo比較好)
這裏寫圖片描述

搭建的模板大致如下圖所示:
這裏寫圖片描述

2.創建模型

(1) 開啓gazebo

$ gazebo

(2) 按Ctrl+B打開building editor,或者從控制面板進入
這裏寫圖片描述

(3)利用左上角的add wall,add Windows ,add door , add stair四個控制按鈕來搭建環境。
這裏寫圖片描述

(4)在wall上右擊可以打開wall inspector編輯器,用來編輯wall的長度等信息
這裏寫圖片描述

這裏寫圖片描述

各個參數表示含義如下:
這裏寫圖片描述
(5)編輯窗戶時,也可以用右鍵調出編輯器進行調整,各個參數表示含義如下:
這裏寫圖片描述

(6)終於搭建好一個像樣的模型了,我的像這樣
這裏寫圖片描述

(7)保存之前,先在home目錄下用Ctrl+H鍵打開隱藏目錄,在.gazebo/models路徑下新建一個文件夾,用來保存搭建好的模型,我的命名爲house_6,注意模型名字要和這個文件名一致。最後保存如下,
這裏寫圖片描述

(8)保存之後,就可以退出gazebo編輯器了。

3.編輯模型初始化文件

(1)再次以同樣的方式進入.gazebo/models/house_6,這時你會發現只有一個sdf文件,只有這個文件是不夠,還需要一個config文件。所以新建一個model.config(文件名只能是這個,不可更改!)
這裏寫圖片描述

(2)在.gazebo/models/house_6/model.config中,填入以下信息

<?xml version="1.0"?>

<model>
  <name>House 6</name>
  <version>1.0</version>
  <sdf version="1.4">house_6.sdf</sdf>


  <author>
    <name>XXXXXXXXX</name>
    <email>[email protected]</email>
  </author>

  <description>
    A model of a simple house for semi-navigation.
  </description>

</model>

相信你能看懂,就不解釋了,可以自行更改裏面的信息。
改完之後。保存退出就行了。

4.搭建自己的環境

(1)再次打開gazebo編輯器,在insert選項卡里選中調出,就可以看到剛纔搭建好的模型了。
這裏寫圖片描述

(2)下面利用gazebo已有的模型,可以繼續完善自己的環境,搭建一個自己的world,我的搭建如下:
這裏寫圖片描述

沒有辦法進行顏色搭配,模型庫的模型也不全 ,只能將就這樣了。
最後保存爲world文件,就大功告成了。

5.使用環境

(1)可以使用launch文件直接調用剛纔搭建好的環境,新建launch文件寫入如下內容:

<?xml version="1.0" encoding="UTF-8"?>
<launch>

  <!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot_gazebo)/worlds/XXXX.world"/> <!-- Note: the world_name is with respect to GAZEBO_RESOURCE_PATH environmental variable -->
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

</launch>

(2)gazebo仿真多用於turtlebot,這裏同樣可以用於turtlebot,新建launch文件寫入如下內容

<launch>
    <arg name="world_file"      default="$(find turtlebot_gazebo)/worlds/XXXXXX.world"/>

    <arg name="base"            default="kobuki"/> <!-- create, roomba -->
    <arg name="battery"         default="/proc/acpi/battery/BAT0"/>  <!-- /proc/acpi/battery/BAT0 --> 
    <arg name="gui"                 default="true"/>
    <arg name="stacks"          default="hexagons"/>  <!-- circles, hexagons --> 
    <arg name="3d_sensor"   default="KinectHokuyo"/>  <!-- kinect, asus_xtion_pro ,KinectHokuyo--> 

    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="use_sim_time" value="true"/>
        <arg name="debug" value="false"/>
        <arg name="gui" value="$(arg gui)" />
        <arg name="world_name" value="$(arg world_file)"/>
    </include>

    <include file="$(find turtlebot_gazebo)/launch/includes/$(arg base).launch.xml">
        <arg name="base" value="$(arg base)"/>
        <arg name="stacks" value="$(arg stacks)"/>
        <arg name="3d_sensor" value="$(arg 3d_sensor)"/>
    </include>

    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
        <param name="publish_frequency" type="double" value="30.0" />
    </node>

</launch>

運行launch文件,就可以看到了:

這裏寫圖片描述

大功告成!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章