p9fj35fl6/Gazebo_exercise/gazebo7_7.14.0_exercise/Exercise_README.md

4.8 KiB
Raw Blame History

Gazebo-exercise安装&使用说明文档

2019-05-23 by airc_exercise@163.com

______________________________________________________________
|                 This is Gazebo-exercis-0.2                 |
|                         by AIRC-01                         |
|                                                            |
|---------------------- WorldUpdateBegin --------------------|
|   Multithreading event_signal: ON                          |
|   Multithreading event_signal: OFF                         |
|   Using OpenMP with n threads                              |
|---------------------- UpdateCollision ---------------------|
|   Using  dSweepAndPruneSpace                               |
|   Using  dHashSpace                                        |
|   Multithreading dHashSpace: ON                            |
|   Using OpenMP with n threads                              |
|   Multithreading dHashSpace: OFF                           |
|---------------------- UpdatePhysics -----------------------|
|   Multithreading dxprocessislands: ON                      |
|   Using OpenMP with n threads                              |
|   Multithreading dxprocessislands: OFF                     |
|   This code is running with NO OPTIMIZATION !              |
|____________________________________________________________|

安装第三方依赖库

由于Gazebo-exercise是基于官方版本Gazebo7_7.14.0进行开发因此安装过程与Gazebo7_7.14.0类似需要首先安装一些第三方依赖库。关于依赖库的具体安装过程不在这里赘述需要注意的是这些库的版本需要跟Gazebo的版本相匹配。

  • 安装ign-math_2.8.0
  • 安装protobuf-2.6.1
  • 安装sdformat_4.4.0
	mkdir build
	cd build
	cmake ../
	make -jX
	sudo make install
  • 安装libevent
	./autogen.sh
	./configure
	make -jX
	sudo make install

注意若安装libevent过程中运行./autogen.sh时出现 ./autogen.sh: 18: ./autogen.sh: aclocal: not found 错误则运行sudo apt-get install automake解决该错误

安装Gazebo-exercise

	mkdir build
	cd build
	cmake ../
	make -jXX为编译时启用的线程数其根据CPU核心数确定不要超过CPU核心数
	sudo make install

使用Gazebo-exercise中的优化

当前版本针对Gazebo仿真流程中的预处理WorldUpdateBegin、碰撞更新UpdateCollision以及物理更新UpdatePhysics等模块分别进行了优化主要采用了基于OpenMP的多线程优化也有小部分其他优化措施。为了使用这些优化需要在仿真的主世界文件一般以.world结尾添加如下所示的优化标签

<world>
...
    <use_asyn_event>     <!--Added by zenglei for Asyn Event-->
      <use_sim_time>1</use_sim_time>
      <frequency>100</frequency>
    </use_asyn_event>
    <use_asyn_processmessages>  <!--Added by zenglei for Asyn Process Messages -->
      <flag>1</flag>
      <frequency>1000</frequency>
    </use_asyn_processmessages>
    <exercise_opt>
      <event_signal parallel_type=1 threads=2 />
	  <collide_space>1</collide_space>
      <dxhashspace_collide threads=2 />
      <updatephysics_dxprocessislands parallel_type=1 threads=2 />
    </exercise_opt>
	...
</world>

标签释义如下:

  • <exercise_opt>标签:优化总开关。
  • <event_signal>标签用于设置模型预处理模块并行优化参数parallel_type为1~5表示OpenMp优化一般设置为1即可其他是采用不同的任务并发方式threads为开启的线程数parallel_type为其他数字时表示不开启优化。
  • <collide_space>标签用于设置碰撞更新模块中碰撞空间的类型值为1时表示SAP空间类型其他数字表示默认的Hash空间类型。
  • <dxhashspace_collide>标签用于设置碰撞更新模块中dxHashSpace::collide模块并行参数当<collide_space>标签设置为1时该参数没有意义其他情况下threads大于1表示采用OpenMP并行优化threads为开启的线程数否则不开启优化。
  • <updatephysics_dxprocessislands>标签用于设置物理更新模块中dxProcessIslands模块并行参数parallel_type为1~5表示OpenMp优化一般设置为1即可其他是采用不同的任务并发方式threads为开启的线程数parallel_type为其他数字时表示不开启优化。
  • <use_asyn_event>标签:用于设置异步事件机制,其元素标签示意如下。
    • <use_sim_time> 值为1时则开启异步事件机制
    • 用于控制异步事件机制频率
  • <use_asyn_processmessages> 用于设置异步化ProcessMessages模块其元素标签示意如下。
    • 值为1则开启异步化ProcessMessages模块将模型~/pose/info、~/pose/local/info、~/model/info话题发布异步化进而从仿真回路中解耦
    • 用来设置异步话题发布频率