最近看到“迈步机器人获中信建投近亿元战略融资”的消息,36氪在报道中将其描述为“首家盈利的国产医疗外骨骼公司”。这个信息在医疗机器人圈子里讨论度很高,因为过去外骨骼机器人更多停留在实验室、论文和样机阶段,真正能实现盈利并拿到头部机构战略融资的国产企业并不多。也正因为这样,很多开发者开始关注医疗外骨骼背后的技术体系和工程落地方式。
本文不准备只点评融资事件,而是把重点放在医疗外骨骼机器人的核心技术、开发环境、软硬件架构和可复现的算法示例上。文章会从概念开始,逐步拆解一个典型的外骨骼控制系统,并给出步态相位识别、关节力矩控制、传感器数据解析等方向的 Python 示例。无论你是机器人方向的学生,还是刚进入康复医疗设备领域的嵌入式工程师,都可以通过这篇文章建立一条相对完整的学习路径。
1. 背景与核心概念
1.1 什么是医疗外骨骼机器人
医疗外骨骼机器人是一种穿戴在人体外部,通过传感器感知用户运动意图,再通过电机、气缸或液压执行器为关节提供辅助力矩的机电一体化设备。它并不是简单的“机械骨架”,而是一个包含感知、决策、执行三层结构的智能系统。
从应用场景看,医疗外骨骼主要面向两类人群:
- 因脑卒中、脊髓损伤等原因导致下肢运动功能障碍的患者。
- 需要进行术后康复训练、步态重建或长期卧床后重新学习行走的人群。
设备需要根据患者的残余肌力、体重、关节活动范围等因素,提供不同强度的助力。也就是说,外骨骼不是一个固定输出力矩的机械装置,而是一个能实时调整助力的主动系统。这也是它区别于普通支具和矫形器的关键点。
1.2 为什么需要医疗外骨骼
传统康复训练高度依赖康复治疗师,训练强度、频次和一致性都受到人力资源的限制。物理治疗师每天需要协助患者进行大量重复的步态训练,很容易疲劳,也无法保证每一次训练都能维持同样的力度和轨迹。
医疗外骨骼的出现,本质上是在解决“康复训练强度不够、数据不透明、治疗师负担重”这三个问题。
患者穿戴外骨骼后,设备可以按照设定轨迹带动下肢完成行走动作,同时把关节角度、速度、力矩、步态对称性等数据记录下来。医生和治疗师可以根据这些客观数据调整训练方案,而不是只凭经验判断。此外,随着电机和传感器成本下降,外骨骼设备也开始从大型医院康复科向社区康复中心、甚至家庭场景延伸。
1.3 从融资看行业拐点
回到迈步机器人这次融资。36氪的报道标题里有两个信息值得关注:第一是“首家盈利”,第二是“近亿元战略融资”。
过去几年,国内外骨骼机器人公司大多处于研发投入阶段,收入来源主要是科研项目、临床合作、少量设备销售,距离规模化盈利较远。如果公开报道属实,迈步机器人能够实现盈利,说明其产品已经从“样机展示”走向了“临床复购”,也就是说产品性能和售后体系已经能够支撑商业化运营。
中信建投作为战略投资方进入,也不只是财务投资,更多是看中康复医疗设备国产替代和老龄化带来的长期市场空间。对开发者来说,这个信号意味着医疗外骨骼相关岗位需求会增加,产品研发、算法开发、临床应用支持等方向都会释放更多机会。
2. 医疗外骨骼系统的总体架构
2.1 系统分层
医疗外骨骼机器人从硬件到软件,可以分成四层:
| 层级 | 组成 | 主要职责 |
|---|---|---|
| 感知层 | IMU、编码器、足底压力传感器、EMG传感器 | 采集人体姿态、关节角度、地面反力和肌肉活动数据 |
| 决策层 | 主控板、嵌入式处理器、算法模型 | 识别运动意图,生成关节目标角度或目标力矩 |
| 执行层 | 电机、减速器、驱动器、电源 | 按照指令输出关节力矩,带动人体运动 |
| 交互层 | 显示屏、App、上位机软件 | 显示康复数据、训练进度,供医生调整参数 |
这四层之间通过 CAN、串口、EtherCAT 或 Wi-Fi 等通信方式连接。不同产品的架构略有差异,但整体思路一致:感知层提供数据,决策层计算目标,执行层完成动作,交互层让人能看见和干预。
2.2 核心功能模块
从功能角度看,一个完整的医疗外骨骼系统可以拆成以下几个模块:
- 步态周期检测模块:判断当前处于支撑期还是摆动期。
- 运动意图识别模块:判断用户是想迈左腿、右腿,还是停止。
- 关节轨迹生成模块:根据步频和步幅生成髋、膝关节目标角度。
- 力矩控制模块:将目标角度或目标力矩转换为电机电流指令。
- 安全保护模块:检测关节超限、电机过流、跌倒等异常状态。
- 数据记录与云平台模块:保存训练数据,便于康复评估。
这些模块并不是完全独立的。步态检测结果会直接影响轨迹生成,轨迹生成又会作为力矩控制的输入,任何一个环节出现延迟或错误,都会影响穿戴者的体验和安全。
2.3 两种典型工作模式
当前医疗外骨骼通常有两种工作模式:
- 主动辅助模式:用户肌肉还有一定力量,外骨骼通过传感器感知用户的主动发力,只补充不足的部分。这种模式适合康复中后期的患者,有助于保留和训练残余肌力。
- 被动驱动模式:外骨骼按照预设的步态轨迹带动下肢运动,患者不需要主动发力。这种模式适合早期康复或肌力接近零的患者。
从控制算法角度看,主动辅助模式比被动驱动模式复杂很多,因为它需要解决“人机耦合”问题:外骨骼不能和患者对抗,必须快速识别用户意图并平滑输出助力。这也是外骨骼开发中最有挑战性的部分。
3. 开发环境与硬件平台选型
3.1 软件开发环境
医疗外骨骼的软件部分通常分为上位机和下位机两侧。
- 下位机:使用 C/C++ 编写,运行在 STM32 等 MCU 上,负责实时控制和安全保护。
- 上位机:使用 Python、C++ 或 Web 技术开发,负责数据可视化、康复训练方案配置和远程管理。
- 算法仿真:常用 Python + NumPy + SciPy + Matplotlib 或 MATLAB/Simulink 进行运动学、动力学和控制算法仿真。
本文的示例以 Python 为主,版本建议使用 Python 3.10 或更高版本。需要声明一点:不同项目的依赖版本差异较大,下面代码只演示实现思路,具体环境中请根据自己的项目实际情况调整。
3.2 传感器选型
外骨骼最常用的传感器包括:
- 惯性测量单元(IMU):测量三轴加速度和角速度,用来估计大腿、小腿的倾角和角速度。
- 关节编码器:安装于髋关节和膝关节电机输出端,用于获取精确的关节角度。
- 足底压力传感器:通常布置在鞋垫前掌和后跟位置,用于判断支撑期和摆动期。
- 肌电传感器(EMG):采集肌肉电信号,用于识别主动发力意图,但对贴放位置和信号质量要求较高。
以步态检测为例,常用的方案是“足底压力 + IMU”融合。足底压力可以可靠地判断脚是否触地,IMU 可以判断摆动过程中腿部的运动状态。两者结合,比单纯依赖某一种传感器更稳定。
3.3 执行器与驱动
医疗外骨骼关节执行器需要同时满足高转矩密度、低噪音、低功耗和精确力矩控制这几个要求。目前比较常见的方案是:
- 无刷直流电机配合谐波减速器或行星减速器。
- 直流伺服电机配合力矩传感器。
- 部分轻量级设备使用弹性驱动或串联弹性执行器,目的是提高柔顺性。
在驱动层面,通常会使用专门的无刷电机驱动器,通过 CANopen、Modbus 或 PWM 波控制电流环。电流环响应速度越快,设备的安全性和柔顺性越好。开发者在做硬件选型时,不要只看电机峰值扭矩,还要关注额定扭矩、连续运行时间、减速器回差和整体重量。
3.4 主控与通信
主控板的选型取决于算法复杂度和实时性要求。
- 如果只做角度轨迹跟踪和安全保护,使用 STM32F4 或 STM32H7 系列 MCU 就足够了。
- 如果要在设备端运行步态识别神经网络,可能需要使用带 NPU 的嵌入式平台,例如瑞芯微 RK3588、Jetson Orin 等。
- 如果只是做算法验证,也可以先在 PC 上用 Python 完成,再移植到嵌入式平台。
通信方面,关节驱动器与主控之间常用 CAN 总线,传感器与主控之间常用 I2C、SPI 或串口。上位机与下位机之间的通信可以用 USB 转串口、Wi-Fi 或蓝牙。这里要注意,医疗设备的数据传输必须关注实时性和安全性,建议在应用层增加帧头、帧尾、校验字段和超时重传机制。
4. 核心技术拆解
4.1 人体运动意图识别
运动意图识别是主动辅助模式的核心。简单来说,系统需要知道“用户现在想做什么”,然后决定要不要助力、助力多少、什么时候停止助力。
常见的意图识别信号有:
- 足底压力中心变化。
- 骨盆倾斜角度和角速度。
- 髋关节和膝关节编码器角度变化趋势。
- 大腿前侧或后侧肌群 EMG 信号。
在工程上,并不需要一开始就使用复杂的深度学习方法。很多产品先用阈值逻辑判断意图:当足底压力从后跟转移到前掌、同时躯干前倾角超过某个阈值时,判断为“准备迈步”。这种方式计算量小、响应快、可解释性强,适合嵌入式设备实时运行。
4.2 步态相位划分
一个完整的步态周期可以分为支撑相和摆动相。
- 支撑相:脚接触地面,身体重心向前移动,约占整个步态周期的 60%。
- 摆动相:脚离开地面,在空中向前摆动,约占 40%。
进一步细分,支撑相又包括足跟着地、全脚掌着地、支撑中期、足跟离地、足尖离地等阶段。这些阶段对外骨骼控制意义重大,因为不同阶段关节需要的力矩完全不同。
例如在支撑初期,膝关节需要较大阻尼防止屈曲过度;在摆动相,髋关节需要主动屈曲力矩带动大腿向前;在支撑后期,踝关节需要跖屈力矩完成蹬地动作。因此,步态相位识别是所有下肢外骨骼控制算法的基础。
4.3 关节力矩控制
外骨骼关节控制大致分为两类:
- 位置控制:让关节角度始终跟踪预设轨迹,适合被动驱动模式。
- 力矩控制:让关节输出的力矩与人体交互力保持柔顺关系,适合主动辅助模式。
力矩控制里,导纳控制和阻抗控制是两种常用方法。阻抗控制关注“位置偏差-力”的动态关系,导纳控制则通过外环力传感器计算期望位置修正量,再交给内环位置控制器执行。
对于初学者,可以从 PID 位置控制开始理解,但进入实际产品阶段后,必须加入力矩环和柔顺控制,否则设备会显得“僵硬”,甚至让患者感到不适。
4.4 安全保护逻辑
外骨骼的安全性比算法精度更重要。一旦系统判断错误,可能导致患者摔倒或关节损伤。
常见的安全保护包括:
- 关节角度限位。
- 电机电流超限保护。
- 足底压力异常检测。
- 跌倒检测。
- 急停按钮和使能开关。
- 电池电压低电量保护。
这些保护逻辑不能只写在应用层,最好在 MCU 的定时器中断或独立安全协处理器中执行。建议采用“双通道”设计:一个通道用于正常控制,另一个通道独立监控安全状态,一旦异常立即停止电机并释放刹车。
5. 完整实战案例:Python 模拟步态相位识别
5.1 项目目标
为了帮助读者理解步态相位识别的基本思路,我们用一个 Python 程序模拟足底压力信号,并据此判断当前处于支撑相还是摆动相。
这不仅是一个算法演示,还包含了一个可复用的代码框架。你可以把模拟数据替换成真实传感器采集的数据,从而快速验证你的阈值逻辑。
5.2 模拟传感器数据
我们先用 NumPy 生成一组模拟的足底压力数据。假设前掌和后跟各有一个压力传感器,数值范围是 0 到 100,pressure_heel表示后跟压力,pressure_toe表示前掌压力。
# 文件路径:simulate_data.py import numpy as np def generate_pressure_data(duration=10.0, fs=100.0): t = np.arange(0, duration, 1.0 / fs) # 模拟交替迈步的足底压力变化 phase = 2 * np.pi * 0.8 * t # 步频约 0.8Hz pressure_heel = np.clip(70 + 50 * np.sin(phase + 0.5), 0, 100) pressure_toe = np.clip(60 + 55 * np.sin(phase + 2.0), 0, 100) return t, pressure_heel, pressure_toe这里使用正弦函数模拟双脚交替受力的变化情况。真实场景中,压力信号会有更多噪声,并且会受到步速、体重、鞋垫贴合度的影响,所以不能直接套用正弦模型。
5.3 步态相位判断逻辑
接下来定义相位判断函数。基本逻辑是:只要后跟压力或前掌压力大于阈值,就认为当前处于支撑相,否则认为是摆动相。
为了增加容错性,可以加一个简单的滞后比较器,避免信号在阈值附近抖动导致相位频繁切换。
# 文件路径:gait_phase_detector.py THRESHOLD = 25.0 HYSTERESIS = 5.0 def detect_phase(pressure_heel, pressure_toe, current_phase): max_pressure = max(pressure_heel, pressure_toe) if current_phase == "swing": # 只有压力超过上阈值,才切回支撑相 if max_pressure > THRESHOLD + HYSTERESIS: return "stance" return "swing" else: # 只有压力低于下阈值,才切换到摆动相 if max_pressure < THRESHOLD - HYSTERESIS: return "swing" return "stance"这个滞后比较器在工程上很实用。它不会因为压力值在阈值线附近抖动而反复切换状态,能明显提升相位识别的稳定性。阈值参数可以根据用户体重和传感器安装位置做校准。
5.4 运行与可视化
下面我们把数据生成、相位识别和结果统计整合到一个脚本中运行。
# 文件路径:main.py from simulate_data import generate_pressure_data from gait_phase_detector import detect_phase import matplotlib.pyplot as plt t, pressure_heel, pressure_toe = generate_pressure_data(duration=5.0) phases = [] current_phase = "swing" for h, toe in zip(pressure_heel, pressure_toe): current_phase = detect_phase(h, toe, current_phase) phases.append(current_phase) stance_count = sum(1 for p in phases if p == "stance") swing_count = len(phases) - stance_count print(f"支撑相采样点: {stance_count}, 摆动相采样点: {swing_count}") # 绘制结果 plt.figure(figsize=(10, 4)) plt.plot(t, pressure_heel, label="heel") plt.plot(t, pressure_toe, label="toe") for i, p in enumerate(phases): if p == "stance": plt.axvspan(t[i], t[i] + 0.01, color="green", alpha=0.3) else: plt.axvspan(t[i], t[i] + 0.01, color="red", alpha=0.3) plt.xlabel("time (s)") plt.ylabel("pressure") plt.legend() plt.show()运行这段代码后,你会看到绿色区域表示支撑相,红色区域表示摆动相。输出的采样点数可以帮你了解相位占比是否符合预期。如果只是做算法验证,把matplotlib的部分去掉,程序同样可以在嵌入式设备中运行。
5.5 扩展到硬件
把上面这套逻辑移植到 MCU 时,通常不需要使用 Python,而是用 C 语言实现同样的滞后比较逻辑。你需要把足底压力传感器的 ADC 值读取出来,经过滑动平均滤波后,再调用相位判断函数。
建议保留一个小的调试接口,定期输出相位状态和原始传感器值。这样在患者穿戴时可以快速调整阈值,而不需要重新编译整个固件。
6. 常见问题与排查思路
在开发医疗外骨骼的过程中,很多问题并不是单一原因导致的,而是传感器、控制算法和机械结构共同作用的结果。下面整理几个高频问题和排查方向。
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 外骨骼动作明显滞后于患者意图 | 算法延迟过大,或通信周期设置不合理 | 检查传感器采样率、控制器控制周期、CAN 波特率 |
| 支撑相和摆动相频繁误切换 | 压力阈值不合理,或信号噪声大 | 增加滤波,使用滞后比较器,重新标定阈值 |
| 关节电机输出力矩不足 | 减速比太小或电机峰值扭矩不够 | 重新计算峰值力矩与连续力矩需求 |
| 患者感觉设备僵硬、不自然 | 控制模式偏硬,缺少力矩环或柔顺控制 | 从位置控制切换到位置-力矩混合控制 |
| 开机自检异常 | 传感器初始化失败或电源电压不稳 | 分模块排查:先查供电,再查总线通信 |
| 设备运行一段时间后发热严重 | 电机长时间工作在过流状态 | 优化控制参数,增加散热结构或降低辅助力 |
| 上位机数据丢帧 | 串口缓冲区溢出或通信协议不合理 | 使用应答机制,增加帧序号和 CRC 校验 |
如果你遇到类似问题,建议先记录关键日志,再逐步隔离模块。不要一开始就修改算法参数,因为传感器噪声、机械摩擦、控制延迟都可能导致同样的现象。
7. 医疗器械合规与工程最佳实践
7.1 安全性与可靠性设计
医疗外骨骼属于医疗器械,产品上市前需要满足相关法规要求。国内需要关注 NMPA 的注册审批要求,国际市场上需要参考 IEC 60601 系列、ISO 13485、ISO 14971 等标准。作为研发工程师,在代码和硬件设计阶段就要为合规做准备。
一个比较实际的做法是建立“失效模式与影响分析”文档,把每个可能的故障点列出来,评估其对患者的影响等级,然后设计对应的保护措施。比如电机驱动器失控时,机械刹车能否自动抱死?电池电量耗尽时,控制系统能否安全切换?这些问题不能留到产品化之后才考虑。
7.2 数据记录与追溯
康复外骨骼每天都会产生大量运动数据,包括步态周期、关节角度、训练时长、辅助力大小等。这些数据一方面用于训练效果评估,另一方面也是故障诊断和迭代优化的基础。
建议在软件层面统一数据格式,并在数据库中记录以下字段:
- 设备编号、固件版本。
- 患者匿名 ID。
- 训练开始、结束时间。
- 每条步态数据的原始传感器值和控制输出值。
- 异常事件标识。
数据记录要注意隐私安全。患者数据在传输和存储过程中应当加密,展示层尽量对个人信息做脱敏处理。即便只是做开发验证,也要养成“最小权限、最小采集”的习惯。
7.3 冗余设计与失效保护
从安全角度出发,医疗外骨骼的关节控制必须考虑单点故障。常见的冗余设计包括:
- 两路独立电源:控制电路和电机驱动电路分开供电。
- 双编码器:电机端编码器用于闭环控制,关节端编码器用于安全监控。
- 硬件急停:不依赖主控软件,直接切断电机驱动使能。
- 低电量保护:当电量低于阈值时,自动进入安全模式并通知上位机。
这些保护策略会增加成本,但医疗设备的核心原则永远是“患者安全优先”。在某些极端情况下,宁可设备停机,也不能让设备输出错误力矩。
7.4 临床验证与迭代
外骨骼开发不能只在实验室里跑步机测试,还应该在临床场景中与康复治疗师共同迭代。治疗师最清楚患者需要什么样的辅助力度和训练节奏。研发团队需要把临床反馈转化为可执行的工程任务,比如“大腿抬起幅度不够”可能意味着髋关节屈曲角度目标值偏低,或者辅助力矩输出不足。
建议开发团队建立一个小型数据分析平台,每周对比不同患者的训练数据,找出共性问题。通过持续迭代,设备的步态跟踪误差、助力平滑度和整体穿戴体验都会逐步提升。
8. 总结与学习路线
8.1 本文核心内容回顾
本文从迈步机器人获得近亿元战略融资的新闻切入,梳理了医疗外骨骼机器人的核心概念、系统架构、关键算法和工程落地要点。
在技术层面,你需要重点掌握三个能力:
- 步态相位识别能力:能够基于足底压力、IMU 数据判断当前运动阶段。
- 关节控制能力:理解位置控制、力矩控制和柔顺控制的区别。
- 安全设计能力:知道如何设计急停、限位、异常检测等保护逻辑。
8.2 下一步学习建议
如果你是机器人方向初学者,建议从以下路线继续学习:
- 先在本机运行本文的 Python 示例,修改阈值、滞后带和数据周期,观察相位识别结果的变化。
- 用一款真实的 IMU 和两块压力传感器搭建简易数据采集板,把串口数据实时导入 Python。
- 学习 ROS 2 的基本用法,在外骨骼仿真环境中搭建虚拟样机。
- 读 1-2 本机器人控制相关书籍,重点看导纳控制、阻抗控制和步态分析章节。
- 参与医疗器械合规相关课程或文档撰写,提前培养工程规范意识。
医疗外骨骼是一个交叉学科领域,算法只是其中一部分,机械结构、临床康复、人因工程和法规注册同样重要。不要指望短期内掌握所有知识,但可以从本文给出的代码框架开始,一步步把一个简单的步态相位识别器做到稳定可靠。等你真正把一套小系统跑起来,再回头看融资新闻,你会更理解为什么这类公司能获得资本市场的认可。