粗略的讲,Player/stage/gazebo(简称PSG)是用于多移动机器人研究的仿真平台。Stage/gazebo分别是2D和3D图形的虚拟环境,模拟外部世界和机器人本体及传感器,两者的区别在于gazebo模拟了物体的动力学过程而使仿真更逼真(看起来有点象3D游戏)。Player是运行于stage/gazebo之上的服务器,向客户端的机器人控制程序提供传感器数据、从客户端接受控制命令(数据),优点在于封装了底层机器人硬件上的具体实现,上层控制程序不必分辨被控对象是仿真的还是真实的机器人。
PSG不是商业化的软件,而是个完全开源的项目。其最初由美国南加州理工大学的几个机器人研究者出于方便做实验的目的而开发,在sourceforge上公布后,加入了越来越多的使用者和开发维护者,目前逐渐成为了机器人研究领域中重要的实验平台。
由于PSG运行于基于Linux内核的操作系统中,而且Linux操作系统的发行版本众多,从而使得PSG软件的安装帮助文档难以完善。目前能够获得的帮助只有sourceforge的HTML网页上针对一般Linux系统的安装步骤和散落在mailing list上的某些提示。而这对于工作在某个Linux操作系统上的用户,意味着无尽的噩梦,除非他足够的幸运,幸运到系统预装了所有PSG依赖的基础软件并且版本合适。
毫无疑问,我不是个幸运的人,一台错误的机器和一个错误的操作系统开始了我的噩梦。计算机还是我四年前硕士入学时候的产品,CPU速度与内存容量不是问题,瓶颈在于板上集成的显卡。操作系统是RedHat9,2003年的产品对于飞速变化的开源领域来说已经是老的不能再老的东西了。当然,这些错误都是在一系列碰壁之后才逐渐意识到的,学习的过程要付出代价。开始的时候,我是兴冲冲的计划在一周内搞定,这其中预算了我学习RedHat9的时间。
RedHat9适合入门的学习者,易于安装配置,类似windows。但是在软件包管理与升级方面,让使用者非常头痛,系统常常变得一团糟,尤其是在升级基础支撑软件库的时候。但最糟糕的还是redhat9已经失去技术支持,编译器工具、libc、gtk均已过时。安装Player所需的gsl,安装gazebo所需的SWIG、wxPython等均要从源码编译安装,而这些支撑软件的安装又会引起版本依赖问题。用焦头烂额形容我当时的状况是非常恰当的。费尽九牛二虎之力最终搞定Gazebo的安装,但集成显卡让Gazebo的3D图形显示性能极度的低下;而且安装stage所需的图形库gtk版本要在2.4之上,但RedHat9只提供gtk2.2,无法通过编译。这无异于晴天霹雳,意味着所有以前的工作in vain。
经过一番思量,决定放弃Redhat9,转向新的Linux系统。Fedora Core是RedHat9的后继,但RedHat9上的痛苦经历让我对FC没有产生一丝好感,即使我没有使用的经历。于是,Debian进入我的视线。
Debian是相对著名的GNU/Linux发行版中唯一的非商业组织的产品。软件包的管理和升级极其方便,在可访问Internet的计算机上安装base system后再使用APT命令集就可订制自己的系统环境,运行效率绝非windows和redhat9可比;况且目前的稳定版本Sarge r4有15000多个软件包可用,庞大的软件库总是最具吸引力,省去许多从源码安装的繁琐。当然缺点同在,在不能访问网络的计算机上安装Debian将意味着要预先在其他机器上下载两张DVD光盘(当然如果不装特别的软件、开发包和文档,第一张CD就足够)。我用jigdo软件花费了4天3夜,因为连接国外Debian镜像站点速度较慢,约40-50k/s(国内镜像连接速度较快,但维护较差,未与国外镜像的更新保持同步),正如某位仁兄所说,下载全部Debian是个痛苦的过程。
不过,但凡痛苦总有终点,先苦后甜是有理的。在实验室的机器上安装Debian Sarge r4是如此的顺利,5分钟完成base system,一白天时间学习系统配置和软件包安装、卸载和查询,安装完成X-window、gnome桌面并安装显卡驱动。唯一的遗憾是,中文化的Debian无论如何美化都不如英文的操作系统看着舒服,干脆把英文作为default,不安装中文输入法,反正在Linux上做的事情与中文无关。
在家里进行了Debian上安装PSG的第一次试验,耗费了一天多的时间。这因为我事先没有意识到定制的Debian系统缺少一些编译所需的基础工具和某些支撑软件,而且不知道对于某些已经安装的预编译的支撑库,其头文件作为独立的deb包没有被安装。在configure Player时所提示的结果让我逐渐明白这一点,通过一步步小心翼翼的尝试,正确的方法逐渐明朗,令我兴奋的是所需的软件包在Debian中均有提供,使我免除版本依赖的烦恼。Player和Stage都容易编译安装,Gazebo让我遭遇新的麻烦。Debian有Gazebo所需的第三方软件(libxml2、swig、wxPython、lib3ds、proj、gdal、ode),按照前面安装Player的经验直接利用这些预编译的软件后,很顺利的通过Gazebo的配置和编译过程。但是,在命令行兴奋的键入wxgazebo *.world后,得到的却是“段错误”的提示,我那心哪是拔凉拔凉的啊。这是毫无征兆的错误,顺利完成编译让我更是对这个运行时的错误疑惑不解。
一觉醒来,我躺在床上想是否是因为Debian提供的某个第三方包与开发Gazebo时所用的包在版本上不一致而使得在运行时产生某种内存错误。决定去实验室那个“尚未污染”的系统做第二次安装试验,如果再次失败,就放弃Gazebo这个3D仿真环境,至少2D的可以用。
1小时安装好PS,样例控制程序可用。向师兄做完演示后已临近饭时,剩下20分钟到12点,临时决定草草的试试早晨的想法。插上U盘,copy出lib3ds、proj、ode和gdal的源码包,逐个解压缩。看着飞速的刷屏,不知道最终等待的是成功还是失败。逐个编译安装这四个软件,没有报错,cd gazebo-0.7.0、configure & make install,没有报错。空白的大脑指挥着僵硬的手指输入wxgazebo命令,enter的一刹那,Oh My God!中午可以吃一顿好饭了。 恩赐的幸运终于降临,匆匆的半个小时让结果赋有戏剧性,虽然我尚未学会使用PSG,但这安装成功是在国内外尚无人明确公布Debian上PSG安装步骤的情况下完成,足以让我兴奋一阵。不过,永远别高兴太早,总会有新问题等着去解决。Move on and see what’s ahead waiting for me…………..