【清能德创 | 会议】Intel陆科进:ROS系统产品化的“栅栏”该如何跨越?
ROS系统以其灵活性、专业性、分布式等特点被越来越多的企业所接受。
事实上,ROS节点并不一定只代表一个设备,它还可以用作一个算法或者是一个程序,一个功能,它们可以位于不同的计算机上,甚至可以位于不同的网络上,使得ROS可以适应很多不同场合的应用。
再加上ROS积累了大量跟智能、运动、导航相关的算法,使用ROS能够快速做原型,因此在产品研发阶段,被大量科研机构和研究院人员以及企业技术研发人员青睐。
然而,ROS在产品化过程中还有一些“栅栏”需要跨越,尤其是在工业应用领域,还存在实时性和可靠性等问题,而这也是ROS2.0版本需要解决的问题。
“ROS确实有一些问题存在,但是有个好处就是大家都可以为开源ROS系统的发展贡献一份力量;从intel的角度出发,也是希望大家一起更加紧密的合作互动,提高ROS2.0的应用空间,提高代码质量,提高产品的可能性。” Intel 陆科进在接受《高工机器人网》的采访中表示。对于如何实现ROS系统的产品化落地,陆科进也谈了自己的看法,下面是采访实录:
高工机器人网:ROS1.0版本和ROS2.0版本最显著的区别是什么?
陆科进:区别一方面是代码的优化以及代码质量的提高。ROS2.0版本在代码的组合和风格上跟之前的版本有些不一样,因为ROS1.0版本是由一些爱好者和科研机构以及一些大学为了完成像PR2这样的科研项目相关的机器人而创建的,节点的管理和开发来自不同的组织或个人,ROS2.0首先要解决的是提高核心节点库的代码质量以满足产品化的需求。
另一方面是ROS2.0版本在通讯机制上面有很大的变动。 ROS2.0会使用通用的DDS通讯机制。实现DDS有很多开源和闭源的实现,比如像开源里有比较着名的OpenSplice,OpenDDS, ZeroMQ等,不同的实现有不同的优缺点,有点追求的是实时性,有些追求的是持久化,有的追求的是安全性等。
此外,为了满足产品化的需求,ROS2.0在可靠性和实时性上面做了很大的完善,通过内存分配的优化、进程间通讯的标准化、节点生命周期管理的标准化等,使之更加适用于对于实时性和可靠性要求比较高的应用领域和比较苛刻的环境,更加容易实现产品化。
高工机器人网:大家都非常期待ROS2.0版本的推出,它大概什么时候可以推出来?
陆科进:ROS 包的管理比较分散,数量也非常大,现在ROS2.0的主要核心任务是提高ROS1.0的核心部分代码的质量,以及应用DDS这样成熟标准化的技术提高稳定性和产品化的能力,ROS2.0的核心是由基金会的7个开发人员开发,在资源上可能投入的也不太多,所以开发进度比较慢。
ROS2.0大概分为两个部分,一个是ROS2.0的核心,包括通讯机制和相关开发的工具(比如可视化,测试工具),以及跟导航相关的库。核心的部分现在是ROS基金的小组织进行推进,ROS2.0正式版1.0按计划是今年年底推出,但是到今年年底,导航相关的功能也不一定可以全部完成。
高工机器人网:据我的了解,ROS2.0版本也不能从根本上解决实时性的问题?
陆科进:其实,实时这个概念是相对的,工业应用的实时也是分级的,比如现场总线级,可能就是要达到10毫秒以下的响应速度,但是在工业物联网这一级,可能就只需要毫秒级别的响应速度。实时性问题的解决要靠整个系统的设计和优化,比如说底层:Linux 系统的实时性,通过综合考虑系统的硬件,操作系统层以及中间件才能最大程度的降低系统延迟,提高实时性。
Intel目前将侧重于对底层实时系统做优化,使其能够更好地完成实时性的工作,但是就算这些实时性的优化工作从硬件到软件都实现的情况下,ROS2.0也只能用于特定的工作场景下,运用在工业前端现场总线这种要求ns级的场合里还是不太适合。但是在PLC和主控机以及工业路由器之间的通讯用ROS2.0,实时性应该完全没有问题。
高工机器人网:针对实时性问题,业内人士有提出一些解决方案,就是在大脑控制方面用ROS系统,而在小脑控制方面不用ROS系统,您是怎么看待的?
陆科进:这个概念其实并不是来自工业控制,因为工业控制还没有“大脑”和“小脑”的概念,去年服务机器人兴起的时候就有了大脑和小脑的概念,小脑更多的指的是运动控制,而大脑更多讲得是智能。
在小脑的运动控制上,整个控制还是应该使用MCU和RTOS这种实时性比较好的的硬件和系统,但是这些运动控制子系统可以作为一个节点来接受大脑的控制;而大脑不需要那么强的实时性要求,大脑主要用于做出智能的判断,比如说物体的识别,语音的识别等。所以大脑可以根据上下文的情况进行决断,然后通过ROS来控制一些小脑的微控器。
实现实时性有很多的解决方案,而且不仅仅是在机器人领域,还包括无人机这样的应用领域,无人机的飞控对实时性要求是非常高的,所以无人机飞控系统一定是基于RTOS系统,而不是ROS系统。
但是这几年的趋势是:无人机飞控确实是一个实时性的系统,不过它可以伪装成一个ROS系统的节点:在无人机上放一个大脑板,以实现拍摄视频,跟踪目标,对地面进行建模等需要大量智能计算的功能。大脑板可以作为ROS的主控器,来控制飞控器,现在比较着名的开源无人机系统都支持类似架构。
高工机器人网:“不过它可以伪装成一个ROS系统的节点” 这句话怎么理解呢?
陆科进:可能用伪装这个词不太正确和中听,在无人机飞控里边,本身有一个消息总线,主要是用来交换传感器传来的信息,然后由飞控的算法,比如EKF算法跟据传感器的数据产生PWM控制,这个消息队列的实时性要求非常高,这个消息总线不是基于ROS的,因为ROS的实时性不达标。我看到有些人会做一个连接点,将飞控中的数据和ROS的数据相连接,从而进行数据和信息的交换。
高工机器人网:这样做的好处是什么呢?
陆科进:这样做好处是在于,在飞控系统的代码中,即有核心的飞控控制循环代码,也有一些不是那么核心的传感器采集代码,将飞控的控制系统和大脑板打通了之后,有些“非实时”的数据处理可以放到大脑板上面,同时“实时数据”的处理可以放到小脑板上面,这样使得整个架构更加灵活,解耦合,并且很容易进行数据交换。如果要集合一些新的功能软件包,也会比较容易。
高工机器人网:据悉,ROS系统功能软件包比较多,但是这也导致系统过于庞杂和冗余,这是一个不可避免问题吗?
陆科进:对,谈到这个问题就涉及到ROS生态的控制力,包括ROS有没有分类的可能,它的功能是怎样分类的?现在ROS基金会比较重视的是ROS核心节点的设计,我希望后续能注重ROS软件包的组织管理,按照不同的功能类型,传感器类型,算法类型进行分类,这需要大家共同的配合,ROS的开源精神也体现在这里,希望大家一起紧密配合并提出一些建议,与基金会一起进行改进。
高工机器人网:除了以上提到的一些问题,还有哪些因素阻碍了ROS在工业机器人领域的应用?
陆科进:工业机器人的市场规范早已根深蒂固,像OPC-UA,就是整个工业领域的标准的通讯协议;而ROS是基于科研和服务型机器人的研究发展起来的框架,这个框架从技术上来讲就是对系统的功能解耦合,让不同的软件包互相通信,在技术背后隐藏的是开源合作。
工业机器人也分两种,一种是机器人手臂,还有一种就是像AGV这样的工业服务型机器人,这种更加适合用ROS,当然机械臂也有一些公司开始尝试用ROS ,但是大部分还是不会用,因为对于它对实时性要求非常高。
高工机器人网:您刚刚提到,AGV更加适合用ROS系统,是不是因为它可以方便地集合像激光导航技术和SLAM技术?
陆科进:是的,激光导航技术和SLAM技术其实就是ROS上面比较核心的导航功能包,这些功能包在ROS上面已经非常成熟了,所以要攒一个AGV比较容易,如果基于ROS就可以大大提高开发和研发机器人的速度。
高工机器人网:我们了解到现在有小部分协作机器人在用ROS系统,是不是协作机器人用ROS也比较有优势?
陆科进:是的,因为协作机器人小型化,并且需要更加智能,协作机器人更多考虑的是协作性和安全,因此对于数据处理,对智能的要求都比较苛刻,需要大量的算法,需要整个科研机构研究的已有的ROS的功能,而不仅仅是运动控制功能,所以对于智能化要求越高的机器人,使用ROS 就越有优势。我观察到协作机器人在研发的时候大部分的科研人员会用ROS。
高工机器人网:协作机器人也会应用到一些工业领域,那么ROS在可靠性上面是怎样保证呢?
陆科进:可靠性问题不完全是因为ROS引起的,可靠性其实是系统的设计(包括硬件和软件),当然ROS2.0自身也对代码的质量进行了提高,非常注重可靠性和实时性的优化,譬如使用了标准化的节点生命周期管理和DDS。相信在未来2.0的正式版本中,可靠性和实时性在结合系统优化后会得到很大的提高。
高工机器人网:在ROS上进行二次开发,对于工程师的要求是不是比较高呢?
陆科进:我觉得从两个方面来讲这个问题。首先,从ROS本身的难度来讲,因为ROS整体是一个系统的架构,通过架构将各种模块结合,每个人都可以将各自擅长的领域集中在上面,ROS编程本身的调用和ROS节点的API 都是比较直接的,其实技术门槛没有那么高。
但是,ROS框架是各个复杂系统的集合,每个系统又有各种各样的功能包,真正组装成一个产品的话,会有大量的包,这些包可能被维护在各个不同的组织和个人的手里。在这种情况下,节点管理就变得很分散,对于初学者来说,遇到问题的时候,很难搞清楚问题是出在哪个包里,因此产生困惑,感觉系统没有办法控制和产品化。
虽然ROS2.0在核心代码设计上有所改进,功能包与功能包之间还是有太多的依赖,要搞清楚这些包之间的依赖关系,确实也不容易。
有些客户和同仁反映,虽然ROS系统可以节省开发和原型时间,但是一旦产品出现了问题,就会很难定位,调试和修正。事实上,在有些第三方提供的功能包中,代码的质量也不是很高。
高工机器人网:您对ROS系统的展望是怎样的呢?
陆科进:从中国市场来看,去年很多机器人厂商是从平板厂商转型过来的,因此他们更愿意使用安卓系统,因为开发者一般也是使用JAVA来进行编程。
但是,一年之后,越来越多的机器人企业开始使用ROS,因为他们知道ROS确实更加专业,ROS提供的要素也比较丰富,尤其是能够做更多智能型产品,再加上ROS2.0的定位长期来讲也是为了产品化而服务的,相信未来ROS2.0将会被更多的市场接纳。
值得一提的是,8月23日至8月27日,世界机器人大会在北京举行,届时,由高工产研、OSRF(ROS国际组织)、中国电子学会主办,高工机器人、汤尼机器人承办的“ROS全球开发者高峰论坛”将同期举办,将进一步为您带来关于ROS系统应用技术和发展前景的分享。
在此次论坛上,陆科进将会发表“ROS2.0---解决可靠性和高效性痛点新一代机器人操作系统”的主题演讲,分享自己在ROS系统研发上面的经验。
陆科进个人简介:
英特尔亚太研发中心开源技术中心机器人团队,高级软件架构师。
毕业于东南大学计算机科学和工程系,工科硕士。
2005年加入英特尔亚太研发中心,曾参与系统固件框架,教育解决方案,数据中心服务器系统,视觉计算的架构设计和研发。目前在开源技术中心机器人团队担任高级软件/系统架构师,带领团队积极地参与ROS社区的开源开发。对系统性能优化,视觉计算,人工智能,大型系统全栈架构设计有着丰富的经验。
想了解更多?
那就赶紧来关注清能德创
长按二维码 关注我们