demo仓库
$ tree gazebo_demos -L 2
gazebo_demos
├── bin
│ └── vel
├── demos
│ └── velodyne
├── lib
│ └── libvelodyne_plugin.so
├── models
│ └── velodyne_hdl32
├── README.md
└── setup.sh
为了方便Gazebo仿真系列文章的写作,我们特意在Github上创建一个demo仓库。 本文介绍该仓库的组织、编译、运行的方式方法。
右边是gazebo_demos的目录结构。其中子目录bin用于存放各个demo编译生成的可执行文件。demos放置各个demo的源文件和编译脚本。lib存储运行demo所需的动态链接库,它们通常是Gazebo的各种插件。 models中保存了各种仿真模型。
比如说,这里第6行中的velodyne就是一款激光雷达的仿真demo,"velodyne"是这款雷达的牌子。第4行和第8行中的文件vel和libvelodyne_plugin.so,分别是该demo编译生成的可执行文件和动态链接库。 第10行的velodyne_hdl32则是存储了描述该雷达的SDF文件和纹理文件。
文件README.md就是一些简单的说明文本。不说。
在运行各个demo之前,我们需要通过如下的指令加载脚本setup.sh。
$ source setup.sh
脚本setup.sh的内容如下,我们在其中声明了一些环境变量。第5到7行的三个GAZEBO_DEMO_*前缀的变量主要用于在各个demo的编译脚本中指引可执行文件和链接库的存储路径的。 第9行的$LD_LIBRARY_PATH是Linux系统加载动态链接库时的搜索路径,而$PATH则是Linux查找可执行文件的搜索路径。这里将lib和bin两个子目录分别添加到这两个环境变量中。 最后的GAZEBO_MODEL_PATH是gazebo用于查找模型文件的路径,这里添加了model子目录。
#!/usr/bin/env bash
WS_PATH=`pwd`
export GAZEBO_DEMO_PATH=${WS_PATH}
export GAZEBO_DEMO_LD=${WS_PATH}/lib
export GAZEBO_DEMO_BIN=${WS_PATH}/bin
export LD_LIBRARY_PATH=${GAZEBO_DEMO_LD}:${LD_LIBRARY_PATH}
export PATH=${GAZEBO_DEMO_BIN}:${PATH}
export GAZEBO_MODEL_PATH=${WS_PATH}/models:$GAZEBO_MODEL_PATH
各个demo都使用CMake进行编译,在其对应的子目录下都有一个脚本build.sh,用于一键编译。该脚本的内容如下,所作的工作就是创建build子目录,然后进入该子目录中完成编译操作, 最后将编译生成的可执行文件和动态链接库搬运到bin和lib目录下。
#!/usr/bin/env bash
if [ ! -d build ]; then
mkdir build
fi
cd build
cmake ..
make
mv libvelodyne_plugin.so ${GAZEBO_DEMO_LD}
mv vel ${GAZEBO_DEMO_BIN}