ROS介绍--历史与现状
- 1 资料
- 2 读后整理
- 2.1 此岸与彼岸
- 2.2 柳树街68号
- 2.3 机器人毕业舞会,PR2的缔造者,ROS的起源,ROS被OSRF托管,ROS开发者大会
- 2.4 ROS乌龟的起源,乌龟机器人,乌龟设计师,ROS的名字和乌龟帮,ROS第一只乌龟
- 2.5 ROS导航与hiDOF,ROS之可视化rviz
- 2.6 ROS阿C龟-诺亚方龟,ROS之物体操控manipulation
- 2.7 ROS飞天金刚龟与视觉传感器
- 2.8 ROS之OpenCV,ROS之KDL
- 2.9 ROS乌龟帮,ROS与Windows,ROS之Gazebo,ROS之编译系统,ROS之皆大欢喜(Player与Stage),ROS驱动DARPA挑战赛,ROS之MoveIt!
- 2.10 TurtleBot的故事,TurtleBot背后的女人,TurtleBot背后的男人,TurtleBot的演变,ROS之IPI,秘密项目PlatformBot爱与恨,从非盈利组织OSRF到企业化的OSRC,实习生计划,柳树车库系繁花盛叶
- 3 总结
1 资料
本文资料主要来自《ROS史话36篇》,在古月居连载,这篇文章很好地梳理了ROS乃至机器人产业的发展历史,可以让我们很快了解到ROS和机器人发展的方方面面,包括技术,商业场景等等。
(1)ROS史话36篇
本系列博客汇总:ROS高效入门系列。
2 读后整理
2.1 此岸与彼岸
(1)主要介绍美国东西海岸研究机器人的几个重点大学。文中提到了斯坦福和硅谷,就是下面这片地方。
(2)文中特别提到了世界知名的宾夕法尼亚大学机器人实验室(GRASP:General Robotics, Automation, Sensing and Perception)负责人维杰·古玛(Vijay Kumar)在 TED 的演讲,这里是视频链接:https://www.ted.com/talks/vijay_kumar_robots_that_fly_and_cooperate
2.2 柳树街68号
(1)硅谷有个柳树路(Willow Road),有很多知名公司,而ROS就起源于柳树街68号的“柳树车库”公司。这个公司致力于研发个人服务机器人,而不是传统的工业机器臂,ros就从这里走出来。其实这地方不是车库,是个别墅,但老外喜欢车库创业,改变世界的故事,比如惠普。
2.3 机器人毕业舞会,PR2的缔造者,ROS的起源,ROS被OSRF托管,ROS开发者大会
(1)2010年5月26日,柳树车库研发了一个机器人叫PR2(Personal Robot,个人机器人2代),并把他们送给了全世界11个机器人研究单位。
(2)ROS是PR2项目其中的软件部分,柳树一开始就准备把ros做成开源的,2010年,柳树正式推出ROS1.0。
(3)ROS最初的理念,在论文《ROS: An Open-Source Robot Operating System》中进行了表述:
ROS is not an operating system in the traditional sense of process management and scheduling; rather, it provides a structured communications layer above the host operating systems of a heterogenous compute cluster. (译文:ROS不是传统意义上的操作系统,不是用于进程管理和调度,而是构建在其它操作系统之上的一种结构化的通讯层。)
(4)经过几年发展,柳树一时半会找不到盈利点,因此,2012年柳树车库成立了开源机器人基金会(OpenSource Robotics Foundation,简称OSRF),是一个非盈利机构,通过接受企业捐款运行。自此以后,OSRF接收ROS一切事宜。
(5)2012年5月,OSRF举办第一届ROS开发者大会(ROSCon),在美国明尼苏达州,圣保罗市,此后每年举办一届。ROS之父的摩根·奎格利,做了《ROS的昨天,今天,明天》报告。大卫·鲁(David Lu)介绍了URDF(统一的机器人描述格式),一种特殊的XML文件,用来定义机器人关节间的相对关系和位姿。万·苏坎(Ioan Sucan)介绍了Moveit!,是工业机器人操控的开发平台,后被广泛使用。
2.4 ROS乌龟的起源,乌龟机器人,乌龟设计师,ROS的名字和乌龟帮,ROS第一只乌龟
(1)ros的标志是个小乌龟,turtle,每一版ros,都有一个新乌龟logo。之所以选乌龟,是因为柳树好多人从小就玩一个面向儿童的编程语言LOGO,里面就有一个小乌龟,供人操控。
(2)1948年,美国人瓦尔特制作了一个形似乌龟的机器人,这是人类历史上第一个自主移动的机器人。后来MIT的实验室也搞过一个像乌龟的机器人。于是,乌龟就慢慢成了机器人的代名词了。
(3)ros乌龟的设计师是乔许·埃林森(Josh Ellingson),下面是各个ros版的乌龟。
(4)ROS的全名是机器人操作系统,这个名字其实是有歧义的,其严格来说是个分布式的通信框架,当时柳树也想了好多名字,直到申请了ros.org的域名,于是讨论停止了。
(5)ROS的每一版名称是按照英语字母顺序,取字母表中对应的字母依次命名。第一版ROS叫B ROS,即Box ROS,后面是C,D,E。为了取名,OSRF还成立了ROS取名委员会。这个是ros的版本历史链接:http://wiki.ros.org/Distributions
(6)ROS的第一版Box Turtle完全是为PR2设计的,时间是2010年。打造PR2机器人的那些人,在柳树解体后,创办了远程远程会议替身机器人和酒店服务机器人,以及仓储机器人,码垛机器人等等。这些机器人目前都有不错的应用,而他们都是从ROS衍生出来的。
2.5 ROS导航与hiDOF,ROS之可视化rviz
(1)机器人最重要的能力是自主移动,而自主移动依赖导航。ros的导航软件包作者是埃坦•马德-爱泼斯坦(Eitan Marder-Eppstein)。
(2)导航的目的是让机器人从初始位置A到目标位置B,中间不与周边环境碰撞。实现这个目标需要:路径规划软件,其依赖地图构建软件,其又依赖激光雷达。还需要的传感器包括轮速传感器,IMU惯导,GPU定位等。
(2)ROS导航软件包里有各种常见算法,包括SLAM建图算法,A*和Dijkstra规划算法,AMCL自适应蒙特卡洛定位算法等,可以直接调用。
(3)ros导航软件包作者后来成立了hiDOF机器人自动化软件咨询公司,后来被谷歌收购。
(4)rviz是ros官方的3D可视化仿真工具,支持以可视化的方式显示ros消息,包括各种传感器数据,机器人模型,坐标变换TF等,很强大。
2.6 ROS阿C龟-诺亚方龟,ROS之物体操控manipulation
(1)2010年8月,ros第二个版本C turtle发布,从这里可以看出ros要统治各个机器人领域,包括无人驾驶汽车,而事实上无人驾驶汽车也是一种机器人,也大量使用ros进行开发。
(2)ROS C-turtle版增加了机器人抓取软件包,用来检测物体,用机器手臂进行抓取,包名叫manipulation。下图的二位是这个软件包的作者,凯仁·萧(Kaijen Hsiao)和马泰·乔卡列(Matei Ciocarlie)。从这里出发,衍生出了码垛机器人领域,国内有个星猿哲科技 (XYZ Robotics) 。
2.7 ROS飞天金刚龟与视觉传感器
(1)2011年3月,ros D版本发布,菱背龟(Diamondback),此时已经有很多机器人公司加入ros,提供各自机器人的驱动。
(2)2010年微软推出了带深度相机的XBox,深度相机是Kinect,这个东西后来被各个研究机构使用,ROS也进行了支持,提供这个设备的驱动。下图就是Kinect,中间的摄像头为RGB彩色摄像头,左右两个分别为红外发射器和红外CMOS接收器,从而构成深度传感器,获取深度数据,即可视范围内物体到相机的距离。从这些深度数据,可以计算出3D点云(Point Cloud)。此时ROS加入了点云库(Point Cloud Library, PCL)
(3)PCL是开源的点云处理软件,包括大量与点云相关的算法,包括显示点云数据,滤波,分割,特征提取,配准,重建等等,其在3D点云的地位等于OpenCV在图像处理的地位。PCL也是柳树衍生出来的,作者是莱度·茹苏(Radu B. Rusu),当时点云处理已经在逆向工程里广泛应用了,只是没人开源出来。
2.8 ROS之OpenCV,ROS之KDL
(1)OpenCV(Open SourceComputer Vision Library:http://opencv.org)是C/C++实现的开源计算机图像处理库,作者是盖里·布拉德斯基(Gary Bradski),其在intel工作时开发的,作者还写了著名的《Learning OpenCV》。他搞这个的初衷就是为了不重复造轮子。
(2)ros加之了openCV,改进了易用性,通过vision_opencv的软件包,用户可以方便的在ros使用opencv。包括两部分:一是cv_bridge负责将OpenCV下的图像类型转换为ROS图像消息,二是image_geometry软件包可用来校正图像,将ros接收到的校准参数,送给opencv图像校正函数使用。
(3)ros后来把底层的库拆开,不再统一维护,而由贡献者各自维护,比如KDL,Kinematics-Dynamics Library的缩写,意为“运动学-动力学库”,由欧洲大学的研究人员开发。
2.9 ROS乌龟帮,ROS与Windows,ROS之Gazebo,ROS之编译系统,ROS之皆大欢喜(Player与Stage),ROS驱动DARPA挑战赛,ROS之MoveIt!
(1)ROS各版本名字:Box turtle(箱龟,2010.3),C turtle(阿C龟,2010.8),菱背龟(Diamondback,2011.3),ElectricEmys(鸡血泽龟,2011.8),Fuerte Turtle(大力神龟,2012.4),Groovy Galapagos(加拉帕戈斯象龟,2012.12)(这一版ros引入catkin编译系统,catkin的意思是“柳树上结的尾状花絮“),Hydromedusa(南美蛇颈龟,2013.9),Indigo Igloo(青色冰屋,2014.7)(这一版以后,ROS交给OSRF,成员们开始了全球的机器人创业大潮,中国也遍地开花,时间是2014~2015年),Jade Turtle(翡翠龟,2015.5),Kinetic Kame(动感神龟2016.5),Lunar Loggerhead(登月大头龟,2017.5),Melodic Morenia(优雅的孔雀龟,2018.5)
(2)ROS越来越火了,于是很多window开发人员也想用ROS,而且是在windows上,微软也提供了一些支持,比如WSL(Windows Subsystem for Linux),适用于Windows的ROS1实验版等。但是作为中国开发者,仍然建议在ubuntu上玩ros,且最好是纯ubuntu系统,而不是虚拟机或者wsl。
(3)Gazebo是一个机器人三维仿真软件,可以与ros配套使用,也可以单独使用。其作者是OSRF的创始人之一。Gazebo支持物理元素的仿真,比如重力,摩擦力等,应用非常广泛
(4)ros是一个非常大的软件系统,C,C++,python,把五花八门的软件包组织编译起来,相当麻烦,其编译系统也经过几次更新:rosbuild --> catkin --> ament(ros2),至少前两个是基于cmake实现的。
(5)player用于控制机器人设备和传感器;Stage是一个二维的机器人仿真环境。
(6)2015年,DARPA举办了一届机器人挑战赛,23支进入决赛的队伍,18支使用ros,14支使用Gazebo进行仿真,ros成功了。但是比赛的冠军不是美国的队伍,而是韩国。而中国的中科院合肥和香港大学,要么没进决赛,要么垫底,因此机器人方向,中国人要学的还有很多。
(7)MoveIt源于ROS的机械臂导航软件包arm_navigation,最早是用于PR2上,现已成为工业机器人,机械臂上使用最多的开源操作软件。MoveIt!降低了对ros的依赖,代码复用效率更高。传统的工业机器人是固定的程序,不感知周边环境,而MoveIt可以支持机器人对周围进行建模,并自主规划移动路径,并动态调整,从而实现与人协作。
2.10 TurtleBot的故事,TurtleBot背后的女人,TurtleBot背后的男人,TurtleBot的演变,ROS之IPI,秘密项目PlatformBot爱与恨,从非盈利组织OSRF到企业化的OSRC,实习生计划,柳树车库系繁花盛叶
(1)由于ros是机器人软件,因此学习ros最好有个机器人。ros最开始的PR2太贵了,难以大量推广,因此柳树设计了一个简易机器人平台,使用东拼西凑的硬件,即TurtleBot,软硬件开源。其中计算平台使用华硕笔记本,相机使用微软Kinect深度相机,运动设备使用扫地机器人iRobot Create,于是TurtleBot火了。
(2)TurtleBot是图利·弗特(Tully Foote)和麦罗尼·威瑟(Melonee Wise)发明的。麦罗尼·威瑟(女)(Melonee Wise)是柳树二号员工,多次创业,并领导ROS实习生计划。图利·弗特(Tully Foote)是OSRF ROS开发负责人,热衷无人车比赛,相信他也使用了ros在无人车上,专业是机械工程,机械当自强!
(3)TurtleBot火了以后,有个韩国公司愿意接着搞,于是就有了TurtleBot家族,其中TurtleBot3是最新的。
(4)IPI,即Industrial Perception, Inc.工业感知公司,是柳树孵化的一家码垛机器人公司,面向未来电子商务物流,利用视觉技术辅助货物的装卸,物品分拣,上下物料,后来被谷歌收购。
(5)发明TurtleBot的麦罗尼·威瑟,领导柳树的PlatformBot项目,建造售价10000美元的服务机器人,但是没啥结果。麦罗尼·威瑟后来离开柳树,创办了Fetch Robotics,做一整套的智能仓储机器人,这个领域的最早火的是亚马逊的Kiva,如下图。
(6)2016年,开源基金会OSRF接受了丰田一百万美金的捐助,并与丰田成立以盈利为目的开源机器人公司(OSRC),这听起来有点奇怪。丰田希望OSRC能帮助丰田研究自动驾驶。
(7)柳树和OSRF非常重视扩大ROS影响力,其中一个重要项目就是实习生计划,此后这些人形成了柳树系,对机器人行业产生了重大影响,这些人即使贡献者,也是布道者。
(8)现状柳树车库直接衍生出的公司正在改变着世界,现在ROS已经是事实上的机器人领域的普遍标准,就像unix对于OS,TCP/IP对于网络协议,ros也已是机器人工程师的必备技能了,包括自动驾驶工程师,必须要掌握!
3 总结
虽然《ROS史话36篇》总体结构不是很好,有点碎,但是不妨碍我们通过这篇文章了解ros和机器人发展历史,这些是深入学习ros的重要背景知识,可以形成对机器人行业的大局意识。