把场景姿态转换成平台运动数据
六自由度平台的接入,需要把 UE 场景中的位移、旋转转成机构能使用的数据。场景给出一个姿态,Stewart 平台却由六根杆共同支撑;单个方向的变化可能同时影响多根杆,单位、零位和约束也不能直接照搬。我参与的 六轴平台项目 实现包含运动学解算、数据处理,以及海洋场景的编辑器录制适配。
运动链路中的职责
| 环节 | 输入与输出 | 处理的事情 |
|---|---|---|
| 机构定义 | 上下平台各六个铰点 | 确定杆件连接关系与尺寸基础 |
| 逆运动学 IK | 平台姿态 → 六根杆长 | 将位置和旋转换成机构长度 |
| 正运动学 FK | 六根杆长 → 估计姿态 | 从长度反推平台位置和旋转 |
| 数据约束 | 姿态或运动数据 → 受约束数据 | 处理零位、滤波、限幅和变化速度 |
正解、逆解与单位换算
逆解先根据目标姿态变换上平台铰点,再计算它们与对应下平台铰点之间的距离,得到六根杆长。这里需要完整的铰点布局;仅有平台中心的位置,无法确定每根杆应该伸到多长。
正解则从杆长估计平台姿态。实现使用 Newton 迭代,通过解析雅可比描述姿态变化与杆长变化的关系,逐步缩小当前估计与目标长度之间的误差。正解采用数值求解,逆解采用几何计算,两者各有职责;一次长度换算也不能等同于完成了实机标定。
UE 侧使用的厘米、角度与解算侧的米、弧度需要明确转换。尺寸和姿态一旦混用单位,结果可能数值正常、比例却不正确,因此转换集中放在解算边界,便于对照机构参数检查。
滤波、限幅与限速分别解决问题
数据处理包含 EMA、中值和 Butterworth 滤波。EMA 通过前后结果加权平滑变化,中值处理局部突变,Butterworth 用于按频率特征处理信号。不同滤波方式对应不同输入特点,平滑程度也会影响动作跟随速度。
零位处理确定姿态相对哪个基准表达;限幅约束允许的姿态范围;按帧限速约束相邻输出之间的变化量。这几层约束不能互相替代:落在幅度范围内的数据,仍可能瞬间跳到另一个位置。运动处理中还包含高低通与倾斜协调,用于整理不同变化特征的运动分量。
海洋场景与虚拍录制
海洋部分使用 Oceanology 提供水体表现和力计算。我做的适配围绕可调整的环境参数、Actor 录制和序列组织,让场景内容与一次录制的时间关系能够保存在编辑器资产中。
可动画的海浪参数
海洋组件暴露时间、波长、波高、波速和波向等可插值属性。参数变化时广播通知,水体侧可以据此更新;录制期间累计 TimeCode,用来描述时间推进。环境参数因此有独立的调整入口,不必把水体算法复制到录制逻辑中。
这些属性支持已有的海浪与时间参数,并未覆盖风场。水面参数可动画,并不能说明风场模拟已经完成。
从起录到保存 Sequence
录制流程位于编辑器专用路径,使用 TakePreset、Actor 来源与 Take Recorder。它既要建立新录制结果,也要保留原场景 Sequence 与这次录制之间的时间关系:
- 起录时记录编辑器当前打开的原场景 Sequence,以及开始录制的时间。
- 配置 TakePreset 与需要录制的 Actor 来源,再启动 Take Recorder,得到新的录制结果。
- 完成录制后,在新录制结果中加入原场景 Sequence 的 SubSequence。
- 根据起录时间设置偏移,使原场景序列与录制内容对应,再保存结果。
原场景序列嵌入新录制结果,便于在同一结果中组织原有场景内容和新录下来的 Actor。这里的实现依赖编辑器数据,适合说明编辑器中的 Take 录制流程,不能直接作为打包程序通用录像能力使用。
LiveLink 的发送职责
六轴参数可以作为 LiveLink Transform 发出,为下游接入提供数据。发送接口负责组织和推送 Transform;接收设备如何解释数据、驱动平台,以及如何让画面与动作对时,都需要在接收系统中另行处理。
平台接入的实际范围
这项工作提供运动解算、信号处理、编辑器录制与 LiveLink 发送的软件实现。滤波和姿态约束不等于机构工作空间校验或硬件安全保护;实机精度、设备控制和最终运动体验仍需结合平台结构、协议与现场测试确认。
海洋适配覆盖环境参数、录制序列和发送接口。接收端、完整实机同步、风场及录制延迟补偿,不属于本案例已经接通的链路。