目录
安装
简介
URDF与Gazebo基本集成流程
创建功能包
编写URDF文件
启动Gazebo并显示模型
launch 文件实现:
命令行启动(去掉launch中的第三行加载模型)
集成到launch里启动
URDF集成Gazebo相关设置
collision
inertial
颜色设置
URDF集成Gazebo实操
框架搭建
编写封装惯性矩阵算法的 xacro 文件
底盘修改
驱动轮修改
支撑轮修改
传感器修改
雷达修改
Gazebo仿真环境搭建
方式一:用别人的仿真环境
方式二:自己搭建环境
方式三:自定义仿真环境
下载官方模型库
安装
Gazebo是一款3D动态模拟器,用于显示机器人模型并创建仿真环境,能够在复杂的室内和室外环境中准确有效地模拟机器人。与游戏引擎提供高保真度的视觉模拟类似,Gazebo提供高保真度的物理模拟,其提供一整套传感器模型,以及对用户和程序非常友好的交互方式。
以“ros- [ROS_DISTRO] -desktop-full”命令安装ROS时,gzebo会默认被安装。
运行使用命令gazebo
或rosrun gazebo_ros gazebo
注意1:在 Ubuntu20.04 与 ROS Noetic 环境下,gazebo 启动异常以及解决
-
问题1:VMware: vmw_ioctl_command error Invalid argument(无效的参数)
解决:
echo "export SVGA_VGPU10=0" >> ~/.bashrc
source .bashrc
-
问题2:[Err] [REST.cc:205] Error in REST request
解决:sudo gedit ~/.ignition/fuel/config.yaml
然后将url : https://api.ignitionfuel.org
使用 # 注释
再添加url: https://api.ignitionrobotics.org
-
问题3:启动时抛出异常:[gazebo-2] process has died [pid xxx, exit code 255, cmd.....
解决:killall gzserver
和killall gzclient
注意2:如果 gazebo没有安装,请自行安装:
1.添加源:
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main"
>
/etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
2.安装:
第一步
sudo apt update
第二步
sudo apt install gazebo11
第三步
sudo apt install libgazebo11-dev
简介
URDF 需要集成进 Rviz 或 Gazebo 才能显示可视化的机器人模型,前面已经介绍了URDF 与 Rviz 的集成,本节主要介绍:
- URDF 与 Gazebo 的基本集成流程;
- 如果要在 Gazebo 中显示机器人模型,URDF 需要做的一些额外配置;
- 关于Gazebo仿真环境的搭建。
URDF与Gazebo基本集成流程
URDF 与 Gazebo 集成流程与 Rviz 实现类似,主要步骤如下:
-
创建功能包,导入依赖项
-
编写 URDF 或 Xacro 文件
-
启动 Gazebo 并显示机器人模型
创建功能包
![](https://img-blog.csdnimg.cn/b5d54265bf1447938585827aba453d4d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
编写URDF文件
![](https://img-blog.csdnimg.cn/3fdf110755ca496bafe66af14ea5ee07.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
<!--
创建一个机器人模型(盒状即可),显示在 Gazebo 中
-->
<robot name="mycar">
<link name="base_link">
<visual>
<geometry>
<box size="0.5 0.2 0.1" />
</geometry>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
<material name="yellow">
<color rgba="0.5 0.3 0.0 1" />
</material>
</visual>
<collision>
<geometry>
<box size="0.5 0.2 0.1" />
</geometry>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
</collision>
<inertial>
<origin xyz="0 0 0" />
<mass value="6" />
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1" />
</inertial>
</link>
<gazebo reference="base_link">
<material>Gazebo/Black</material>
</gazebo>
</robot>
![](https://img-blog.csdnimg.cn/d272ee89898040269255ccbcae441dc1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
一个是设置碰撞参数一个是设置连杆矩阵的
注意, 当 URDF 需要与 Gazebo 集成时,和 Rviz 有明显区别:
1.必须使用 collision 标签,因为既然是仿真环境,那么必然涉及到碰撞检测,collision 提供碰撞检测的依据。
2.必须使用 inertial 标签,此标签标注了当前机器人某个刚体部分的惯性矩阵,用于一些力学相关的仿真计算。
3.颜色设置,也需要重新使用 gazebo 标签标注,因为之前的颜色设置为了方便调试包含透明度,仿真环境下没有此选项。
如果是标准集合体,复制visual的geometry和origin即可
<collision>
<geometry>
<box size="0.5 0.2 0.1" />
</geometry>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
</collision>
惯性矩阵
<mass value>代表的是质量此处为6kg
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1" />
<inertial>
<origin xyz="0 0 0" />
<mass value="6" />
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1" />
</inertial>
启动Gazebo并显示模型
launch 文件实现:
<include file="$(find gazebo_ros)/launch/empty_world.launch" />这个是直接用默认gazebo配置无需新建 empty_world.launch
这个launch是在gazebo_ros包里的
<launch>
<!-- 将 Urdf 文件的内容加载到参数服务器 -->
<param name="robot_description" textfile="$(find demo02_urdf_gazebo)/urdf/urdf01_helloworld.urdf" />
<!-- 启动 gazebo -->
<include file="$(find gazebo_ros)/launch/empty_world.launch" />
<!-- 在 gazebo 中显示机器人模型 -->
<node pkg="gazebo_ros" type="spawn_model" name="model" args="-urdf -model mycar -param robot_description" />
</launch>
跟rviz不同还需要一行命令让gazebo显示机器人模型
<include file="$(find gazebo_ros)/launch/empty_world.launch" />
<!-- 启动 Gazebo 的仿真环境,当前环境为空环境 -->
<node pkg="gazebo_ros" type="spawn_model" name="model" args="-urdf -model mycar -param robot_description" />
<!--
在 Gazebo 中加载一个机器人模型,该功能由 gazebo_ros 下的 spawn_model 提供:
-urdf 加载的是 urdf 文件
-model mycar 模型名称是 mycar
-param robot_description 从参数 robot_description 中载入模型
-x 模型载入的 x 坐标
-y 模型载入的 y 坐标
-z 模型载入的 z 坐标
-->
![](https://img-blog.csdnimg.cn/407ee90090f841659ea5ca8044208dc0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
args="-urdf -model mycar -param robot_description" />
-urdf 要用urdf类型数据
-model mycar 模型取名叫mycar
-param robot_description要加载的模型是从 robot_description获取的
命令行启动(去掉launch中的第三行加载模型)
![](https://img-blog.csdnimg.cn/2f0be8b405f74886b76e2825b91b982e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/4228bdba9b2c4af897bfabee20c65088.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
此时gazebo是空的
启动命令传给gazebo参数
![](https://img-blog.csdnimg.cn/f54651daa7154c819b24012c6f5bdd49.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
集成到launch里启动
![](https://img-blog.csdnimg.cn/43b040a0cb7147e082b0e11cc1548e6c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/3d48f10dadbd45569bd7c8e9f821d0e5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
此时就完成了
URDF集成Gazebo相关设置
较之于 rviz,gazebo在集成 URDF 时,需要做些许修改,比如:必须添加 collision 碰撞属性相关参数、必须添加 inertial 惯性矩阵相关参数,另外,如果直接移植 Rviz 中机器人的颜色设置是没有显示的,颜色设置也必须做相应的变更。
collision
如果机器人link是标准的几何体形状,和link的 visual 属性设置一致即可。
inertial
惯性矩阵的设置需要结合link的质量与外形参数动态生成,标准的球体、圆柱与立方体的惯性矩阵公式如下(已经封装为 xacro 实现):
推导见下面的链接
(67条消息) ROS漫漫长路(一)——Gazebo中机器人圆柱,球,长方体惯性矩阵推导与代码实现_lzzzzzzm的博客-CSDN博客_长方体的惯性矩阵
![](https://img-blog.csdnimg.cn/020cdde730f64a94946c44f9f4ac3df3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
转动惯量的SI单位为kg·m²。对于一个质点,I=mr²,其中,m是其质量,r是质点和转轴的垂直距离。
![](https://img-blog.csdnimg.cn/b1e97e4004704842960688fa5b478812.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_18,color_FFFFFF,t_70,g_se,x_16)
所以对称物体的ixy ixz iyz iyx iyz izx izy为0
(因为积分为0)
球体惯性矩阵
<!-- Macro for inertia matrix -->
<xacro:macro name="sphere_inertial_matrix" params="m r">
<inertial>
<mass value="${m}" />
<inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"
iyy="${2*m*r*r/5}" iyz="0"
izz="${2*m*r*r/5}" />
</inertial>
</xacro:macro>
圆柱惯性矩阵
<xacro:macro name="cylinder_inertial_matrix" params="m r h">
<inertial>
<mass value="${m}" />
<inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"
iyy="${m*(3*r*r+h*h)/12}" iyz = "0"
izz="${m*r*r/2}" />
</inertial>
</xacro:macro>
立方体惯性矩阵
<xacro:macro name="Box_inertial_matrix" params="m l w h">
<inertial>
<mass value="${m}" />
<inertia ixx="${m*(h*h + l*l)/12}" ixy = "0" ixz = "0"
iyy="${m*(w*w + l*l)/12}" iyz= "0"
izz="${m*(w*w + h*h)/12}" />
</inertial>
</xacro:macro>
需要注意的是,原则上,除了 base_footprint 外,机器人的每个刚体部分都需要设置惯性矩阵,且惯性矩阵必须经计算得出,如果随意定义刚体部分的惯性矩阵,那么可能会导致机器人在 Gazebo 中出现抖动,移动等现象。
颜色设置
在 gazebo 中显示 link 的颜色,必须要使用指定的标签:
<gazebo reference="link节点名称">
<material>Gazebo/Blue</material>
</gazebo>
PS:material 标签中,设置的值区分大小写,颜色可以设置为 Red Blue Green Black .....
URDF集成Gazebo实操
需求描述:
将之前的机器人模型(xacro版)显示在 gazebo 中
实现流程:
-
需要编写封装惯性矩阵算法的 xacro 文件
-
为机器人模型中的每一个 link 添加 collision 和 inertial 标签,并且重置颜色属性
-
在 launch 文件中启动 gazebo 并添加机器人模型
框架搭建
编写封装惯性矩阵算法的 xacro 文件
新建文件复制以下代码
<robot name="base" xmlns:xacro="http://wiki.ros.org/xacro">
<!-- Macro for inertia matrix -->
<xacro:macro name="sphere_inertial_matrix" params="m r">
<inertial>
<mass value="${m}" />
<inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"
iyy="${2*m*r*r/5}" iyz="0"
izz="${2*m*r*r/5}" />
</inertial>
</xacro:macro>
<xacro:macro name="cylinder_inertial_matrix" params="m r h">
<inertial>
<mass value="${m}" />
<inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"
iyy="${m*(3*r*r+h*h)/12}" iyz = "0"
izz="${m*r*r/2}" />
</inertial>
</xacro:macro>
<xacro:macro name="Box_inertial_matrix" params="m l w h">
<inertial>
<mass value="${m}" />
<inertia ixx="${m*(h*h + l*l)/12}" ixy = "0" ixz = "0"
iyy="${m*(w*w + l*l)/12}" iyz= "0"
izz="${m*(w*w + h*h)/12}" />
</inertial>
</xacro:macro>
</robot>
把之前的小车xacro实现复制进来
具体见
(15条消息) ROS xacro URDF优化(十七)_啥也不是的py人的博客-CSDN博客
https://blog.csdn.net/weixin_50920579/article/details/124189174?spm=1001.2014.3001.5501
![](https://img-blog.csdnimg.cn/eb257b5cd0494baca6090b3d9026746f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_10,color_FFFFFF,t_70,g_se,x_16)
修改car.urdf.xacro
要增加包含惯性矩阵的xacro
![](https://img-blog.csdnimg.cn/920f83ade93f42a8b9a302e81e128321.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/be1a0583b014411d883ecc0224d60544.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
底盘修改
因为直接用的之前的rviz的xacro文件,所以要对应进行修改
对link增加<collision>属性
跟visual保持一致就行
![](https://img-blog.csdnimg.cn/d232a5f0a3024e66bc00a3b796dda6e9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
调用xacro interia matrix
<!-- diaoyong interia matrix -->
<xacro:cylinder_inertial_matrix m="${base_mass}" r="${base_link_radius}" h="${base_link_length}">
另外设置一下全局变量
<xacro:property name="base_mass" value="2" />
最后是颜色设置
<gazebo reference="base_link">
<material>Gazebo/Yellow</material>
</gazebo>
此处就完成了车体部分设置
然后执行一下看看有没有错
![](https://img-blog.csdnimg.cn/e687770fec3c4ad991102e6ae30b7bd6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到车体正常显示了
雷达和摄像头还没有正常显示
驱动轮修改
添加<collision>
![](https://img-blog.csdnimg.cn/1b3416b2c1c147a2a6e0c6e899086930.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
添加颜色
![](https://img-blog.csdnimg.cn/abe9d6a0464b4682bcc8875c75dfa380.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
添加惯性矩阵
![](https://img-blog.csdnimg.cn/7fa2348f005048b39e116669577cfcd5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
运行
![](https://img-blog.csdnimg.cn/9184c1e821394d6c9d5b0803a120a067.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到多出了红色的轮子
支撑轮修改
设置<collision>
![](https://img-blog.csdnimg.cn/3a2e588ec19e4ce19a87ec4842ac0036.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
添加惯性矩阵
![](https://img-blog.csdnimg.cn/29828477bad340c886f3e1609557be60.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
设置颜色
![](https://img-blog.csdnimg.cn/1b6913ff50ad48dbaf6b792b2c36e9ca.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
运行
![](https://img-blog.csdnimg.cn/d0432cc3e92849aba659b2d8e7d87df9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
传感器修改
<collision>
![](https://img-blog.csdnimg.cn/1e79740cad09497d94ada222714d45cd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
惯性矩阵
![](https://img-blog.csdnimg.cn/0ab09a9aac40484f83eaeddef95157d8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
颜色设置
![](https://img-blog.csdnimg.cn/ca7bd216077044f9b790866afceb7af6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
雷达修改
先改支架
![](https://img-blog.csdnimg.cn/c3230157d4f54a5fbc457dd1cd3ba845.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
惯性矩阵修改
![](https://img-blog.csdnimg.cn/c92fdbecffd9412bbe664c67958f3fc7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
颜色修改
![](https://img-blog.csdnimg.cn/a1afed0b711b46f98f39bf70d3168f6e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
雷达修改
![](https://img-blog.csdnimg.cn/84152c73cb904af7975e9cae796f126b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
惯性矩阵调用
![](https://img-blog.csdnimg.cn/53b3a679836e4b7b81c35b24c6b22285.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
颜色修改
![](https://img-blog.csdnimg.cn/6e777b31f86e4da2afac170b0f788f94.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
运行
![](https://img-blog.csdnimg.cn/d5ae721e0baa4bc99912bd114714c476.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
运行成功
Gazebo仿真环境搭建
到目前为止,我们已经可以将机器人模型显示在 Gazebo 之中了,但是当前默认情况下,在 Gazebo 中机器人模型是在 empty world 中,并没有类似于房间、家具、道路、树木... 之类的仿真物,如何在 Gazebo 中创建仿真环境呢?
Gazebo 中创建仿真实现方式有两种:
-
方式1: 直接添加内置组件创建仿真环境
-
方式2: 手动绘制仿真环境(更为灵活)
也还可以直接下载使用官方或第三方提高的仿真环境插件。
方式一:用别人的仿真环境
以下为素材链接可以直接git clone下载
GitHub - zx595306686/sim_demo
https://github.com/zx595306686/sim_demo.git
![](https://img-blog.csdnimg.cn/34307ea9612f45bca48c650f24ddcf36.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
新建目录并且把.world放进去
![](https://img-blog.csdnimg.cn/0f422972225d4dedb9959e2523efd549.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
新建launch环境
![](https://img-blog.csdnimg.cn/b7a4bf12fb75457aa0c8e5b18428db0b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
world_name是固定参数
启动
![](https://img-blog.csdnimg.cn/13ca2566ddd9483c9255ac64151ee2e9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
方式二:自己搭建环境
启动gazebo
![](https://img-blog.csdnimg.cn/a02398c4e4d843808fa4a9dcb512baf2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
然后自己搭建再另存为即可
![](https://img-blog.csdnimg.cn/6ff9af44147d43cca55c7e1fb03c1932.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
另存为即可
方式三:自定义仿真环境
![](https://img-blog.csdnimg.cn/155de875fa124c59b3b0d69242a4dc93.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
创建墙体
![](https://img-blog.csdnimg.cn/8a9823d45f4d4fb89737a5cdf22d9b88.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
创建门窗
![](https://img-blog.csdnimg.cn/bf438cacff2142f7b5de5dbd92b838d5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
改变材质,改变颜色
![](https://img-blog.csdnimg.cn/aa218423b9804704b3232ac996e2c07b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZWl5Lmf5LiN5piv55qEcHnkuro=,size_20,color_FFFFFF,t_70,g_se,x_16)
使用官方提供的插件
当前 Gazebo 提供的仿真道具有限,还可以下载官方支持,可以提供更为丰富的仿真实现,具体实现如下:
下载官方模型库
git clone https://github.com/osrf/gazebo_models
之前是:hg clone https://bitbucket.org/osrf/gazebo_models
但是已经不可用
注意: 此过程可能比较耗时
3.2 将模型库复制进 gazebo
将得到的gazebo_models文件夹内容复制到 /usr/share/gazebo-*/models
3.3 应用
重启 Gazebo,选择左侧菜单栏的 insert 可以选择并插入相关道具了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)