【机器人系统】机器人控制器
机器人的效率很大程度上取决于其控制器的功能。
每个机器人的核心都是控制器,它就像机器人的大脑,负责处理来自传感器的数据、做出决策并向执行器发送指令。什么是机器人控制器?机器人控制器是负责管理机器人操作的核心处理单元。它从各种传感器获取输入,处理数据,并向执行器(例如电机、伺服器、夹持器)发送控制信号。机器人的效率很大程度上取决于其控制器的功能。
一、机器人微控制器
机器人技术中使用不同类型的控制器:
- 微控制器(MCU) – 专为嵌入式系统设计的小型专用计算单元。
- 单板计算机 (SBC) – 比 MCU 更强大,常用于 AI 驱动的应用程序(例如 Raspberry Pi、NVIDIA Jetson)。
- 可编程逻辑控制器(PLC)– 用于制造和自动化的工业级控制器。
- 定制控制板 – 专为特定机器人应用而设计的专用板。
其中,微控制器因其价格低廉、效率高、易于编程而成为中小型机器人最广泛的应用。微控制器是一种紧凑的集成电路,在单个芯片内集成了处理器 (CPU)、存储器、输入/输出 (I/O) 接口和定时器。它可作为独立的计算设备,无需操作系统即可运行一组预先编程的指令。
微控制器的关键组件包括:
- CPU(中央处理器):微控制器的大脑,负责执行指令。
- RAM(随机存取存储器): 正在处理的数据的临时存储。
- ROM/闪存:存储微控制器的固件或程序。
- 输入/输出引脚:用于与外部传感器、电机和其他外围设备连接。
- 定时器和计数器:对于测量时间间隔和事件计数有用。
- 模数转换器(ADC):将模拟传感器信号(例如温度、光)转换为数字数据。
- 脉冲宽度调制(PWM):控制电机速度和 LED 亮度。
为什么在机器人技术中使用微控制器?
- 经济高效:与 SBC 和工业 PLC 相比,微控制器价格低廉。
- 低功耗:适用于电池供电的机器人。
- 实时处理:可以以最小的延迟执行指令,确保精确控制。
- 紧凑的尺寸:可轻松装入小型机器人系统。
- 编程简便:许多 MCU 支持适合初学者的语言,例如C、C++ 和 Python 。
流行的机器人微控制器有哪些?
- Arduino(ATmega328、ATmega2560):最受初学者欢迎的微控制器平台之一。
- ESP32 和 ESP8266(支持 Wi-Fi 和蓝牙):适用于基于物联网的机器人、遥控机器人和无线通信系统。
- STM32(ARM Cortex-M系列):适用于无人机、机械臂和自动驾驶汽车。
- PIC 微控制器(Microchip Technology):用于工业和商业机器人应用。
- 德州仪器 MSP430:超低功耗微控制器,非常适合电池供电的机器人。
微控制器中的通信协议有哪些?通信对于机器人与传感器、外围设备以及其他机器人的交互至关重要。微控制器支持多种数据交换通信协议。
- 串行通信(UART):通用异步接收器/发送器 (UART) 是一种简单、直接的通信方法。
- I²C(集成电路内部):两线(SDA,SCL),用于连接多个设备。
- SPI(串行外设接口):使用四线(MISO、MOSI、SCK、SS)高速通信。
- CAN(控制器局域网):用于汽车和工业机器人,实现可靠的多设备通信。
微控制器的编程语言有哪些?不同的微控制器支持不同的编程语言。机器人领域最常用的微控制器编程语言包括:C/C++C/C++ :微控制器最广泛使用的语言。Arduino、STM32 和 PIC 微控制器使用 C/C++ 实现高效的底层控制。
- Python:一些微控制器(例如支持 ESP32 和 MicroPython 的开发板)支持 Python,以便更轻松地编写脚本。
- 汇编语言:用于优化和速度至关重要的低级编程(对于初学者来说不太常见)。
- 基于块的编码(Scratch、Blockly、Arduino Blocks):简化、可视化的教育机器人编程。
对于大多数业余爱好者和初学者来说,C++(Arduino IDE)或MicroPython是最好的起点。
通用开发环境。每个微控制器都有一个相应的集成开发环境 (IDE),您可以在其中编写、编译和上传代码,选择正确的开发环境取决于您的微控制器和首选的编程语言。
- Arduino IDE – 用于基于 Arduino 的微控制器。
- PlatformIO – 支持 ESP32、STM32 等的多功能 IDE。
- MicroPython / Thonny – 适用于 ESP32 和 Raspberry Pi Pico 的基于 Python 的环境。MPLAB X IDE – 用于对 PIC 微控制器进行编程。
- Keil uVision / STM32CubeIDE – 基于 ARM 的 MCU 开发工具。
对微控制器进行编程的典型过程遵循以下步骤:
- 编写代码 – 使用 IDE,以 C++、Python 或其他受支持的语言编写指令。
- 编译代码 – 代码被转换成机器指令。
- 传至微控制器 – 编译后的程序通过 USB、串行或无线方式传输到微控制器。
- 执行程序 – 微控制器运行上传的程序,控制连接的组件。
将传感器连接到微控制器,传感器通过测量光、距离、温度和运动等物理参数来帮助机器人感知环境。传感器分为以下几类:
- 模拟传感器 – 提供连续电压输出(例如,温度传感器、光传感器)。
- 数字传感器 – 输出二进制值(例如,按钮、限位开关)。
- I²C/SPI 传感器 – 使用通信协议传输复杂数据(例如,IMU传感器、深度摄像头)。
一些复杂度稍低,但是性能、续航各方面要求都高的,主要是ARM Cortex-M系列的微处理器,加嵌入式实时操作系统,再加上FPGA处理输入输出的结构。而人形机器人,自动驾驶这些,涉及更大量的输入输出,还有大模型与图像处理能力,通常是多台控制器配合,大部分的核心都是Nvidia的Jetson系列加高通的车规级芯片加FPGA等辅助处理,操作系统都是类Linux的实时操作系统。还有一种是基于常见的Win+Intel平台,借助X86芯片的强悍能力开发实时操作内核,例如TwinCAT,这在工业自动化与在手术机器人上应用广泛。其它一些更专更精的机器人或系统,也会用Xilinx,NI等的SoC,要求更高的就自己开发定制处理器了,本质上其实都一样,对复杂系统来说,就是将存储计算与任务处理分离,再配合各种高速IO。
二、机器人内部的控制器的数量和组成

根据机器人的复杂度和构型不同,机器人里的控制器的数量不一样,可以分为单控制器架构和分布式多控制器架构。传统工业机器人、协作机器人多采用单控制器架构,即只有一个主控制器。它集成在一块或多块紧密耦合的板卡上,负责的任务包括路径规划、运动学计算、最底层的伺服控制。所有伺服驱动器作为“手和脚”,通过高速总线(如EtherCAT)接受主控制器的指令。结构紧凑,同步性好。
一些复杂系统的移动机器人、特种机器人,常采用分布式多控制器架构。其主控制器负责上层任务,如全局路径规划、任务调度、人机交互、与外界通信。通常运行在性能更强的处理器和通用操作系统上。关节控制器/伺服驱动器分布在每个关节(或几个关节)。这些智能驱动器内置强大的处理器(如DSP),运行自己的控制循环(电流环、速度环、位置环),主控制器只发送高级的位置/速度指令。这减轻了主控的负担,提高了系统的模块化和可靠性。此在,还有专用子控制器。例如,移动底盘控制器负责轮式/履带底盘的SLAM、导航和运动控制;机械臂控制器专门控制机械臂;视觉处理单元由一块独立的计算卡(如带GPU的工控机)构成,专门处理摄像头图像,进行物体识别、定位,然后将结果发送给主控制器;以及安全控制器,一个独立的、通过安全认证的PLC或安全模块,专门处理所有安全链逻辑,与主控制器隔离以确保安全。
三、机器人控制器的软件和硬件
机器人控制器主要由软件和硬件两部分组成。在硬件方面,控制器采用工业控制板卡等设备,完成数据处理和传输。工业控制板卡是控制器的“身体”。
|
控制器硬件功能 |
详述 |
|
数据采集与处理 |
实时读取来自编码器的关节位置/速度反馈。 |
|
接收来自力/力矩传感器、视觉系统、安全触边等外部传感器的信号。 |
|
|
核心运算 |
执行运动学逆解、轨迹插补、控制律(如PID)计算。 |
|
进行逻辑判断和任务调度。 |
|
|
指令输出 |
将计算出的控制量(通常是电压或电流指令)通过模拟量输出或脉冲/方向信号发送给伺服驱动器,驱动电机运动。 |
|
通信与协同 |
内部通信:通过EtherCAT、 PROFINET IRT、 CANopen 等实时工业以太网或现场总线,与伺服驱动器、IO模块进行高速、确定性的数据交换。 |
|
外部通信:通过标准以太网、串口等与上位机(PC/HMI)、PLC、其他机器人或生产线设备进行信息交互。 |
|
|
安全功能 |
监控安全输入信号(急停、安全门),并在紧急情况下触发安全停止,切断安全输出。 |
在软件方面,控制器依靠算法库实现运动规划和轨迹控制。
|
机器人控制器算法库 |
列举 |
|
运动规划算法 |
路径规划:在给定的工作空间和障碍物约束下,计算机器人末端执行器(如夹爪、焊枪)从起点到终点的无碰撞路径。 |
|
轨迹规划:在已规划的路径基础上,生成关于时间的平滑运动轨迹,需要定义位置、速度、加速度甚至加加速度(Jerk)的连续变化。 |
|
|
运动控制算法 |
PID控制:最基础、应用最广泛的反馈控制算法,用于调节每个关节的位置、速度。 |
|
计算力矩控制:基于机器人的动力学模型,计算出实时的关节力矩以精确跟踪轨迹,能有效应对重力、惯性力、科氏力的影响。 |
|
|
自适应控制:能在线估计和适应机器人参数(如负载变化)的变化。 |
|
|
阻抗/导纳控制:不追求精确的轨迹跟踪,而是控制机器人与环境接触时的“柔顺性”,用于打磨、装配等需要力交互的场景。 |
|
|
其他支持性算法 |
运动学正解/逆解:核心几何计算。正解是由关节角度求末端位姿;逆解是由末端位姿反求关节角度,是运动规划的基石。 |
|
动力学计算:涉及机器人的质量、惯性、摩擦力等,用于高级控制和仿真。 |
|
|
坐标变换:在不同坐标系(基座标、工具坐标、工件坐标、视觉坐标)间进行快速转换。 |
|
|
滤波算法:如卡尔曼滤波,用于处理传感器(编码器、IMU)数据,减少噪声,得到更精确的状态估计。 |
在机器人控制器的上游,微处理器、通信总线和专用操作系统是主要组成部分。这些部件能够保证控制器的性能和稳定性。控制器板卡上运行操作系统负责:管理复杂任务,包括协调实时控制任务(毫秒/微秒级)、非实时任务(如UI、网络通信、文件读写);提供硬件抽象,例如简化驱动开发,便于软件移植和升级;提供开发环境,例如提供标准的API和工具链。
|
操作系统类型 |
常见操作系统及其热点 |
|
实时操作系统 |
VxWorks:传统工业级RTOS,以高实时性、高可靠性著称,常用于高端、对实时性要求极高的场合。 |
|
QNX:微内核RTOS,同样以高可靠性和实时性闻名,在汽车、医疗等领域应用广泛。 |
|
|
RT-Linux / Preempt-RT:通过对标准Linux内核打上实时补丁,使其具备硬实时能力。兼具Linux的丰富生态和开源优势,以及可接受的实时性能。 |
|
|
Windows with RTX (IntervalZero):在Windows基础上添加实时扩展,便于利用Windows的图形和开发环境。 |
|
|
通用操作系统+ 实时核/扩展卡 |
板卡采用x86架构,运行Linux或Windows处理非实时任务,同时通过PCIe等接口连接一块FPGA或DSP实时卡,专门处理最底层的实时控制循环。 |
|
控制器本身采用多核处理器,通过非对称多处理技术,将某些核心隔离出来,专门运行实时任务或RTOS。 |
通用运动控制器可以分为PLC控制器、嵌入式控制器和PC-Based控制卡三大类。

控制系统软件的核心在于其运行在控制器硬件平台上的整套软件。这些软件自底向上构建,首先是最底层的VxWorks实时操作系统,它为系统提供了实时性和可靠性的基础,同时也为上层应用软件创造了运行环境。工业机器人运动控制器的软件系统架构:

控制器、伺服系统、传感器三个部分共同构成机器人的运动控制系统。运动控制器向伺服系统发送指令,进而带动工作机械(负载)实现特定运动。同时,电机与机械系统的多种传感器经过信号处理实时信息反馈给控制器,控制器进行实时调整,保证整个系统的稳定运转。

四、主控制器与从控制器的分工
人形机器人对控制系统实时性要求极高,需要使用大量控制单元(“伺服驱动单元” 或 “执行器模块” )。特斯拉机器人单机包括28个一体化的伺服驱动单元(身体关节)和12个高灵敏度要求的手部关节,它们是集成了电机、减速器、编码器、驱动电路和底层控制芯片的智能关节。对于这样一个复杂系统来说,所有算法都需要满足实时性的要求,所有的伺服关节都要同步运动,传感器的数据也要同步采集,保证算法的输入和输出都始终处于一个节拍,才能保证机器人的运动性能。因此,为保证同步性,必须使用大量控制器(控制板卡),其架构是一个典型的 “主-从”分层控制系统。
中央控制器(主控制器)是顶层运动规划控制器。进行全身运动学/动力学解算、步态规划、平衡算法、处理视觉/IMU数据,并计算出每个关节在下一个控制周期(如1ms后)应该达到的目标位置、速度或扭矩。它不直接驱动电机,只发布“高级指令”。这个中央控制器(主控制器) 是系统的唯一真正的大脑。它通常是一台高性能、多核的工业计算机或定制计算板卡,其核心职责包括:
- 感知融合:综合处理来自“双眼”摄像头、体内IMU(惯性测量单元)、脚底力传感器、甚至麦克风阵列的数据,构建对自身状态和环境的理解。
- 决策与规划:根据任务(如“走过去拿起水杯”),规划出全身的运动轨迹,同时进行碰撞检测和平衡计算。
- 全身协调控制:运行复杂的控制算法(如模型预测控制MPC、全身操作空间控制WBOSC),将规划好的动作分解为40个关节的协同指令。
- 通信管理:作为主站,通过实时以太网总线向所有关节驱动器同步下发指令,并同步收集所有传感器的数据。
一体化伺服驱动单元(从控制器/驱动器):它们是底层伺服控制器,接收来自中央控制器的目标指令。它们是命令的最终执行者,负责将数字指令转化为物理运动。在其内部,运行着最底层的三个闭环控制环:
- 电流环(扭矩环):响应最快(微秒级),直接控制电机线圈电流,产生精确扭矩。
- 速度环:基于电流环,控制关节转速。
- 位置环:基于速度环,控制关节角度。
五、控制器与ROS中间件的架构

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)