导读:
7月26日,地平线「你好,开发者」智能机器人技术专场在智东西公开课顺利完结直播。专场由地平线机器人事业部生态负责人胡春旭主讲,主题为《打造智能机器人开发新范式》。
本文是此次专场主讲环节的实录整理。如果对直播回放以及Q&A有需求,可以点击阅读原文前去观看。
大家好,欢迎来到今晚的直播,我是来自地平线机器人事业部生态负责人胡春旭,也是ROS机器人社区古月居创始人。很高兴有这样一个时间,跟大家一起通过直播的方式分享一些我们最近在做的事情,以及聊一聊大家所关心的机器人开发的一些问题。今天我要分享的主题是《打造智能机器人开发新范式》。刚好昨天我们也在深圳举办了一个线下的开发者创享日,所以我今天所讲的内容有一部分是跟昨天发布会上面讲的是类似的,也会新增加一些其他方向更细的内容。稍后大家如果有相关的问题,我们也可以进行更加充分地交流。首先会跟大家一起来分享一下,从我的视角所看到的智能机器人开发的现状跟挑战。第二点是针对以上这些问题,从我们地平线所做的一些硬件、软件及工具,怎么样去解决以上的这些问题,让大家能够更加简单、快速的去开发机器人。之后会陆续给大家介绍我们的RDK套件,TogetheROS™.Bot机器人操作系统,以及NodeHub开源机器人应用中心。先进入到第一个部分。在过去的十几二十年当中,机器人进入到了一个快速发展时期。我会把从机器人诞生开始到现在七八十年的时间,大概会分成三个核心阶段。这三个阶段可以帮助我们更好地理解整个机器人发展的脉络。大家看到(PPT)最左边,是从20世纪60、70年代第一款机器人出现,当时是以机械臂为主的一种形态。它主要用在工厂里面替代部分工人完成一些复杂的工作。这样更多的是用示教器去完成机器人从点到点的示教过程,并且让机器人去完成对应的工作。这个时期的机器人基本上没有具备什么智能化,更多的是处于一个电气时代,更像是一个机器,人让他干什么,它就干什么。这个时代我们把它称为机器人的电气时代。第二个阶段是数字时代。这个阶段基本上是在2000年之后,更多的工业机器人会出现在工厂里面。这个时候因为有人的存在,所以需要机器人通过传感器去感知周边的环境,也需要通过相机去知道每个物料具体型号是什么,该去送去什么地方。这个时期的机器人具备了局部智能,尤其是加入了一些相机等外部传感器。这个时期的机器人虽然具备了一定的智能化,但总体来讲,还是没有像我们所讲的智能化那么自主,没有很强的思考能力,更多的还是需要人工预先去完成一些视觉识别功能的编程,再让机器人去完成对应的工作。随着整个人工智能技术发展,大家可以看到,从2015年之后,大量的智能化算法出现。这些智能化算法一个很好的落地场景就是机器人。因为机器人是非常普及或者未来会非常普及,并且能够适应非常多面的设备载体,所以大量的智能化算法会跟机器人去做结合。随着整个智能算法的发展,尤其像今年各种大模型算法的发展,更多的智能机器人出现在我们身边。现在我们所处的一个时代,可以称之为是机器人的智能时代。这样的时代当中,机器人之间可以互通互联,而且能够跟人有更好的融合,机器人的形态也有更多的变化。比如说今年比较火的人形机器人,以及过去的四足机器人、轮式的、机械臂等等,都会出现在这个时代。这个时代的机器人种类会更加丰富,它们都会一起去服务于我们的生活。所以,机器人产生的这70、80年间,通过这样的三个阶段,机器人正在进入智能时代,并且快速发展。在这一路的发展过程当中,机器人开发也会遇到非常多的艰难险阻。直播间的各位小伙伴肯定有很多跟我一样,本身也是一位机器人开发者或机器人开发工程师。大家在做自己的机器人的过程当中,肯定会遇到很多问题,因为机器人本身就是一个非常复杂的系统工程,里面从硬件,到软件,到调试,再到网络等等非常多的问题。所以在这样的开发过程当中,怎么样去尽量让开发变得简单,让大家更好的去互相协同工作呢?大家一定在之前所做的开发当中碰到或者听说过机器人操作系统 (Robot Operating System,ROS)。说起ROS的诞生,我觉得在过去的十几年,对于整个机器人行业的发展是有非常重要作用的。因为在ROS正式出现之前,更多的开发者在去做机器人的时候,几乎很少有协作。这个协作更多的是指跨区域的,比如说跨国家,跨很大的区域的协作。这时候每个小团队去做机器人,可能都要从零开始去设计机器人,去开发底层的电路板,去写底层的程序,然后一步步去往上去搭,之后去选控制器,对控制器里面的Linux、Windows系统去做底层的编程,再去开发应用等等。需要一步步的去把机器人攒出来,不断的去重复造轮子。一个行业的快速发展一定离不开它从硬件到软件的标准化,去减少重复造轮子,才能让这个行业快速发展。所以我觉得过去十几年ROS起到了一个非常重要的作用。大概十年前,2011年左右的时间,我第一次接触了ROS,就非常吸引我。吸引我的一点就是,它的核心目标是提高机器人中的软件复用率。也就是说我做的软件分享给你,你也可以用。比如说导航功能,里面有SLAM,有路径规划,有避障。这样的功能,可能很难由一个人或者一个组织完全去把它cover掉,去开发出来。我们可以很多人一起来协同,甚至是跨国家、跨区域、跨组织。让机器人软件不断复用的机制,也促使ROS在过去十几年有了很快速地发展。这个发展过程跟整个机器人行业的快速发展是分不开的。所以,在做机器人开发的时候减少重复造轮子,才能让开发过程更加简单。大家看到PPT下面这几张图,也是ROS这个组织最早做的一款服务机器人,叫做PR(personal robot),是第二代PR2。这款机器人的核心目标是想去打造一款通用的服务型机器人,可以在家里面帮你收拾家,比如叠毛巾、叠衣服、洗碗,甚至帮你做饭、剪头发等等。对于这款机器人,他们当时做了非常多的探索,但是很不巧的一点是十几年前很多技术还没有完全成熟,大量硬件的成本还很难压下去,所以这样一个几百万的机器人,基本上不太可能有人去买它。虽然,从产品层面来讲,这款机器人并没有做到普及,但整个思路是做一款通用机器人,为了让它的软件尽量通用。ROS诞生于这款机器人,在2010年之后就独自开源,可以让更多开发者来开发除了PR2机型之外的更多机器人,让更多种类的机器人减少了重复造轮子的过程。上面可以简单地看到ROS在过去十几年的发展历程。这个历程对我在过去十几年开发机器人,是有蛮大启发的,尤其是在它的起点。它的起点其实很早,是在2007年,诞生于斯坦福(STAIR项目Morgan Quigley)。他们想去做一款类似于刚才我们所看到的通用服务机器人,当时也认识到了这个事情是非常复杂的。那怎么样能够联合更多人一起来开发一款通用机器人呢?前提是要有通用的硬件和软件,大家在此之上一起来开发各种应用,各种应用汇总到一起之后,机器人的整个生态才能够做起来。就像我们手机里面的应用商城一样,只要手机都是安卓或者iOS,我写的程序你可以运行,你写的程序他也可以运行,这样整个功能才能够越滚越多。这个思路对之后ROS生态建设起到了非常重要的作用。
2008年,Willow Garage公司接手以ROS为核心的PR2机器人开发。后面到2010年正式发布,ROS正式开源,让更多人可以基于ROS这个标准化的软件平台来开发机器人。2011年,他们官方发布了一款相对廉价的机器人TurtleBot。毕竟之前发布的PR2太贵了大部分人用不了,也没办法去体验ROS。所以,他们发布了这款大概几千块钱的机器人,大家都可以基于它去开发智能化机器人功能。在2011年那个时间点,智能机器人(发展)还是比较早期的,所以这样一款机器人当时也成为了ROS整个生态里面的爆款,卖的非常多。很多人也是基于这款机器人认识了ROS。大家可以在现在ROS生态里面看到很多的案例,也都是以TurtleBot为例分享出来的。2012年之后ROS开发者越来越多了,ROS官方也组织了一个开发者大会ROScon,当时可能是第一届,人还不是很多,大概有几十个人参加。之后每年都会举办相应的活动,人数也越来越多。2013年的时候,Willow Garage这家公司,其实也是一家很伟大的公司,当时可能因为经营不善,团队解散了。解散之后,最早的一批创始人去创建了开源机器人基金会(Open Source Robotics Foundation,简称OSRF),继续维持ROS的运营。之后,伴随着整个机器人的快速发展,ROS也进入了一个发展的黄金期。2014年,ROS正式发布了第一个相对是比较稳定的版本。在2014年之前,大家用ROS的话会很费劲,因为它每半年会换一次,各种API和函数会变来变去,很难很快速去做迁移。2014年这个局面正式改变了。2014年之后每个支持版支持五年时间。大家基于每个版本开发机器人,至少在五年之内不用太担心它的API会有什么变化,功能会有一些很大的问题,因为它都会去持续维护。后面的版本的迭代过程,虽然每两年的长期支持版会有变化,但是每个版本基本的API变化也不大,版本之间的切换也会更加顺滑。一直到2020年,我们所熟知的ROS整个主线已经发布到第一代的最后一个版本——ROS Noetic。这个版本的长期支持时间是到2025年,也就代表着到2025年,ROS第一代将停止维护,后面也没有再写新的版本了。那未来我们用什么呢?ROS应该很早就发现了这个问题,也是很多开发者在呼吁的一个问题。在这个时间轴里面,给我最大的一个启发点是:回到整个时间轴的起点,他们本身想做的事就是开发一个像PR的家庭服务机器人。基于这样的目标,它设计的ROS本身就有很多局限性,从性能、网络、应用功能的丰富性等等各个方面。这些局限性导致ROS软件本身就有很多问题,在后面ROS被越来越多继承使用过程当中,这些问题也就暴露的越来越多。所以在2014年这个时间点,很多人在呼吁,有没有可能真的去设计一款机器人的OS,让它能够去适应更多机器人种类。比如说移动的、飞的、水里游的,它都可以去适配。同年在ROS开发者大会上面,ROS官方正式公布了ROS2的计划——ROS的第二代。ROS第二代能够尽量多的兼容更多机器人范畴,所有机器人都能有一个统一的OS。2017年ROS 2.0第一个版本正式发布了。到今天为止,ROS 2.0版本也在很快速迭代。最新的是去年发布的第一个ROS2的长期支持版本,也是一个ROS2的稳定版本——ROS2 Humble。刚才我们提到了2025年ROS1会停止维护,之后大家肯定要迁移到ROS2版本上面去,未来我们也会在ROS2主线上面继续开发机器人。这就是ROS过去十几年的故事。从这个故事当中,大家会对机器人的开发有一些新的感悟。刚才我们提到,ROS最早期的核心目标是提高机器人界的软件复用率。为了这样的一个核心目标,它有一些特点。这是ROS官网上面所列出的一共是八个核心特点,我就不去一一展开详述了,挑几个重点介绍一下。第一个是全球化的社区。也就代表着ROS整个社区里面有大量的包括国内的、国外的工程师在贡献代码。这些代码全部都是开源在社区里面的,而且开源许可证是比较宽松的。你可以下载来用没问题,去改没问题,甚至直接做商用也没问题,没有任何版权纠纷。所以,这也让ROS的社区里面的很多功能被大量的创业公司复用,他们整个产品的上市时间就更短了。因为可以站在巨人肩膀之上,再往前去做探索,这个过程节省了大家很多的时间。这就是ROS的一些核心特点,这里面提到了(ROS)是100%开源的。大家在现在这个阶段,看到ROS用于的机器人的种类非常非常多。PPT里我们只列出了一小部分,有物流的,有机械臂打磨的,有室外探索的,甚至有一款美国NASA做的宇航机器人是运行在外太空帮助宇宙飞船修复外部的天线。所以,在我看来,过去十几年智能机器人的整个发展,跟ROS这样一套标准化软件框架是离不开的。当然,这里我们必须要认真地看这样一个问题。因为,我个人是从2011年接触了ROS之后,一直在用ROS开发移动机器人和机械臂等一些产品,从小到大基本上都有事故。在这个过程当中,也在不断思考ROS是不是真的能够帮我们解决机器人开发的所有问题?当然不是的,机器人开发这件事情本身也很复杂,ROS也存在很多的问题。ROS2是2014年正式发出的概念,2017年是第一个版本,2017年到现也过去了六年时间才有第一个正式的稳定版本。针对机器人开发能够有一个真正标准化的底层系统,这件事情本身就是很困难的,还在不断探索当中。目前ROS在智能机器人开发当中的挑战,我总结了几点,也是我个人在过去开发机器人中很明确遇到的一些问题。第一点,ROS在它的整个社区当中,相对比较欠缺的是一些比较智能化的功能。在ROS当中,比如像SLAM、Navigation、MoveIt、TF、RVIZ、Gazebo等等。这些功能更多的是解决机器人的运动规划、基本的仿真、可视化的功能等。但比如说基于视觉的感知、目标物体的识别等相关功能也有一些,但真正做的比较好的功能在整个社区里面还是比较少的。而且也没有相应的ROS的标准工具、工具链来支持这些智能化功能跟机器人去更好的结合。所以,我觉得面向未来的机器人的智能化是非常重要的。那么,智能化怎么样跟机器人各种各样的功能做结合?比如视觉算法怎么样跟Navigation框架去做结合?这在目前是很难落实的,我们只能自己去想办法来实现。这也是目前智能化在ROS当中的一个问题。第二点是ROS的代码。刚才我们提到ROS里面大量的代码都是开源贡献的,开发者可以在Repository当中去贡献自己的代码,但这些代码有个很大的问题在于没有经过很严谨审核。ROS分成很多的社区的层面,比如说ROS的核心,大家在ROS安装的时候会安装到一个叫做roscore的功能包集,里面会有很多功能,这些功能主要是支持底层通讯的。比如说在ROS1里面基于TCP/UDP通讯,主要是点对点的发布、订阅,这些机制是ROS核心包所包含的。在roscore当中还包括机器人TF坐标变换、Service、命令行等等这样的一些ROS核心工具。这部分功能主要是由ROS官方在维护的,所以它的质量相对是比较高的。再往上一层,是基于这些核心工具做的很多的功能,比如说Navigation、SLAM、MoveIt。这些功能更多的是依赖外部的大公司来做支持的,比如说Navigation之前是的三星跟Intel一起来支持的功能。这些功能因为是大公司支持,所以相对做的还是比较好的,大家在ROS里面用起来,至少能让你的机器人很快跑起来,当然后面也是要去做很多优化。除此之外,大量的ROS社区里面的代码都是很多第三方开发者跟工程师爱好者来贡献的。这些代码的质量就良莠不齐了,大家有兴趣可以去看一下,这些代码有写的好的,也有写的差的。可以通过看它的源代码是可以很清晰的去发现里面一些问题的。这些代码的良莠不齐,导致如果要基于ROS开发一款机器人的话,这个机器人里面的功能就很不稳定,所以必须要对这些功能做魔改优化。大家很多都是工程师,都可以理解,如果你去改别人的代码,跟你自己重新写一个代码的复杂度有可能是差不多。所以,大家很多时候在用ROS开发集成产品时,会发现大量代码复用,也包括刚才我们所提到的Navigation、SLAM等等。尽管是一些大公司所提供的开源代码,但里面依然会有针对我的每个产品去做优化、剪裁的过程。这个过程其实也是非常痛苦的。第三点是在ROS当中没有太多自动化的测试工具。ROS里面本身有集成的谷歌的一套测试框架gtest。这个测试框架更多的是单元测试,每个功能包里面的函数功能是能够通过这个框架来测试的。但是它缺少一些比较偏整体系统层面的测试,就是缺少整个机器人的完整功能的运行效果、成功率、覆盖率等等的测试,还得需要用很多第三方工具来做支持。所以当我们去开发一个很复杂的机器人时候,这些工具都是必须的。第四点是硬件的兼容。ROS主要是一套软件框架,好的地方在于它可以很快在X86、 ARM等所有的平台里面跑起来,也能够很快的安装上去。但是,不好的地方在于它很难发挥每一个硬件的性能。比如说放在ARM里面,一些AI的算法很难跑的很好。放在X86里面,虽然资源足够多,但是在很多机器人产品里面功耗很高,很难做优化。所以,硬件软件的结合是机器本身在未来开发,尤其是产品开发当中的一个很重要的问题,这个问题却在ROS里面并没有很好解决。第五点是机器人应用没有标准化的设计、部署、管理、运维方法或工具。大家如果是在学校里面做机器人研发和学术开发的话,可能没有太多的这方面的需求。但如果是要做产品的话,这个就非常重要了。怎样从需求分析开始,到整个机身的系统设计,到里面的每一步的实现,再到实现之后的整个闭环的测试,测试之后投放到场景里运行,运行之后产生大量的数据会回灌回来。整个这套数据的管理,包括到后面机器人功能不断迭代、版本不断更新,就像手机一样,隔段时间发一个推送需要去升级系统。这些工具在ROS里面也都是没有的。所以真正让ROS去完成更多面向未来智能机器人产品的开发,其实还是充满挑战的。当然核心原因还是机器人开发本身就非常复杂。第一个,需要有一个好的硬件平台。因为机器人毕竟是一个实体,肯定是有看得见、摸得着的一些部分的。第二个,在这些实体里面需要开发大的软件和大的功能,所以需要一个开发平台。刚才所讲到的ROS更多是位于开发平台层面的软件框架。第三个,我们还需要一群专门做机器人开发的开发者。开发机器人的工程师是产生机器人的一个核心力量,也是非常重要的。这三个方面也是我们地平线一直在关注的,是让机器人更好用、更简单、更易用的三个核心方向。所以,回到整个机器人开发流程来看,要去真的把机器人的整个开发从起始到终点的流程全部分析清楚,再去剖析里面每个部分能不能做的更简单、更易用、更标准化。这是打造一个标准化的机器人开发的软件平台必须要去深入和分析的事情。这一页的内容比较多,字也比较小,大家可以简单看一下。这里面是有一天我偶然在想这件事的时候,坐在电脑前按照个人经验,把一款机器人开发的全部流程梳理了出来。从第一步产生需求,到需求分析之后得到一个方案,再到后面去落实这个机器人的方案。比如说要建模,要仿真,要把硬件攒出来,把软件应用开发出来。是自己做硬件呢?还是外部采购硬件呢?每个环节涉及到细节非常多。虽然这里看似很细,但里面的非常多细节并没有完全展开,还有很多分支会出现,所以机器人开发这件事情本身就是非常复杂的。针对这样一件非常复杂的事情,怎么做到尽量标准化呢?过去十几年ROS一直在探索,并且ROS在过去的十几年也取得了非常大的成就。但是,面向未来的智能机器人发展还是需要更进一步,让它能够做的更扎实、更标准化。所以对于我们来讲,更希望能够开发一套机器人的标准化平台,核心就是让机器人的开发更加简单。当然,刚才我们提到了,机器人开发这件事本身是非常复杂的,怎么样让这件复杂的事情抽丝剥茧, 变得更加简单呢?这就是我们现在所做的事情。接下来跟大家一起分享一下,为了实现这样的目标,我们所做的软件硬件相应的工作有哪些。第一个问题,要做机器人一定是有需求的。这个机器人是解决什么问题的?这个问题解决的效果如何?这就是机器人开发的目标。第二个,当目标确定了,怎么样把机器人攒出来?需要去搭建硬件,需要去买底盘,去搭建上面的传感器和控制器。也有可能是从零把这个机器人给攒出来。怎么样把机器人的硬件一步步拼成你要的机器人形态?这是第二个问题。第三个问题是有了硬件之后,怎么样赋予它灵魂?怎样通过软件开发去完成各种各样的功能?比如说感知、规控、跟人的交互等等非常多的功能。这部分可以用ROS,也可以自己去写代码,也可以用嵌入式开发。这就是机器人开发里面的三大核心问题。怎么样让机器人开发更加简单呢?这三个问题就是我们要去攻破的三个核心点。我们先来看一下“用什么”,可能相对更直观一些,因为是比较偏硬件的。通过硬件把机器人攒出来的过程,就是“用什么”。大家在开发机器人的时候,会用到什么样的控制器、传感器、执行器。有没有一些更好用的机器人开发套件,把机器人很快攒出来呢?大家可能用的比较多的控制器是笔记本电脑、mini PC、嵌入式开发板等等。这些硬件绝大部分都是一些通用计算平台,大部分都不是为机器人专门定制的。我们认为,机器人开发的硬件层面,应该有专门针对机器人开发所定义的套件。有没有更好用的机器人开发者套件呢?这也是我们想给大家的第一个答案,我们所推出的RDK(Horizon Robotics Developer Kit)是更好用的一整套的开发套件。大家可以看到,这是从去年6月份到未来,我们想推出一系列开发套件,希望通过一系列不同算力、不同接口的硬件,满足大家在不同的场景之下的机器人开发需求。第一个是去年6月正式发布的,叫做旭日X3派开发板。去年6月上市之后,很多开发者已经在用它开发各种各样的机器人了。今年我们把这套开发套件的概念升级为了RDK概念。所以我们也希望后续能够推出一系列RDK的硬件,供大家做选择。旭日X3派也在今年正式升级成为了RDK X3。它具备4核的CPU以及5 Tops的算力,内存可选2G或4G,现在就可以在所有的电商平台里面买到。今年上半年,我们还发布了RDK X3 Module。从名字上可以看到,它跟刚才的X3前半部分名字是一样的,都是同一款芯片,算力的性能是一样的,CPU以及里面的BPU的算力性能是一致的。但在接口层面有很大的区别,X3 Module是一个核心的模组,有更高的集成度,对于设计面向消费场景的机器人产品会更合适一些。左边两个是我们在过去一年当中正式推出,并且很多开发者已经在使用的套件。昨天我们在创享日上正式发布了今年全新的两款硬件套件,一个是RDK X3 v2.0版本,针对v1.0进行了进一步升级;另外我们还会发布一款RDK Ultra,是一个更高算力、更高性能的开发套件,能够满足高性能应用的开发。明年我们预计还会发布一款RDK X5,让更多普及的机器人能够具备更高智能化。这就是整个RDK系列产品的RoadMap,大家可以去了解一下。刚才我提到了,我们在去年的6月就发布了旭日X3派开发板。过去一年我们在不断打磨锤炼它,不断接纳更多开发者的反馈。在过去一年,将近2万名开发者进入到地平线的开发者社区,在社区里在提问、使用、分享。我们也收到了在社区和微信群里面来自2万开发者将近6000条问题。这些问题并没有回答之后就解决了,更多的是会把这些问题进行进一步的筛选,看哪些问题是真的跟硬件产品相关的。通过大家反馈这些问题,回到我们的硬件、软件的迭代里面,让整个软硬件功能更好用。过去一年也在不断更新迭代,大概有迭代20个以上的版本,今年也正式升级成为RDK这个新概念。RDK X3在今年正式升级为了RDK X3 v2.0。v2.0进行了硬件层面的性能升级,大家看到左边几个主要升级的点:1)CPU的主频层面,之前X3派是1.2G赫兹的频率,v2.0全新升级到了4核CPU 1.5G赫兹,另外也增加了双频Wi-Fi。这样可以让整个计算跟网络通讯的性能更加流畅。2)另外我们看到,还有很多比较资深的开发者会进入到更底层的软件去做驱动开发。我们今年也把基于RDK X3之上的一套Linux底层系统全部开源了。大家如果有相应的能力,可以基于这套开源的Linux去开发一些更为复杂的外设驱动。3)在过去一年,我们也在跟很多合作伙伴一起来打造更多的外设配件,让这款X3的核心能够接入更多外部的相机、雷达、屏幕等等,让大家能够很快的把机器人攒起来。同时,我们又推出了RDK X3 Module核心版。它可以满足更高集成度的机器人产品的定制,在Wi-Fi、RAM以及板载的存储层面有更灵活的选择。RDK X3 v2.0套件昨天(7月25日)已经正式上线了。2G版本是499元,4G版本是549元,价格跟去年6月发布的时候是完全没有变化的。今年是在硬件上面做了很大升级,加量不加价,大家可以去体验。同时,大家看到我们有很多的机器人套件、配件,在过去一年当中也不断出现。过去一年我们跟各种合作伙伴去做的一共有20种以上的机器人套件,以及50种以上的配件,这里面只是一部分。机器人就涵盖了轮式的包括麦克纳姆轮的、履带的,机械臂,以及各种各样不同的形态,还有一些配件,传感器、相机等等很多东西。希望基于RDK和这些配件,大家能够可以很快把一个机器人给攒起来,并且让这个过程更加流畅。这也是过去一年我们在不断去迭代的一个很重要的部分,也非常感谢跟我们一起在过去一年做这件事情的开发者跟一些合作伙伴。我们也看到了很多开发者有高性能应用开发的需求,所以正式推出了一款高性能大算力的机器人的开发套件——RDK Ultra。既然是Ultra,这个名字就把算力给拉起来了。在整个核心的SoC上算力是8核CPU以及96 Tops的算力,能够满足更复杂的应用功能。同时出厂也配置了很多官方直接适配好的高算力算法,比如说BEV、双目深度检测、基于3D雷达的目标检测等等。所有的功能都是开源开放的,大家可以用RDK Ultra进行更复杂的机器人开发。这款套件也兼容了Jetson接口,所以Jetson的一些外围相机、外围传感器,以及引脚引出来的各种配件,都可以在Ultra里面继续使用。我们也希望通过这样的一个更高算力、更高性能的套件,让大家在开发高性能机器人的时候有更好的选择。这个套件正式发货时间是9月1日,现在已经开启预售了,大家可以在以下渠道去购买这个套件。完整套件版本里面包含了核心板、载板、一些保护的底板、风扇,还预装了一个相机,以及一些基本的配件。完整套件版本的价格是4999元。另外,我们还有一个Module核心模组版,价格是3299元。大家如果基于这个模组版去开发机器人,可以去选择里面的核心板。我们希望能够通过RDK X3 v2.0以及RDK Ultra这两款机器人核心开发套件,让大家快速把机器人的核心组件搭建起来。同时,还有很多的配件和传感器,能够很快的把机器人给攒起来。深度优化的机器人操作系统
TogetheROS™️.Bot
这就是刚才所讲到的“用什么”来做这样的机型,更多的是偏硬件层面的。经过千辛万苦,终于把一个机器人给攒起来了。那下一步怎么样通过软件来开发机器人各种各样的功能呢?可以用ROS开发,开发的过程中可以发现它的稳定性、实用性等有很多问题。有没有一个更好用的机器人操作系统呢?在去年的6月,大家如果有关注过RDK X3,应该会看到我们在六月份是推出了TogetheROS。系统是兼容ROS的,并且解决了ROS很多问题,希望能够把它打造成一个更好用的机器人OS。今年我们不断迭代更新,也正式推出了2.0。接下来,通过这个短片来认识一下我们所打造TogetheROS™.Bot机器人操作系统。刚才是一个相对比较完整的针对TogetheROS™.Bot系统的视频介绍。系统简称是TROS.B。希望通过这样的系统,让大家在开发机器人软件的过程中能更加顺畅。首先是开源开放的。TROS.B系统本身,以及里面开发的算法和应用软件全部是开源的,同时能够兼容ROS2。大家可以在用ROS的过程当中,跟TROS.B一起做通讯和功能的实现,也可以对里面的源代码做修改,做二次开发。
这些软件里面,很多都已经适配了一些常用的外部传感器。我们在TROS.B当中针对很多传感器是做了一些深入优化的,比如说一些RGB-D、IMU、相机,能够做到更好的时间戳同步效果,也能够做到更好的数据传输效果,当然这也是跟外界的一些硬件型号有关系的。如果用的都不是我们适配过的型号也没有任何问题,一样可以通过ROS,通过一些功能包,可以很快的跑起来。在配件层面,我们做了很多常见的外设配件兼容性的优化。第三个是软硬协同。我们认为未来的机器人一定是软硬协同能够充分发挥完整功能的一套系统,所以在TROS.B当中针对智能芯片进行了更加底层的优化。比如说针对ROS通讯的问题,结合硬件进行了通讯实时性的保障,降低了很多资源消耗。比如说发布者、订阅者占用CPU的资源,在我们这套系统里面有更好的一个优化。第四个是有大量的算法做集成,比如说VIO、SLAM、语音交互、3D感知等等。这些算法都是以开源开放的方式在TROS.B里面集成的。大家可以用TROS.B把这些功能很快的跑起来。这些算法,很多都是来源于之前商业上的一些功能,做了ROS的封装,运行的效果要比ROS里面的很多的开源算法好很多。大家也可以去体验一下。下面是整个TROS.B的框架图。基于刚才我们所展示的RDK这些开发者套件硬件,在此上去运行TROS.B这套软件,里面有算法应用、通讯中间件、算法仓库。另外也提供了很多开发的工具,帮助大家一起把机器人很快的跑起来。这是我们在过去一年当中增加的算法应用,大概又新增了20种以上的算法,包含了BEV这样的高算力的应用,可以运行在RDK Ultra套件里面。另外还有一些VIO 、32线雷达目标检测、双目深度检测、垃圾检测、深度学习视觉巡线等等。这些功能都是在过去一年不断沉淀和打磨出来的,整体的运行效果都会有一个更好的体现。大家现在也可以在TROS.B当中去下载,并且去使用它。
怎么样下载拿到这些应用的算法呢?一种方式大家可以直接在RDK里面安装好TROS.B,并且通过apt install的方式安装刚才看到的所有功能。另外如果想去做二次开发,也可以下载代码的源码。刚才展示的一些工程的源码,以及过去TROS.B核心的源码,现在都已经搬运到了github上(http://github.com/HorizonRDK)。大家可以在这样的链接里面,看到所有的代码仓库里的代码全都是开源的,可以进行进一步二次开发。对应到手册里面,有针对这些源码编译的过程、编译的方法、以及经常遇到的一些问题的解决方式。有兴趣的同学可以来试一试。
为了让整个机器人开发更简单,我们打造了偏硬件的RDK套件,同时打造了一套基于这套硬件的TROS.B软件系统。通过硬件+软件的方式,才能够充分释放机器人的潜力,让机器人更加自主,更加智能,让开发更加简单。这也是过去一年我们一直在探索机器人开发整个这套平台,从原来的功能上的驱动,到现在更多是以数据化驱动。这套平台也在向2.0不断过渡,通过大量的算法,大量的软硬件结合的方式,让机器人开发可以更加流畅。
回到刚才所讲到 “做什么”、“用什么”和“怎么做”三个核心问题。刚才我们所讲到的硬件也好,软件也好,是不是能够充分解决这样的问题呢?从过去的经验来看,还不够。很多家都有硬件和软件,但是为什么到今天开发机器人这件事情还是没有变得那么简单呢?我们认为,整个机器人开发的流程上,还是有很大的一些流程工具的缺失。怎么样去打造一个更好用的机器人开发流程?我觉得,还是能把硬件、软件串到一起能够让整个机器人开发更加流畅的一个过程。针对这样的问题,也是我经过过去很长时间的思考,一直在寻找的答案。通过调研了大量的机器人公司,去分析他们的一些功能。这些公司大部分现在是以移动机器人为主。在移动机器人的场景里面,这些机器人基本上都会具备左边所看到的一些机器人功能,比如说SLAM、导航、语音交互、运动规划等等。这些功能大家可能都很熟悉,把它们看作是一些节点(Node),对应到不同的应用场景里面,比如说做物流的、巡检的、家庭陪伴的,做不同场景下机器人。比如说,SLAM+导航+移动控制就是物流机器人的大部分功能;巡检里面也是SLAM+导航+运动控制+目标检测;陪伴机器人还要加上语音交互;分拣机器人更多是机械臂,运动规划+运动控制+目标检测等等。不同机器人场景之下的应用,更多的是这些Node串联和集成的。当然针对每个场景还要去做一些优化,功能、算法本身可能变化并不大。从Node到Hub这样的过程,是解决未来机器人应用开发更标准化的一个流程和逻辑。虽然机器人应用开发看上去非常的复杂,但仔细分析还是有迹可循的。这也是我们花了很长时间去持续打磨、分析的一个全新的产品,叫做是NodeHub。从Node到Hub,我们希望能够把它打造成一个机器人的应用开发和分享中心。它有点类似于我们手机里面的应用中心,但是也有很多差异化。这里面的Node就是机器人的每个功能是一些点,Hub是面。从功能到场景,从点到面,我们希望能够通过NodeHub让机器人的应用开发更加的灵活伸缩。通过不同的Node组合,就能够满足不同场景之下的应用集成,能快速把应用搭建起来。NodeHub中现在已经推出了非常多的应用功能。现在NodeHub当中,就可以看到20种以上的Node了,大家都可以很快的给它们跑起来。这些Node也全部都是开源开放的,大家可以进行二次开发和继续进行一些深入的改造。同时NodeHub是开源共创的平台,是完全开放的。所有的开发者在里面都可以去创建你的Node,去分享代码,去和别人一起分享你的功能。所以,我们也很希望大家能够一起来参与进来,一起来构建一个国内的机器人应用中心。第三点也很重要,NodeHub不仅仅是一个网站页面,一些应用功能的简单陈列,还有一些是在后台大家看不到的东西。比如说所有的功能持续版本的迭代、更新测试的整个打包过程,在后台有专门的服务器来做。服务器就是按照一定的时间、触发机制,不断对这些功能包做打包。比如我今天提交一个包,它很快触发了后台的服务器机制,就会对我的包做一些基本的测试。比如在里面编译能不能通过,能不能运行起来,都是自动化完成的,如果接下来都没有问题,就会把它打包成一个deb包放到软件源里面,下一步其他开发者就可以通过install的方式来安装你的deb包了。安装过程中deb包肯定会依赖很多第三方的其他功能包,安装所有依赖的过程也可以通过服务器软件源一键解决,一次性安装所有依赖,只需要一句命令就可以把功能本身和它依赖的各种各样的库都安装完成了,实现一键部署的效果。这就是我们推出的一款全新产品——NodeHub,是一个机器人应用开发和分享中心。现在我们已经上线的功能总共分成四大类:环境感知、人机交互、综合应用、外设适配。大家通过访问NodeHub的网站,就可以去体验一下这些功能了。这些功能现在都是开源开放的,大家不仅可以去install使用它,也可以下载它的源码。所有源码都是在github里面,每个页面都有对应这个功能的github的链接,大家可以先去体验一下。希望通过NodeHub能够让未来的智能机器人开发像搭积木一样,通过每个Node(功能)的不断串联组合,就是搭积木的过程。最后搭好的一个城堡就是一个机器人的完整应用。这就是推出NodeHub的一个核心想法。刚才我和大家分享了,通过三种核心的方式去打造一个机器人开发的新范式。核心的目的都是想要让机器人开发这个复杂的事情变得更加简单。里面有很多的部分我们也会持续迭代,未来会花更多时间让这三个核心功能变得更加好用。刚才讲到RDK是硬件,TogetheROS™.Bot是软件系统,NodeHub是应用的分享中心。接下来通过一个综合的应用,跟大家一起看一下怎么样通过地平线的三大核心工具,让机器人开发变得更简单。这是我们针对室内服务机器人做的一个简单的功能原型的串联。一个室内服务机器人需要去感知家里面的环境,通过SLAM知道家里面哪里是厨房、客厅,通过导航完成从点到点的自主运动,通过目标检测来识别家里的人和一些物品,通过运动控制来控制底盘来完成基本运动。对于这样一个室内服务机器人,我们把它看成是一些核心功能的串联,每一个功能就是一个Node。Node在NodeHub里面都有集成。所以大家想去实现类似功能的时候,只需要在NodeHub里面去安装每个Node,运行每一个Node,这些功能就会很快串联起来,最后整个功能就可以跑起来了。因为没办法给大家展示这一个实物效果,接下来我通过一段视频和大家来分享一下基于NodeHub、基于RDK和TogetheROS™️.Bot怎么样能够在15分钟之内把一个室内服务机器人搭建起来。这里我们用到的是一个已经安装好RDK硬件板卡、Ubuntu系统、TogetheROS™️.Bot 的小机器人,里面的所有功能都是在一个纯净的Ubuntu之上一步一步去搭建完成的,大家可以去体验一下这样的一个搭积木的过程。整个视频大概是11分钟时间吧,部分指令没有加速。整体来看,我们大概花费15到20分钟时间很快地把所有功能安装好,并且运行起来了。后续我们也会增加更多的机器人的不同硬件的、底盘的知识,不同传感器的知识,不同功能的知识。也很希望大家能够在NodeHub当中和更多开发者一起来分享你的应用。这就是刚才我们实现的所有功能,花了很少的时间就打造了一个室内服务机器人的原型,有了这样的原型之后,就可以更专注在一些业务逻辑的实现上了。刚才我们看到的所有功能都已经上线到了NodeHub上。NodeHub的链接地址是http://developer.horizon.cc/nodehub。在NodeHub里面,会有全部的节点呈现。除了刚才所展示的一些Node之外,其实还有很多功能,大家可以去进一步探索,可以用它把机器人玩起来。刚才讲的所有内容里面,其实就是想通过以下三个方面来告诉大家,我们想让机器人开发这件事更加简单,并做了三个核心工具。第一个是RDK。它是一个机器人开发者套件,是一个硬件平台,在这里面要去开发软件。我们希望通过RDK能够打造一个专门针对机器人的硬件套件,让硬件开发能够更加简单。硬件里面的软件就是TROS.B这样一套系统。这套系统里面包含了很多的功能。通过这套系统,希望让机器人的软件开发更加简单。从软件到硬件,是有一个串联的过程。整个过程我们希望去打造一个机器人的应用中心——NodeHub,让机器人应用开发更简单,可以一键去安装所有的功能、依赖和各种各样的库,并且能够很快的跑起来。同时也能够让更多开发者通过应用中心跟其他开发者来互相分享你的功能。这就是我们通过三板斧想去打造的一个机器人开发的新范式,让未来的智能机器人开发更简单。通过这一页更多的来呈现的是,基于以上三个核心工具去构建国内智能机器人的整个生态。大家可以看到RDK X3 v2.0的板子、RDK Ultra的板子,以及TROS.B整套软件。除此之外,我们还要做很多的事情,比如说开发者社区,让大家在里面做一些交流、答疑,以及DUP高校开发者计划。我们在今年上半年正式启动了高校推广计划,计划在未来的5年之内,推广100所高校,培养100万个机器人工程师,让更多的开发者成为未来机器人行业发展的核心力量。刚才一直在提到我们的开发者社区也全新升级了。http://developer.horizon.cc/就是我们社区的网址,大家可以访问这个链接去体验所有功能。刚才所讲到的RDK、TROS.B、NodeHub,所有功能都可以在这个网站社区里面找到。也欢迎大家来到开发者社区,和其他开发者一起分享你的一些开发过程。我们也在过去一年对整个社区做了全新设计和升级,包括所有的文档,整个操作系统也进行了全新升级,昨天(7月25日)正式上线,让大家能够看的更爽,用的更爽,在里面问答的过程也更加流程。最后,还希望我们能够一起去构建整个国内机器人的生态。机器人开发这件事情其实很是很美妙的一个过程。我们通过机器人可以去改变整个世界。但是,大家其实在做的过程中也会发现,这件事情其实是很复杂的,过程要经历千辛万苦,我跟大家也是一样的。所以我一直很希望通过更多的软件和工具,让机器人开发这件事情变得更加简单,变得更加有乐趣。以上就是我们推出的三大核心的硬件+软件+应用中心的一套工具,希望能够跟大家一起让机器人开发更加有乐趣。