Gazebo系列教程<快速开始 1> 一些介绍

目录

一、运行gazebo

二 、gazeb组件

1.world files

2.model files

3.environment variables

三 、gazebo 架构

1.gazebo master

2.通信库(Communication Library)

3.物理库(Physics Library)

4.渲染库(Rendering Library)

5.传感器库(Sensor Generation)

6.GUI

7.插件(Plugins)


一、运行gazebo

因为gazebo一般不是单独安装,基本都是作为ros的插件形式;这里也是这种情况,所以关于怎么安装gazebo的这里已经略去。

//

这里启动gazebo遇到一个问题:vmw_ioctl_command error Invalid argument,

解决办法是在终端下设置环境变量为0,$export SVGA_VGPU10=0

//

在home目录下直接运行  gazebo 即可打开gazebo界面,此时界面world是灰色的什么都没有。

对于初学者,可以打开官网的world模型,其中一个如下

gazebo worlds/pioneer2dx.world

注:如果本地没有pioneer2dx.world这个模型的话,会从网上下载,所以需要一段时间,界面变灰也不要紧,请耐心等待!

其他介绍:

gazebo也分客户端(client)与服务端(server),这里是这样区分的。

服务端运行指令:gzserver

客户端运行指令:gzclient

server端可以理解成服务器,运行gazebo实际的一些运算分析;

而client则可以理解成显示器,接受一些数据信息并显示,所以可以有多个显示器存在;

可以新开一个terminal然后输出gzclient是没有问题的,会弹出一个跟原来一模一样的窗口;

总结:运行gazebo这个指令时,会同时gzserver与gzclient,也可以分开运行,例如上面gazebo worlds/pioneer2dx.world,可以这样

gzserver worlds/pioneer2dx.world,然后另外开个terminal,输入gzclient

二 、gazeb组件

这一部分主要介绍在gazebo仿真运行中的各部分;

主要包括:

1.world files

该描述文件包含了仿真的所有元素,包括机器人,灯光,传感器,以及静物等等,文件格式一般是SDF,

并常常一个.world扩展名。通过gzserver读取所有信息并构建一个world场景;

2.model files

模型文件采用的格式与world files相同,SDF(simulation description format)格式,不同的是包含的内容,模型文件仅包含模型。

模型文件:

world files文件:

<?xml version="1.0" ?>
<sdf version="1.5">
  <world name="default">
    <!-- Ground -->
    <include>
      <uri>model://ground_plane</uri>
    </include>
    <!-- Pioneer2dx model -->
    <include>
      <uri>model://pioneer2dx</uri>
      <pose>0 0 0 0 0 0</pose>
    </include>
    <!-- A global light source -->
    <include>
      <uri>model://sun</uri>
    </include>
  </world>
</sdf>

如果内容是world files子集,那模型文件的意义在哪里呢?

模型文件主要作用是实现原件的复用,例如四个车轮,可以通过一个模型实现,从而简化world files。

3.environment variables

环境变量,gazebo通过环境变量定位文件,并连接服务端与客户端,正常情况下环境变量是默认的,不需要我们进行设置。

一些环境变量:

GAZEBO_MODEL_PATH:gazebo所有模型的路径

GAZEBO_RESOURCE_PATH:供gazebo所有的资源路径,例如world

GAZEBO_MASTER_URI:指定的ip与端口,用于客户端连接服务器使用(其实正常情况下不用管这些,都是默认的,只有用服务器运行gazebo的情况才可能会用到此种设置);

GAZEBO_PLUGIN_PATH:用于gazebo搜索插件库的路径

GAZEBO_MODEL_DATABASE_URI:用于模型下载的网址

上述所有的变量查看位置

/usr/share/gazebo/setup.sh

修改上述环境变量的方式:

首先修改上面提高的setup.sh文件,然后source  /usr/share/gazebo/setup.sh

 

三 、gazebo 架构

gazebo采用库形式的分布式架构,主要有物理仿真库,rendering(应该翻译成渲染,跟3D场景有关),用户接口,通信,传感器。

同时gazebo提供了两个执行进程用于仿真,分别是gzserver,gzclient。

gazebo支持订阅与发布的通信模式,例如当仿真环境中更新了机器人本体位置信息后,传感器以及界面会根据新的信息做出下一步动作。

1.gazebo master

gazebo master本质上是一个话题与名称的服务端。它提供名称查看,话题管理。一个master可以管理多个物理场景的仿真,传感器以及GUI。

2.通信库(Communication Library)

该库会被随后提到的大部分库使用。通信库其实是gazebo的传输机构,主要负责通信功能,目前仅支持publish/subscribe通信模式。

3.物理库(Physics Library)

物理库为基本的仿真组件提供了一个简单通用的接口,基本模拟组件包括刚体、碰撞外形、表征关节约束的关节点。

该接口已经被整合进四个开源的物理引擎中:

每个引擎都可以加载SDF文件中描述的模型。这样就保证了不同算法的实现以及满足不同的仿真特性。

4.渲染库(Rendering Library)

渲染库使用OGRE提供了一个简单的接口,用于在GUI和传感器库中渲染3D场景。主要包括灯光、材质纹理,天空的仿真。

也可以为渲染库编写插件完成需要的功能。

5.传感器库(Sensor Generation)

传感器生成库集成所有类型的传感器,监听仿真的状态更新,并生成传感器指定的输出。

6.GUI

GUI库使用qt编写图像窗口,用于仿真与用户之间的交互。GUI库就是与用户交互相关的功能的集成,基本都是窗口的相关操作。

7.插件(Plugins)

支持插件的库有,物理库、渲染库、传感器库。这些支持插件的库,可以知己

 

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是将该代码转换为 SDF 文件的示例: ``` <?xml version="1.0"?> <sdf version="1.6"> <model name="livox_sensor"> <link name="link"> <sensor name="laser_sensor" type="ray"> <pose>0 0 0 0 0 0</pose> <visualize>true</visualize> <update_rate>10</update_rate> <plugin name="livox_sensor_plugin" filename="liblivox_laser_simulation.so"> <ray> <scan> <horizontal> <samples>100</samples> <resolution>1</resolution> <min_angle>0</min_angle> <max_angle>6.28318530718</max_angle> </horizontal> <vertical> <samples>360</samples> <resolution>1</resolution> <min_angle>-0.12603669438</min_angle> <max_angle>0.96144910243</max_angle> </vertical> </scan> <range> <min>0.05</min> <max>120</max> <resolution>0.01</resolution> </range> <noise> <type>gaussian</type> <mean>0</mean> <stddev>0.01</stddev> </noise> </ray> <visualize>true</visualize> <samples>1</samples> <downsample>1</downsample> <csv_file_name>/home/kuper/PX4_Firmware/Tools/sitl_gazebo/models/livox/scan_mode/mid360.csv</csv_file_name> <ros_topic>livox_scan</ros_topic> </plugin> </sensor> </link> </model> </sdf> ``` 请注意以下更改: - `<gazebo>` 标记已更改为 `<sdf>` 标记,因为我们正在创建 SDF 文件。 - `reference="${name}"` 属性已被删除。SDF 不需要此属性。 - `visualize`,`update_rate`,`laser_min_range` 和 `laser_max_range` 属性已被替换为 `<visualize>`,`<update_rate>`,`<range><min>` 和 `<range><max>` 元素。 - `<plugin>` 元素已被移动到 `<sensor>` 元素内部,并使用新属性 `name` 和 `filename`。 - `<horizontal>` 和 `<vertical>` 元素现在包含所有相关属性。 - 您可能需要对 `<min_angle>` 和 `<max_angle>` 元素中的角度进行转换,因为某些 Gazebo 版本使用弧度,而其他版本使用度数。 - `<ros_topic>` 元素现在包含您想要将激光扫描数据发布到的 ROS 话题名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值