室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计(整合版)

目录:

0 引言

1 人形机器人对室内家政服务任务的结构化

1.1人形机器人在室内家政服务中的比较优势

1.1.1 人形机器人拟人性的7个维度

1.1.2 拟人性在室内家政服务工作中的比较优势

1.1.3 潜在的重要用户:宠物爱好者

1.2 居所室内环境的特征与结构化

1.2.1 室内空间的物理参数友好

1.2.2 居所具备较好的结构化潜力

1.2.3 居所结构化的思路

1.3 基于任务对象结构化程度的室内家政任务分类

1.3.1 面向结构化/准结构化对象的基础家政任务

1.3.1.1 使用自动化终端设备的基础家政任务

1.3.1.2 基于局部结构化被动平台的基础家政任务

1.3.1.3 基于局部准结构化被动容器的基础家政任务

1.3.1.4 操作局部结构化被动运动部件的基础家政任务

1.3.2 面向非结构化对象的复杂家政任务

2 人形机器人执行基础家政任务过程中的技术要点

2.1 入户初始化:参数化标定居所内的对象

2.1.1 居所参数初始化

2.1.2 任务对象参数初始化

2.1.3 居室子区域、任务对象图像的初始化

2.2 人形机器人执行一次任务的技术过程推演:用洗衣机洗衣服

2.2.1 过程推演

2.2.2 技术要点:充分运用居所基础信息表

2.2.3 技术痛点:实时更新居所基础信息表

2.3 人形机器人入户服务的最大痛点:安全性

2.3.1 自主行动导致安全风险

2.3.2 被动干扰导致安全风险

2.3.3 意外跌倒导致安全风险

2.3.4 部件失能导致安全风险

3 深入应用FPGA的室联人形机器人控制系统框架设计

3.1 特斯拉Optimus-Gen2人形机器人的硬件系统配置

3.1.1 电机

3.1.2 传感器

3.2 设计思路

3.2.1 深入应用FPGA的人形机器人控制系统设计思路

3.2.1.1 基本设计思路

3.2.1.2 系统层面

3.2.1.3 感知环节

3.2.1.4 运算环节

3.2.1.5 控制环节

3.2.2 室联人形机器人控制系统设计思路

3.2.2.1 将部分感知设备移到各居室的天花板

3.2.2.2 将部分算法、管理子系统卸载到外置机箱

3.2.2.3 添加语音收发模块、用于连接居家口语大模型服务器的通信接口

3.2.3 分色表述的绘图风格

3.3 深入应用FPGA的室联人形机器人控制系统框架设计

3.3.1 系统整体设计

3.3.1.1 系统框图

3.3.1.2 基于FPGA解决Optimus-Gen2灵巧手腕部走线困境

3.3.1.2.1 Optimus-Gen2灵巧手腕部的走线困境

3.3.1.2.2 解决方案

3.3.1.2.3 待确认的问题:布线、电磁兼容、散热

3.3.1.2.4 将这一布局方式拓展到肩部、髋部

3.3.1.3 关于内置CPU硬核的FPGA(SOC)

3.3.2 管理子系统(橙色)

3.3.2.1 FPGA所涉系统管理信息的收发

3.3.2.2 运算CPU、用户设备的管理

3.3.2.3 世界时时标的建立与分发

3.3.2.4 同步信号序列的生成与分发

3.3.2.5 世界时时钟源失效后的时间保持

3.3.3 感知子系统(浅蓝色)

3.3.3.1 室联感知

3.3.3.2 感知设备及其驱动、信息接收与解算

3.3.3.3 传感器信息预处理、初级的传感器融合

3.3.3.4 数据处理过程与世界时时标的同步

3.3.3.5 关于自研传感器

3.3.4 运算子系统(红色)

3.3.4.1 运算CPU

3.3.4.1.1 运算CPU工作周期

3.3.4.1.2 执行传感器融合上层算法以及对环境、本体、工作目标的实时建模

3.3.4.1.3 运动规划

3.3.4.1.4 将运算任务卸载给FPGA中的协处理模块

3.3.4.1.5 深入应用FPGA技术为高层次算法的前沿探索提供助力

3.3.4.2 关节运动轨迹点插值

3.3.4.3 FPGA对运算CPU算法任务的协处理

3.3.4.3.1 基础/通用运算任务的协处理

3.3.4.3.2 专项业务运算任务的协处理

3.3.4.3.3 “真空球形鸡”之辩

3.3.5 控制子系统(绿色)

3.3.5.1 电机控制算法通道

3.3.5.2 电机抱闸

3.3.6 芯片间数据实时传输子系统(深蓝色)

3.3.6.1 PCIe总线

3.3.6.2 FPGA片内数据调度中心

3.3.6.3 FPGA片间全双工串行直连接口

3.3.6.4 射频通信二级子系统

3.3.7 语音收发子系统(含大模型下传指令解析功能)(棕色)

3.3.8 关于居家口语大模型的服务器、预训练语料

3.3.9 加速基于大模型的端到端具身智能控制算法的实用化进程

3.3.10 多“人”协作模式

4 将框架设计与《流程图》相结合

4.1 一体两面

4.2 框架设计在《流程图》中的位置

4.3 笔者能力短板导致的缺憾

4.4 特斯拉人形机器人Optimus-Gen2信息的帮助

4.5 对研发单位的建议

5 将框架设计“泛化”到其他领域

6 结语:行动最重要

声明:

1 本文篇幅较长(正文三万四千字),第1、2、3节内容的独立性较强,建议读者对照目录、根据自己的兴趣选阅。

2 本文在笔者的文章 林伟:室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计(2024年6月4日发布) 的基础上,整合了其中引用的文章 林伟:在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)(2024年3月31日发布) 的大部分内容并重新安排章节序号,使前者的内容完整、成为一个可以独立成篇的技术文档,以便于读者阅读。进而,文章中整合了笔者的一篇知乎回答 人形机器人何时会使用端到端大模型进行动作控制? (2024年12月1日发布)的内容。如果读者已经掌握了以上三篇文档的内容,建议仅阅读这篇文档的第3.3.1.1、3.3.4.1.2节。

3 本文由笔者(并非人形机器人业内人士)在多方学习的基础上独立创作。限于检索资料的范围,除了特殊声明之处,笔者不声称所述技术思想是本人原创。任何先于本文公开发布的、与本文部分内容相同或相近的技术信息的原创者,享有更优先的知识产权。

4 请读者从实用主义的角度看待本文所述技术思想,若有想法/问题/质疑,欢迎留言/私信/微信(见文末)交流。

正文:

0 引言

近期关于人形机器人应用场景的讨论非常热烈,反对者的观点是:

人形机器人由于工作在非结构化场景中、处理非结构化任务、需要应对突发情况、当前尚未深入研究其安全性及对策、机体内部有效容积小且分成几块、很多情况下可以由AGV/轮足车+机械臂(例如波士顿动力的stretch)予以替代等因素,在几年之内不可能找到适合的应用场景。

笔者的本行是底层技术(FPGA应用研发),但自2017年起一直关注机器人、人形机器人领域,近期在知乎发布了两篇技术文档:林伟:在实用化人形机器人研发流程中深入应用FPGA技术的流程图(版本A)(基于工信部《人形机器人创新发展指导意见》)(参考资料10)(以下简称《流程图》)、林伟:在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)(参考资料11),并将其在业内广为推介。

本文拟就上述观点阐述一些应对思路,进而以此为基础,结合上述两篇技术文档提出一个进阶技术方案,以期协助人形机器人行业的潜在投资者理清思路、看到希望,促进更多资源投入到本文关注的技术领域,助力人形机器人尽快走向实用。

基本思路:

人形机器人的根本特征是拟人性,拟人性导致的亲和力使其适合用于室内家政服务

室内家政服务的环境、任务对象具备一定程度的结构化特征,导致将人形机器人应用于这一场景在技术上具备可行性。

居所基础信息表为核心,将居所及其内部家具、家电在宏观层面上参数化,从而将人形机器人的非结构化宏观任务切分为更易实现的局部子任务。据此举例、梳理将人形机器人应用于室内基础家政服务过程中的技术要点,提供参考流程

针对入室服务的高安全性需求,借鉴车路协同汽车自动驾驶系统将大量传感器布置在路侧以提供全局视野、用路侧运算模块分担车侧的算力与功耗压力的思路,提出了室联人形机器人的概念。

基于这一概念,结合《流程图》的内容,针对实用化人形机器人的控制系统,以深入应用FPGA技术、室联感知为指导思想做了一个框架设计,提供一个具象化的设计实例、参考技术方案,协助各研发团队及相关决策者深入了解这一技术思路及其价值

在框架设计中引入了语音收发子系统,就居家口语大模型的部署方式及其安全性提供了参考意见。

阐述了基于这一框架设计、用FPGA加速基于大模型推理的端到端具身智能人形机器人控制算法的思路。

进而,笔者希望读者将这个框架设计与《流程图》结合起来进行分析、思考,希望:

进一步降低将FPGA深入应用于人形机器人在纯粹技术维度上的门槛;

助力更多正在人形机器人领域参与竞争的团队 -- 及时做出实质性决策,及时将更多资源分配到深入应用FPGA技术这一竞争维度。

[注1:本文所说的“深入”应用FPGA,是相对于已有的、将FPGA应用于工业机器人伺服电机的驱动及反馈控制(可能也用于实现关节轨迹点插值)的方案而言的。大约在9年前,采用此类方案的工业机器人产品就已经面世(更多信息请参阅参考资料7)。]

[注2:本文用居所指代整套房子;用居室指代房子中的一个房间,包括门厅、厨房、洗手间等]

1 人形机器人对室内家政服务任务的结构化

1.1人形机器人在室内家政服务中的比较优势

1.1.1 人形机器人拟人性的7个维度

拟人性,是人形机器人区别于其他类型机器人的根本特征。

笔者于2021年1月在知乎发布了文章 林伟:韩国现代,波士顿动力的真命天子(参考资料12),其中将 “拟人性” 划分为6个维度。本文以此为基础,归纳了人形机器人拟人性的7个维度:

身体结构像人、运动模式像人、动作姿态像人、可见器官像人、面部表情像人、交流内容像人、安全性像人。

1.1.2 拟人性在室内家政服务工作中的比较优势

如众多网络文章中述及的,人类的生活环境(尤其是居家环境)是针对人类的身体特征而设计的,身体结构、运动模式像人的人形机器人在家政服务应用场景下较非人形机器人更具适应性。

进而,当一个人形机器人在拟人性的上述7个维度都做得很像人(以下称之为 “高拟人度人形机器人”),对于一部分人类个体来说,它将不再是一个冷冰冰的工具,更像是一个同类、一个服务人员,从而更具亲和力。

这种亲和力,是高拟人度人形机器人在服务这类人的细分市场中相对于非人形机器人的比较优势

1.1.3 潜在的重要用户:宠物爱好者

一般来说,喜欢宠物甚至将宠物视为家庭成员的人,心理上更倾向于接受、认同新加入的家庭成员。将宠物爱好者作为一个人群,对比于上述可能将高拟人度人形机器人视为一个同类、一个服务人员的人群,两者之间的重合程度很可能足够高,以至于具有商业价值。

[本小节的思路系笔者的直观推测。建议关注其商业价值的业内公司/投资者委托专业机构进行评估。]

1.2 居所室内环境的特征与结构化

1.2.1 室内空间的物理参数友好

居室内空间中的光照情况比较稳定,受日光影响较少,并且没有雨雪风沙等天气因素的干扰,温度、湿度也相对稳定。工作于其中的人形机器人的感知系统,在同等成本下能够以显著高于室外环境的可靠性、精度实现对环境的感知;工作于其中的射频通信系统,也将不必考虑各种极端天气的影响。

1.2.2 居所具备较好的结构化潜力

居所的居室布局千变万化,居室内的家具、家电的布置方式千变万化,由此导致室内家政服务人形机器人面对的是非结构化的应用场景。

然而,居所、家具、家电都是工业制成品,为了便于制造及运输,其中大多数的主体形状是长方体、圆柱体以及它们的变形体的组合(包括正-负组合),致使由这些近规则体构成的家庭室内环境可以在很大程度上由人形机器人的控制系统在宏观层面上予以结构化。

1.2.3 居所结构化的思路

分析各居室内图像及点云、提取简单的点/线/面/棱/拐角/顶角,量化分析这些几何元素在空间中的形/位参数,再以手动标注或自动识别(基于CNN或专业大模型)的方式,将这些几何元素与居所布局、居室结构、家具及家电的外形轮廓实现对应,建立居所内自顶(居所)向下(家具、家电)的分层立体几何模型;进而建立针对各居室及室内/室间对象的、全居所统一的、可以作为自顶(居所)向下(任务目标子区域)进行任务切分的依据宏观结构化模型

1.3 基于任务对象结构化程度的室内家政任务分类

1.3.1 面向结构化/准结构化对象的基础家政任务

在需要人形机器人执行的家政任务中,很大一部分的任务对象具备结构化/准结构化特征,从而使这类任务的执行过程能够被以(相较于面向非结构化对象的任务)更少的成本予以设计、实现。

本文将这些任务称为基础家政任务,以下予以分述。

1.3.1.1 使用自动化终端设备的基础家政任务

自动化终端设备,是指洗衣-甩干机、洗碗机、烘干机、电冰箱/柜、微波炉、烤箱、电饭煲、空气炸锅、榨汁机、空调、吸尘器、扫地机器人、电热/太阳能淋浴器、电动窗帘、擦鞋机等家用电器。

功能特征:用内置的、专业化的、电动的终端机构完成某种具体的家务,对外仅提供以 “傻瓜化操作” 为目标而设计的(否则卖不出去)的用户操作接口,非常适合由人形机器人操作(勿怒,无意diss)。

结构特征:外壳形状相对固定,整体姿态相对固定,操作接口在外壳上的位置固定。

其在居所中的位置相对固定(即使移动了也较易识别)、占据的空间区域相对固定,连同功能特征参数、结构特征参数一起,能够被人形机器人控制系统(借助各种传感器)以量化方式予以实时标定、实时更新。

使用自动化终端设备的家政任务:以基于现场感知的反馈控制方式从其外形上定位上述用户操作接口、对其执行操作,将待处理的任务对象投入这些设备的进料口,或者将设备与任务对象按预定义的方式对接,再依照固定的时序流程(可能需要从多个流程中做出选择)按动操作接口中的按钮,由这些设备自动完成任务,再将设备中经处理的任务对象由设备出料口(可能复用进料口)取出,或者将设备与任务对象的对接状态复归为执行任务之前的状态。

1.3.1.2 基于局部结构化被动平台的基础家政任务

局部结构化被动平台,是指桌面、床面、灶台面、切菜板面、地面、墙面、天花板等用于承载任务对象的空旷平面。

这些平面的在居所中的位置、占据的空间区域相对固定,姿态相对固定(多为水平或与地面垂直),表面色彩、纹理相对固定且具备一定程度的规律性,能够被人形机器人控制系统(借助各种传感器)以量化方式予以实时标定、实时更新。

在这类平台上放置、悬挂的任务对象在人形机器人传感器(光学/红外线传感器、RGBD传感器、激光雷达等)的视野中,都表现为处于一个相对空旷的局部平面中,工作目标物作为分析对象更容易从包含背景、平台的图像/点云中被分割出来,从而减少家政任务执行算法的设计工作量,或(/和)减少针对局部任务的端到端神经网络训练的工作量。

特斯拉Optimus-Gen2叠衣服的视频,演示的就是这种应用场景(链接:马斯克展示机器人“擎天柱”叠衣服:还不能自主执行,但未来肯定可以_哔哩哔哩_bilibili)。

1.3.1.3 基于局部准结构化被动容器的基础家政任务

局部准结构化被动容器,是指电冰箱/柜、碗柜、书柜、衣柜、鞋柜、洗涤槽、洗手盆、坐便器等具备结构化外形或(/和)内部结构的容器。

这类容器的在居所中的位置、占据的空间区域相对固定,姿态相对固定,其内部空间、内部隔间的结构参数也基本固定,并且能够被人形机器人控制系统(借助各种传感器)以量化方式予以实时标定、实时更新。

人形机器人以基于现场感知的反馈控制方式向这类容器中放置/投入工作目标物、从这类容器中移出工作目标物,都表现为对一个准结构化的空间进行操作(参考资料13),任务对象作为被分析的目标更容易从包含背景、容器的图像/点云中被分割出来,从而减少家政任务执行算法的设计或(/和)端到端神经网络训练的工作量。

当然,推而广之,整个房间乃至整套居所,基于第1.2.2节所述的方法,都可以被人形机器人控制系统视为一个全局结构化的大容器。

1.3.1.4 操作局部结构化被动运动部件的基础家政任务

局部结构化被动运动部件,是指居室门、橱柜门、冰箱门、冰柜盖、抽屉、台式PC的键盘托板、带锁紧把手的升降桌、窗页、窗帘、百叶窗等可以由人形机器人用手推、拨而被动在1个(或近似1个,例如抽屉)自由度上做简单运动的家具部件。

这类部件在居所中的位置、占据的空间范围相对固定,姿态相对固定,其上为方便人类操作而设置的专用子部件(例如门把手、升降桌锁紧把手)的位置、姿态相对与部件本体也基本固定,并且能够被人形机器人控制系统(借助各种传感器)以量化方式予以实时标定、实时更新。

人形机器人以基于现场感知的反馈控制方式操作这些部件以使其打开、关闭,都表现为操作一个近似结构化的工作目标物,部件作为分析对象较容易从图像/点云中被分割出来并予以识别,进而读取预存的、针对这个部件的操作流程,将其用作设计任务执行算法的基础。(链接:波士顿动力机器人帮助伙伴开门BostonDynamics_哔哩哔哩_bilibili)(请注意,视频中的门轴带有用于自动关门的弹簧,增加了任务难度)

1.3.2 面向非结构化对象的复杂家政任务

非结构化对象的外部形态或(/和)受力状态随时改变,与之关联的任务需求复杂多变且不可预见,典型例子是人类个体。

面向非结构化对象的家政任务的实例:怀抱婴儿,扶老人行走,给老幼病残人士洗漱、喂饭、梳头、理发、刮胡子、换衣服。

2 人形机器人执行基础家政任务过程中的技术要点

第1.3.2节所述的复杂家政任务对人形机器人的功能要求非常全面、性能要求非常高,笔者目前看不到其被人形机器人执行的前景。

与之相对应,笔者认为,第1.3.1节所述的基础家政任务,近几年内可能由人形机器人予以承担。

因此,本节设计了人形机器人执行基础家政任务的一种流程,进而针对各个步骤以及步骤中的一些技术要点予以说明,以期为业界提供一个比较系统的应用场景描述

2.1 入户初始化:参数化标定居所内的对象

在人形机器人进入某个客户的居所之初,应获取与所需执行的家政服务相关的、以预定义的格式化数据表(称为 “居所基础信息表”)的形式进行传输与存储的居所基础信息,这就是人形机器人执行基础家政服务任务的入室初始化。其核心在于:

通过提取、使用居所及任务对象的结构化特征参数,将非结构化的宏观任务空间切分为更易实现的局部子任务。

[本节内容可能是原创,若有读者了解此前公布过的相关工作,请告知其出处,谢谢 -- 笔者将在评论区就此予以说明并将其置顶。请关注本文内容原创性的读者关注评论区]

2.1.1 居所参数初始化

在入户之初,人形机器人获取居所本体的结构化参数包括:

各房间的几何尺寸,各房间互相之间的空间位置关系、互联拓扑关系,各个门的位置、尺寸,各门轴在门框上的位置,各门扇相对于门框的转动方向、转动角度区间,各门把手的位置、握持方式、扭转方向及扭转角度区间,室内可行走区域的形状、位置、尺寸,允许人形机器人的肢体进入的空间区域的形状、位置、尺寸。

人形机器人在入户之初将这些参数存入一个可以随时调用的居所基础信息表

2.1.2 任务对象参数初始化

获取居室内各任务对象(即第1.3.1节所述的结构化/准结构化任务对象,下同)的外部几何参数:位置、外部轮廓的尺寸,当前姿态。

获取居室内各任务对象的功能参数,以洗衣-甩干一体机为例(不考虑连接电源、连接进出水管),其功能参数包括:

单次洗涤衣物的重量上限、体积上限,滚筒/转筒盖的位置、盖轴的位置,滚筒/转筒盖的打开方向及其相对于转轴转动的角度范围,滚筒/转筒盖把手的位置及把持方式,操作面板的位置、图像,操作面板上各按钮的位置,按动按钮所需的力的大小,按钮的各种时序组合所代表的洗衣-甩干系列指令。

人形机器人在入户之初将这些几何参数、功能参数存入随时可以调用的居所基础信息表

2.1.3 居室子区域、任务对象图像的初始化

获取居所内涉及服务任务的各个子区域(尤其是门、窗、墙壁悬挂/内嵌物等图像特征明显且位置相对固定的子区域)在各个角度的图像,获取各任务对象从各个视角(包括易翻覆任务对象 -- 例如方凳 -- 在翻覆状态的各个视角)看过去的图像,作为执行服务任务过程中进行对比的目标。

人形机器人在入户之初将这些图像存入随时可以调用的居所基础信息表

2.2 人形机器人执行一次任务的技术过程推演:用洗衣机洗衣服

2.2.1 过程推演

借助第2.1节的居所基础信息表,我们推演人形机器人小明使用转筒式全自动洗衣机(属于第1.3.1.1节所述的自动化终端设备)洗衣服的技术过程。

居所的主人林先生对小明说:“请把床上的夹克衫洗干净。”

小明的自然语言处理系统从这句话中获取指令的关键要素:任务(洗衣服)、任务对象(夹克衫)、任务对象当前所处的位置(床上),然后将任务分解为如下流程

走到床边 -> 拿夹克衫 -> 评估夹克衫是否适用于居室中的洗衣机 -> 走到洗衣机旁边 -> 将夹克衫放进洗衣机 -> 操作洗衣机按钮以完成洗衣+甩干(本例为简化叙述而假定洗衣机的电源、进出水管、洗衣液容器日常处于连接状态并且相关操作的复杂度可控,省略了烘干步骤)。

按照上述流程,小明调用居所基础信息表(最后更新的版本,下同),结合传感器获取的当前获取的室内状况,确认自己在居所内的位置,再调用居所基础信息表中存储的床的位置、室内可行走区域的形状、位置、尺寸,规划从自己当前的位置到床边的路径。

小明走到床边,调用居所基础信息表中存储的床的图像数据集中拍摄角度与自己当前所处位置的拍摄角度最相近的图像,将其与当前拍摄的床面图像对比,确认夹克衫在床上所处的位置,将其拿起。

小明用双手按照预设的力量(由指端触觉传感器测得)将夹克衫团成一团,目视估算其的体积,用上肢关节内置的力传感器测量其重量,然后调用居所基础信息表中存储的本居室的洗衣机单次洗涤衣物的重量上限、体积上限,确认夹克衫的重量、体积不超限。

小明再次用传感器获取当前的室内状况,调用居所基础信息表中存储的洗衣机的位置,规划从床边到洗衣机旁边的路径。

小明走到洗衣机旁边,调用居所基础信息表中存储的转筒盖的位置、打开方向、转筒盖把手的位置及把持方式,用类似于波士顿动力长脖子机器狗开门的方式掀开转筒盖,将夹克衫放进去,合上转筒盖。

小明拍摄洗衣机操作面板的图像,调用居所基础信息表中存储的操作面板上各按钮的位置参数,确认各按钮的位置,调用预存的各按钮的功能、洗衣服的操作流程,按照流程规定的时序关系按动按钮以设置洗衣机的工作模式并启动洗涤,由洗衣机自动完成注水、加注洗衣液、洗涤、甩干的过程。

小明在上述走动过程中,如果探测到路径前方的门处于关闭状态,则调用居所基础信息表中存储的这个门的信息,确定其门把手的位置与扭转方向,确定门轴的位置、门扇转动的方向(朝向自己还是背离自己)及其扫过的地面区域,然后用波士顿动力长脖子机器狗开门的方式把门打开。

2.2.2 技术要点:充分运用居所基础信息表

由上述推演可知,其中非常关键的技术要点是:充分运用在人形机器人入室初始化过程中建立的居所基础信息表。

居所基础信息表将居室内的工作环境结构化,忽略大量的细节信息(相当于 “降维”),将工作环境抽象为一组预定义格式的数据,使人形机器人在执行任务过程中得以及时获取所涉环境的宏观信息、任务对象的结构信息,并将人形机器人的非结构化宏观任务切分为更易于实现的局部子任务,切分后的子任务或者类似于已经被实现了的人形机器人动作,或者可以预见能被人形机器人实现。同时,降低了多模态融合环境感知、环境建模与解算、任务建模与解算的实时运算工作量,降低了各肢节运动规划的实时运算工作量。

2.2.3 技术痛点:实时更新居所基础信息表

在现实生活中,居室里的一部分对象,例如椅子、凳子、杯子、水壶、书籍、笔记本电脑、扫地机器人,其位置、姿态、状态处于随时变化的过程中,居室里的人、宠物也经常处于运动过程中。

这些对象在不作为任务对象的时间段内,其所占据的空间区域(及其临近的安全冗余区域)应被从人形机器人的可触及空间区域中实时予以抠除;或者,当人形机器人预判这两个区域集彼此之间即将或(/和)已经出现重叠时,应及时采取相应的措施。

所以,居所基础信息表的信息处于实时变化中,需要实时予以更新。相关信息的实时、有效获取,将成为技术痛点。

2.3 人形机器人入户服务的最大痛点:安全性

入户服务的人形机器人作为日常与人类混居的自动化机械电子设备,其安全性必然是用户考虑的首要因素。

当前人形机器人已经实现的功能包括:走几步、跑起来、上下台阶/坡道、踩碎石、后空翻、一脚踹不倒、开门、拧瓶盖、倒水、叠衣服、伸臂挪移东西,尚未有研发单位专门展示其进一步的安全性设计的效果。

这是反对者否定人形机器人应用前景的主要依据之一,也是其入户服务的最大痛点。

以下梳理人形机器人在入户服务的应用场景中可能出现的风险。

2.3.1 自主行动导致安全风险

人形机器人是自主走动、自主执行任务的机械电子设备。其制造商必须在设计上尽最大努力以确保这种自主行动不会危及人类个体(以及宠物,见第1.1.3节)的安全。

协作机器人的设计初衷与此类似,相关信息见参考资料5。

与协作机器人不同的是,入户服务的人形机器人为了尽可能多地执行在第1.3.1节所述的、面向结构化/准结构化对象的基础家政任务,其运动区域、其肢节触及区域的几何形状将是复杂、多变的,还可能(以远较协作机器人复杂的方式)与人类个体/宠物的活动区域重合,并且,这种重合的方式与出现的时刻将因由执行任务、人类个体/宠物的不可预测的行动而实时变化。

所以,人形机器人在为执行各种基础家政任务而自主行动的过程中,必须实时感知邻近区域中是否有、是否可能出现人类个体或(/和)宠物,并据此实时修改环境模型、实时评估发生碰撞的风险、实时修改运动规划算法生成的各关节轨迹点序列以实现避让。如果避让不及,也应如协作机器人那样,在关节内置力传感器感知到非预期的阻力之后,中止肢节的运动。

2.3.2 被动干扰导致安全风险

人形机器人执行基础家政任务依赖于本体内置的各种传感器。如果传感器在各种因素的干扰下性能下降甚至失效,将导致人形机器人控制系统对任务环境做出错误的判断,导致安全风险。

例如,高拟人度人形机器人的身高、体积与人类个体相似,如果有一个人从离人形机器人较近的区域走过,将导致其内置的多个传感器的探测视野在相应的方向上被大面积遮挡,从而影响其对周边环境的感知、判断,进而可能引发安全风险。

2.3.3 意外跌倒导致安全风险

高拟人度人形机器人的重心高(直立行走)且支撑范围窄(双足支撑)导致其平衡困难。在因突发事件导致其失去平衡、跌倒的情况下,身体落地过程中各肢节在重力持续作用下积累的动能有可能危及临近区域内人类个体、宠物的安全,或(/和)危及自身、临近区域内器物的安全。

2.3.4 部件失能导致安全风险

人形机器人作为一个复杂的机械电子设备,在长期执行家政服务任务的过程中,其中某些部件难免因故障/老化而失去功能(例如1个伺服电机烧毁),导致其本体的运动学模型、动力学模型发生根本性的改变(失去1个自由度),从而危及临近区域内人类个体、宠物的安全,或(/和)危及自身、临近区域内器物的安全。

3 深入应用FPGA的室联人形机器人控制系统框架设计

[本节内容可能是原创,若有读者了解此前公布过的相关工作,请告知其出处,谢谢 -- 笔者将在评论区就此予以说明并将其置顶。请关注本文内容原创性的读者关注评论区]

3.1 特斯拉Optimus-Gen2人形机器人的硬件系统配置

设计人形机器人控制系统,最好能有一个现成的机器人本体硬件系统作为基础(如《流程图》中间通道第3个步骤所述)。笔者未曾物理接触过人形机器人,目前在网上能找到的、技术信息最丰富的人形机器人是特斯拉的Optimus-Gen2,本文将基于它的硬件系统展开相关论述。

3.1.1 电机

Optimus-Gen2的硬件系统共有52个主动驱动的自由度,每个自由度需要一个电机加以驱动,各部位的电机数量如下表所列(合并参考资料1、2的内容)。

图1 特斯拉Optimus-Gen2人形机器人的电机数量、分布

基于参考资料1、2中的分析、统计,这些电机分为两类:位于两侧手部的22个空心杯电机,位于其他部位的30个无框力矩电机(分别用于16个旋转关节、14个直线关节)。这两类电机的基本驱动-反馈控制原理都与永磁同步电机类似(参考资料3、4),即,基于SVPWM-逆变器的电机矢量驱动、电流-速度-位置三环嵌套PI控制。所以,在后续的设计、分析中,为简化表述,将这两类电机统称为电机,都采用相同的、基础版本的驱动-控制机构。

3.1.2 传感器

网上目前找不到Optimus-Gen2的传感器数量统计结果,已经明确具备的有:

30个磁致伸缩力传感器,每个无框力矩电机配备1个(参考资料1,结合参考资料2所述,其数量可能略有减少),具体分布见上表;

分别位于两侧腕部、踝部的4个一体式六维力/扭矩传感器(参考资料2);

至少52个编码器,每个电机至少配备1个,具体分布见图1;

位于手指指腹的10个触觉传感器。

进而,笔者估计,为了实现自身平衡,Optimus-Gen2必须感知本体在运动过程中的3D加速度、角速度。所以,安装于躯干内的至少一个IMU(惯性测量单元)是必须的。

并且,为了在站立状态下确定脚的位姿(实用化应用场景中的地面未必水平、稳固)从而为各肢节的位姿解算提供更准确的起点,也为了在迈步过程中更好地控制迈出脚的姿态以减轻脚在落地时刻所受的冲击力,每只脚的内部应该配备了一个IMU芯片。

为了使双手能执行精确度较高的、依赖于局部位姿感知的任务,或许每个手掌里也配备了一个IMU芯片。

同时,考虑到特斯拉在视觉感知技术领域的独特优势,Optimus-Gen2必定装备了至少1个视觉传感器(探测可见光或红外光),并且很可能装备了RGB-D这类能测距(尤其是基于结构光的近场测距,类似于大黄蜂扫车换壳的那种)的视觉传感器,或许还有相应的距离-速度传感器(例如FMCW激光/毫米波雷达)与视觉传感器协同工作。

在各电机及其控制系统中,霍尔元件、电流测量、IPM内置的故障报警电路也属于传感器的范畴。

另外,监控CPU、FPGA的温度要用到温度传感器,考虑到适应具体的应用场景,Optimus-Gen2可能配备了更多温度传感器。

在后续设计中,将有侧重地考虑上述各种传感器的应用。

3.2 设计思路

3.2.1 深入应用FPGA的人形机器人控制系统设计思路

3.2.1.1 基本设计思路

基本设计思路如《流程图》的注1所述:

将人形机器人视为一个多入多出的反馈控制系统,针对实现工信部《人形机器人创新发展指导意见》所要求的以应对真实场景下的复杂环境与任务、应对突发情况为特征的实用化人形机器人功能需求,在基于CPU+软件体系结构的人形机器人控制系统之中涉及多通道并行处理且需精准协同、强实时性(低延迟量+低延迟抖动量,下同)、大运算量、大数据传输量且构成实时性性能瓶颈的环节中导入FPGA。

即,FPGA承担所有强实时性的外围任务,使CPU可以专心致志执行强实时性的高层次算法。

3.2.1.2 系统层面

在系统层面,本文以《人形机器人创新发展指导意见》强调的感知-运算-控制(电机驱动)反馈控制回路为主线,运用FPGA作为“胶合逻辑专业户”(参考资料5)的传统艺能,发挥FPGA在数据灵活调度与片内/片间数据高性能传输方面的优势,针对数据传输带宽瓶颈以及传输延迟管理进行全局统筹规划、细节优化(如参考资料9注2第4自然段所述),将FPGA作为连接感知子系统与运算子系统、连接运算子系统与控制子系统的中介,简化芯片间互联,以提高数据传输效率、降低数据传输延迟、减少远距离走线数量、降低数据传输的综合成本,同时尽可能将运算CPU从繁杂的数据传输任务中解脱出来,使其能将更多资源用于完成高层次运算任务。

3.2.1.3 感知环节

在感知环节,发挥FPGA功能灵活、多个功能低延迟精准协同并行运行、引脚丰富的优势,将其作为管理各种传感器的核心,进而对来自传感器的多路信息进行汇总、预处理,尽可能将运算CPU从繁杂的数据采集任务、初级感知算法任务中解脱出来,使其能将更多资源用于完成高层次运算任务。

3.2.1.4 运算环节

在运算环节,发挥FPGA内置大量并行运行的运算资源(乘法+加法+累加运算的硬件模块、RAM块、寄存器)且功能极其灵活、用硬件直接实现算法、存储器访问模式高效、运算模块与数据传输模块在芯片内实现紧耦合的优势,将其作为运算CPU的协处理器,分担后者的一部分运算任务,使其能以更好的实时性完成高层次运算任务。

3.2.1.5 控制环节

在控制环节,发挥FPGA功能灵活、多个功能模块低延迟精准协同并行运行、引脚丰富的优势,将其作为管理各个执行器(当前仅考虑电机)的核心,借用已经很成熟的基于FPGA的伺服电机控制方法,实现高性能的控制子系统。

3.2.2 室联人形机器人控制系统设计思路

3.2.2.1 将部分感知设备移到各居室的天花板

考虑第2.3.2节所述的安全性风险,针对人形机器人本体传感器视野受限且易被遮挡的功能痛点,借鉴车路协同汽车自动驾驶系统将大量传感器布置在路侧以提供全局视野的思路,将人形机器人感知设备的一部分设置在各居室的天花板上、与机器人本体进行实时射频通信,利用这些传感器视野开阔、布置位置灵活的优势实现对任务环境的全方位实时感知。这种人形机器人可以被称为:

室联人形机器人

3.2.2.2 将部分算法、管理子系统卸载到外置机箱

人形机器人整体体积受限,除了支撑结构、电源、动力系统必须占用其内部空间之外,还需要将很多空间用于使其可见器官像人(第1.1.1节所述拟人性的7个维度之一),例如,用体积足够、形状逼真的弹性材料模拟人类的肌肉组织,这将导致其内部容积进一步减少。再加上厚实、连续的弹性材料对散热能力的严重制约,导致人形机器人的结构对其控制系统的设计产生严重的限制。

为此,本文借鉴车路协同汽车自动驾驶系统用路侧运算模块分担车侧的算力与功耗压力的思路,在居所中增设了人形机器人外置机箱,将尽可能多的、可以容忍射频信道传输延迟(从发送端应用层数据帧尾部进入通信协议栈到接收端应用层数据帧头部离开通信协议栈的时间差,即所谓 “尾进头出”)的算法放置其中(以下将这些算法称为可卸载算法,意为可以从人形机器人本体卸载到外置机箱中的算法),以较低的成本+较高的冗余度分担人形机器人本体内置控制系统硬件设计在安装空间、电池续航性能、散热功率方面的压力。

基于同样的考虑,将管理子系统(非实时性)从人形机器人本体移到了外置机箱。

3.2.2.3 添加语音收发模块、用于连接居家口语大模型服务器的通信接口

第1.1.1节所述拟人性的7个维度之一是交流内容像人,这就要求人形机器人具备高度拟人化的语音交流能力。为此,本节在控制系统框架设计中添加了语音信号收发模块,并且提供了语音信号收发模块对外连接(楼宇/小区内的)居家口语大模型服务器的通信接口。

3.2.3 分色表述的绘图风格

在表述方式上,本文以 “感知-运算-控制”反馈控制回路为主线,将人形机器人控制系统的软-硬件功能划分为多个子系统-模块,以系统框图的形式分色予以表述,进而以框图为索引,定性描述各子系统-模块的基本功能及彼此之间的协作关系,使读者在深入应用FPGA技术的人形机器人控制系统的功能、结构、运行方式、重要特性等方面获得一个清晰的总体概念。

[注:本文将多次提到“体系结构”这个关键词汇,其定义是:为实现所要求的目标、功能而针对组织及硬件进行的设计(参考资料8)。按照笔者的理解,CPU+软件体系结构的核心特征是:单个/少量运算核心以通用的流程依次读取级联映射的多级存储器中的指令与操作数、解码指令并串行执行以实现算法功能;FPGA体系结构的核心特征是:大量分布式硬件资源直接读取单级存储器中的操作数、并行运行、用个性化硬件结构直接实现算法功能。]

3.3 深入应用FPGA的室联人形机器人控制系统框架设计

3.3.1 系统整体设计

3.3.1.1 系统框图

图2 深入应用FPGA的室联人形机器人控制系统框图

如图2(建议将其下载到PC、对照各章节观看)所示,以各主要芯片(2片运算CPU、1片工控CPU、4片FPGA)为核心,控制系统在硬件上划分为7个部分:

躯干内置的运算CPU(及其最小系统、周边的辅助功能器件,下同);
躯干内置FPGA及相关的测量-控制、通信器件;
左手手掌内置的FPGA及相关的测量-控制器件;
右手手掌内置的FPGA及相关的测量-控制器件;
位于外置机箱中的运算CPU;
位于外置机箱中的工控CPU(及其最小系统、周边的辅助功能器件,下同);
位于外置机箱中的FPGA及相关的测量-控制、通信器件,包括位于天花板上的测量器件。

除了射频通信组件,以上主要芯片之间的互联,不需要借助于任何通信协议芯片。

空间布置方面,在躯干内,建议将运算CPU与躯干内置FPGA一并布设在背板上,两者之间以PCIe总线、GPIO连线在PCB上布线直连;30组IPM以及适合集中布置的电机相关器件置于插在背板插槽中的各个插卡上。当然,如果用一块尺寸不超限的、便于向外引线的PCB就能以可接受的器件/飞线互扰而安放所有这些器件,肯定是最理想的方案。

进而,基于具体的职能,图中将6个子系统(系统管理、感知、运算、控制、芯片间数据实时传输、语音收发)按照橙、浅蓝、红、绿、深蓝、棕予以着色,以方便读者理清模块之间的协作关系,降低决策者做出实质性决策在纯粹技术维度上的门槛。

图2以参考资料2图2为基础,增加了一个结构上独立于人形机器人本体、放置在居所内的外置机箱,用于控制布设在居所环境中的传感器、处理多模态传感器信息、执行可卸载算法,并且对外实现与居家口语大模型服务器的通信,增加了与这个大模型服务器通信接口紧耦合的语音收发子系统。

[注:本节的以下段落是本文的新增内容]

特别强调:

在图2的各FPGA芯片中,除了绿色的伺服电机控制子系统可以视具体情况而作为一个整体进行时分复用(如第3.3.5.1所述)(图2中未示用于实现时分复用功能的硬件模块)以节省资源之外,所有模块(包括作为一个模块的伺服电机控制子系统)都由独立的硬件资源以“硬件直接实现算法”的方式构成,彼此之间并行运行、以FPGA内部的可编程硬件布线实现各模块之间的大带宽且强实时性的通信。

伺服电机控制子系统内部的各个硬件模块也具备上述属性。

这是FPGA体系结构区别于CPU+软件体系结构(各功能模块基于指令调度与解码而时分复用少量CPU核以实现算法)的本质属性,更详细的信息请参阅参考资料5、参考资料6

另,图2中用于实现射频通信的4个模块在文档 林伟:室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计 中被划归室联运算子系统、标记为红色,本文将其划归芯片间数据实时传输子系统、标记为深蓝色。

3.3.1.2 基于FPGA解决Optimus-Gen2灵巧手腕部走线困境

3.3.1.2.1 Optimus-Gen2灵巧手腕部的走线困境

Optimus-Gen2每只灵巧手包含很多感知、驱动设备,包括,5指指腹的触觉感知器,11个主动自由度(参考资料2)各自对应的IPM+电机+编码器+霍尔传感器+力/力矩传感器,22个电流传感器(2相法测3相,很可能与ADC集成、可以多路共用输出数据线),可能存在的IMU。

如果只在躯干设置单一的运算-控制核心,在运算-控制核心与上述器件之间将存在大量导线,即使把IPM置于主控芯片附近、不考虑动力线对信号线的干扰,从IPM到11个手指驱动电机的动力线就有33根;如果将IPM置于手掌内部,则从运算-控制核心到IPM的PWM脉冲信号线就有66根。另外,还应考虑IPM控制/告警、电机抱闸、编码器输出、霍尔传感器输出、力/力矩传感器输出、IMU输出等信号,即使其中一部分可以共用I2C总线(易受干扰),也要再多出来几十根信号线。

因此,在实用场景下,如果仅在躯干设置单一的运算-控制核心,则在肩/肘/腕部位的物理空间内(由仿人皮肤及组织包裹、塑形,例如《机械姬》里的丹妮丽丝)将既汇集多个机械、测量部件又需要穿行大量导线,而且需要分别在这3个部位的3/1/3个自由度上做大幅度的运动,致使线束的外径、刚度、磨损防控需求与走线空间、关节的运动幅度需求产生尖锐的矛盾,各条走线所受周边环境(包括机体内环境)的干扰、彼此之间的串扰也将难以处理,这就是所谓的走线困境。其中,尤以腕部为甚。

3.3.1.2.2 解决方案

如图2下半部分的虚线框所示,以位于手掌中的一片FPGA为核心,实现上述运算-控制核心在手掌部位的大部分功能,仅以少量串行差分信号线对实现手掌内置FPGA、躯干内置FPGA之间的强实时性信息交换,再以后者为中介,实现手掌内置FPGA所控制的感知-驱动设备与运算CPU之间的强实时性主线信息(传输在感知-运算-控制这一反馈控制环路主中的信息)交换、与工控CPU之间的非实时性管理信息交换。

具体而言,FPGA能并行且灵活地执行大量强实时性、强时序耦合的大运算量任务,并且能提供大量用户I/O引脚,因而可以以15x15mm(CSG324)的本体芯片平面区域占用而独力(不需要外置内存、芯片组)实时执行11个电机的轨迹点插值及其基于SVPWM-逆变器的三环反馈矢量控制算法,并且以点对点的、基于差分信号(抗共模干扰)的高速串行通信实现与躯干内置FPGA的全双工强实时性数据交换,并且为相关感知、驱动信号出入FPGA提供引脚。

同时,将配置FPGA所需的串行FLASH(基本上不参与实时运行)挪到下臂空间内,再将11片IPM(典型尺寸12x12mm)、1片IMU(典型尺寸5x4mm,图3中按照7.5x6mm)一并挤进手掌空间内(PCB只能在手掌厚度方向上与11个包含电机-编码器-力/力矩传感器的关节驱动机构重叠放置),单面平面布置如图3(真实比例)所示,其中,手掌内部空间的平面尺寸为78x90 mm。

图3 手掌内FPGA、IPM、IMU的单面平面布置(不了解其他器件的情况)

如此,在手腕部位就只需穿行少量串行差分信号线、SPI(FLASH用)线路、电源线、地线,问题得以解决。

3.3.1.2.3 待确认的问题:布线、电磁兼容、散热

从手掌内置FPGA引出的数字量信号线有一百多条,可能还需要与IPM的动力线输出线保持距离,IPM动力输出线在PCB上的布线可能会比较宽(不了解具体情况),再加上其他传感器的布线,的确是“螺蛳壳里做道场”的感觉,并且有把腕部的问题转移到手掌的嫌疑。

显而易见,电磁兼容问题肯定也会很复杂。甚至,将FPGA、ADC(即使一部分ADC可以集成在FPGA内部)、IPM三者放在一块PCB上,管控电磁兼容的成本是否将非常高甚至根本就不可行?

另外,长期工作过程中,如何在局促、密闭的空间内为手掌中的关节驱动机构、IPM、FPGA散热?这也需要在后续工作中深入研究。

3.3.1.2.4 将这一布局方式拓展到肩部、髋部

现实情况有可能是,即使按照3.3.1.2.2节的方案,考虑到腕部、肘部的IPM-电机-传感器的走线需求,在肩部的走线难度仍然非常大。

倘若如此,可以考虑将这一布局方式向上拓展,在下臂空间内增设一片FPGA,负责为腕部、肘部的4组IPM-电机-传感器提供强实时性的运算、控制、通信服务。

下臂内置FPGA内部模块的设计与手掌内置FPGA类似,电机、IPM数量减为4,取消指端触觉传感器、IMU,对外以全双工高速串行通信方式直连躯干内置FPGA(与手掌内置FPGA共同作为星形拓扑的外围节点),后者的FPGA片间全双工串行直连接口模块的数量由x2改为x4,并且将其中的轨迹点插值-电机控制子系统的数量减为22(=30-4x2)。

同理,如果髋部、膝部的走线也存在类似问题,亦可用类似的方式解决:增设的FPGA置于小腿内部空间,负责为踝部、膝部的3组IPM-电机-传感器提供强实时性的运算、控制、通信服务,星形拓扑,相应在躯干内置FPGA中增加FPGA片间全双工串行直连接口模块的数量至x6、减少轨迹点插值-电机控制子系统的数量至16(=22-3x2)。

为简化叙述,后续内容将不考虑本节述及的、对系统框架的(备选)更改项。

3.3.1.3 关于内置CPU硬核的FPGA(SOC)

目前,以Xilinx的Zynq系列芯片为代表的、内置CPU硬核(通常是双ARM核)的FPGA已经获得比较广泛的应用。将其应用于图2所述系统,可以使运算CPU、躯干内置FPGA集成在一片芯片内,形成一个初级的片上系统(SOC,System On Chip),图2中比较累赘的PCIe总线(通常用于板间经插槽互联)将被AXI之类的片内总线取代,通信体系结构显著化简,通信效率显著提高。

更重要的是,内置CPU硬核的FPGA在架构上更接近于工信部《人形机器人创新发展指导意见》强调的“‘感-算-控’一体化的高性能运动控制器”+“具有多模态空间感知、行为规划建模与自主学习等能力的智能芯片”这一终极形态,高端芯片中甚至额外集成了GPU,很适合用作抵达终极形态过程中的中间版本。

事实上,以这类芯片为核心的机器人/AGV项目,网上已经能找到不少。

本文之所以没有采用这种芯片,不仅因为其在本质上与图2所述架构并无不同,更重要的是,笔者不希望在将FPGA深入应用于人形机器人这一核心主题之下节外生枝。即:

对于不熟悉FPGA的人形机器人业内人士来说,把握本文的核心思想、理解其工作机制,这件事本身已经需要在很大程度上转换既有的思路。如果再加上Zynq这类芯片的各种专用表述、附加特征,将显著增大读者的阅读负担,不利于读者理解、把握本文的主旨。

所以,本文采用了FPGA与CPU分立的架构,将已经广泛应用的PCIe作为两者之间的主信道。

3.3.2 管理子系统(橙色)

管理子系统的主体部分位于外置机箱中,其核心是工控CPU,硬件包括CPU、基础外围芯片(例如南桥、内存),运行常规版本的工控软件系统,用于实现非实时的系统管理功能。

位于图中左上角的基于世界时时标的同步信号序列的生成与分发模块,实现的是强实时性功能。由于其具备很强的管理属性,也被划归本子系统。

3.3.2.1 FPGA所涉系统管理信息的收发

工控CPU经I2C总线(采用I2C是为了节省FPGA的I/O引脚)与位于外置机箱中的FPGA内部的I2C接口模块通信,经后者向系统管理信息汇集调度与分发模块发送系统管理指令信息、从系统管理信息汇集调度与分发模块获取由FPGA内各模块反馈的系统管理所需信息。

为避免图面线路繁杂,图2中未示出系统管理信息汇集调度与分发模块与FPGA内其他各模块之间的信息传输通道。

与位于外置机箱中的FPGA内部的系统管理信息汇集调度与分发模块类似,躯干内置FPGA中也设置了这一模块,其功能与前者基本相同,区别在于需要经射频通信链路(由外置机箱中FPGA内部的射频通信组件驱动模块、外置机箱中的射频通信组件、射频信道、躯干内置的射频通信组件、躯干内置FPGA内部的射频通信组件驱动模块组成)与前者通信,实现系统管理用信息在躯干内置FPGA内部各模块与工控CPU之间的往来传输。同理,图2中未示出系统管理信息汇集调度与分发模块与FPGA内各其他模块之间的信息传输通道。

与位于躯干内置FPGA内部的系统管理信息汇集调度与分发模块类似,左、右手掌内置FPGA中也设置了这一模块,其功能与前者基本相同,区别在于需要经一对FPGA片间全双工串行直连接口模块与前者通信,实现系统管理用信息在左、右手掌内置FPGA内部各模块与工控CPU之间的往来传输。同理,图2中未示出系统管理信息汇集调度与分发模块与FPGA内各其他模块之间的信息传输通道。

3.3.2.2 运算CPU、用户设备的管理

位于外置机箱中的运算CPU模块经PCIe总线、位于外置机箱中的FPGA内部的系统管理信息汇集调度与分发模块、I2C总线实现与工控CPU的连接,以往来传输特定格式的应用层数据帧的形式接受工控CPU的管理。

躯干内置的运算CPU模块经PCIe总线、位于躯干内置FPGA内部的系统管理信息汇集调度与分发模块、射频通信链路实现与工控CPU的连接,以往来传输特定格式的应用层数据帧的形式接受工控CPU的管理。

用户IO端口模块挂接在工控CPU的外部总线上,包含网口、管理用射频通信接口、USB端口、TF卡槽、显示器接口、键盘鼠标接口等,用于在用户与人形机器人之间经射频通信链路实现非实时的信息交互。

3.3.2.3 世界时时标的建立与分发

人形机器人的实用化,应实现本体与世界时时标的协同运行。例如,它可能需要按时给老人服药、按时带小朋友乘坐民航班机。

位于外置机箱中的FPGA内部的时标建立与保持及系统同步时序管理模块从位于芯片外部的世界时时钟源模块(例如北斗、GPS接收模块或其位于本地的次级子系统)获取世界时时标信息并将其周期性发往系统管理信息汇集调度与分发模块,由后者将其转发给工控CPU、实现整机时标与世界时的同步;以及,经GPIO将世界时时标信息周期性发送给运算CPU,经射频通信链路将世界时时标信息周期性发送给躯干内置FPGA中的系统管理信息汇集调度与分发模块。

3.3.2.4 同步信号序列的生成与分发

时标建立与保持及系统同步时序管理模块以世界时时标为基准产生人形机器人控制系统所需的各种同步信号序列,发往系统内的各子系统、模块,实现人形机器人动作序列与世界时时标的统一,实现控制系统内部各子模块动作之间的精确同步 – 由于各片FPGA之间形成以躯干内置的FPGA为中心的星形拓扑,没有中间环节,各FPGA内部各模块的各个动作时序的各个时间节点之间的同步精度是深亚微秒级。

同时,这一机制也为将人形机器人的动作细节精确同步于世界时钟、适配于高精度实用场景提供了底层技术支持。

3.3.2.5 世界时时钟源失效后的时间保持

作为以实用化为设计目标的人形机器人控制系统,必须应对世界时时钟源失效的状况,避免因此影响服务质量甚至造成不良后果(例如在错误的时间服药、错过登机时间)。

在卫星信号缺失并且卫星定时次级子系统也工作不正常的情况下,世界时时钟源将失效。此时,除了应由工控CPU经人机接口发出告警信息,时标建立与保持及系统同步时序管理模块必须在故障前世界时时标的基础上基于板载晶振(以及特定的晶振频偏补偿算法)自行保持世界时时标的更新、同步信号序列的发送,即所谓时间保持

为确保人形机器人所提供服务的时效性,时间保持必须满足一定的精度。例如,自行生成的时标在1天内相对于真实卫星时标的误差绝对值曲线的峰值小于0.1秒。

并且,当世界时时钟源回复之后,本地保持的世界时时标应以渐变方式(而非跳变方式)恢复与世界时时钟源的同步,以免造成精确定时系统的紊乱。

本节所述思想借鉴自智能变电站领域,已有成熟的规范,建议参阅IEC-61850或相关技术文献。

3.3.3 感知子系统(浅蓝色)

感知子系统用于获取本体、环境的信息,为控制系统做决策提供原始数据。

3.3.3.1 室联感知

基于3.2.2所述思路,在各居室天花板的4角装设RGB-D摄像头,实现对各居室空间的无死角3D建模,实现对居所及其中对象的实时监控。

或者,在成本不敏感的应用场景下,又或者,在FMCW激光雷达的成本大幅度降低(例如核心功能实现芯片化)的情况下,在各居室天花板的4角装设FMCW激光雷达(能测量目标的3D点云、径向运动速度),实现对室内空间的无死角3D建模与运动速度联测(综合4个FMCW激光雷达测得的目标点相对于激光雷达的径向运动速度);同时将上述RGB-D摄像头降级为普通摄像头以降低总成本。

所有这些外置传感器的测量数据都实时汇总到外置机箱内的FPGA中,由其中的模块统一进行预处理,预处理后的数据流经模块、模块传输给外置机箱中的运算CPU。

本子系统获得的信息被用于建立、实时更新第2.1.1节所述的居所基础信息表,其存储位置是位于FPGA内部的RAM块,以确保其更新、调用的实时性。

3.3.3.2 感知设备及其驱动、信息接收与解算

图2所示感知设备的厂家已经提供了规范的接口,用于对其进行访问,设备的驱动、信息接收与解算按照数据手册做即可,不予赘述。

另外,电机周边的电流检测、编码器、霍尔元件原则上也属于传感器,但由于其功能紧密耦合电机驱动功能且与电机一一对应、配套提供,为使控制子系统看上去功能完整而将这些传感器归入其中。

3.3.3.3 传感器信息预处理、初级的传感器融合

传感器融合是人形机器人控制系统的必备功能,本框架设计将其分为两级:位于FPGA中的多维度传感器信息预处理、传感器融合基层算法模块用于对传感器信息的数据模式进行变换(例如图像的色度空间变换)、从中提取特征信息(例如频谱谱峰的位置、强度),进而实现相对简单、初级的传感器融合算法,高级的传感器融合算法交由运算子系统(图2中标记为红色)执行。

其中,

躯干内置FPGA处理来自人形机器人头部、躯干、四肢的传感器信息;

左/右手内置FPGA处理来自人形机器人本侧手掌、指关节、指端的传感器信息;

外置机箱中的FPGA处理来自居所内各居室天花板上的传感器信息。

同类传感器的初级融合的实例:将多个摄像头所摄视频图像按帧拼接(通常需要基于ORB、SURF之类的图像特征子提取与配对)、形成周边环境的全景视频数据流。

异类传感器的初级融合的实例:将布置在人形机器人本体、天花板的摄像头所摄视频图像与相应位置的激光雷达获取的距离场+速度场点云数据做配准,形成世界时时标下的对室内环境的多维数据描述序列。

不论实现传感器信息预处理算法,还是实现传感器融合的初级算法,都应考虑充分运用神经网络(例如CNN、GNN)技术、从传感器输出的原始数据流(及其预处理后的形态)中直接提取高维信息。

上述多维数据描述序列(以及其他传感器采集的信息)经由FPGA片内数据调度中心模块、PCIe端点模块、PCIe总线传递给运算CPU,由软件实现高级传感器融合算法,相关任务在第3.3.4节介绍。

其中,由人形机器人本体内置传感器采集的多维数据描述序列经由FPGA片内数据调度中心模块,传递给外置机箱内置的FPGA、外置机箱内置的运算CPU,由软件实现高级室联传感器融合算法,相关任务在第3.3.4节介绍。

上述运算过程涉及大量图像、点云等数据的缓冲,很可能用到容量较大的FPGA片外专用存储器,其中最常用的是DDRx-SDRAM内存芯片,如图2中躯干内置FPGA的左上角、外置机箱中的FPGA的左上角所示。

3.3.3.4 数据处理过程与世界时时标的同步

需要特别关注的是,对各感知设备输出信息的采集、预处理、融合(包括由运算CPU执行的高层次融合)操作,都应在世界时时标(见第3.3.2.3节)之下进行。即,这些数据处理操作都应同步于时标建立与保持及系统同步时序管理模块输出的、同步于世界时时标的、属于本操作的同步信号序列(包括经由FPGA芯片间串行直连接口传输的或者经由运算CPU-GPIO以及射频通信链路传输的同步信号序列及其衍生信号序列)-- FPGA内部数量极其丰富的、延迟可预知的布线资源为这些信号序列的传输提供了可靠的支持。

后续的各子系统中的运算CPU算法的执行、FPGA内部各模块的数据处理操作,也都应以这种方式同步于世界时时标,不再赘述。

3.3.3.5 关于自研传感器

如果希望像特斯拉那样为Optimus-Gen2自研某些传感器,则需要研发团队深入研究相关传感器中将理/化信息转化为电信号特征的原理、传递函数、数据后处理机制,例如《流程图》注7第2自然段所述技术项:传感器的动态自适应驱动与反馈控制,输出数据的动态自适应预处理(例如针对六维力/加速度传感器输出数据波形的频谱生成与分析+自适应滤波降噪+特征子识别与量化分析进而据此实时反馈调节传感器的工作模式、参数)。

一般来说,自研传感器涉及的运算、控制过程,会用到以低延迟实现大运算量算法(若算法构思无误则其运算量大概率与效果正相关)、低延迟的数据传输、精准的时序控制、更多的控制芯片I/O引脚,非常适合用FPGA予以实现

3.3.4 运算子系统(红色)

如图2所示,运算子系统由位于外置机箱中的运算CPU模块、位于外置机箱中的FPGA中的运算CPU算法任务协处理模块、位于躯干中的运算CPU模块、位于躯干内置FPGA中的关节运动轨迹点插值模块和运算CPU算法任务协处理模块、分别位于左右手掌内置FPGA中的关节运动轨迹点插值模块这7个模块组成。

运算子系统基于感知子系统提供的信息,周期性地完成对环境、本体、工作目标的实时建模,基于所建模型算出下一个轨迹点输出时刻各关节的轨迹点参数,完成各关节的轨迹插值,再将插值结果发往控制子系统中对应于各关节的电机控制通道。

3.3.4.1 运算CPU

3.3.4.1.1 运算CPU工作周期

运算CPU模块经GPIO(以及射频通信链路)定期由时标建立与保持及系统同步时序管理模块获得世界时时标,在这一时标的统一定时之下,与感知子系统、控制子系统的工作时序相配合,划定自己的工作周期,称为运算CPU工作周期

图4 人形机器人控制流程中各个步骤的时间关系示意图

图4是以运算CPU工作周期为核心划分的、人形机器人控制流程中各个步骤的时间关系示意图,以下对照此图介绍运算CPU模块所执行的算法任务及其与前、后数据处理步骤之间的逻辑、时序关系。

图4中,时间箭头从上向下,涵盖了3个运算CPU工作周期(编号N~N+2),彩色字体标记的是完成一次反馈控制(感知-运算-控制)的数据处理过程,各彩色字体子系统的字体颜色与图2一致。

必须说明的是,图4仅仅是示意图,其中不同列内各单元格在时间维度上的关系,仅表明其逻辑、时序关系谁先谁后,不排除在时间轴上存在部分重叠。例如,不需要等到浅蓝色单元格的传感器信息的接收、解算工作完全结束,针对这些数据的传感器信息预处理乃至传感器融合初级算法就可以部分启动了。

3.3.4.1.2 执行传感器融合上层算法以及对环境、本体、工作目标的实时建模

在时标建立与保持及系统同步时序管理模块的统一调度下,躯干内置的运算CPU在图4中运算CPU工作周期N+1的起始时刻,已经借助用于控制PCIe根复合体的DMA控制器从3片FPGA中的多维度传感器信息预处理、传感器融合基层算法模块获得了地球空间坐标下的对环境、本体、工作目标的多维数据描述序列(在运算CPU工作周期N内生成、传输,如图4中浅蓝色字体的单元格内容所示)(见3.3.3.2节),然后执行传感器融合上层算法,进而从上述描述序列中提取高维信息,完成对环境、本体、工作目标的实时建模,获得三者的实时模型在本工作周期内的版本。

[注:以下2个自然段是本文的新增内容]

外置机箱中的运算CPU的工作模式与躯干内置的运算CPU相似,区别在于处理的是位于天花板上的多维度传感器信息,即,从外置机箱中的FPGA中的多维度传感器信息预处理、传感器融合基层算法模块获得了地球空间坐标下(但各个视角的方向来自天花板上安装对应的传感器的位置)的对环境、本体、工作目标的多维数据描述序列,据此执行传感器融合上层算法,从上述描述序列中提取高维信息,完成对环境、本体、工作目标的实时建模,获得三者的实时模型在本工作周期内的版本。

两个运算CPU中的一个需要将各自对环境、本体、工作目标的实时建模结果进行整合,据此形成室联人形机器人对环境、本体、工作目标的综合实时建模。这项工作(连同3.3.4.1.3节所述的运动规划工作)如果由外置机箱中的运算CPU执行,则可以更充分地利用其供电、散热优势;如果由躯干内置的运算CPU执行,则由于在两个运算CPU之间经射频信道传输的数据较少(仅需要从外置机箱向人形机器人本体传输在其中完成的建模结果,反之则既需要从人形机器人本体向外置机箱传输建模结果,又需要从外置机箱向人形机器人本体传输运动规划结果),更有利于降低由数据传输导致的反馈控制回路延迟。具体如何权衡,需要在系统设计的特定阶段(《流程图》中间通道的第5个环节)进行深入研究。

本节所涉算法很复杂,笔者对其细节的理解很少,只知道其运算量极为庞大。在近年来的公开资料中,基于CPU+软件针对其中某个环节(甚至是某个环节中的某项运算),在抽象程度较高的应用场景下的单次运算耗时通常为10ms数量级(请专业人士指正),不能满足实用化需求,尤其是不能满足《人形机器人创新发展指导意见》所提出的应对突发情况的需求。所以,用FPGA提供低延迟的、灵活的运算-数据传输协处理服务(见3.3.4.1.4、3.3.4.3节),分担运算CPU的计算压力,必将为本节所涉算法的实用化提供有效的助力。

3.3.4.1.3 运动规划

在当前周期的建模完成后,以环境、本体、工作目标的实时模型为基础,执行实时运动规划算法,将当前解算出的任务目标映射为此后一段时间(在最简模式下是一个运算CPU工作周期的时长)内人形机器人的动作过程,再将对这一段动作过程的描述映射为人形机器人的52个关节在此期间的运动轨迹中的一系列分立的(通常是等时间间隔的)轨迹点,在预设的各个轨迹点输出时刻输出52个关节的轨迹点参数(图4中红色字体的运动规划环节),进而将这些参数经PCIe总线发往躯干内置FPGA、经由后者发往左右手掌内置FPGA,由这3片FPGA中的关节运动轨迹点插值模块完成轨迹点插值运算(图4中红色字体的关节运动轨迹点插值环节)(见3.3.4.2节)。

本节所涉算法造成的算力压力与3.3.4.1.2节类似,不再赘述。

3.3.4.1.4 将运算任务卸载给FPGA中的协处理模块

如果3.3.4.1.2、3.3.4.1.3节所涉任务的运算量太大,不能在当前的运算CPU工作周期内完成,则需要修改软、硬件任务的划分,将一部分可以规范化、格式化的运算任务从整个运算流程中剥离出来,经PCIe总线交由躯干内置FPGA中的运算CPU算法任务协处理模块予以执行、回传结果(见3.3.4.3节,图4中未示出),再将回传的结果代入软件运算流程中其所属任务被应用的位置,继续执行相关的高层次算法。

在上述“剥离-代入”的过程中,运算CPU所执行的算法应能够允许运算CPU转而执行其他任务,从而实现运算CPU与运算CPU算法任务协处理模块的并行运行,只要这种硬件并行在时间上的收益大于开销(剥离操作、往来传输运算任务及其结果的操作、代入操作),就能降低运算CPU执行整个算法的耗时。

在1个运算CPU工作周期内,上述“剥离-代入”的过程可以针对不同的操作数、算法而多次执行。

具体移交哪些算法任务、各算法任务在时序上如何调度,需要在《流程图》中间通道的第5个环节予以初步确定,并且在后续环节进行调整。

运算CPU算法任务协处理模块执行协处理算法的更多信息,请参阅第3.3.4.3节。

3.3.4.1.5 深入应用FPGA技术为高层次算法的前沿探索提供助力

第3.3.4.1.2、3.3.4.1.3节所述高层次算法非常复杂,并且,基于笔者涉猎范围内的资料,其中一些重要环节的原始理论、基础模型、数学形式优化工作都还处在探索之中(请专业人士指正),本文只能就其在深入应用FPGA的控制系统中的位置、与其他模块的关系(尤其是FPGA能为其提供的帮助)做出定性描述。

在具体的人形机器人研发过程中,所涉环节的算法可以先移植已有的、相对成熟算法,将其应用于本文所述的控制系统,验证在这一系统下所实现的人形机器人性能相对于既有控制系统的优势,再在后续工作中及时跟随、应用相关理论与算法的最新研究成果

并且,基于本文所述系统所做的验证工作,也很有希望拓展后续理论、算法前沿研究工作的思路,理由是:

理论、算法研究必须考虑其硬件可实现性。一旦在实际的人形机器人上验证了深入应用FPGA之后的硬件系统可以在相同的时间段内支持更复杂的算法,今后的理论、算法研究工作就可以考虑一些此前被放弃了的高性能算法 -- 这些算法在CPU+软件体系结构(或现有的、仅在3.3.5节所述控制子系统中应用FPGA的CPU+软件+FPGA体系结构)下因为太复杂、不能实时执行而被理论、算法的前沿研究者放弃

3.3.4.2 关节运动轨迹点插值

在控制逻辑上,关节运动轨迹点插值模块共有52个(对应于52个电机),躯干内置FPGA中30个,左、右手内置FPGA中各11个,视需求情况可以考虑在FPGA代码中对模块进行时分复用以减少对片内硬件资源的占用。

这52个插值模块经PCIe总线从躯干内置的运算CPU(执行运动规划算法模块)获得各自需处理的轨迹点参数序列,按照预设算法对其进行插值,得到52个插值后轨迹点参数序列(其中相邻轨迹点的时间间隔远小于插值前的、由运动规划算法软件模块获得的相邻轨迹点的时间间隔),发送给控制子系统中各自对应的电机控制通道。

此即图4中红色字体的关节运动轨迹点插值环节。

3.3.4.3 FPGA对运算CPU算法任务的协处理

鉴于运算CPU所需执行算法(第3.3.4.1.2、3.3.4.1.3节)的运算量巨大,且具有强实时性要求,其算力可能不足以在运算CPU工作周期内完成规定的算法任务。

因此,本框架设计在FPGA中为运算子系统设置了运算CPU算法任务协处理模块,作为运算CPU的“协处理器”(如《流程图》注2第3自然段所述)。

3.3.4.3.1 基础/通用运算任务的协处理

运算CPU在执行高层次算法的过程中,在某些特定步骤,将后续的一些步骤(程序作者知道在一段时间之后才会执行这些步骤,以下称之为后继步骤)中的一部分已知运算内容且已知运算所需操作数的基础/通用运算任务(例如乘法运算、三角函数运算、矩阵运算、解线性方程组)提取出来,以预定义的任务序号+任务代号+任务属性列表+操作数列表的形式打包,经PCIe总线发给运算CPU算法任务协处理模块,由后者调度FPGA内置的几百上千个运算核心(能够以高性能执行类似于乘法+加法+累加运算的可配置硬件模块)以及与之临近的存储、布线硬件资源,以灵活适配于相关运算任务的模式多路并行运行、执行与任务代号对应的运算任务。运算任务完成之后,将运算结果与任务序号打包,经PCIe总线实时回传给运算CPU,运算CPU将这些结果存储,到后继步骤执行时,就可以直接调用这些计算结果。

这样,就实现了将高层次算法中的部分基础/通用运算任务卸载到FPGA中执行,实现两者在一定程度上的并行运行,助力运算CPU实时完成高层次传感器融合、内外建模、轨迹规划运算。

另外,关于上述被卸载算法中的操作数,还存在两种情况

第一,这些操作数是在后继步骤之前执行的高层次算法步骤中产生的,这种情况应该按照上述方式操作。

第二,这些操作数是由FPGA经PCIe总线传递过来的、基于传感器信息由多维度传感器信息预处理、传感器融合基层算法模块、电机位置/转速检测模块产生的。在这种情况下,就可以省略上述将任务代号+任务属性列表+操作数列表打包下传的操作,而是由FPGA按照已知的任务代号+任务属性列表+操作数列表执行这些运算操作(因为位于数据源头、由物理上独立工作的硬件资源执行,这些操作必定能在运算CPU执行上述后继步骤之前执行完毕),完成后将运算结果打包、经PCIe总线实时上传给运算CPU,由后者在执行后继步骤时直接调用。

3.3.4.3.2 专项业务运算任务的协处理

这里所说的专项业务,是指人形机器人控制流程中的、针对某个相对独立的目标的具体业务。

由FPGA以协处理器的方式承担专项业务的运算任务,在形式上与执行基础/通用运算任务没有本质区别。之所以将其单独列为一节,是希望不熟悉FPGA的业内人士重视这一思路的可行性、重视其应用对提升人形机器人性能的意义。

以下借助人形机器人肢节在足部有可靠支撑状态下的运动学、动力学基础参数实时解算(这是本体动力学建模、运动规划算法的前置任务)的例子,阐述这一思路的应用方法。

如图2所示,除了与运算CPU通信的接口之外,运算CPU算法任务协处理模块的数据源还包含52个电机的转动位置、角速度的实时测量结果(双手22个电机的测量结果经FPGA片间全双工串行直连接口模块实时传输给运算CPU算法任务协处理模块),以及来自支撑足IMU的位姿信息。

针对某个运动学、动力学参数解算周期(可以是运算CPU工作周期的几分之一或与之相同)对应的上述数据源(称为当前周期数据源),运算CPU算法任务协处理模块以当前周期数据源中的支撑足IMU位姿信息为起点,根据预存在FPGA片内RAM块中的各肢节简化模型(例如仅包括肢节的长度、径向质心位置、质量)的参数,自下而上逐级计算各关节等效中心在3D方向上的位置投影的纵联累加和(类似于工业机器人在基座固定这一前提下的各肢节空间位置、角度的解算),从而算出当前周期数据源对应的人形机器人各肢节的空间位姿参数

同时,如果在上述解算过程中加入当前周期数据源中52个电机的角速度信息,就能自下而上逐级计算各关节的等效中心在3D方向上的速度投影的纵联累加和;进而,基于预存在FPGA片内RAM块中的各肢节的质心位置、质量参数,在各关节位置、速度解算过程中,随同计算得到各肢节的动力学参数

另外,基于上述各肢节的空间位置参数、质心位置,还可以自下而上逐级计算得到各肢节所受重力相对于双足(单足)支撑区域的力矩(姑且称之为重力力矩参数)。

最后,将当前解算周期解算得到的各肢节的运动学、动力学、重力学参数经PCIe端口上传给运算CPU,后者就可以不再做上述基础参数解算工作,将更多算力用于对人形机器人本体执行动力学建模的上层算法、从环境及任务约束的角度评估其站立姿态的稳定性(及其发展趋势),进而执行运动规划算法。

3.3.4.3.3 “真空球形鸡”之辩

人形机器人的任何一种专项业务算法,只要面向实用化应用场景,算法内容都必须处理各种实际情况,以第3.3.4.3.2节的例子为例:

其一,如果人形机器人的当前状态是双足支撑,则对于从两个起点开始的、自下而上的运动学--动力学参数解算,在两路解算完成髋部3个自由度的运算、到达骨盆时,对骨盆参数解算的两个结果之间必定存在差异。此时,最简单的处理方法是对两路运算的结果取均值,但这种做法的精度有可能无法满足实用化应用场景的需求的。

具体如何确定两路解算结果在被采纳结果中的权重,与很多因素相关。例如,当前双腿姿态的差异对解算误差的影响(承重比例、扭转方向都将影响关节间隙的大小进而影响解算结果的可信度),必定是影响权重的因素之一。

其二,从足部支撑点开始向上进行的解算过程,当到达躯干部位时,其对躯干姿态的解算结果,与基于躯干内置IMU输出数据而解算得到的躯干姿态相比,两者同样必定存在差异,同样存在上述权重问题。

也就是说,第3.3.4.3.2节中针对所述例子列出的算法内容,本质上仅仅是一个概略的算法框架,距离实用化还存在很大的差距。严肃地说,这属于“真空球形鸡”方案。

同样的情况,也出现在本文对人形机器人所涉其他算法、方案的阐述中,例如,在第3.1.1节,将无框力矩电机、空心杯电机统称为电机,都采用基础版本的驱动-控制机构,未考虑转速测量的精度与时效性、对电流测量结果的特征提取与滤波等问题;述及IMU时,未考虑其零点漂移、误差累积问题;在第3.3.1.2.2节,布置芯片时仅考虑了FPGA、IPM、IMU,未考虑其他器件 ……

第3.3.4.3.2节中之所以采用这个方案作为例子,是因为本文阐述的是在人形机器人控制系统中深入应用FPGA技术的框架设计,所强调的是,相关算法的基础部分、主体部分可以在FPGA中予以实现,希望不熟悉FPGA的业内人士了解这一情况,进而深入思考这一技术思路的价值。

至于本节所述的、实现过程中的各种具体问题的解决,首先不在本文阐述的范围之内;其次,在具体的解决方案中,FPGA由于其功能灵活性、低延迟的大运算量并行处理能力,很可能也是最适用的底层技术选项

3.3.5 控制子系统(绿色)

控制子系统用于控制电机。

图2中的电机控制采用经典的基于坐标变换+SVPWM+逆变器的电流-速度-位置三环反馈矢量控制方法。本文主要面向机器人行业的专业人士,不再针对其中的具体模块做详细介绍(相关资料在网上有很多)。

在图2所述电机控制通道的基础上,实际产品中还必须用到各种附加功能,本文做的是框架设计,对此不予详述。

3.3.5.1 电机控制算法通道

图2中单片FPGA中的绿色模块共同构成一个电机控制算法通道(其中执行运算任务的模块因与本通道其他模块强关联而被包含在本通道内)。这样的算法通道共有52个,躯干内置FPGA中30个,左、右手内置FPGA中各11个,在逻辑上每个IPM-电机组合都对应一个控制算法通道,与关节运动轨迹点插值模块一一对应。视具体情况,可以考虑在FPGA硬件层面对其中的部分模块进行时分复用,以减少资源占用。

对于电流-速度-位置三环嵌套PI控制,位于外环的速度、位置环的控制周期远大于位于内环的电流环,可供执行运算的时间比较充裕,因此,在已有的基于CPU+FPGA的工业机器人控制系统中,通常仅在FPGA中实现电流环,而将速度、位置环交由CPU实现。

本框架设计中考虑到,运算CPU需要承担的运算量巨大且对运算过程有强实时性要求,还需要经由PCIe端口与FPGA实时交换大量数据(即使借助于DMA控制器,CPU-软件系统也要面向内存读写大量数据),因而在图2中将速度、位置环也合并进FPGA中予以实现,以减少对PCIe端口有效带宽、CPU软-硬件件资源的占用。

3.3.5.2 电机抱闸

从实用化的角度看,人形机器人对于静止状态下的结构稳定性有很高的要求,尤其是在执行任务过程中。如果静止状态下正在对目标物体进行支撑(例如抱着个宝宝),就需要严格确保各关节的稳固

基于这一考虑,控制通道中应提供电机抱闸功能。即,各电机控制通道的位置环检测到电机转动到了设定的角度之后,向电机发出抱闸信号,使电机轴稳固锁定在当前角度,确保人形机器人在不需要运动的时段内不动如山。

当然,更高层次的安全并非这种抱闸后的固定不动,而是各关节随同实用化外部环境的变化主动转动,用“接-化”的方式(致敬马老师)消除一部分干扰乃至外部冲击(例如各种演示视频中人形机器人被踹或脚踩障碍物的场景),保持自身整体的相对稳固,确保对任务目标物(宝宝)的保护。

进而,在解除抱闸、由静到动的过渡瞬间,大概率不可以一股脑地开闸、加载PWM波形了事。如何精微管控52次解除抱闸与52次启动电机之间的时序关系(即使只有1个电机也存在两种操作时序关系的优化问题),如何设计电机启动过程中的反馈控制微操细节,以实现人形机器人动作启动过程的安全、平稳、平滑,实现被服务人类个体视觉、体感乃至听觉的舒适,有可能成为(或者,已经成为)友商之间比拼性能的重要着力点之一

这种在上层建模、模型分析、运动规划算法的指挥下实现精准的多点时序控制、精微的反馈控制过程优化,正是FPGA的用武之地

3.3.6 芯片间数据实时传输子系统(深蓝色)

这里的“芯片间”是指运算CPU与躯干内FPGA之间、躯干内FPGA与手掌内FPGA之间、躯干内FPGA与外置机箱内FPGA之间。

3.3.6.1 PCIe总线

PCIe端点模块作为躯干内PCIe总线中的唯一从节点,用于实现躯干内置FPGA与运算CPU之间的通信,PCIe总线的主节点是运算CPU中的PCIe总线根复合体。

之所以采用PCIe总线,是因为这是目前最成熟的、最便于集成到现有人形机器人控制系统之中的、可以实现运算CPU与FPGA高速通信的总线。

本框架设计中的运算CPU的PCIe总线上只有躯干内置FPGA这一个从设备,所以完全可以设计为板内经PCB布线直连(未来ASIC化时肯定要换成AXI之类的片内总线),以此省下被接插件占用的空间,同时降低高速布线的长度、降低PCB设计难度、优化信号质量。

外置机箱中的PCIe总线的使用方式与躯干内的PCIe总线相同。

3.3.6.2 FPGA片内数据调度中心

如图2所示,FPGA片内数据调度中心模块,在躯干内置FPGA中是运算CPU经PCIe端点模块与躯干内置FPGA中各模块通信的中介,在手掌内置FPGA中是躯干内置FPGA经PCIe端点模块与手掌内置FPGA中各模块通信的中介,在外置机箱中的FPGA中是运算CPU经PCIe端点模块与外置机箱中的FPGA中各模块通信的中介,其在这4片FPGA中都是多条数据路径的汇总、转接、分发之处。

这个模块所转接的各路数据及其各自的作用,大多数已经在前面各节中介绍过,不再赘述。

需要注意的是,必须设计特别的机制,以确保经由手掌内置FPGA的FPGA片内数据调度中心模块发往FPGA内各模块的同步信号与躯干内置FPGA中对应的同步信号之间的时间误差不超过系统设计所要求的门限,以确保手指22个关节的动作过程与其他30个关节的协同程度。

3.3.6.3 FPGA片间全双工串行直连接口

FPGA片间全双工串行直连接口模块用于实现躯干内置FPGA与手掌内置FPGA之间的高速、串行、强实时性的点对点直连通信(不需要附加PHY芯片)。最简模式下,每对接口仅需2对传输差分信号的双绞线/印制薄排线(可能需要附加少量驱动电路)。

由于是以躯干内置FPGA为中心的、星形拓扑点对点的FPGA直连通信,所以只需由躯干内置FPGA基于世界时时标而以固定的时间间隔向其他FPGA发出特定格式的信号,就能在所有FPGA间实现深亚微秒级精度的时间同步,并且不需要借助任何附加的时钟同步协议(例如1588、EtherCAT分布式时钟),从而既能提高信道带宽利用率,又能简化系统、减少潜在的故障点、节省成本。

3.3.6.4 射频通信二级子系统

本二级子系统由分别位于人形机器人本体、外置机箱的一对射频通信模组组成。

其中,每个通信模组包括一个射频通信组件、一个位于FPGA中的射频通信组件驱动模块构成,两者的传输延迟相加,构成第3.2.2.2节所述的射频信道传输延迟。

位于人形机器人本体的射频通信组件位于Ta的头顶部位,连接外置机箱内FPGA的射频通信组件位于各居室天花板的中央部位。不论人形机器人走到居所中的哪个居室,都能实现其内置射频通信组件与连接外置机箱内FPGA的射频通信组件直传(而非依赖多径效应)通信。

本二级子系统要求射频通信协议具备大带宽、低延迟特征,以高效传输两部分运算子系统协同运行所需传输的大量数据。

关于传输的可靠性问题,本二级子系统对射频通信协议的要求并不很高,这是由第1.2.1节所述的室内环境的稳定性、上个自然段所述的直连信道决定的。

具体的射频通信协议选择,需要在本框架设计的实施阶段由系统架构师、算法工程师、射频通信工程师、FPGA工程师合作确定。

同时,本二级子系统也需要传输人形机器人本体与管理子系统之间交换的信号。其中,尤其需要以最高的传输优先级确保世界时时标、同步信号序列传输的实时性。

3.3.7 语音收发子系统(含大模型下传指令解析功能)(棕色)

上传通道:语言信号收发模块接收用户发出的语音信号、将其转换为格式化的数字量序列、传输给人形机器人本体内置FPGA,由后者经射频通信二级子系统发送给外置机箱,再经外置机箱上的光纤通信接口发送到居家口语大模型服务器

居家口语大模型服务器完成端到端居家口语处理,生成格式化数字量序列,其中包含回复语句或(/和)识别出的用户指令代号及相关参数(例如第2.2.1节的推演过程中由小明从林先生的语言中获取的指令的关键要素),经光纤信道发回给信源人形机器人外置机箱。

下传通道:外置机箱中的FPGA从格式化数字量序列中解析出回复语句信息、用户指令代码及参数,将回复语句信息经射频通信二级子系统发送给人形机器人本体内置FPGA,最终交由语言信号收发模块将其转化为回复用户问话的语音。

同时,外置机箱中的FPGA将解析出的、来自居家口语大模型服务器的用户指令代码及参数转发给外置机箱中的运算CPU,由后者根据用户指令、在运算CPU算法任务协处理模块的协助下执行后续的算法。

3.3.8 关于居家口语大模型的服务器、预训练语料

鉴于目前在较低成本下实现大模型推理的延迟很长、不具备实用价值(参考资料15),本文将居家口语大模型置于楼宇/小区共享的服务器中,以分摊实用化大模型推理系统的成本(是否合理需由专业人士予以评估)。

另外,笔者作为预防人工智能反叛问题的较早研究者之一(参考资料16),7年来一直极为关注自然语言处理技术的危险性。

对此,鉴于实用化的室内家政服务人形机器人必须具备居家口语交流能力,并且必须能解读用户口语中的指令,更重要的是,将自然语言处理大模型应用于人形机器人的趋势已经无法阻挡,笔者建议,将室内家政服务人形机器人所用自然语言处理大模型的预训练语料局限在居家口语的范围之内,以防大量部署的、具备联网能力和深度影响物质世界能力的人形机器人具备针对物理世界(包括人类及其社会)的通用建模能力。

[注:本节的以下内容是本文新加上的]

更多相关思路请参阅笔者的两篇知乎文章:

林伟:为预防人工智能反叛限制家政服务人形机器人内置大模型的必要性与措施,

林伟:极限失控的大模型使电力系统面临的跨域攻击风险及应对措施(补充版)。

3.3.9 加速基于大模型的端到端具身智能控制算法的实用化进程

将第3.3.7、3.3.8节所述的居家口语大模型替换为端到端人形机器人运动规划大模型,就能仅仅基于现有的成熟技术,在运行于大模型服务器中的人形机器人运动规划子系统、运行于人形机器人本体(以及外置机箱)中的运动控制子系统之间,实现高带宽、强实时性的数据交互。(请注意 “运动规划” 与 “运动控制” 的区别)

当然,如果成本允许,执行端到端人形机器人运动规划大模型推理任务的GPU阵列,也可以从文章中所述的楼宇服务器移到居室、放进图2中的人形机器人外置机箱(机器人本体估计是装不下的,即使装得下,现在的电池容量也不够用),GPU阵列所属板卡与FPGA板卡之间经PCIe总线实现高带宽、强实时性的数据交互。

基于上述架构,FPGA作为中介,一方面连接各种传感器(图像、测距测速激光雷达、IMU、伺服电机位置编码器等)进而对传感器信息进行预处理,一方面连接GPU阵列、运算CPU,一方面执行运动控制算法、向IPM输送SVPWM波形、驱动位于各个关节的伺服电机,各个伺服电机以高精度协同的 "时间-角度曲线" 转动,驱动人形机器人肢体运动。

如此,则:

端到端运动规划大模型与传感器、执行器之间的绝大多数数据交互都是在FPGA芯片之内(以及经由FPGA芯片之间的高带宽且低延迟的高速串行接口、基于硬件的射频通信环节)实现的,在现有的技术条件下,以最高水平(高于目前已知的所有架构,欢迎质疑)实现人形机器人控制系统内部的高带宽、强实时性通信。

从而,加速端到端具身智能控制算法的实用化进程。

3.3.10 多“人”协作模式

基于以上几个小节述及的机制,室联人形机器人可以运行在多“人”协作模式。以两“人”协作搬动大件贵重物品为例:

感知、运算、控制子系统协同控制两个人形机器人各关节伺服电机的转动角度及时间-角度曲线,使两者与被搬动物体合为一体,等效于一个四足(整体支撑非常稳固)、四手(对被搬动物品的把持非常稳固)的人形机器人。

这种工作模式下,对人形机器人控制系统反馈控制环路的实时性提出了更高要求,更适合发挥FPGA的性能优势。

4 将框架设计与《流程图》相结合

4.1 一体两面

这一框架设计与《流程图》是一体两面的关系:

流程图提供抽象的实施步骤,框架设计提供具体的实施中间结果,两者分别是深入应用FPGA的人形机器人控制系统这一拟议中的研发项目在上述两个维度上的投影,从各自的角度出发,协助读者直观、深入地理解这一技术思想。

4.2 框架设计在《流程图》中的位置

具体而言,本文所述框架设计是《流程图》中间通道的第5个步骤的执行结果,即:

FPGA专家与(人形机器人)系统专家、各子系统专家讨论,分析系统中实时算力需求的时空分布、对各算法通道协同程度的需求,分析在CPU+软件体系结构中原始数据、中间数据、指令信号、状态信息的传输带宽瓶颈、延迟量大/延迟量显著抖动的传输路径,初步确定由CPU+软件、FPGA分别实现哪些算法模块与数据传输通道(即软、硬件任务划分),就考虑机械结构等约束的通信系统设计提供参考意见,就结构、PCB设计提供参考意见。

4.3 笔者能力短板导致的缺憾

然而,这一框架设计,是笔者在不具备人形机器人从业经验、“单打独斗”的前提下做的,由此导致,以上述及的人形机器人系统专家、各子系统专家的角色缺位

在这种情况下,笔者只能基于自学得到的、关于人形机器人的功能、性能需求及其实现方法的有限信息,对其控制系统的框架,尤其是软、硬件任务在CPU与FPGA之间的划分,做出规划。

因此,这种规划,只能是非常粗略的、不够专业的。

例如,对于非常重要的、工信部《人形机器人创新发展指导意见》中反复强调的多模态感知,笔者由于对高层次多模态传感器融合算法了解很少,只能在第3.3.2节就传感器信息预处理、初级的传感器融合进行阐述,等到第3.3.4.1.2节述及高层次多模态传感器融合,就只能笼统地一带而过,只能基于对其算法复杂度的感性认知,假设其中存在适合提取出来、交由FPGA加以协处理的子任务(请专业人士指正),设计了第3.3.4.1.4、3.3.4.2、3.3.4.3节所述方法,以实现对整机反馈控制环路实时性的优化。

同样的情况,也存在于对环境、本体、工作目标的实时建模(第3.3.4.1.2节)、运动规划(第3.3.4.1.3节)所涉算法的协处理方法的设计过程中。

至于《流程图》中间通道第2、3、4个步骤所述的各项工作,这一框架设计就只能基本予以忽略了。

4.4 特斯拉人形机器人Optimus-Gen2信息的帮助

幸运的是,如本文第1节所述,网上能查到专业网友分析、总结的特斯拉Optimus-Gen2的硬件系统的基本构成(参考资料1、2),也就是《流程图》中间通道第3个步骤所述的“可用做研发基础的人形机器人产品或设计方案的结构、控制系统的信息”,使本文的工作有了一个基本的、可以被专业读者接受的分析对象,不至于完全沦为自说自话的“对空输出”。

4.5 对研发单位的建议

如果有研发单位认可本文所做的工作,愿意以此为借鉴在人形机器人中深入应用FPGA技术,笔者建议其借鉴《流程图》所述的实施步骤,尤其是,建议借鉴其中由软、硬件人员协作划分各自的任务 – 用MATLAB迭代验证算法功能 – 用HDL实现的方法(见《流程图》左侧的通道)。

进而,用基于这一方法得到的结果,替代笔者在本文所述框架设计中对软–硬件任务的划分(例如第3.2.2节对多模态传感器融合算法软-硬件任务的划分)、替代笔者对划归FPGA实现的算法的具体内容(例如第3.3.4.3.2节逐级解算各肢节运动学、动力学、重力学参数的算法)所做的非专业表述。

5 将框架设计“泛化”到其他领域

如很多读者已经想到的,以FPGA性能特征的通用性为基础,本文所述的框架设计,很适合“泛化”应用于人形机器人之外的领域,尤其是,泛化应用于同样基于“多通道传感器融合分析 + 多维度应用场景建模 + 多路电机协同规划、精准协同伺服控制”的领域,例如:

工业机器人;

手术机器人;

AGV(及其与工业机器人的组合体,例如波士顿动力的strech);

数控机床/加工中心;

高速+精细3D打印系统;

基于特定传感器机制+高速、高定位精度上/下试件的医疗样品检测系统;

电动汽车电机驱动+刹车+悬挂一体化控制系统(第3.3.5.2节所述的多电机协同启动控制应是其典型需求);

燃油汽车发动机油路+喷燃+刹车+悬挂一体化控制系统;

多阀门一体化液压伺服驱动系统(阀门伺服驱动最终仍要落实到电机伺服驱动);

电力系统广域协同继电保护主保护系统(广域范围内中多个断路器的驱动电机动作曲线的微秒、亚微秒级精准协同);

起重设备精细操控系统;

物料传送机构精细平衡系统;

矿山挖掘机系统;

地磅不停车称重系统;

盾构机刀盘姿态控制系统;

………………

如果这个框架设计在上述某些领域获得实际应用、取得经济效益,大概率将对其在人形机器人领域的实际应用起到促进作用。

6 结语:行动最重要

2023年11月,工信部发布《人形机器人创新发展指导意见》,对人形机器人提出了以应对真实场景下的复杂环境与任务、应对突发情况为特征的实用化功能需求,为业内竞争提供了指导方向。

人形机器人的拟人性导致的亲和力,使其适合用于室内家政服务。

室内家政服务的环境友好,其任务对象具备一定程度的结构化特征,导致将人形机器人应用于这一场景在技术上具备可行性。

基于参考资料11提出的技术方案,本文提出了深入应用FPGA的室联人形机器人控制系统,在安全性维度上提供了更优的解决方案,将有助于人形机器人尽快走向实用。

建议从事人形机器人研发的各家企业、机构借鉴本文提供的技术信息并予以斧正、发展、实施,建立属于自己的专利护城河,在竞争中共同推进人形机器人尽早在室内家政服务场景中大规模落地,尽早实现人形机器人产业的良性循环。

(作者微信:linweifpga,欢迎留言、微信交流)

------------------------------------

参考资料:

1 任赜宇:Tesla人形机器人Optimus各伺服关节技术拆解

2 王兴兴:Gen2更新:Tesla 机器人 Optimus 你没注意到的设计细节?

3 面向外骨骼机器人的空心杯电机位置伺服控制研究(图2-6),作者:曾青山,电子科技大学2013年度硕士毕业论文

4 一体化关节模组驱控系统关键技术研究(图4-1),作者:焦露,江南大学2023年度硕士毕业论文

5 林伟:FPGA的性能特征及其尴尬处境

6 林伟:关于在机器人领域深入应用FPGA技术的一些思考

7 林伟:关于在机器人领域深入应用FPGA技术的一些思考(续)

8 《计算机体系结构:量化研究方法》(第五版)(第1.3节),作者:John L. Hennessy,David A. Patterson。

9 在实用化人形机器人研发流程中深入应用FPGA技术的流程图(基于工信部《人形机器人创新发展指导意见》)(建议下载到PC观看)

10 林伟:在实用化人形机器人研发流程中深入应用FPGA技术的流程图(版本A)(基于工信部《人形机器人创新发展指导意见》)

11 林伟:在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)

12 林伟:韩国现代,波士顿动力的真命天子

13 面向多种约束操作任务的机械臂运动规划研究,作者:刘怡舟,博士毕业论文,2021,哈尔滨工业大学

14 韩峰涛:让机器人更安全(二)- 协作机器人的兴起

15 低资源集群中的大语言模型分布式推理技术,作者:冯文佼等,2024,中兴通讯技术

16 林伟:论文《关于预防人工智能反叛的初步探讨》修订版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/930729.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【YOLO部署Android安卓手机APP】YOLOv11部署到安卓实时目标检测识别——以火焰烟雾目标检测识别举例(可自定义更换其他目标)

前言:本项目基于YOLOv11部署到手机APP实现对火焰烟雾的检测识别,当然,以此你可以按照本项目开发步骤扩展更换为其他目标进行检测,例如更换为车牌、手势、人脸面部活动、人脸表情、火焰烟雾、行人、口罩、行为、水果、植物、农作物等等部署手机APP进行检测。本文为详细设计/…

python 执行celery

1、redis安装并启动redis安装与使用-CSDN博客 2、安装 celery 、eventlet 3. Task handler raised error: ValueError(not enough values to unpack (expected 3, got 0)) - Redskaber - 博客园 pip install celery pip install eventlet 3、python 版本3.10 #创建异步任…

未完成_RFdiffusion应用案例_从头设计pMHC的结合剂

目录 1. 论文导读1)摘要2)设计流程3)设计流程的验证 2. 实战 1. 论文导读 Liu, Bingxu, et al. “Design of high specificity binders for peptide-MHC-I complexes.” bioRxiv (2024): 2024-11. 1)摘要 MHC-I 将胞内抗原肽递呈…

【css】基础(一)

本专栏内容为:前端专栏 记录学习前端,分为若干个子专栏,html js css vue等 💓博主csdn个人主页:小小unicorn ⏩专栏分类:css专栏 🚚代码仓库:小小unicorn的代码仓库🚚 &a…

【Python高级语法与正则表达式】

目录 1.正则表达式 1.1概述: 1.2re模块介绍 1.3re模块相关方法(常用): 1.4案例 1.5正则表达式详解 1.5.1查什么 1.5.2查多少 1.5.3 从哪查 1.6重要概念 1.6.1子表达式 1.7 正则表达式的其他方法 1.7.1选择匹配符 1.7.2…

Vue03

目录 一、今日目标 1.生命周期 2.综合案例-小黑记账清单 3.工程化开发入门 4.综合案例-小兔仙首页 二、Vue生命周期 三、Vue生命周期钩子 四、生命周期钩子小案例 1.在created中发送数据 六、工程化开发模式和脚手架 1.开发Vue的两种方式 2.Vue CLI脚手架 基本介绍…

云轴科技ZStack出席中国电信国际EMCP平台香港发布会,持续推动海外合作

近日,以“云聚未来 翼起新篇”为主题的中国电信国际多云服务一站式平台(E-surfing Managed Cloud Platform,简称EMCP平台)新闻发布会在香港成功举办,标志着中国电信国际在云计算服务领域取得了又一重大进展。云轴科技…

Alibaba Druid(简称Druid)

目录 核心功能 数据源配置与管理: 高性能与可扩展性: 监控与SQL解析: 安全性: 应用场景 使用方式 配置示例 通过yaml方式配置 web.xml中配置 访问Druid的监控页面 监控页面展示 Alibaba Druid(简称Druid&am…

JavaWeb学习--cookie和session

目录 (一)Cookie概述 1.什么叫Cookie 2.Cookie规范 3.Cookie的覆盖 4.cookie的最大存活时间 ​​​​​​(Cookie的生命) (二) Cookie的API 1.创建Cookie:new 构造方法 2.保存到客户端浏…

策略模式实战 - 猜拳游戏

**可以整体的替换一套算法,这就是策略模式。**这样对于同一个问题,可以有多种解决方案——算法实现的时候,可以通过策略模式来非常方便的进行算法的整体替换,而各种算法是独立封装好的,不用修改其内部逻辑。 具体的实…

Transformer简述和实现

Transformer 1、概述 (一)、诞生 自从2017年此文《Attention is All You Need》提出来Transformer后,便开启了大规模预训练的新时代,也在历史的长河中一举催生出了GPT、BERT这样的里程碑模型。 (二)、优势 相比之前占领市场的LSTM和GRU模型&#xf…

Astro 5.0 发布

Astro 5.0 发布! 使用 Astro Content Layer 可以从任何来源加载内容,并使用 Server Islands 将缓存的静态内容与动态个性化内容结合起来。 什么是 Astro Astro 是用于构建内容驱动网站(包括博客、营销和电子商务)的 Web 框架。…

数据结构与算法-03链表-04

链表与递归 在链表操作中移除、反转经常会用到递归实现。通过力扣案例理解链表常规操作中的递归实现。 移除数据 删除链表的节点 问题 LCR 136. 删除链表的节点 - 力扣(LeetCode) 问题描述 给定单向链表的头指针和一个要删除的节点的值,定…

Let up bring up a linux.part2 [十一]

之前的篇幅中我们已经将 Linux 内核 bringup 起来了,不知道大家有没有去尝试将根文件系统运行起来,今天我就带领大家完成这个事情,可以跟着下面的步骤一步步来完成: 在这里我们使用 busybox 构建 rootfs: 下载 busyb…

WEB开发: Node.js路由之由浅入深(一) - 全栈工程师入门

作为一个使用Node.js多年的开发者,我已经习惯于用Node.js写一些web应用来为工作服务,因为实现快速、部署简单、自定义强。今天我们一起来学习一个全栈工程师必备技能:web路由。(观看此文的前提是默认你已经装好nonde.js了&#xf…

新书速览|循序渐进Node.js企业级开发实践

《循序渐进Node.js企业级开发实践》 1 本书内容 《循序渐进Node.js企业级开发实践》结合作者多年一线开发实践,系统地介绍了Node.js技术栈及其在企业级开发中的应用。全书共分5部分,第1部分基础知识(第1~3章)&#xf…

二代证信息读写器安卓身份证手持终端pda

HT530是一款可满足不同应用需求的多功能身份证核验手持机。Android 10操作系统,搭载高性能8核心2.0G主频处理器,5.5寸高清大屏,1300万摄像头;内存2G16G,4G64G可选。条码扫描(扫描头可选)、可离线采集、读取…

Redis的高可用之哨兵模式

Redis哨兵主要是解决Redis主从同步时主数据库宕机问题,使其能够自动进行故障恢复,提高Redis系统的高可用性。 1. 哨兵的作用: 监控:哨兵通过心跳机制监控主库和从库的存活性。 选主:当主库宕机时,哨兵会选举出一个领…

2024最新版python+pycharm安装与配置(mac和window都有讲)

PS:这篇是对于初学者的pythonpycharm配置教程 ,配置完成后可以直接看我的python学习笔记来进行python全套学习目前正在持续更新。 目录 python以及pycharm的安装配置一、下载安装Python1、python环境检查2、系统环境检查3、python下载4、开始安装5、检查…