/*声明:如果您觉得这篇文章的格式看着很累,那要怪就怪CSDN太挫了,这种下三滥水平的博客编辑器也就CSDN做的出来:在Firefox下,跟本无法设置字体大小,段落格式...以至于每次都要用IE重新打开编辑若干次*/

 

/*二次声明:如果您觉得这篇文章格式看上去很舒服,那就是我很NB:用这么差的编辑器都能写出这么整齐的文章,我也忒NB了不是?*/

 

Linux下有很多好用的软件,但更多的是不好用的软件。比如不好用到跟CSDN的博客有一拼的软件:gazebo。就算我已经对安装过程非常熟练了,但是依然需要一整天的时间来装完它。因为它依赖的包太多。

同Player/Stage一样,Gazebo也是由University of South California开发的。作为一个3D仿真软件,gazebo 0.8 pre-release 版依赖于ODE 以及OGRE 来模拟具有真实世界中的物理参数的物体的运动状态。与之类似的还有由University of Pittsburg开发的USARSim 软件,前者基于开源3D图像引擎OGRE;后者基于游戏引擎Unreal Tournament .

 

安装gazebo需要的dependencies请参考[1]。(并不是全部包的列表)

它要求独立显支持。所以在此之前需要安装显卡的驱动。Nvidia的显卡还要装Cg-toolkit

运行glxinfo |grep render

命令,得到的结果应该为:Yes

 

1. 首先检查系统的内核版本以及gcc和g++版本:

root@ubuntu:~# uname -a
Linux ubuntu 2.6.27-7-generic #1 SMP Fri Oct 24 06:40:41 UTC 2008 x86_64 GNU/Linux
root@ubuntu:~# gcc --version
gcc-4.3.real (Ubuntu 4.3.2-1ubuntu12) 4.3.2
root@ubuntu:~# g++ --version
gcc-4.3.real (Ubuntu 4.3.2-1ubuntu12) 4.3.2
2. 设置环境变量 Environment Variables:
export PATH=/usr/local/bin:$PATH
export CPATH=/usr/local/include:$CPATH
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
3. 安装所需的包

包括:fltk zziplib FreeImage, ois, scons
root@ubuntu:/host# apt-get install libfltk 1.1 -dev libzzip-dev libfreeimage3 libfreeimage-dev libois-dev scons
4. 安装OGRE-1.4.9 及 CEGUI-0.6.2
SVN版的gazebo需要OGRE1.6.*;这里需要的是1.4.9.我用的是Ogre-1.4.9的svn包:

root@ubuntu:/host# svn co https://svn.ogre3d.org/svnroot/ogre/branches/v1-4 ogre
root@ubuntu:/host# cd ogre
root@ubuntu:/host/ogre# ./bootstrap
root@ubuntu:/host/ogre# ./configure

checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
...
checking for Cppunit - version >= 1.10.0... checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for ZZIPLIB... yes
checking X11/Intrinsic.h usability... yes
checking X11/Intrinsic.h presence... yes
checking for X11/Intrinsic.h... yes
checking X11/Xaw/Command.h usability... no checking X11/Xaw/Command.h presence... no checking for X11/Xaw/Command.h... no configure: error: "libxaw headers not found"

configure: error: "libxf86vm headers not found"

如上所述,[1]中没有给全所有的依赖包,所以缺啥装啥:

root@ubuntu:/host# atp-get install libxaw7-dev libxxf86vm1-dev

装完发现没有CEGUI支持。。。

到官网下载
CEGUI(0.6.2)源码包:

http://sourceforge.net/project/downloading.php?groupname=crayzedsgui&filename=CEGUI-0.6.2b.tar.gz&use_mirror=superb-east

解压:
root@ubuntu:/host# tar zxvf CEGUI-0.6.2b.tar.gz
root@ubuntu:/host# cd CEGUI-0.6.2

root@ubuntu:/host/CEGUI-0.6.2# ./bootstrap

root@ubuntu:/host/CEGUI-0.6.2#  ./configure

看来依然需要很多东西:

root@ubuntu:/host/CEGUI-0.6.2# apt-get install libglew1.5-dev libcario-directfb2-dev libgtk-drectfb-dev
root@ubuntu:/host/CEGUI-0.6.2# ./configure

参考[2], 在"/host/CEGUI-0.6.2/RendererModules/directfbRenderer/directfb-render.cpp" 中添加头文件:

root@ubuntu:/host/CEGUI-0.6.2# make && make install

 #include<algorithm>

即可安装通过

继续安装OGRE,幸运的话就没什么问题   -_-!

root@ubuntu:/host/CEGUI-0.6.2# cd ../ogre

root@ubuntu:/host/ogre# ./configure

root@ubuntu:/host/ogre# make

root@ubuntu:/host/ogre# make install

6. 安装ODE-0.11.1

Gazebo 0.8要求ODE的版本高于0.10,所以下载0.11.1版,经测试OK:

下载地址为: http://sourceforge.net/project/downloading.php?group_id=24884&filename=ode-0.11.1.tar.bz2

解压并编译

root@ubuntu:/host/ode-0.11.1# tar jxvf /home/ysong/Desktop/ode-0.11.1.tar.bz2 -C /host/

root@ubuntu:/host/ode-0.11.1# cd ode-0.11.1/

root@ubuntu:/host/ode-0.11.1# sh autogen.sh

root@ubuntu:/host/ode-0.11.1# ./configure

root@ubuntu:/host/ode-0.11.1# make

root@ubuntu:/host/ode-0.11.1# make install

(以前编译经常出问题的,这次好像比较顺利)

7.编译Gazebo源码包:

相比gazebo-0.7.0的一大改进除了OGRE的应用之外就是用了SCONS这么一个python工具(0.7.0用的是wxPython),这个东西还是比autotools好用。有篇对scons的简介[4],写的很明了。详细的介绍参考[5].

root@ubuntu:/host/gazebo-0.8-pre3# scons

(缺啥装啥。原则:先用apt-get或者yum,不行再从源码包装)

root@ubuntu:/host/gazebo-0.8-pre3# apt-get install libxml++2.6-2-dev

 

再次编译时又出现了关于StatusBar.cc中有错;原因还是少引了一个头文件<cstring>:

root@ubuntu:/host/gazebo-0.8-pre3# vim server/gui/StatusBar.cc

添加:

#include <cstring>
然后继续scons

root@ubuntu:/host/gazebo-0.8-pre3# scons

我相信多数人会遇到关于libode.a的错误:

"/usr/local/lib/libode.a: could not read symbols: Bad Value"

这个错误真是太TM经典了!

解决方案:

root@ubuntu:/host/gazebo-0.8-pre3# apt-get install libode0debian1 libode0-dev

root@ubuntu:/host/gazebo-0.8-pre3# cp /usr/lib/libode.a /usr/local/lib/libode.a

(就是从/usr/lib下复制好的libode.a到/usr/local/lib/)

这个错误解决后安装就应该很顺利了:

root@ubuntu:/host/gazebo-0.8-pre3# scons

root@ubuntu:/host/gazebo-0.8-pre3# scons install

root@ubuntu:/host/gazebo-0.8-pre3# gazebo worlds/test.world

 

gazebo_test

 

8. 参考文档:

[1] http://irobotics.org/gazebo08.html

[2] http://www.cegui.org.uk/phpBB2/viewtopic.php?t=3779

[3]  http://www.cegui.org.uk/wiki/index.php/HOWTO:_Obtain_the_library_source_from_subversion

[4] 使用scons软件构建工具

[5] Scons: A Software Construction Tool

 

Logo

更多推荐