用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文件,就可以看到了:

这里写图片描述

大功告成!!!

猜你喜欢

转载自blog.csdn.net/qq_36355662/article/details/80030372