张新宇
拉风龟
这是ROS的第6个版本,G版本, 2012年12月发布。
G版本的吉祥物是Groovy Galapagos,一只非常拉风的加拉帕戈斯象龟。长发、墨镜、拖拉板、花裤衩、背着汽车流浪天涯的时尚加拉帕戈斯象龟,我们不妨称其为“拉风象龟”。

这个版本,正式将catkin[1]编译系统引进ROS,希望能替代原有的编译系统rosbuild。
编译系统
编译系统将各种软件包组织在一起,生产一个可执行程序或被其他可执行程序调用的库文件。如果我们记得ROS的设计原则之一是:跨平台和多语言支持,做到这一点非常不易,编译系统起到关键作用。
大家试想一下,你下载了他人的代码,这个代码是C/C++写的,你希望让代码能在Windows下跑起来,这时候,你又发现了一个算法,这个算法是Python写的,你怎么把他们集成在一起。一般情况下,你可能还要下载一些第三方的软件包,放在合适的目录表,还要要考虑是各个软件包是32位的,还是64位的。任何一步,遇到问题,都要费不少功夫,也有可能最终不成功,不得不放弃。
ROS将世界各地,不同人写的代码组织起来,还要支持不同的操作系统,有些代码是C/C++写的,有的是Python写的,有些事Java写的。每个人写的代码又可能用到五花八门的软件包,想想把这些源代码,软件包,各类库文件,生产一个可执行的程序,可真不易啊。
这样的跨平台编译工具不是没有,大家常用的CMake就是常用的一种跨平台的编译工具。
rosbuild的核心也还是CMake。 rosbuild的是由布莱恩·格基(Brian Gerkey)、特洛伊·斯特拉斯海姆(Troy Straszheim)、摩根·奎格利(Morgen Quigley)负责开发的。

图:从左到右,布莱恩·格基(Brian Gerkey)、特洛伊·斯特拉斯海姆(Troy Straszheim)、摩根·奎格利(Morgen Quigley)
布莱恩·格基毕业于南加州大学(Universityof Southen California )。前面说过,Gazebo的两位开发者安德鲁·霍华德(AndrewHoward)和凯特·考尼(NateKoenig)在也在南加州大学工作或学习过。布莱恩·格基,大学期间就热衷于机器人开源软件,他负责开发Player机器人开发环境,在机器人学界的影响力非常大。后来加入车库,并领导ROS的开发,关于布莱恩·格基、Player和ROS团队我们以后再说。

图:特洛伊·斯特拉斯海姆
后来,特洛伊·斯特拉斯海姆与车库的两位资深科学家科特·康诺利格(Kurt Konolige,CTO)和盖里·布拉德斯基(Gary Bradski),还有伊森·鲁布利(Ethan Rublee),史蒂芬·英特托瑟(StefanHinterstoisser)一起创建了Industrial Perception,Inc.(IPI)。后IPI被Google收购,随公司一起加入Google。
rosbuild的初衷还是为车库自己的机器人开发而设计的。对硬件的兼容性,对各种操作系统的兼容性,都考虑的不周全。当时几乎没有特别考虑对MS Windows的兼容性。虽然,丹尼尔·斯托尼(Daniel Stonier),这位澳大利亚人领导一个韩国团队开发了win_ros,随着ros版本的演进,并没有人进一步的维护。rosbuild用了很多Linux特有的脚本命令,Windows下没有相应的命令。随着ROS社群的扩大,各种硬件都希望利用ROS,各种软件包越来越多,编译效率(速度)变得越来越低。在这样一个大背景下,大家期待一个新的编译系统,这样catkin应运而生。
catkin的是由特洛伊·斯特拉斯海姆(Troy Straszheim)、莫腾·谢尔高(Morten Kjaergaard)、布莱恩·格基(Brian Gerkey)、德克·托马斯(Dirk Thomas)负责开发的。特洛伊·斯特拉斯海姆和布莱恩·格基,这两位前面说过,他们参与过rosbuild的开发。
另外两位是莫腾·谢尔高和德克·托马斯。莫腾·谢尔高毕业于丹麦技术大学(TechnicalUniversity of Denmark),获机器人方向博士学位,后加入一家人工智能+医疗的创业公司,任CTO。德克·托马斯毕业于德国达姆施塔特工业大学(Technische UniversitätDarmstadt),加入车库后不久,就随ROS团队,一起加入布莱恩·格基领导的机器人开源基金会(OSRF)。

图:左:莫腾·谢尔高(Morten Kjaergaard),右:德克·托马斯(Dirk Thomas)
除了catkin,G版本的其他改动还有
主要适用于Ubuntu的O/P/Q版本(11.10/12.04 LTS/12.10)。支持C++03,Boost 1.46,Lisp SBCL 1.0.x,Python 2.7,CMake 2.8.3Stack的概念被废弃。Stack包含多个软件包,一个Stack要用到另一个Stack的软件包,必须将那一个Stack都包含进来。通过废弃Stack的概念,指保留软件包的概念,可以让模块的粒度更小。将代码转移到Github。引入图形用户界面工具rqt。开发环境从Wx变为Qt--------------------------------------------------------------------
[1] catkin意为“柳树上结的尾状花序”,源于公司的名称“柳树车库”。“The name catkin comes from thetail-shaped flower cluster found on willow trees -- a reference to WillowGarage where catkin was created. ”
原创文章,作者:afeng135,如若转载,请注明出处:https://www.0755cm.com/657.html