机器人对MCU有独特的需求。经过优化用于机器人的 MCU 通常包含多种功能,包括内置互联网协议 (IP) 连接、信息安全和功能安全保护以及高级控制算法。将 MCU 内核与现场可编程门阵列 (FPGA) 集成是优化机器人应用的一种手段。机器人操作系统 (ROS) 最初针对更高性能的中央处理器 (CPU) 进行了优化,现在已被简化并作为微型 ROS 发布,以便在嵌入式 MCU 和其他资源较少的环境中运行,进一步提高了 MCU 在机器人技术中的实用性。
用于机器人的 MCU 采购继续成倍增加。本 FAQ 将回顾基本的机器人平台架构,特别强调 MCU 的使用;它回顾了 MCU 内核与 FPGA 集成时打开的性能选项,并回顾了使用 micro-ROS 的好处。 MCU 是机器人设计中的重要元素。即使是简单的消费类机器人也可以包含多个 MCU,用于实现通信、用户界面、USB 和电机控制等专用功能(图 1)。
图 1:即使是相对简单的机器人真空吸尘器,也可以有多个 MCU 来处理专门的用户界面、连接和电机控制任务。 (图片:Microchip)
智能工厂和工业 4.0 的出现正在推动对日益精密和复杂的工业机器人的需求。包括网络通信、功能安全需求和预测性维护等需求增长,需要更高性能外设和加速器的 MCU 。通常运行频率为 800 MHz 至 1GHz 的异构多核 MCU。处理速度对于支持多轴机器人中电机位置、方向、速度和扭矩的高精度控制至关重要。
用于机器人的高性能 MCU 包括支持伺服控制所需计算的专用加速器硬件。在某些情况下,电流控制环路计算可以在 1.5µs 内完成。在伺服电机驱动系统中,控制回路可以分为多个层次,包括更高级别的运动控制回路、位置回路、速度回路和转矩/电流回路,以级联拓扑结构排列(图 2)。上游控制回路倍数于下游控制回路,并为下游提供参考数据,其中转矩或电流回路是最严密的控制回路。
图 2:伺服电机控制回路级联拓扑。 (图片:德州仪器)
上述架构中的控制回路可以在多核 MCU 中的不同内核实现,也可以在 MCU 内核和 FPGA 之间进行划分。分区的优化通过在独立计算资源之间扩展循环来最大化可用处理带宽。每个处理核心都可以快速运行其特定算法,将结果向下传递以供下一个循环使用。同时,它根据需要继续提供其他功能,直到下一组输入数据到达,算法再次开始。
单个 MCU 内核需要高水平的性能才能拥有可用于快速处理基本算法和提供系统所需的附加功能的带宽。由于循环时间在 32 kHz 控制回路中接近 31.25 µs,或者必须几乎同时处理来自多轴的输入,因此必须进行快速处理。有时,它可能需要一个或多个高性能 MCU 加上一个 FPGA 的组合。
MCU、FPGA 和 eFPGA
在机器人系统中,MCU 和 FPGA 的组合可以提供比单一产品更合适的解决方案。其中MCU 灵活且易于编程。 MCU 也可以处理某种级别的并行运算,但最终内核可能成为更高级别并行性能的瓶颈。 FPGA 由数千个逻辑块组成,这些逻辑块可以配置为大规模并行处理。 FPGA 还可以提供更高级别的灵活性,但它们往往更昂贵。
MCU 非常适合处理多轴伺服控制等常规功能。 FPGA 可包含大量 DSP 模块和可编程逻辑,可支持人工智能 (AI)、机器学习 (ML) 和卷积神经网络 (CNN) 推理算法所需的并行处理。机器人平台上需要的 AI/ML/CNN 功能越多,将 FPGA 与 MCU 一起结合的好处就越大。
用户可以使用多种微控制器软件开发工具中的一种。在 FPGA 的情况下,逻辑不是固定的,而是通过在硬件中设计互连结构来“编程”设备以执行特定功能。这些差异导致了 MCU 和 FPGA 之间的成本和性能权衡(图 3)。
图 3:FPGA 和 MCU 为机器人平台设计人员提供了多种性能和成本权衡。 (图片:Digilent)
根据具体设计的需要,MCU和FPGA的结合方式有以下三种:
MCU 和 FPGA 可以组合为两个分立组件
FPGA 可以包含一个集成的 MCU 内核
MCU 可以包括一个集成的 FPGA 部分
这些方法中的每一种都有其优点。对于同时需要高性能伺服控制能力和大量 AI/ML/CNN 功能的应用,高性能 MCU 可以与单独的大型 FPGA 相结合。 MCU 可能用于控制功能,而 FPGA 用于机器人平台上更密集的人工智能和机器学习活动。在需要大规模并行处理和 AI/ML/CNN 占主导地位的情况下,MCU 内核可以与大型 FPGA 集成。在 MCU 占主导地位且需要相对少量并行处理的情况下,可以将较小的嵌入式 FPGA (eFPGA) 与高性能 MCU 集成。
在许多机器人应用中,通常首选其中一种集成解决方案,集成解决方案可以提供更高的性能水平。当分立的 FPGA 与单独的 MCU 结合使用时,每个设备都需要其内存缓冲区来处理它们之间的数据传输。如果需要在 MCU 和 FPGA 之间传输大量数据,系统性能会受到影响。另一方面,如果 FPGA 和 MCU 集成在一块芯片中,它们可以共享 DDR 内存,并且数据传输不需要缓冲。在这种情况下,数据传输只涉及在 MCU 和 FPGA 之间传输存储器指针。
MCU 机器人操作系统
基本机器人操作系统 (ROS) 是一个用于机器人应用程序开发的开源软件框架,针对运行 Ubuntu Focal、macOS 和 Windows 10 等操作系统的微处理器进行了优化。ROS 2 是新一代的 ROS。 ROS 2 采用分层架构设计,将 ROS 客户端层与 ROS 中间件层分开。 ROS 领域的最新发展是 micro-ROS,它将 ROS 2 带入中档和更高级别的 MCU。需要具有数十 KB RAM 的 MCU 来实现微型 ROS。 MCU 中还需要支持 micro-ROS 客户端到代理通信的通信外围设备。
micro-ROS 提供了一个 ROS 2 开发生态系统,可以在实时操作系统 (RTOS) 之上运行,使它们能够满足需要时间期限或确定性响应的机器人系统任务的时间关键要求。FreeRTOS 是 micro-ROS 项目支持的首批 RTOS 之一,并已集成到其软件堆栈中。 FreeRTOS 社区开发的所有实现和工具都可以与 micro-ROS 兼容(图 4)。
图 4:微型 ROS 堆栈显示与 FreeRTOS 环境的兼容性。 (图片:FreeRTOS)
FreeRTOS 具有最小的内存和处理开销,RTOS 内核二进制映像仅需要 6K 到 12K 字节,非常适合运行 micro-ROS。除了 FreeRTOS 之外,micro-ROS 还可以与 Zepher RTOS 一起运行,并且 Zepher 由 micro-ROS 客户端库及其中间件支持。
总结
为机器人平台指定 MCU 是一个复杂的过程。通常需要多个 MCU 或具有多个内核的单个 MCU,以及可能添加的 FPGA,作为外部设备或 MCU 内的嵌入式元件。在考虑 MCU 和 FPGA 的集成时,需要进行多种权衡。例如,MCU 可用于控制功能,而 FPGA 则用于机器人平台上更密集的人工智能和机器学习。在 MCU 上运行的微型 ROS 机器人操作系统的发布是高级机器人平台设计人员可用的另一个重要工具。