信息速览
MIT 的团队把三套互不相干的传感器搬进了同一间实验室,让它们看同一个人做同一件事:抬起一条腿,站住,再放下。32 名健康成人在双测力板上完成了一千二百余次这样的尝试,12 台红外相机以每秒一百帧记录身上 18 个反光点的位置,两块测力板以每秒一千二百帧记录脚下每一牛顿的力,而正前方五米外的一台 24 GHz 调频连续波雷达,把整件事压缩成一叠按距离与速度排布的二维图。三路信号在每次采集的首尾用同一个线性执行器对齐。
这件事的特殊之处不在于人多或模态多,而在于它给出了一个「可被拆解的真值」。单腿站立测试在临床上用了半个世纪,判据始终是一个秒表读数:站了多久。这份数据把那一秒里发生的事拆成了四个事件——抬脚、稳定开始、稳定结束、落脚——再用光学动捕与测力板把每个事件精确到毫秒,最后把同样的四个时刻翻译成雷达的帧号。于是雷达这一路信号第一次有了逐帧的解剖学参照。
把这件事讲清楚,需要先说明它给了什么、按什么口径给、边界在哪里。它是一份实验室里的方法学底稿,不是一份临床队列;它的价值在同步的严密程度,不在人群的代表性。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 官方名称 | Multimodal Synchronized Motion Capture, Force Plate, and Radar Dataset of the One-Legged Stand Test for Fall-Risk Assessment |
| 发布方 | 麻省理工学院(MIT)临床与转化研究中心;PhysioNet 收录,2026 年 1 月 25 日发布 1.0 版 |
| DOI | 10.13026/46hn-6b25(1.0 版);最新版 10.13026/70xa-vm53 |
| 受试者 | 32 名健康成人,年轻组 15 人(18 至 32 岁),年长组 17 人(64 岁以上) |
| 尝试规模 | 尝试级标注表一千二百四十一次,采集级文件约三百三十五个模态套 |
| 动作范式 | 树式单腿站立:一脚抬起贴于支撑腿内侧,双臂举过头顶 |
| 动作代码 | MNTRL / MNTRR 短时程四秒左与右,TRLGL / TRLGR 长时程二十秒左与右 |
| 动捕 | Qualisys 光学系统,12 台红外相机,18 个反光点,100 Hz,毫米 |
| 测力板 | 两块 Bertec 板,每脚一块,1200 Hz,与动捕共享参考起点 |
| 雷达 | 24 GHz FMCW,24.1 至 24.3 GHz,200 MHz 带宽,一发四收,约 27.6 Hz |
| 雷达摆放 | 正前方五米,离地一米,按 14 度垂直视场角覆盖全身 |
| 发布形态 | 原始层 CSV 加 QTM 工程,处理层为裁剪后的距离多普勒图 .mat |
| 事件标注 | 四事件,同时给动捕时间戳与雷达帧号,另给逐次采集的每帧秒数 |
| 同步机制 | 线性执行器首尾各打一次信号,无硬件触发线 |
| 伦理与去标识 | MIT COUHES 协议 #1911000055,按 HIPAA Safe Harbor 去标识 |
| 许可 | CC BY 4.0,可商用,需署名 |
§1 它要解决的具体麻烦
1.1 一台雷达想要说清楚「你在晃」,缺的是一把尺子
雷达测人的姿态,本质上测的是散射体在距离与速度上的位移。胸腔起伏几毫米,雷达的相位就能看见;躯干前后摇摆几厘米,多普勒频移里就有一段对应的成分。问题是,看见不等于说得清。一段摇摆的多普勒谱,可以解释成躯干在晃,也可以解释成手臂在摆、呼吸在干扰、衣服下摆在抖。没有同步的关节真值,这些解释分不开,模型学到的可能只是「有东西在动」。
这正是这份数据存在的理由。官方数据描述里给出的事件标注流程是这样的:抬脚与落脚由测力板检出,因为支撑脚与非支撑脚下的力会从一个非零值掉到零或从零恢复到非零,这个跃变在 1200 Hz 的力信号里干净得像一个台阶;稳定开始与稳定结束由动捕算出的抬腿膝关节屈伸角决定,膝盖乱晃时角度的一阶导数不为零,趋于零就是稳定开始,重新变大就是稳定结束。两类事件都在 QTM 里配合同步的 RGB 视频逐条人工核验,把自动检出里错判的边界情况挑出来改正。这套流程产出的时间戳被官方称为同步真值,用来把雷达帧对齐到对应的运动事件。
有了这把尺子,雷达信号就能被切成四段:抬脚前、抬脚到稳定、稳定期、稳定结束到落脚。同一段里,动捕告诉你躯干倾角的周期性与四分位距,测力板告诉你压力中心椭圆的面积与路径长度,雷达告诉你在某个距离环、某个速度格上的能量。三者在时间上对齐之后,才能谈「雷达的哪个特征对应生物力学的哪个量」。配套论文里给出的相关关系正是这么来的:年长组的二十秒长时程里,雷达多普勒摇摆指标与站立时长相关,决定系数零点五八;测力板压力中心椭圆面积与站立时长的决定系数零点七二;动捕躯干俯仰周期四分位距与站立时长的决定系数零点六五。三个数并排放,雷达那一栏比另外两栏低,但它是在非接触、无标记、单通道的条件下拿到的。
1.2 三条常见的错误期待
第一条,以为这是「跌倒数据」。库名与摘要都强调跌倒风险,容易让人以为受试者里有跌倒者与未跌倒者的分组。实际没有。队列是按年龄预先划的,年轻组与年长组,年长组的纳入条件是六十四岁以上且能独立完成单腿站立。没有任何跌倒史变量,没有随访,没有跌倒发生记录。它衡量的是姿态控制这个中间量,而不是跌倒这个结局。
第二条,以为这是「三路同步的等权数据」。三路的采样率差了一个数量级:动捕一百赫兹,测力板一千二百赫兹,雷达约二十七点六赫兹。三路的数据量也差得远:一份雷达距离多普勒图文件约十四兆字节,一次采集一千帧,粗算四亿个数值;而同一次采集的动捕只有四十秒乘一百帧乘十八个点乘三个坐标。真正做融合时,动捕和测力板是稠密的高频参照,雷达是稀疏的低频观测,把三者当对等输入塞进同一个模型是对采样结构的浪费。
第三条,以为雷达数据是「原始回波」。官方发布的雷达文件是处理后的距离多普勒图,经过混频、四路通道的相位与幅度校准、相干求和、Blackman-Harris 加窗、两次快速傅里叶变换、目标区裁剪。原始的中频采样没有发布。这意味着任何需要在原始回波上做的事——比如做角度估计、做波束成形、改加窗函数、换裁剪范围——在这份数据上都做不了,只能从发布出来的二维图开始。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 雷达与非接触感知的逐事件对齐真值 | 四事件在动捕时间轴与雷达帧轴上的两套坐标,附换算系数 | 够,这是它最难被替代的部分 |
| 光学动捕的三维关节轨迹 | 18 个反光点,100 Hz,毫米单位,位置表 CSV | 够做膝角与躯干倾角,不够做全身逆动力学 |
| 足底的地反力与压力中心 | 两块板,1200 Hz,分左右 | 够做压力中心椭圆与摆动速度 |
| 雷达的原始中频采样 | 不发布,只发布距离多普勒图 | 不够,角度维与重加窗都不可行 |
| 有跌倒史的临床队列 | 没有,全部健康,队列按年龄划 | 不够 |
| 青年组的长时程站立 | 没有,只有四秒窗口 | 不够 |
| 优势腿标注 | 没有记录 | 不够 |
| 重复访视与会话间信度 | 单次横断面,每人一次 | 不够 |
| 可直接训练的事件检测模型 | 事件标注与示例 notebook | 够做基线,论文报告了卷积加长短期记忆的准确率 |
| 步态或行走数据 | 完全没有,任务是原地站立 | 不够 |
| 肌电或惯性单元 | 没有 | 不够 |
| 可商用的许可 | CC BY 4.0,署名即可 | 够,注意不得暗示背书 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 在做毫米波或厘米波雷达的居家监护原型,缺带真值的站立数据 | 提供逐事件的雷达帧标注与三条生物力学参照 | 先只下一位受试者的雷达与标注,跑通帧到秒的换算再扩量 |
| 要做雷达事件检测,判断何时抬腿、何时落脚 | 四事件标注可直接当监督信号,论文给出了基线准确率 | 按受试者切分训练与测试,禁止同一人的不同尝试跨集 |
| 想验证自家雷达处理链,但没有对照 | 官方处理链每一步都写明了,可从同一批图反推 | 注意官方只给了输出,改动任何一步都无法与原结果逐位比较 |
| 做平衡能力的数字生物标志物 | 三模态在同一时刻给出摇摆的三种表达 | 用动捕或测力板定标,再检验雷达能否复现同一排序 |
| 需要临床患者数据 | 全库健康成人,不能外推 | 改找带跌倒史与随访的队列,或自行采集 |
| 想研究年龄对姿势控制的影响 | 两个年龄段的对照设计恰好为此 | 只能比短时程,长时程只有年长组 |
| 想训练一个全身姿态估计网络 | 只有 18 个点,且无反光点以外的外观信息 | 改找带视频与稠密关键点的库 |
| 想知道值不值得下 | 单次采集的雷达文件约十四兆,全库量级在数吉字节 | 先下标注表与方法说明,确认字段后再决定 |
| 在做多模态融合的方法学研究 | 三种采样率、三种物理量、一条硬同步链 | 把它当作同步质量的参照例,而不是通用训练集 |
| 需要可复现的基准分数 | 论文给出了事件准确率与相关性,但没有公开划分 | 自行建立划分并在文中声明,避免与论文数字直接比 |
1.5 一句话判断
这是一份用光学动捕和测力板给雷达「标尺」的实验室数据:它的分量不在三十二个人,而在一千二百余次尝试里那四个被两条独立物理通道钉死、又被翻译成雷达帧号的时刻。
1.6 不适合谁:四条边界
不适合当临床判别模型的训练集。 三十二人、两个年龄段、全部为能独立站立的健康者。任何「跌倒风险高低」的二分类标签都得自己造,而自造标签的模型在外部队列上的表现无法从这份数据里估计。
不适合需要原始雷达回波的工作。 距离多普勒图是处理链的末端产物。要做角度估计、要做波束成形、要改加窗、要保留相位而不是幅度,都需要从头采集。
不适合与行走数据混用。 任务是原地单腿站立,没有位移、没有步态周期、没有足跟着地与离地。它的「事件」是抬腿与落脚,与步态事件在物理含义上完全不同,混在同一张标签表里会污染两边的定义。
不适合做人群推断。 年长组是六十四岁以上且能独立单腿站立的自愿者,这个条件本身就把跌倒风险最高的一部分老人筛掉了。用它估计社区老人的平均水平,会系统性偏乐观。
§2 数据构成与规格
2.1 五级目录与两条发布线
数据集根目录下并排六个顶层项:Code、Figures、Metadata、OLST_QTM、Processed、Raw,另有许可文本、说明文件与校验和清单。真正装数据的是后四个。它们构成两条发布线:一条是可计算线,Raw 里的 CSV 与 Processed 里的 .mat;另一条是可回看线,OLST_QTM 里的 Qualisys 工程,用来在图形界面里把动捕轨迹、力信号与视频摊在同一根时间轴上核对。
| 层级 | 目录 | 内容 | 形态 |
|---|---|---|---|
| 第 0 级 | 根目录 | 许可、说明、校验和、六个子目录 | 文本与目录 |
| 第 1 级 | Metadata/ |
人口学、尝试标注、三份设备设置表、一份标记点位置表 | 两张 CSV,四张 XLSX 与 CSV |
| 第 1 级 | Raw/MOCAP/ |
按受试者编号分目录,每目录若干 _MC_Vn.csv |
每受试者一目录,编号 01 至 56 跳号 |
| 第 1 级 | Raw/ForcePlate/ |
同上结构,每采集左右各一份 _FP_Vn_left/right.csv |
文件数约为动捕的两倍 |
| 第 1 级 | Processed/Radar_RDMs/ |
按受试者编号分目录,每目录若干 _RR_Vn.mat |
单文件约十四兆字节 |
| 第 1 级 | OLST_QTM/ |
工程文件、标定、AIM 模型、消息、按受试者分的 .qtm |
Qualisys 专有格式 |
| 第 1 级 | Code/ |
一个演示 notebook,加载与可视化 | IPYNB |
| 第 1 级 | Figures/ |
论文插图 | 图片 |
命名规则统一为「受试者编号_运动代码_模态代码_版本号」。模态代码三个:MC 是动作捕捉,FP 是测力板,RR 是雷达。版本号从 V1 起,同一次采集条件若重复做了几次就有几个版本。运动代码四个:MNTRL 与 MNTRR 是短时程、左或右支撑腿、每次采集三个四秒窗口;TRLGL 与 TRLGR 是长时程、左或右支撑腿、每次采集一个二十秒窗口。举例来说,一号受试者第二次做右腿支撑的短时程、这一条是雷达记录,文件名就是 01_MNTRR_RR_V2。
这套命名的好处是任何一条数据都能从文件名读出四个正交维度。代价有三个:受试者编号不连续,中间有跳号,因为招募编号与最终入组编号不是一套;同一受试者的采集数不等,年轻组只有两类短时程,年长组还要多做两类长时程;部分文件带 xxx 后缀,属于采集重做的痕迹,官方目录里能看到,但说明文件没有逐条解释。
2.2 字段与记录的完整字典
数据集没有一张贯穿三模态的总表。唯一横跨全部模态的是尝试标注表,它把动捕时间轴与雷达帧轴钉在一起。其余字段分散在各模态文件里。
先看标注表,共十七列。
| 列名 | 类型与单位 | 含义 | 与其它列的关系 |
|---|---|---|---|
OLST_attempt_id |
字符串 | 尝试主键,由雷达采集编号加尝试序号拼成 | 前四段等于 RADAR_capture,末段 anN 是采集内第几次 |
RADAR_capture |
字符串 | 采集级编号,可直接拼出 .mat 文件名 | 与 Raw、Processed 下的文件名一一对应 |
MOCAP_Start_Time |
秒 | 执行器首端事件在动捕时间轴上的位置 | 与下一列构成同步区间左端 |
MOCAP_End_Time |
秒 | 执行器末端事件在动捕时间轴上的位置 | 右端,一般大于左端二十余秒 |
RADAR_Start_Frame |
帧 | 首端事件在雷达帧轴上的位置 | 与动捕左端对应,但不是等比例 |
RADAR_End_Frame |
帧 | 末端事件在雷达帧轴上的位置 | 帧差一般六百余帧 |
Seconds_per_Frame |
秒每帧 | 由上面四列算出的换算系数 | 等于时间差除以帧差,逐采集不同 |
an |
整数 | 采集内尝试序号,从一并递增 | 官方称最少一次、最多十五次 |
is_attempt_final |
布尔 | 是否为该采集的最后一个窗口 | 与下一个采集的开始无关,只标窗口边界 |
t_foot_up |
秒 | 抬脚开始 | 动捕与测力板时间轴 |
t_stable |
秒 | 稳定开始,可能缺失 | 缺失表示本次从未稳定 |
t_break |
秒 | 稳定结束,可能缺失 | 缺失表示一直稳到采集结束 |
t_end |
秒 | 尝试结束 | 一般情况下即落脚时刻 |
frame_foot_up |
帧 | 抬脚在雷达帧轴上的位置 | 由秒数经系数换算后取整 |
frame_stable |
帧 | 稳定开始的帧号,可能缺失 | 与 t_stable 同步缺失 |
frame_break |
帧 | 稳定结束的帧号,可能缺失 | 与 t_break 同步缺失 |
frame_end |
帧 | 尝试结束的帧号 | 有个别行等于采集末端而非真实落脚 |
再看待发布的数据文件本身。
| 文件族 | 格式 | 采样或帧率 | 主要字段 | 备注 |
|---|---|---|---|---|
_MC_Vn.csv |
CSV | 100 Hz | 每帧十八个标记点乘三个坐标,共五十四列左右 | 单位毫米,列名即标记点名加 X、Y、Z |
_FP_Vn_left.csv |
CSV | 1200 Hz | 三向力、三向力矩、压力中心坐标 | 每股脚各一份,需按文件名配对 |
_FP_Vn_right.csv |
CSV | 1200 Hz | 同上 | 与左侧同一时间基准 |
_RR_Vn.mat |
MATLAB | 约 27.6 Hz | 裁剪后的距离多普勒幅度矩阵,一千帧成三维数组 | 结构与变量名需按 notebook 读取 |
_MC_Vn.qtm |
Qualisys | 原生 | 轨迹、力、视频、标定、事件 | 图形界面回看用 |
Participant_Demographics.csv |
CSV | 不适用 | 编号、年龄、性别、身高、体重、队列 | 三十二行 |
MOCAP_Markers_Locations.csv |
CSV | 不适用 | 十八个点的解剖位置与单位说明 | 一千二百余字节 |
FMCWRadar_Settings.xlsx |
XLSX | 不适用 | 带宽、采样、调频斜率、天线配置 | 逐次采集相同 |
MOCAP_Settings.xlsx |
XLSX | 不适用 | 相机数、采样率、标定信息 | 逐次采集相同 |
ForcePlate_Settings.xlsx |
XLSX | 不适用 | 量程、灵敏度、零漂设置 | 逐次采集相同 |
十八个标记点的位置值得逐项列出,因为它决定了这份数据能算哪些生物力学量。
| 序号 | 标记点 | 解剖位置 | 序号 | 标记点 | 解剖位置 |
|---|---|---|---|---|---|
| 1 | 右踝 | 右腓骨外踝 | 10 | 左腕 | 左尺骨茎突内侧 |
| 2 | 左踝 | 左腓骨外踝 | 11 | 右肘 | 右肱骨外上髁 |
| 3 | 右膝 | 右股骨外侧髁 | 12 | 左肘 | 左肱骨外上髁 |
| 4 | 左膝 | 左股骨外侧髁 | 13 | 右肩 | 右肩峰 |
| 5 | 右髋前 | 右髂前上棘 | 14 | 左肩 | 左肩峰 |
| 6 | 左髋前 | 左髂前上棘 | 15 | 腹部 | 脐水平中线 |
| 7 | 右髋后 | 右髂后上棘 | 16 | 胸部 | 胸骨柄 |
| 8 | 左髋后 | 左髂后上棘 | 17 | 下背 | 第三与第四腰椎棘突之间 |
| 9 | 右腕 | 右尺骨茎突内侧 | 18 | 上背 | 第三与第四胸椎棘突之间 |
这张表解释了两件事。一是为什么官方能算膝角:膝、髋前、踝三点在同一侧,构成一个平面屈伸角的几何基础。二是为什么躯干倾角能算:胸、腹、上背、下背四点给出躯干的空间朝向,配合两侧髋前点可定义躯干中轴。同时也是为什么逆动力学做不了:没有足部的点,没有跖趾关节,力臂缺一段。
2.3 一条记录的完整解剖
以标注表第一行为例,把一次尝试从编号走到秒数,再走到帧号。
OLST_attempt_id : 01_MNTRL_RR_V1_an1
RADAR_capture : 01_MNTRL_RR_V1
MOCAP_Start_Time: 8.47
MOCAP_End_Time : 30.2
RADAR_Start_Frame: 226
RADAR_End_Frame : 821
Seconds_per_Frame: 0.0365
an : 1
is_attempt_final: False
t_foot_up : 10.22 frame_foot_up : 273
t_stable : 11.19 frame_stable : 300
t_break : 14.28 frame_break : 385
t_end : 15.05 frame_end : 406
读这一行要注意五件事。第一,八个时刻的量纲不同:前四列与第二段的四个 t 是秒,其余是帧。第二,换算系数不是采集标称帧率的倒数。官方标称约二十七点六赫兹,倒数是约零点零三六二秒,而这一行的系数是零点零三六五,差千分之三;单帧看不出,累积到几百帧就是十分之一秒。第三,t_stable 与 t_break 之间的差不到三点一秒,而整个窗口是四秒,也就是说这位受试者从抬腿到站稳花了将近一秒,稳定维持了三秒出头。第四,t_end 减 t_break 只有零点七七秒,这是稳定被打破之后的收势时间。第五,这一行不是该采集的最后一次尝试,is_attempt_final 为假,说明后面还有。
同一行的第三段还展示了缺失的形态。标注表里存在这样的行:t_stable 与 frame_stable 两处为空,t_break 与 frame_break 两处也为空,而 t_end 等于 MOCAP_End_Time。这是整段窗口里受试者始终没站稳或一直稳到采集结束的两种情形之一。官方在字段说明里给了判据:t_stable 空表示本次从未达到稳定膝角;t_break 空表示一直稳到结束;t_end 等于执行器运动时间而非真实落脚时,它标的是该次尝试在雷达上最后一个可用帧。这三条判据必须一起读,单看一列会误判。
一次尝试在雷达上的样子,可以这样还原。
帧轴: 226 ──────── 273 ── 300 ────────── 385 ── 406 ──── 821
执行器首端 抬脚 稳定开始 稳定结束 落脚 执行器末端
秒轴: 8.47 10.22 11.19 14.28 15.05 30.20
│← 1.75 秒 →│ │← 3.09 秒 ────→│ │
采集预热段 稳定维持期 收势与收尾
一张裁剪后的距离多普勒图,每个帧就是这张图里的一格。横轴是距离,官方裁到四至六米;纵轴是速度,裁到正负五米每秒;格子的亮度是反射能量。人站着不动时能量集中在零速度附近、五米附近的几条距离环上;抬腿那一下,抬起的那条腿会短暂离开支撑点、产生几厘米到十几厘米的速度分量,于是在正负零点几米每秒的位置出现一小团能量,而后又落回零速。
2.4 采集矩阵与规模
把运动代码与队列叉乘,得到一张不大的矩阵。数字是采集数,不是尝试数。
| 运动代码 | 含义 | 窗口时长 | 每采集窗口数 | 年轻组 | 年长组 |
|---|---|---|---|---|---|
| MNTRL | 短时程,左腿支撑 | 4 秒 | 3 | 有 | 有 |
| MNTRR | 短时程,右腿支撑 | 4 秒 | 3 | 有 | 有 |
| TRLGL | 长时程,左腿支撑 | 20 秒 | 1 | 无 | 有 |
| TRLGR | 长时程,右腿支撑 | 20 秒 | 1 | 无 | 有 |
由此可以推出规模上的几个关键量。短时程每侧三次采集乘三次窗口,每人最多九个尝试窗口;长时程每侧三次采集乘一次窗口,每人最多三个。年长组每人满打满算十二个窗口,年轻组只有九个。全库尝试上千余次,而采集级文件约三百三十五个模态套,其中雷达 .mat 一份、动捕 CSV 一份、测力板 CSV 两份,合计文件数在千级。
这组数字有一个直接后果需要在建模时当心:窗口数不等于尝试数。一个四秒窗口里,平衡差的人可能抬脚落脚三次,平衡好的人可能一次站满。所以在同一张表里,an 的分布会同时反映这两件事。做「每次尝试」为单位的统计时可以按行走,做「每单位时间」的统计时不能除以窗口数,只能除以窗口时长之和。
2.5 与同类资源的字段差异
把三路模态拆成字段看,这份数据的组合在公开资源里少见。
| 字段维度 | 本数据集 | 常见惯性动捕库 | 常见 Kinect 平衡库 | 常见足底压力库 |
|---|---|---|---|---|
| 关节真值来源 | 光学反光点,12 相机 | 惯性单元解算 | 深度相机骨架 | 无 |
| 关节数量 | 18 个反光点 | 十余至二十余个单元 | 二十五个关节 | 不适用 |
| 力的测量 | 双板三分量,1200 Hz | 无 | 无 | 鞋垫或板 |
| 非接触观测 | 24 GHz FMCW 雷达 | 无 | 深度与红外 | 无 |
| 事件标注 | 四事件,双时间轴 | 视项目而定 | 动作级 | 步态事件 |
| 原始信号可得性 | 雷达仅给处理后的图 | 视项目而定 | 深度图常给 | 常给 |
差异中最关键的一条是最后一行。多数雷达类公开数据只给处理后的谱图或特征,多数动捕库只给坐标。同时给到「坐标、力、谱图」且三者事件对齐的,公开资源里为数不多。这也正是它的取舍:为了让三者能对齐,雷达被处理到只剩距离与速度两维,牺牲了角度维。
§3 它是谁的数据:一间实验室、三套时钟、一次横断面
3.1 从哪来、谁做的
数据出自麻省理工学院。通讯作者在临床与转化研究中心,合著者分布在医学工程与科学研究所,研究的落点是「用非接触手段在家庭环境里持续评估平衡」,而不是做一份通用的人体运动库。这个出身决定了数据的取舍:为了证明雷达可行,必须有一个可信的参照系,于是光学动捕与测力板被当成标尺引入;为了让别人能复现,处理链被写得极细;为了能公开,去标识做到了 HIPAA Safe Harbor。
伦理批准号是 MIT 的 COUHES #1911000055,全部受试者签署书面知情同意,数据在公开前完成去标识。纳入条件是六十四岁以上或十八至三十二岁、能独立完成单腿站立、无影响平衡的急性问题。
配套有一篇数据描述论文与一篇方法学论文。前者发表在 Scientific Data,2026 年 2 月,DOI 后缀为 s41597-026-06831-1,详细交代采集、处理、验证与局限;后者发表在 Gait & Posture,2026 年,报告了用卷积加长短期记忆加注意力网络从雷达图判别 OLST 阶段的结果,抬脚与落脚的准确率分别为九成四与九成一,加逻辑后处理之后提升到九成七与九成四点五,短时程里雷达特征还能把三个预设队列分开,效应量在一到二点七之间。
3.2 两个队列为什么这么划
年轻组是十八至三十二岁,年长组是六十四岁以上,中间三十余年刻意留空。这个设计不是为了覆盖生命周期,而是为了让两端的差异最大化。中间段的成年人平衡能力处在过渡带,个体差异大,样本量小的时候会把两端的对比冲淡。留空之后,任何一组差异都可以被解释为年龄效应,代价是无法刻画下降曲线的形状。
年长组的实际年龄上限到七十八岁。这个数字需要对照纳入条件读:能独立完成单腿站立、且愿意在实验室里做二十秒的尝试。这个条件筛掉的恰好是跌倒风险最高的那一部分老人。所以年长组的「年长」两个字,指的是一群功能较好的老人。
| 维度 | 年轻组 | 年长组 |
|---|---|---|
| 人数 | 15 | 17 |
| 年龄范围 | 18 至 32 岁 | 64 岁以上,实际到 78 岁 |
| 运动代码 | 只做短时程两类 | 短时程两类加长时程两类 |
| 每侧采集次数 | 3 次 | 短时程 3 次、长时程 3 次 |
| 每采集窗口 | 3 个四秒 | 短时程 3 个四秒,长时程 1 个二十秒 |
| 每侧最多尝试窗口 | 9 | 12 |
| 功能状态 | 健康青年 | 能独立单腿站立的健康老人 |
3.3 动作范式:为什么是树式
任务被官方描述为瑜伽树式的变体:抬起一只脚,脚底压在支撑腿的内侧,位置可以是大腿内侧也可以是小腿内侧,双臂全程举过头顶。
三个细节都有生理学理由。抬起的脚压在支撑腿上,把两条腿耦合成一个整体,减少了自由摆动腿对躯干平衡的补偿,让摇摆更多地暴露在躯干上。双臂举过头顶,抬高了整体重心,同时限制了用上肢做平衡补偿的动作,逼着踝与髋去承担全部调节。赤脚站在测力板上,让力信号不受鞋底缓冲的干扰。
这套姿势对雷达尤其重要。双臂上举让身体轮廓在垂直方向上拉长,在十四度垂直视场角、五米距离的几何下,一米高处安装的雷达恰好能把从脚到手的整段扫进去。如果换成双臂自然下垂,脚部的回波会更容易被地面杂波盖住。
3.4 采集的一天是怎么走的
受试者到场后先热身,再在主要关节贴反光点,然后站上测力板。每次采集的流程是固定的:雷达开始记录,动捕与测力板开始记录,执行器在起点位置往复一次留下同步信号,执行器移出雷达路径,按音频与视觉提示做单腿站立,执行器移回并再往复一次,采集结束。
单次采集很短:动捕与测力板记录四十秒,雷达记录一千帧、约三十七秒。四十秒里真正用于任务的只有十到二十秒,其余是预热、同步信号与收尾。这种「短采集、多重复」的设计,使得一天里可以密集完成一位受试者的全部采集,也让同步误差没有机会随时间漂移。
§4 它最独特的东西:雷达看得见什么,看不见什么
4.1 一台二十四吉赫的雷达在五米外能分辨什么
先把几何算清楚。二十四吉赫、二百兆带宽,距离分辨率由光速除以两倍带宽决定,量级在零点七五米。这不是缺陷:对一个站在五米外、身高一米七的人来说,零点七五米的距离分辨率足以把躯干与腿部大致分成几个距离环,但不足以分辨关节。速度分辨率由波长与每帧持续时间决定,帧内一百二十八个上扫频、每个二百五十六微秒、重复间隔二百八十四微秒,一帧约三十六毫秒,对应速度分辨率的量级在零点二米每秒。人站立时的躯干摇摆速度通常在每秒几厘米到十几厘米,也就是说,大部分摇摆落在雷达的速度分辨率之下。
这两条数字规定了雷达的精度边界。它看不见「膝盖屈了多少度」,也看不见「重心偏了几毫米」;它看得见的是「哪一段距离上的散射体在整体移动,移得多快」。要让这种粗粒度的观测变成有意义的指标,就必须借外部真值把时间段切开,把「稳定期」与「抬脚过程」分开处理。这正是事件标注存在的意义。
| 观测项 | 雷达能给出 | 动捕能给出 | 测力板能给出 |
|---|---|---|---|
| 抬脚与落脚时刻 | 事后由模型判别,论文报告九成上下 | 由膝角导数间接定,主判据 | 由力的跃变直接定 |
| 稳定起止 | 需借时间切分 | 由膝角导数与滞回阈值定 | 不适用 |
| 躯干前后摇摆 | 零速邻域的多普勒展宽 | 胸背四点算俯仰角 | 压力中心前后位移 |
| 左右摇摆 | 多普勒展宽的对称性 | 髋部两点的横向位移 | 压力中心左右位移 |
| 重心高度 | 不能直接给 | 由十八点近似 | 由压力中心近似 |
| 关节角度 | 不能给 | 膝、髋、肩、肘可算 | 不能给 |
| 足底压力分布 | 不能给 | 不能给 | 给,双板分左右 |
4.2 距离多普勒图到底长什么样
一帧图是一张二维网格。横轴是距离,官方把主目标区裁到四至六米,也就是把人的躯干与腿所在的那两米留下来;纵轴是速度,裁到正负五米每秒,也就是把人可能产生的一切速度包住。格子里的数值是该距离、该速度上的回波幅度。
处理链共六步,每一步都有可复述的理由。混频把发射与接收的扫频信号相乘,得到中频信号,中频的拍频与目标的距离成正比,这是测距的来源。相位与幅度校准修正四路接收链之间的不平衡,不做这一步,相干求和会把有用的信号抵消掉。四路相干求和提信噪比,代价是丢掉通道间的相位差,也就是丢掉了角度信息。Blackman-Harris 加窗压旁瓣,让一个强散射体不会在图上拖出一条长长的假影,代价是展宽主瓣、降低速度分辨率。两次傅里叶变换,快时间上一次得到距离,慢时间上一次得到速度。最后按距离与速度裁剪,只留人所在的那一块。
裁剪这一步是发布决定,也是使用决定。主目标区裁到四至六米,执行器区裁到一至三米,两块分开存。执行器那一块存在的唯一目的是同步:它的往复运动在图上表现为一条在一至三米之间来回的亮迹,用它找出首尾两端,就能算出每帧秒数。
4.3 案例:01_MNTRR_RR_V2 里的一次四秒
用 §2.3 的案例做一次完整的读出演示。这条采集是一号受试者第二次做右腿支撑的短时程,属于雷达记录。标注表里它对应三个尝试,按 an 排开。取 an1,同步区间从动捕的八点四七秒到三十点二秒,对应雷达第 226 帧到第 821 帧,相减得零点零三六五秒每帧。
三个尝试的事件在这一段区间里排开:第一次抬脚在十点二二秒、第二百七十三帧;第二次在十八点二五秒、第四百九十三帧;第三次在二十六点二四秒、第七百一十二帧。相邻两次抬脚之间相隔约八秒,也就是说这个四秒窗口的设计在时间上留了余量:一次尝试占四秒,窗口与窗口之间还有间隔,用于受试者放下腿、调整、再抬。
这解释了为什么 an 可以到十五:如果受试者每次都只站一秒就落脚,理论上一个窗口里能塞进多次尝试,而实际的尝试序号受窗口时长约束,上限是官方记录到的十五次。也解释了为什么官方强调「平衡好的人尝试少而长、平衡差的人尝试多而短」:同一段窗口里,an 的计数本身就是一种能力读数。
把这条采集的雷达图按事件切段,会得到三段形状不同的「图块」:抬脚前的一小段几乎全是零速附近的低能量,因为人还双腿站立;抬脚过程中抬起的那条腿产生一段短促的非零速度,图上会出现一条朝正速度方向的斜迹;稳定期里能量回到零速邻域,但宽度比抬脚前更宽,因为单腿站立时的轻微摇摆会让速度谱展宽。论文里的多普勒摇摆指标,本质上就是在量化第三段的这个宽度。
这条案例在本篇后面还会被引用三次:一次在讲取数路径时说明如何用它验证文件名到标注的映射(§5.4),一次在讲质量时说明缺失值的样子(§7.3),一次在讲与其它库的差异时说明「事件级」与「动作级」标注的区别(§6.1)。
4.4 为什么值得把雷达和光学动捕放在一起
如果把这份数据当成一份「雷达数据集」,它会显得人群太小、场景太窄、样本太少。但如果把它当成一份「雷达的标定物」,它的价值就完全不同。
第一,光学动捕提供了一个与雷达物理上独立的参照。两者测量的是同一件事的不同投影:动捕测位置,雷达测位置对时间的导数在视线方向上的分量。两个独立通道的一致性,是任何单模态方法无法自证的东西。论文里把雷达的摇摆指标与动捕的躯干俯仰周期四分位距并排报告相关,做的正是这件事。
第二,测力板提供了第三个参照,而且它测的是另一个物理量。力与位置之间隔着质量与加速度,不是同一回事。三条通道两两相关,才能把「这只是一次共同噪声」排除掉。
第三,这套参照是逐帧可用的,不是会话级的。很多多模态数据集的对齐只到「同一天同一场」,而这份数据把对齐做到了单个事件、单帧。
第四,也是最少被提的一点:它把雷达的失败之处也暴露了出来。速度分辨率跟不上摇摆速度,意味着雷达在这个场景里本就不是精密的姿态传感器,而是一个粗粒度的行为传感器。这种定位在工程上反而更可靠——粗粒度的指标不容易被个体差异与服装差异拖垮。
§5 怎么拿到:从标注表到一帧可用信号
5.1 两种拿法
第一种是整包下载。项目文件页提供按目录浏览与整包下载两种入口,整包包含全部六个子目录,体量在数吉字节量级。第二种是只取所需:标注表在 Metadata 下只有百千字节级,方法说明在根目录的说明文件里只有几 KB,先取这两样就能判断要不要继续。
需要知道的现实约束是访问层面。项目页面在部分地区会显示「数据因法律或政策限制在当前地区不可用」。这一限制来自访问端的网络环境而非许可本身,许可条款写得很明确:只要遵守 CC BY 4.0,任何人都可以访问。遇到页面拦截时,可换用镜像或机构网络,也可只取标注表与方法说明做前期评估。
5.2 先验一遍目录,别让循环在空目录里打转
#-- 只看目录结构,不下载文件体
curl -s "https://physionet.org/files/olst-mocap-forceplate-radar/1.0/" | grep -o 'href="[^"]*"'
#-- 拿根目录的说明与方法全文
curl -sO "https://physionet.org/files/olst-mocap-forceplate-radar/1.0/README.txt"
#-- 拿尝试标注表与人口学表,两样都只有百千字节
curl -sO "https://physionet.org/files/olst-mocap-forceplate-radar/1.0/Metadata/OLST_Attempts.csv"
curl -sO "https://physionet.org/files/olst-mocap-forceplate-radar/1.0/Metadata/Participant_Demographics.csv"
#-- 校验和清单,用于确认下载完整
curl -sO "https://physionet.org/files/olst-mocap-forceplate-radar/1.0/SHA256SUMS.txt"
5.3 把标注表读成可查询的结构
#-- 读出标注表,检查缺失形态与换算系数的离散程度
import pandas as pd
att = pd.read_csv("OLST_Attempts.csv")
print(att.shape) #-- 行数与列数
print(att.isna().sum().sort_values(ascending=False).head(5))
print(att["Seconds_per_Frame"].describe())
#-- 把 radr 帧号换成秒,与动捕时间轴比对
att["t_from_frame"] = att["frame_foot_up"] * att["Seconds_per_Frame"]
att["residual"] = att["t_from_frame"] - att["t_foot_up"]
print(att["residual"].abs().describe())
#-- 按采集编号聚合,得到每次采集用了几次尝试
per_cap = att.groupby("RADAR_capture").size().sort_values(ascending=False)
print(per_cap.head(10))
跑这段代码会注意到两件事。一是换算残差不是零:帧号是整数,换算回来的秒数必然落在半帧以内,逐行看会在正负零点零二秒附近散布。二是 Seconds_per_Frame 在批内的离散度很小,跨批却不小,所以任何使用全局均值的做法都会引入系统偏差。
5.4 用案例行验证文件名到标注的映射
#-- 取案例行,确认采集编号能拼出雷达文件名
row = att[att["OLST_attempt_id"] == "01_MNTRL_RR_V1_an1"].iloc[0]
cap = row["RADAR_capture"] #-- 例如 01_MNTRL_RR_V1
radar_path = f"Processed/Radar_RDMs/{cap[:2]}/{cap}.mat"
mocap_path = f"Raw/MOCAP/{cap[:2]}/{cap.replace('_RR_', '_MC_')}.csv"
fp_left = f"Raw/ForcePlate/{cap[:2]}/{cap.replace('_RR_', '_FP_')}_left.csv"
fp_right = f"Raw/ForcePlate/{cap[:2]}/{cap.replace('_RR_', '_FP_')}_right.csv"
print(radar_path, mocap_path, fp_left, fp_right)
#-- 若其中一条不存在,说明该采集被剔除或命名有额外后缀
import os
for p in (radar_path, mocap_path, fp_left, fp_right):
print(os.path.exists(p), p)
这段的意义在于尽早暴露命名的边界。标注表用 _RR_ 做采集编号,动捕与测力板文件用 _MC_、_FP_,替换字符串是最省事的做法;但带 xxx 后缀的采集会让替换后的路径指向不存在的文件,exists 返回假,正好提醒回头查目录。
5.5 读一帧雷达图并画出来
#-- 读 .mat,画出某次尝试的抬脚前后各一帧
from scipy.io import loadmat
import numpy as np
import matplotlib.pyplot as plt
mat = loadmat("Processed/Radar_RDMs/01/01_MNTRL_RR_V1.mat")
print([k for k in mat.keys() if not k.startswith("__")])
rdm = mat[[k for k in mat.keys() if not k.startswith("__")][0]]
print(rdm.shape) #-- 期望三维:帧、距离、速度
frame_up = 273 #-- 案例行的抬脚帧
fig, axes = plt.subplots(1, 2, figsize=(10, 4))
for ax, f in zip(axes, (frame_up - 1, frame_up + 2)):
ax.imshow(rdm[f], aspect="auto", origin="lower", cmap="viridis")
ax.set_title(f"frame {f}")
ax.set_xlabel("range bin")
ax.set_ylabel("doppler bin")
plt.tight_layout()
plt.savefig("rdm_pairs.png", dpi=120)
变量名以实际为准,官方 notebook 里有该文件的确切键名与维度顺序。上面对两个关键字做了保护性遍历,是为了让脚本在不一致的版本上仍能打印出可用信息而不是直接报错。
5.6 一次完整的取数流程
#-- 顺序:目录 → 说明 → 标注 → 单人雷达 → 单人动捕与测力板 → 校验
B="https://physionet.org/files/olst-mocap-forceplate-radar/1.0"
curl -sO "$B/README.txt"
curl -sO "$B/Metadata/OLST_Attempts.csv"
curl -sO "$B/Metadata/MOCAP_Markers_Locations.csv"
curl -s -o 01.mat "$B/Processed/Radar_RDMs/01/01_MNTRL_RR_V1.mat"
curl -s -o 01_mc.csv "$B/Raw/MOCAP/01/01_MNTRL_MC_V1.csv"
curl -s -o 01_fp_l.csv "$B/Raw/ForcePlate/01/01_MNTRL_FP_V1_left.csv"
curl -s -o 01_fp_r.csv "$B/Raw/ForcePlate/01/01_MNTRL_FP_V1_right.csv"
ls -lh 01.mat 01_mc.csv 01_fp_l.csv 01_fp_r.csv
单人的四件套加两张元数据表足以跑通全部下游步骤:读事件、切帧、比对、画图。确认无误之后再决定是否整包下载,可以把下载量与误判成本都压到最低。
§6 与库内条目的关系
6.1 关系图谱
库内已有若干与人体运动相关的词条,逐个核对标题之后可以确认,没有一个与本篇的主轴重合。重合的是「传感器」,不重合的是「被测量的对象」。
| 库内条目 | 标题 | 采集方式 | 与本篇的关系 |
|---|---|---|---|
| kinecal | 平衡评估的 Kinect 记录:九十人的十一个动作 | Kinect 深度与骨架,三十帧 | 同为平衡评估、同为跌倒风险,但传感器是消费级深度相机,无雷达、无力台 |
| multi-gait-posture | 十四个人推着助行架走三遍 — 多相机步态姿势库 | 惯性单元加两路深度相机 | 同为多模态同步,但目标是行走与助行器视角,真值来自惯性与深度 |
| taichidb | 太极新手与老手的十分钟 — taichidb 步态库 | 足底开关与下肢肌电 | 同为老年人群的平衡与步态研究,但任务是行走与双任务,无三维关节 |
| gaitdb | 十五个人走出的分形 — gaitdb 步幅间隔库 | 鞋内压阻,只发布时间戳 | 只保留步幅间隔,信息量与本文差一个量级 |
| acl-jumplanding-mocap | 跳跃落地动捕与双测力台 | Vicon 十相机,双测力台 | 最近的一份:同为光学动捕加双板,但任务是跳跃落地,无雷达,真值到关节角与 c3d |
| rehab-motion-capture | 康复操的光学动捕加无标记加深度 | OptiTrack 八相机,另加无标记与深度 | 同为光学动捕,但任务是成套康复操,无雷达、无力台 |
| music-motion-2015 | 听音乐站直别动 — MICRO 头部微动捕捉 | 十三台红外相机追头部点 | 同为原地站立的微动,但只追头部,无雷达、无足底力 |
| hand-kinematics-semg | 前臂与腕部的四百四十八通道 | 高密度肌电加数据手套 | 同为运动意图,但部位在手,传感器完全不同 |
| sisfall | 可穿戴惯性跌倒检测 | 惯性单元,模拟跌倒 | 同名「跌倒」,但它是结局检测,本篇是风险相关量 |
与 kinecal 的分工最值得说清。两者都指向跌倒风险、都含平衡动作、都面向老年人群。区别在传感器:kinecal 用 Kinect,价值在于把设备成本压到消费级,代价是骨架精度与遮挡处理由厂商算法决定。本篇相反:成本极高,但中间量全开,且多了一路不进画面的雷达。
与 acl-jumplanding-mocap 的分工在任务。两者是库内最接近的一对:都是光学动捕加双测力板,都有事件级标注与原始层派生层。差别在于那个库把重点放在关节角与疲劳对照,本篇把重点放在雷达与另两路的对齐。
与 multi-gait-posture 的分工在运动。两者都是多模态同步、都做帧级对齐。区别是一个走、一个站;行走数据适合姿态估计与轨迹预测,站立数据适合微动与摇摆分析,把两者拼成「行走加站立」的模型没有意义,采样几何与体量都不可比。
6.2 检索路径
按需求反查,三条路径可以覆盖多数场景。
| 你要的东西 | 先看 | 再看 | 理由 |
|---|---|---|---|
| 跌倒风险相关的平衡数据 | kinecal | 本篇 | 先看人群更大的,再验证高精度参照 |
| 非接触感知的带真值数据 | 本篇 | 无 | 雷达这一路是独占点 |
| 光学动捕加力台的对照 | acl-jumplanding-mocap | 本篇 | 一个偏关节角,一个偏事件与雷达 |
| 行走而非站立 | multi-gait-posture | taichidb | 本篇不支持行走 |
| 只想要步幅间隔 | gaitdb | 无 | 体量最小,但信息也最少 |
| 只想要头部微动 | music-motion-2015 | 本篇 | 一个只追头,一个追全身 |
| 康复动作的光学动捕 | rehab-motion-capture | 本篇 | 一个有成套动作,一个是单一姿势 |
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
看到「跌倒风险」与「三十二人」两个词,很容易做出两类误判。第一类是把三十二人当作「样本量」,然后按常规监督学习的标准给出「样本太少」的结论。这个判断的参照系错了:这份数据的定位是标定物,标定物要看的是参照系的精度与覆盖,而不是分类器的泛化。第二类是把「跌倒风险」当作标签,然后追问为什么没有阴性与阳性。这也是误判,因为队列按年龄分,不按结局分,它提供的是一段姿态控制的过程记录。
正确的读法是把它当作一份仪器手册加一批校准记录:先问三路通道各自的精度边界在哪里,再问它们对齐的误差有多大,最后才问在这套精度下哪些下游任务是有意义的。下面五节按这个顺序展开。
7.1 五维评分
五个维度各按十分制打分,扣分点写在表里。
| 维度 | 分数 | 依据 | 扣分点 |
|---|---|---|---|
| 同步精度 | 9 | 执行器首尾双信号,逐采集换算,受试者内变异极小 | 依赖执行器可被雷达看见,遮挡时无法补救 |
| 模态互补性 | 9 | 位置、力、速度三种物理量,采样率跨一个数量级 | 雷达缺角度维,无肌电与惯性 |
| 标注粒度 | 8 | 四事件级,双时间轴,缺失有明确判据 | 无逐帧质心轨迹,无关节角派生列 |
| 人群代表性 | 4 | 两个年龄段,功能较好,无患者 | 三十二人,无随访,无跌倒史 |
| 可复现性 | 9 | 处理链六步写全,参数给全,附示例 notebook | 原始中频未发布,处理末端无法逐位复算 |
加权后的整体印象是「仪器级、样本级」。这份数据的强项全部集中在测量与对齐,弱项全部集中在人群与结局。选不选它,取决于你要的是前者还是后者。
把五维换成 FAIR 与 DAIMS 两套常被引用的评估框架再看一遍,可以得到更结构化的判断。
| 框架项 | 本数据集的表现 | 支撑事实 |
|---|---|---|
| DAIMS 之可发现性 | 强 | 有 DOI、有 RRID、有主题词、被 PhysioNet 索引 |
| DAIMS 之可访问性 | 强,但有区域门 | 许可明确、免注册、目录可浏览;部分区域页面被拦 |
| DAIMS 之可互操作 | 中 | CSV 与 MAT 通用,QTM 工程需专有软件 |
| DAIMS 之可复用 | 中偏强 | 说明与处理链写全,缺原始中频与派生关节角 |
| DAIMS 之溯源 | 强 | 每份文件可与标注表主键对上,逐采集换算系数留存 |
| DAIMS 之质量声明 | 强 | 技术验证段给出同步误差的跨人与内人两档统计 |
| DAIMS 之使用限制 | 强 | 局限逐条列出,缺失、偏倚、不可比点均写明 |
| 数据文档完备度 | 强 | 目录、命名、字段、判定规则、示例代码齐备 |
这张 DAIMS 视角的表说明了它的实际形态:文档与溯源做得比多数公开数据都细,短板只出现在「原始信号不给」与「专有格式回看层」两处。对复用者而言,这意味着接入成本低、改动空间小——你能很快跑通,但只能沿着官方画好的那条路跑。
7.2 同步能做到多准
官方给出的验证数字是这样的:全部受试者之间,平均帧间隔即每帧秒数的标准差为零点零零零五九秒,折算成频率约零点四三赫兹;同一受试者内部,该标准差的中位数只有零点零零零一一秒,约零点零八赫兹;所有试次都落在均值的三倍标准差之内。
换算成事件定位的误差更直观。以案例采集的零点零三六五秒每帧为例,若首尾对齐的残余误差是零点零一秒,落在一次二十秒的采集里,中间任意一帧的时间误差按线性插值估计在零点零零五秒量级,远小于雷达一帧的时长。这意味着一件事:雷达的时间轴不会成为事件检测的瓶颈,瓶颈只会在信号本身。
这套做法的代价是不能事后补救。硬件触发的好处是即使一路数据损坏,时间戳仍在;执行器做法要求首尾信号同时在两路可见,若某次采集的反射板被遮挡,这一次就无法定标。官方没有给补救方案,实际使用中应把「两端事件是否都检出」当作可用性过滤。
7.3 已知的、可枚举的偏差
| 偏差 | 具体表现 | 影响 | 是否可补救 |
|---|---|---|---|
| 采集缺失 | 12_MNTRL_V2 因采集错误不在库内 | 该受试者的左腿短时程少一次,按目录遍历会撞空 | 否,只能按标注表为准 |
| 长时程只做年长组 | 青年组无二十秒窗口 | 跨年龄的长时程比较被设计封死 | 否,只能做组内 |
| 优势侧未记录 | 全部受试者无优势腿标注 | 以优势侧为自变量的分析无法开展 | 否 |
| 尝试数不均 | 同一受试者不同采集的 an 上限不同 |
以尝试为单位做统计会对平衡差的人加权 | 是,按采集或按时间加权 |
| 功能筛选 | 年长组需能独立单腿站立 | 年长组偏乐观,不代表跌倒高风险人群 | 否 |
| 雷达帧率漂移 | 逐采集的每帧秒数不同 | 用全局常数换算会累积到十分之一秒 | 是,用行内值 |
| 部分行的结束时刻是执行器 | 见 §4.3 的案例同族行 | 把该帧当真实落脚会低估站立时长 | 是,比对 t_end 与采集末端 |
| 处理末端不可复算 | 无原始中频 | 改加窗、改裁剪、做角度估计都不可行 | 否 |
7.4 外部验证矩阵
「外部」在这里指本数据集之外的证据来源,用来判断它的结论能在多大范围成立。
| 证据类型 | 来源 | 支持什么 | 不支持什么 |
|---|---|---|---|
| 同期发表的判别实验 | Gait & Posture 的方法学论文 | 雷达可判抬脚与落脚,准确率在九成上下 | 不支持在患者群体上复现 |
| 与力台的相关 | 同论文,压力中心椭圆面积与站立时长 | 力台通路本身有效,可作为参照 | 不等于雷达通路同样有效 |
| 与动捕的相关 | 同论文,躯干俯仰周期四分位距 | 动捕通路有效 | 不支持雷达替代动捕 |
| 队列间的效应量 | 同论文,短时程三组对比 | 雷达特征有区分度 | 区分的是预设队列,不是结局 |
| 库内同类 | kinecal 等平衡数据 | 平衡评估可跨设备迁移 | 不支持精确数值的直接对比 |
| 常识性生物力学 | 单腿站立时长的年龄效应 | 年长组普遍更短 | 不支持个体层面的预测 |
这张表的读法很简单:所有支持性证据都来自同一个课题组、同一批数据。这不算缺陷,但意味着独立复现的证据目前为零。在独立复现出现之前,任何引用其准确率的做法都应当注明这一点。
7.5 它为何能持续:一组不可再生的同步记录
这类数据之所以有长期价值,不在于它能否被超越,而在于它的成本结构。要在一次采集里同时挂上十二台红外相机、两块测力板、一台雷达,并且让三者在毫秒级上对齐,需要一间专门的实验室、一套标定流程与一位愿意做二十秒单腿站立的老人。这三件事凑齐一次的边际成本很高,而一旦采集完成,数据本身不会随时间贬值。
与之相对,人群规模的扩大是容易的,只要有钱有时间就能再做三十二人。所以后来者更可能补人群,而不是重做同步。这决定了它的引用形态:它会被当作「参照」引用,而不是当作「基线」引用。参照的价值在看别人怎么用它来标定自己的传感器,而不在排行榜上的名次。
§8 生态位与历史
8.1 从秒表到雷达的这条线
单腿站立测试进入临床的时间很早,判据一直是时长:站不到五秒提示风险升高,十秒以上提示控制尚可。这个判据便宜、可重复,缺点是只留一个标量,把「怎么站住的」丢掉了。
后来的改进走了两条线。一条把时长换成过程量:测力板记压力中心轨迹,算椭圆面积、路径长度、摆动速度。另一条把设备搬出实验室:从测力板到 Kinect,再到可穿戴与完全非接触。两条线各自成熟却很少交汇——过程量依赖昂贵设备,非接触方案往往只给粗判据。
这份数据正处在交汇点上。它用实验室设备把过程量记全,同时接入非接触那一路,并用前两路给它定标。概括其位置:它没有提出新指标,而是为「非接触能否测出老指标背后的过程」提供第一份可检验的档案。
8.2 雷达测人的技术路线
用雷达看人的生理与行为,最早成熟的是呼吸与心跳:几十厘米的胸壁起伏在相位上清晰可辨。随后是步态识别:行走时四肢的周期性运动会产生特征性的微多普勒谱,可用于身份识别与步态分类。再往后才是静态姿势的摇摆分析:因为摇摆的幅度小、速度低,对雷达的距离与速度分辨率提出了更高要求,也需要更长的观测窗。
这条路线的难点从来不在硬件,而在「解释」。呼吸可以拿胸带对照,步态可以拿视频对照,摇摆拿什么对照?答案只能是力台与动捕。这份数据的贡献,就是把这三样放进同一间屋。
8.3 为什么选二十四吉赫而不是六十或七十七
二十四吉赫是工业与科研常用的频段,带宽两百兆在这一段上容易获得,硬件成熟、成本低、功耗低。六十吉赫与七十七吉赫的带宽更大,距离分辨率更高,但器件成本与法规限制也更严。在「看一个五米外的人整体在晃」这个任务上,二十四吉赫的分辨率已经够用,因为任务本身不需要分辨关节。
这个选择也留下了后续的空间。若要把雷达做得更细,比如分辨抬起的是哪条腿、脚落在哪个高度,就得往更高频段走,或者保留多通道的相位差做角度估计。而后者恰恰是这份数据无法支持的,因为它已经做了相干求和。
8.4 与库内其它同步数据的横向位置
把库内几份同步数据按「同步手段」排一排,能看到一条清晰的技术谱系。
| 数据集 | 同步手段 | 同步粒度 | 覆盖模态 |
|---|---|---|---|
| 本篇 | 线性执行器加反光板,首尾双信号 | 逐帧,逐采集换算 | 光学动捕、双力台、雷达 |
| multi-gait-posture | 硬件触发下降沿 | 逐帧 | 惯性、深度 |
| acl-jumplanding-mocap | 同一采集系统内时钟 | 逐采样点 | 光学动捕、双力台 |
| kinecal | 单设备内部,无跨系统问题 | 逐帧 | 深度与骨架 |
| gaitdb | 单设备内部 | 逐采样点 | 鞋垫 |
本篇的位置很特殊:它是库里唯一需要在「两个物理上无法连线的系统之间」建立同步的一份。抓地式触发要求雷达与动捕共用一根线,在这套设备上做不到;执行器方案是在这种约束下的替代解,代价是每次采集都要多花几秒做校准动作。
§9 使用指引
9.1 三种角色的路径
| 角色 | 关心什么 | 最短路径 | 常见弯路 |
|---|---|---|---|
| 雷达信号处理研究者 | 距离多普勒图的质量与对齐 | 先取标注表与一份 .mat,验证帧换算,再切四段 | 直接对全库做特征工程,浪费在对齐误差上 |
| 生物力学研究者 | 摇摆的定量描述 | 先取动捕与力台,用十九个点的几何算膝角与躯干角 | 拿雷达图当关节数据用 |
| 产品与算法工程师 | 这套方案能不能落地 | 先读方法论文的准确率与相关,再看边界 | 忽略人群筛选,把结论外推到居家老人 |
9.2 一条最短的可用流程
#-- 四步:读标注 → 定区间 → 切帧 → 对齐输出
import pandas as pd
from scipy.io import loadmat
import numpy as np
att = pd.read_csv("OLST_Attempts.csv")
one = att[att["OLST_attempt_id"] == "01_MNTRL_RR_V1_an1"].iloc[0]
spf = float(one["Seconds_per_Frame"])
rdm = loadmat("Processed/Radar_RDMs/01/01_MNTRL_RR_V1.mat")
key = [k for k in rdm if not k.startswith("__")][0]
cube = rdm[key]
def seg(a, b):
#-- 把动捕秒数换成雷达帧区间,左闭右开
return int(np.floor(a / spf)), int(np.ceil(b / spf))
lift, stable = seg(one["t_foot_up"], one["t_stable"])
start, brk = seg(one["t_stable"], one["t_break"])
down, end = seg(one["t_break"], one["t_end"])
print("抬脚段", lift, stable, "稳定段", start, brk, "收势段", down, end)
print("稳定段帧数", brk - start, "约合秒数", (brk - start) * spf)
#-- 稳定段取零速邻域的能量,作为最朴素的一个摇摆读数
mid = cube.shape[2] // 2
wob = np.abs(cube[start:brk, :, mid - 2:mid + 3]).mean(axis=(1, 2))
print("稳定段能量序列长度", wob.shape[0])
这段代码的意义不在于特征有多好,而在于它把「事件标注 → 帧区间 → 物理量」这条链走通了一遍。走通之后,换特征、换切段、换指标都只是替换最后几行的事。
9.3 引用方式
使用这份数据时,官方要求引用数据集本身,并建议同时引用配套论文。数据集引用格式为作者序列在前、年份在后、版本号括注、PhysioNet 为发布平台、附 DOI 与 RRID。若在论文中报告了基于它的方法结果,还应当引用 Scientific Data 的数据描述论文,以说明数据来源与处理口径。
许可为 CC BY 4.0,允许复制、分发、改编与商用,条件是署名、给出许可链接、标明是否修改。需要注意的是,配套论文本身采用另一套更严格的许可,引用论文里的图表时不能按 CC BY 4.0 处理。
§10 AI 使用声明
本页遵循千方医数集的 AI 使用披露规范,逐项说明如下。
| 项目 | 说明 |
|---|---|
| 写作方式 | 由 AI 助手依据官方项目页、官方文件目录、数据描述论文与配套方法论文撰写初稿 |
| 事实来源 | PhysioNet 项目页与文件目录、Scientific Data 数据描述、Gait & Posture 方法学论文摘要与正文 |
| 未做之事 | 未下载全量数据,未复算任何统计量,未重跑官方处理链 |
| 数字口径 | 规模、结构、边界三类数字取自官方;凡官方未写者一律标注为未核实 |
| 人群描述 | 仅转述纳排条件,未对健康状态做任何推断 |
| 临床定位 | 不构成任何诊断或筛查建议 |
| 引用建议 | 引用本页时请同时核对原始来源,日期以官方页面为准 |
| 更新机制 | 官方发布新版本时本页应随之修订,DOI 与文件数需重新核对 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 这是惯性动捕数据 | 是 Qualisys 光学系统,十二台红外相机,十八个反光点 | 数据描述与论文仪表段 |
| 雷达给了原始回波 | 只给处理后的距离多普勒图,原始中频未发布 | 数据记录表与实际文件后缀 |
| 三十二人里有跌倒者 | 全部为健康成人,队列按年龄分,无跌倒史 | 纳排条件与人口学表 |
| 每人都有长时程数据 | 二十秒长时程只做了年长组 | 局限说明第三条与目录实况 |
| 帧号乘标称帧率倒数就是秒 | 必须用逐采集的每帧秒数,标称帧率只是近似 | 标注表第七列与案例行 |
| 可以把雷达图喂给图像网络 | 距离轴与速度轴有物理标定,不是像素 | 处理链六步与裁剪范围 |
| 有优势腿标注 | 未采集,官方明确列为局限 | 局限说明第三条 |
| 事件标签可以直接当结局标签 | 事件是过程内时刻,结局是跌倒与否,两者不同层 | 字段说明与队列设计 |
| 库内没有相似资源 | 有 kinecal 等平衡类、acl-jumplanding-mocap 等动捕力台类,但无雷达 | §6.1 对照表 |
| 一次采集等于一次尝试 | 一次采集含多个四秒窗口,窗口内可含多次尝试 | 运动代码表与 an 列 |
FAQ
Q1:它到底是不是我想的那种「动捕加测力板加雷达」?
是,但三者的权重不对等。动捕与测力板是稠密参照,雷达是低频观测,且雷达只发布处理后的二维图。
Q2:多少人、多少动作?
三十二名健康成人,两个年龄段;只有一个动作,树式单腿站立,分左右支撑腿与长短两种窗口。
Q3:雷达的精度边界在哪?
距离分辨率在零点七五米量级,速度分辨率在零点二米每秒量级,而站立摇摆的速度通常低于后者。它能看见「在晃」,看不见「怎么晃」。
Q4:四秒与二十秒为什么不能比?
二十秒窗口只做了年长组。跨年龄比较长时程时,对比的是「有长时程」与「没有长时程」,不是两个人群。
Q5:能不能用它训练跌倒预测模型?
不能直接训练结局预测。它提供过程量与中间指标,结局标签要另找队列。
Q6:缺失值怎么处理?
按官方三条判据分别处理:稳定开始缺失表示从未稳定,稳定结束缺失表示一直稳到结束,结束时刻等于执行器时刻表示该行标的是最后可用帧。
Q7:为什么要人工核验事件?
自动检出的阈值法在边界情形上会错,比如脚的轻微抬离与真正的抬脚在力信号上难以区分,配合同步视频逐条核对才能把这类情形分开。
Q8:雷达文件有多大,全库多大?
单份雷达文件约十四兆字节,一份采集一千帧;全库按目录计约三百余份雷达文件,加上动捕与测力板 CSV 与 QTM 工程,体量在数吉字节。
Q9:这个和 kinecal 应该怎么选?
要低成本、多动作、多人,选 kinecal;要高精度参照、要非接触通道、要事件级对齐,选本篇。两者不互为替代。
Q10:许可能不能商用?
可以,CC BY 4.0 允许商用,条件是署名并说明是否修改;但配套论文的图表另受更严格许可约束。
Q11:为什么访问时提示地区受限?
这是访问端的区域策略,不是许可条款。许可写明任何人只要遵守条款即可访问,可换网络环境重试。
Q12:有没有官方脚本?
有一个演示 notebook,覆盖加载、可视化与事件对齐;官方称同时提供了 Python 与 MATLAB 的基础工具,实际发布目录里以 notebook 为主。
术语表
| 术语 | 含义 |
|---|---|
| OLST | One-Legged Stand Test,单腿站立测试 |
| FMCW | 调频连续波,发射信号的频率随时间线性变化,靠拍频测距 |
| RDM | Range-Doppler Map,距离多普勒图,横轴距离纵轴速度的二维能量图 |
| 拍频 | 发射与接收信号的频率差,与目标距离成正比 |
| 快时间 | 一个扫频周期内的时间轴,对应距离维 |
| 慢时间 | 跨扫频周期的时间轴,对应速度维 |
| 相干求和 | 多通道按相位对齐后相加,提信噪比但丢角度 |
| Blackman-Harris 窗 | 一种低旁瓣窗函数,压旁瓣但展宽主瓣 |
| 转义 | 本次指踝与髋之间的调节,非跳跃动作 |
| 压力中心 | 地反力合力的作用点,常用 COP 表示 |
| 摆速度 | 压力中心在单位时间内的移动距离 |
| 膝屈伸角 | 由髋、膝、踝三点构成的平面角 |
| 躯干俯仰 | 躯干中轴与竖直方向的夹角 |
| 每帧秒数 | 一次采集中雷达单帧对应的秒数,逐采集不同 |
| 线性执行器 | 用于同步的往复装置,装反射板与反光点 |
| 队列 | 本研究按年龄预划的两组,非结局分组 |
| 运动代码 | MNTRL、MNTRR、TRLGL、TRLGR,编码时程与支撑侧 |
| 模态代码 | MC 动捕、FP 测力板、RR 雷达 |
| 尝试窗口 | 音频与视觉提示划定的一段时间,可含多次尝试 |
| 稳定期 | 稳定开始到稳定结束之间,膝角导数接近零 |
| 去标识 | 按 HIPAA Safe Harbor 移除十八类标识符 |
| COUHES | MIT 的人体实验伦理委员会 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 受试者数 | 32 | 项目页与论文摘要 | 官方 |
| 年轻组人数与年龄 | 15 人,18 至 32 岁 | 论文人群段 | 官方 |
| 年长组人数与年龄 | 17 人,64 岁以上 | 项目页与论文摘要 | 官方 |
| 尝试数 | 1241 | 项目页与标注表行数 | 官方 |
| 动捕相机数 | 12 | 论文字仪表段 | 官方 |
| 反光点数 | 18 | 论文表二 | 官方 |
| 动捕采样率 | 100 Hz | 项目页 | 官方 |
| 测力板数 | 2 | 论文字仪表段 | 官方 |
| 测力板采样率 | 1200 Hz | 项目页 | 官方 |
| 雷达频段与带宽 | 24.1 至 24.3 GHz,200 MHz | 论文雷达段 | 官方 |
| 雷达天线 | 一发四收 | 论文雷达段 | 官方 |
| 雷达帧率 | 约 27.6 Hz | 项目页与论文 | 官方 |
| 雷达放置 | 高一米,前方五米 | 论文雷达段 | 官方 |
| 单次雷达帧数 | 1000 帧,约三十七秒 | 论文与项目页 | 官方 |
| 短时程窗口 | 四秒,每采集三个 | 论文表四 | 官方 |
| 长时程窗口 | 二十秒,每采集一个 | 论文表四 | 官方 |
| 事件种类 | 4 个 | 项目页 | 官方 |
| 标注表列数 | 17 | 标注表表头 | 官方 |
| 缺失采集 | 12_MNTRL_V2 | 说明文件 | 官方 |
| 同步测度标准差 | 约 0.00059 秒跨人,约 0.00011 秒内人 | 论文技术验证段 | 官方 |
| 雷达文件平均体积 | 约十四兆字节 | 目录实况 | 页面实况 |
| 许可 | CC BY 4.0 | 项目页 | 官方 |
| 伦理批号 | #1911000055 | 说明文件与论文 | 官方 |
| 版本日期 | 2026-01-25 | 项目页 | 官方 |
附录 B:数字的来源分层
第一层,官方撰写页。 包括受试者数、队列年龄、尝试数、三类采样率、雷达参数、雷达放置几何、四事件定义、缺失采集、许可与伦理批号。这些数字在项目页、说明文件与论文中相互一致。
第二层,目录与文件实况。 包括雷达文件体积、目录层级、受试者编号跳号、xxx 后缀的存在、标注表的列名与缺失形态。这些是页面与文件本身呈现的,不需要下载全量。
第三层,未核实。 包括标注表各字段的空值比例、an 的完整分布、每份雷达文件内含帧数是否严格等于一千、以及处理链在个别采集上是否做过手工调整。这些需要全量下载才能回答,本篇不做统计,也不做推断。
口径说明。 论文中「约三百三十五个」是各模态的标称文件数;目录实况中雷达 .mat 的文件数与受试者编号的范围不完全对应。存在两个口径:官方数据记录表给出约三百三十五,目录中实际可见的雷达文件数量与之接近但不逐一相等,差额构成官方未说明。使用时以标注表中的采集编号为准,不要按目录遍历。
附录 C:完整参考文献
- Copeland D, Linton E, Zhang X, Lugaro H, Mori B, Anthony B. Multimodal Synchronized Motion Capture, Force Plate, and Radar Dataset of the One-Legged Stand Test for Fall-Risk Assessment. PhysioNet, version 1.0, 2026. DOI: 10.13026/46hn-6b25.
- Copeland D, Zhang X, Linton E, Mori B, Lugaro H, Anthony BW. One-Legged Stand Test: Synchronized Motion Capture, Force Plate, and Radar Dataset for Fall-Risk. Scientific Data, 2026, 13(1):518. DOI: 10.1038/s41597-026-06831-1.
- Copeland D, Zhang X, Linton E, Mori B, Namburi P, Anthony BW. Non-contact radar assessment of One-Legged Stand Test for fall risk in aging. Gait & Posture, 2026, 126:110108. DOI: 10.1016/j.gaitpost.2026.110108.
- PhysioNet 项目页:https://physionet.org/content/olst-mocap-forceplate-radar/1.0/
- 项目文件目录:https://physionet.org/files/olst-mocap-forceplate-radar/1.0/
- 说明文件 README.txt 与方法段:同上根目录。
附录 D:任务代码
| 代码 | 全称 | 支撑腿 | 窗口时长 | 每采集窗口数 | 队列 |
|---|---|---|---|---|---|
| MNTRL | Mountain-to-Tree Short, Left | 左 | 4 秒 | 3 | 两组 |
| MNTRR | Mountain-to-Tree Short, Right | 右 | 4 秒 | 3 | 两组 |
| TRLGL | Mountain-to-Tree Long, Left | 左 | 20 秒 | 1 | 仅年长组 |
| TRLGR | Mountain-to-Tree Long, Right | 右 | 20 秒 | 1 | 仅年长组 |
三个模态代码的对应关系同样需要记住:MC 是动捕,FP 是测力板,RR 是雷达。文件名四段式的前两段决定是哪一次采集,第三段决定读哪种文件,第四段决定是第几次重复。
附录 E:如果只记五件事
- 它是 MIT 的单腿站立多模态数据,三十二人,一千二百余次尝试,不是跌倒队列。
- 动捕是光学式:十二台相机、十八个反光点、一百赫兹;测力板两块、一千二百赫兹。
- 雷达是二十四吉赫调频连续波,一发四收,发布的是距离多普勒图,不是原始回波。
- 三路靠线性执行器的首尾信号对齐,每帧秒数逐采集给出,必须用它而非常数换算。
- 它的独占价值是给雷达提供逐帧的解剖学与力学参照;代价是人群窄、无结局、无原始信号。
编辑说明
本页事实核验日期为 2026 年 10 月 28 日,核验方式为逐个访问官方项目页、官方文件目录与两份配套论文的公开文本,未下载数据主体,未重跑处理链。凡涉及分布、空值率与逐字段统计的内容均未纳入,原因是这类数字需全量下载才能得到,且对选型决策没有增量。页内引用的相关性与准确率来自配套论文的公开摘要与正文,同一课题组、同一批数据,独立复现证据目前为零,引用时应注明。若官方发布新版本,DOI、文件数与目录结构需重新核对。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- body-sway-music-vr — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 多模态
- hand-kinematics-semg — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 多模态
- grabmyo-flow — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 多模态
- openbiomechanics — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 多模态
- live-gaitneurokids — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 多模态
- multimodal-gait-dataset — 共享标签:生理信号 / 步态与运动 / 可穿戴传感 / 多模态
- wesad — 共享标签:生理信号 / 可穿戴传感 / 多模态
- ppg-dalia — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- culm — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
- nesfdb — 共享标签:生理信号 / 步态与运动 / 可穿戴传感
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

