颠疯病 http://m.39.net/news/a_6173069.html
本文根据优必选北研所高级算法工程师董浩,在「智东西公开课」的超级公开课优必选专场第三讲《实时机器人控制系统在人形机器人中的应用》的讲解整理而来。
在本次讲解中,董浩老师从通信、算力和软件三个维度分析了人形机器人对实时机器人控制系统的基本要求,并从硬件平台、实时主站、多任务APP软件框架三个层面对优必选最新实时机器人控制系统进行了深度的拆解分析,从不同维度为我们呈现了一套实时机器人控制系统的全景图。
在算力层面,优必选实时机器人控制系统可以为开发者提供最多三个主控板卡,每个板卡可以选择Arm、DSP和X86不同的硬件平台来进行配置,以满足不同场景下的算力需求;
在通信层面,采用了EtherCAT实时高速以太网,可以保证控制系统和伺服关节之间的实时通信和数据同步,保证不同算法可以在高动态的工况下发挥出最好的效果;
在算法开发层看,采用组件化、功能可扩展、开发松耦合、调度分布式的设计思想,使得每个开发者都可以独立开发、测试,有效降低了开发难度,实现高效的团队协作。
以下是董浩博士的主讲实录,全文共计字,预计读完需要15分钟,本次讲解提纲如下:
1、人形机器人对控制系统实时性和多自由度控制的要求
2、实时机器人控制系统架构解析
3、Walker机器人在RoboCup比赛中的应用表现和挑战
主讲实录
董浩:大家好,我是优必选北研所高级算法工程师董浩,很高兴能和大家一起交流。我今天分享的主题为《实时机器人控制系统在人形机器人中的应用》,我将从以下三个方面来展开讲解:
首先,我会介绍一下人形机器人对控制系统实时性和多自由度控制的要求,主要体现在人形机器人自由度比较多、传感器比较多以及对运动控制算法动态性能要求很高这几个方面;
其次,我会重点讲一下优必选实时机器人控制系统的架构,将分别从硬件、实时系统以及软件三个方面来展开;
最后,我会将Walker机器人参加RoboCup比赛中面临的挑战,以及最后取得的成绩,给大家做一个分享,也会从应用的角度来阐述一下这套系统带来的优势。
人形机器人对控制系统实时性和多自由度控制的要求
先从Walker新一代机器人说起。从上面这幅图,大家可以看到Walker机器人一共有36个自由度,即36个一体化的伺服驱动单元,其中包括两个6自由度的腿,两个7自由度的手臂,两个4自由度的灵巧手以及一个2自由度的头。同时还有十个传感器,包括六维力、IMU以及超声传感器等。
对于这样一个复杂的分布式控制系统来说,双足和双臂的算法都要求控制系统和伺服关节之间的通信要足够快,而且周期性的定时跳动还要足够小,这样才能保证算法在高动态的工况下发挥出最好的效果。
此外,实时机器人控制系统还要求所有的伺服关节要同步运动,传感器的数据也要同步采集,从而保证算法的输入和输出都始终处于一个节拍,从而保证算法的性能。此外,所有算法都要满足实时性的要求,所以就要求在一定的时间周期内完成计算,整个系统的算力要能保障复杂的多任务算法APP都能够及时的完成。
从运动控制算法的角度来看,人形机器人的运动控制目标,主要包含末端位置、末端速度、末端姿态和末端力四个方面的控制。
末端位置,包括双足和双臂的工作空间的末端工作点。末端位置、姿态和速度的控制主要是为了满足双足行走和双臂操作,对工作空间轨迹的要求。末端力的控制主要是为了实现对环境的适应性,包括和人的物理交互,能够使得Walker机器人更安全、更鲁棒、更协调。
总结来说,人形机器人对控制系统的要求分为以下三个方面:
1、通信,为了解决众多伺服关节的高速同步通信问题,我们采用了EtherCAT实时高速以太网,整个控制系统可以支持不少于50个节点,同时还具备拓扑关系的适应性,这对于Walker机器人是非常重要的。我们知道,Walker机器人的内部空间是非常小的,所以伺服关节之间的走线要求就很高。在这里,EtherCAT的优势就体现在以下两个方面:首先,伺服之间的通信线缆可以采用一进一出的方式,减少了走线的空间;其次,可以采用星型连接,简化四肢末端通信线缆的连接关系,并且这样的网络工作模式也非常利于故障排查,也就是说任何一个伺服关节的节点出现异常,我们都可以快速定位到具体是哪个位置。
2、算力,控制算法的目标是控制末端的位置、姿态、速度和力,这就要求必须要具备多自由度的运动学、动力学算法。对于多体的运动学和动力学算法来说,随着自由度的增加,计算的复杂度会显著增加,而且在某些情况下运动学和动力学还不具备解析解,只能采用数值求解的办法,这样会导致计算的复杂度进一步增加。
此外,Walker机器人未来的目标是要走进千家万户,这就要求必须具备对复杂环境的适应性算法,包括走路时对地面的适应性、手臂工作时对障碍物的适应性、机器人在人机交互、人机协同时的适应性。这些复杂算法都对控制器的算力提出了巨大的挑战。
最后我们都知道处理器芯片的性能也在伴随着摩尔定律高速发展,这也要求我们控制系统的处理器能同步升级,跟上芯片的发展速度,硬件架构要从模块化的角度来匹配升级的要求。
3、软件,刚才我们提到的各种运动控制算法都会以独立的APP方式来运行,这就要求控制系统要提供一个实时的运行框架,能够满足不同运行周期的算法APP实时计算的要求,充分利用硬件的计算资源,同时考虑到复杂算法的不断升级,为了能够实现算力的扩展和均衡,我们采用了多主控板卡的架构,这也要求所有的算法APP能够运行在不同的主控板卡上进行分布式计算。不同算法APP之间还具备高速的实时数据交互能力。为了兼顾功耗、成本以及算力之间的平衡,我们选择了Arm、DSP、X86等多种主控板卡,这就要求算法APP必须具备跨平台能力,才能更好地利用硬件的计算资源。
实时机器人控制系统架构解析
实时机器人控制系统主要包含硬件、实时主站和多任务APP。
其中硬件是提供整个控制系统的通信和计算的载体;实时主站是基于RTOS实现的一套满足实时性要求的EtherCAT主站协议栈程序,可以完成所有的EtherCAT的相关功能,是通信功能的一个核心;多任务的APP是一套多线程的运行框架,能够将不同的算法封装到不同的APP中,以不同的周期在不同的主控板卡上实时运行,并且可以交换数据,当然它也是未来我们进行算法、软件开发的通用平台。
整个控制系统的架构如上图所示。最底层是一套多核异构的处理器硬件平台,再往上是在Linux基础上打了实时补丁的LinuxRT实时操作系统,兼容Arm和X86硬件平台。实时主站也就是EtherCAT相关的通讯的功能,多任务APP的框架主要包括机器人的核心任务,APP就是RobotCoreTask和配套的SDK开发包,以及再往上层的感知接口,运动规划、步态生成、手臂控制、头部的动作、优化算法、环境交互、状态估计以及远程控制等一系列的算法APP,它们都会在统一的框架下运行,并且实时的进行数据交互。此外还会有一个APP管理进程,我们叫它App管理任务,它具备实时的消息中心、进程管理和系统log的功能,实现对各个APP的调度。
多核异构处理器硬件平台,我们借鉴了机箱的设计理念,所有的接口、电源、控制板卡都是模块化的设计,采用板卡的方式插入控制器的背板,并且支持现场可更换单元(FRU),这样可以减少线缆连接的不可靠性,易于安装和维护,也更方便控制整个控制器的尺寸和重量,整个控制器的升级和迭代未来也是比较方便的,可扩展性和可定制性也都比较高。
这套硬件平台最多可以支持三个主控板卡,每个板卡都可以选择Arm、DSP、X86不同的硬件平台来进行配置,通过不同的配置板卡组合,从而满足不同的算力、功耗以及成本的约束,与应用场景的适配度也比较高。
接口方面,支持EtherCAT,CAN和三种总线,基本涵盖了目前不同的伺服关节的接口种类。接口模块还可以针对各种传感器的处理接口单独定制开发,以快速的适应不同应用场景的要求。
硬件平台的整体拓扑关系如上图所示,主要分为接口模块、电源模块和三个主控板卡模块。
接口模块支持EtherCAT、Ethernet、CAN、、、USB、WIFI、GPIO等常见的通用接口,同时也会将这些接口通过背板总线和各个主控板卡互联,能够保证每一个主控板卡上的GPIO、以太网和串口都可以导入到外部接口里;
电源模块支持48V输入,输出可以支持24V、12V、5V、3.3V等多路电源,输出的电源接口主要用来给各种外部传感器、输入和输出设备进行供电,以提高整个系统的电源管理能力。
三个主控板卡分别支持Arm、DSP和X86,可以实现算力的扩展和均衡。在实际应用中,可以根据不同的场景需求来选择不同的组合。在使用的数量上,可以只用一个板卡,也可以三个板卡都使用。在背板总线中有三条总线,分别是:
1、高速PCIE总线,负责实现主控板卡之间的高速数据交互,可以实现带宽超过2Ggps的通讯带宽,保证在所有的实时APP在运行过程中充分完成数据交换的功能;
2、I2C总线,用来监控和管理各个模块的运行状态;
3、电源总线,用来完成给各个模块进行供电。
在实时主站上我们实现了一套完整的EtherCAT主站协议栈软件,也是一个比较通用的解决方案。在最底层,我们通过修改以太网卡接口的驱动实现了一个实时的以太网接口驱动,能够在EtherCAT的数据链路层完成数据的实时收发功能。同时我们还实现了一个EtherCAT主站的核心线程,能够完成PDO和SDO的功能,分别对应周期性的指令和非周期性的指令。此外还有一个XML文件解析器,能够将网络拓扑的配置文件解析成核心线程可以识别的网络拓朴信息,从而实现对整个EtherCAT网络里所有从站的管理和控制。
这套实时主站可以支持不少于50个从站节点按照Hz的通信频率来同步运行,并且支持分布式时钟DC,同时在1毫秒运行周期下,它最大的跳动是小于20微秒。实时主站的软件是兼容Arm和X86处理器硬件平台的,也就是不管我们选择的主控板卡是Arm版本还是X86版本同样都能提供EtherCAT的主站功能,后续我们也会开发更深入的类似FOE这样的功能,从而通过实时主站软件,对下面所有的从站伺服关节进行固件升级等一系列的配套功能。
多任务APP软件框架主要由四大块构成,分别是RobotCoreTask(机器人核心任务进程)、SDK开发工具包、不同算法APP和APP管理进程。
核心任务APP主要负责实现机器人上所有关节的控制和传感器的处理任务,包括伺服关节的状态机切换、运动指令的下发以及位置、速度等状态信息的处理。同时还有一个安全保护算法,能够对所有下发给伺服关节的指令进行保护性的判断,避免因为算法的异常导致动作的异常,比如超出位置限定、超出速度限定、超出力的限定等一系列的约束条件,还会有机器人关节间的碰撞检测,能够保证所有发给机器人的指令都是可以安全执行的,不会造成任何异常的后果。
状态监控是对当前机器人所有硬件模块的重大信息进行实时监测,遇到任何异常情况就会进行告警和记录,包括有些关节过载了、有些传感器超出量程了、外部有了异常的碰撞和接触等,对机器人进行全方位的安全监控和处理。
运动模式管理算法主要是为了满足包括行走、操作以及人机交互等动作的需求,可以对不同的任务来调度和处理不同的算法APP发送的指令进行融合,并在处理以后发送给关节。
多任务APP可以理解为将机器人的硬件执行端、传感端与算法进行隔离,使得所有的算法研究人员可以不用