XELERATOR / ENGINEERING ARCHIVERECORD / STRUCTURE / FIELD
XeleratorMACHINE
ARCHIVE
← 返回机器档案台FILE 02 / 03 · XLR—TERM—202605
TERMINUS 结构档案
TERMINUS / ENGINEERING RECORD2026.05 / China Open

MACHINE FILE / XLR—TERM—202605

TERMINUS

2026.05 / China Open

Terminus 是 2026 年 5 月 China Open 使用的机器。这里将它作为独立历史机型归档,保留爆炸图、装配图,以及从感知、控制到赛场联调的工作链路。

SEASON2026.05
EVENTChina Open
GENERATION上一代机器
RECORD结构 / 装配 / 联调
查看爆炸图与装配图↓机器特点与研发报道 ↓

档案身份:TERMINUS · 2026.05 / China Open。

01 / MACHINE CHARACTERISTICS

机器特点

阅读完整研发报道 ↓

TERMINUS / DEVELOPMENT REPORT

TERMINUS:把算力、电控与底盘稳定性连成一台机器

面向 2026 年 5 月的机器,升级开始进入整机深处:分板解决空间与维修,固态击球驱动处理可靠性,避震与姿态滤波共同稳定感知,Jetson 迁移承接多路视觉。

2026.03 → 2026.05中英双语 · 整理于 2026.10.14
01

选型 / 2026.03–04:先把“装得下”变成“修得快”

2026 年 3 月 1 日至 4 月 9 日的日志,记录了对一体式下位机的重新设计。计算板占据更多空间,大电路板难以安放;高压大电流与低压信号又混在一起。团队于是把盖板下面的零散空位作为设计条件,而不是继续寻找容得下一整块板的位置。

功能划分为核心控制与惯性导航、击球驱动、盘球驱动和电源管理。模块化的意义不仅是体积更小:强电可以单独走线,局部故障可以替换子板,接口也能按功能检查。日志还记录低电压保护、电量显示与上位机供电等功能,让电源从一根电池线变成有明确职责的系统。

2026 年 4 月 10 日至 30 日的第三期日志,重点不再只是增加功能,而是处理运行中的质量问题。刚性底盘在斜坡和起伏路面上倾斜,LiDAR 扫描平面也跟着改变;部分轮子接地不足,视觉和接头还会受到振动。即使目标检测算法不变,机械姿态变化也足以改变它的输入条件。

团队因此把轻量、装配容错、有效弹簧行程和维护空间一起作为避震设计条件。日志中的十五度以内坡面是设计与测试方向,不是一张跨所有载荷和地面的认证表。与此同时,视觉模型和多任务处理暴露计算瓶颈,Jetson Orin Nano 8GB 与 NVMe 存储成为平台迁移的重要部分。

02

原型:击球电控和避震连接都经历了回退

旧击球方案使用升压电路和继电器。撞击震动可能造成误触,瞬间大电流可能让触点打火粘连,连续击球则会因储能未恢复而力度下降。日志还指出,部分二极管耐压与约 48V 的残余电压不匹配。它们是不同的故障机制,不能只用更强的电磁铁来解决。

新原型用 MOS 管替代机械触点,调整升压能力与耐压器件,并缩短高压路径。第二期日志记录,该期电控配置的充电时间从约 1 秒改善到约 150ms。后来的 Australia 海报采用约 200ms 的描述,记录的是另一版本与条件下的结果。

机械撞击位置也被讨论。让铁芯先加速再碰球,可能改变能量传递;但日志中的质量与速度推导只是简化模型。实际触球点、球的形变、机构摩擦和击球一致性仍然需要实测,数学估算不是最终射速。

六角螺柱容易采购和装配,但占用垂直空间,压缩弹簧行程,也挤占布线与加强件位置。圆形螺柱的空间利用更好,却缺少导向平面;孔位偏差和两端锁紧不同步,容易造成一端顶死、一端悬空。能够在实验室慢慢调好,并不意味着适合比赛现场快速更换。

后续对锁螺母方案利用定位和锁紧结构,在较低高度中保留活动空间,并提高孔位与装配误差的容忍度。前两轮试验使有效行程、定位和维修速度成为共同的验收条件,最后的结构由此收敛。

第二期 2026 日志:下位机模块在有限空间内重新布置。
第二期 2026 日志:下位机模块在有限空间内重新布置。
子板与运动部件的装配关系。
子板与运动部件的装配关系。
03

集成:平台迁移与电气布线共同决定运行质量

四路视觉开始由多个 Python 解释器处理,通过 UDP 向主程序提供观测。2026 第一期日志在跨 2 月至 3 月的阶段记录了 320×320、每路约 30 FPS 的特定配置测试;这一结果属于该测试环境。集中计算与多进程让视觉负载和策略执行分开,但接口、相机资源和最新观测仍需要明确归属。

盘球电机抽搐的排查则展示了另一条因果链。大电流电源线靠近编码器信号线,电流脉冲耦合成错误转速反馈,PID 再根据错误测量改变电机输出。团队通过重新布板、分离强电与弱信号,处理了反馈问题。调控制参数无法替代这项布线整改,因为软件最初收到的数据就已经失真。

击球放电也会产生干扰。把电容与弹射模块放在机器两端,会形成长的大电流回路;集中布置、缩短路径之后,邻近信号受干扰的机会减少。Ubuntu、驱动、venv 和固定启动脚本的整理,则让更换计算平台不再完全依赖个人记忆。

计算平台迁移也不是只换主板。Jetson 的模型部署依赖 JetPack 相关工具链,日志记录团队从原有习惯迁移到平台支持的 Ubuntu 环境,再将启动、依赖和权限配置重新整理。NVMe 则承接系统、模型与频繁日志读写,减少存储成为新的等待环节。

04

Fine-tune:从错误反馈、角度边界到动作顺序

控制代码发现 Y 分量变换中的符号错误,会把某些运动方向反过来。修正后,团队通过仿真与实地测试检查方向。代码计算的向量必须与轮子安装朝向、编码器极性和底盘坐标定义一致,方向验证因而成为软硬件联调的共同任务。

带球转向则不能沿用所有普通转向参数。日志记录 TurnTo_with_ball 的转向设置从 50 降至 15,并将角度误差规范到 −180 至 180 度。两个数是当时接口中的设置,不应写成通用速度单位。它们表达的是调试方向:降低转向强度,减少球因惯性和接触变化而被甩出,同时在跨越 0 / 360 度时保持正确转向。

视觉与传感器服务进一步分离,Socket / UDP 向主程序提供标准化数据。进攻和防守也加入角度处理、位置过滤与失败后的重新尝试。日志中的进攻成功率变化属于当时的测试流程,没有完整样本数与评估协议,不把它解释为正式比赛胜率。

RK4 在静止状态下出现抖动,团队先打印陀螺仪原始角速度,发现采样噪声,再在姿态计算之前加入二阶巴特沃兹低通滤波。滤波处理的是输入质量,而不是保证某一种积分算法在所有情况下优于另一种。其截止频率、采样率和延迟仍要与真实运动相匹配。

该期实现还需要历史角速度输入,导致姿态输出间隔与传感器采样节奏不一致。团队在 RK4 更新间隙使用欧拉更新提供临时姿态,以便加速度处理中及时扣除重力。这属于该期实现的调度安排:临时姿态满足当前采样节奏,完整积分则继续维护参考状态。

策略调试同时发现,一次性的区域判断和去角落动作被放进持续循环后,会反复打断追球。把准备动作放到循环外,再持续更新球的观测,才符合执行顺序。直接命令机器人中心移动到球中心也违背接触几何,需要用可达的接近位置和动作条件解释,而不是仅修改循环语法。

第三期 2026 日志的避震与整机结构原型。
第三期 2026 日志的避震与整机结构原型。
用于连接结构讨论的紧固件。
用于连接结构讨论的紧固件。
05

收敛 / 2026.05:让多摄观测能被策略可靠使用

5 月初的软件继续处理多摄位置、相机标定和俯视工具。5 月截止快照 cfe58f8 中,FieldBallPos 先读取机体坐标系中的球位置,再结合机器自身在场地上的位置与偏航角,旋转并平移成场地坐标。这里的升级对应着真实结构:四个相机朝向不同,但策略需要的是同一片场地中的目标。

装配图和爆炸图显示的是最后如何组合,研发日志保留的是为什么如此组合:高电流回路应该缩短,传感器不应被结构和线束挡住,避震不能因紧固方式失去行程,策略的接近位置必须满足机器人与球的接触几何。Terminus 的细节因此可以从硬件一路追到代码,而不是把每块新板单独当作升级。

06

归档结果 / 截至 2026.05:更容易维护,也更容易解释

第二期记录了更快的局部维修、固态击球触发和带球转向改善,形成了“观测—位置—动作”的系统联系。局部模块故障可以被单独定位和更换,维修与动作调试开始使用同一套功能划分。

日志记录了避震在坡面、起伏、转向和急停等场景中的改进,也指出特殊角度仍有轻微不稳。Jetson 与 SSD 迁移改善模型加载和多任务运行体验,但没有统一硬件、模型与测试条件的完整对比表,因此报道保留趋势,不补写准确加速倍数。

中国赛阶段的结果是整机工程收敛:分布式执行模块、较稳定的底盘与姿态输入、多摄坐标和可检查的运动接口共同工作。3 月的充电时间记录、4 月的坡面试验和 5 月的坐标实现分别保留其时间与条件;它们共同说明升级路径,不被混成一组无条件的性能规格。

SOFTWARE × HARDWARE

读懂代码,读懂升级

机体到场地:一次旋转和一次平移

# Excerpt: FieldBallPos, cfe58f8 / May 2026
th = math.radians(float(SelfZ))
c = math.cos(th)
s = math.sin(th)
dx = float(ballX) * c - float(ballY) * s
dy = float(ballX) * s + float(ballY) * c
return [SelfX + dx, SelfY + dy]

摘自 src/LunaPre.py 的正常观测分支;前面的无球与特殊状态处理已省略。ballX / ballY 是球相对机器的地面坐标,SelfZ 是偏航角,SelfX / SelfY 是机器在场地的位置。旋转统一朝向,平移统一原点。机械安装改变导致标定偏差时,数学公式仍然能运行,但结果会带着同样的偏差。

代码解释:一个符号和一个取模为什么重要

from math import radians, sin, cos
yaw = radians(yaw_deg)
wheel_y = -speed_x * sin(yaw) + speed_y * cos(yaw)
angle_error = (target_deg - yaw_deg + 180) % 360 - 180

前一行依据日志中的修正公式,后一行是最短有符号角差的说明示例。三角函数使用弧度,角差使用度;控制器若采用相反误差定义,还需要相应改变输出符号。示例解释坐标关系,不直接给电机发指令,也不替代具体底盘的接线与方向验证。

代码解释:滤波、积分和发布节奏各解决什么

# Logged scheduling concept, not a claim about all RK4 code
rate = low_pass(raw_gyro_rate)
if enough_history_for_this_implementation:
    reference_attitude = rk4_update(reference_attitude, rate)
    output_attitude = reference_attitude
else:
    output_attitude = euler_preview(reference_attitude, rate)

伪代码区分了原始信号预处理、参考姿态更新和临时输出。过滤噪声与提高发布频率是两个不同问题;临时姿态不覆盖参考状态,才符合日志描述的思路。实际误差与延迟需要在具体采样频率、滤波参数和运动输入下测量。

原始资料与版本

正文依据原始日志、技术海报和注明版本的代码整理。代码框已区分数学示意、架构图与源码摘录;阶段测试数字随其来源保留。

返回机器档案台 ↗

TERMINUS / STRUCTURE ARCHIVE

爆炸图与装配图。

Terminus 爆炸图
01 / EXPLODED VIEW
Terminus 装配图
02 / ASSEMBLY VIEW
← 返回机器档案台下一份档案 / VALKYIRE ↗