结论:2021 版 FS-AI ADS-DV 接口库把无人方程式赛车的 CAN 交互收敛成 7 个函数加两套 DBC:VCU 与 AI 之间的接口为 16 条报文、97 个信号,随车 PCAN-GPS 传感器定义为 23 条报文、67 个信号。真正的工程约束不在接收侧而在发送侧——内部定时器把帧重发周期限制在不小于约 8 ms,推荐每 10 ms 调用一次发送函数,调用过慢会触发整车 ECU 的 CAN 超时诊断。
7 个函数构成的调用契约
库对外只暴露 7 个函数以及配套的数据结构与枚举,方向划分得很干净:初始化一个、VCU 到 AI 一个、AI 到 VCU 一个、IMU 与 GPS 各一个、CAN 统计读写两个。
| 函数 | 方向 | 调用约束 |
|---|---|---|
fs-ai_api_init(接口名, debug, simulate) |
初始化 | debug 非 0 时向 stdout 输出调试信息,否则静默;simulate 非 0 时载入仿真值 |
fs_ai_api_vcu2ai_get_data() |
VCU → AI | 异步接收,每帧到达即缓冲,取到的总是最新值 |
fs_ai_api_ai2vcu_set_data() |
AI → VCU | 须足够频繁以免触发 ECU 的 CAN 超时诊断;内部定时器限制重发周期不小于约 8 ms,每 10 ms 调用最优 |
fs_ai_api_imu_get_data() |
PCAN-GPS → AI | 异步接收,逐帧缓冲 |
fs_ai_api_gps_get_data() |
PCAN-GPS → AI | 异步接收,逐帧缓冲 |
fs_ai_api_get_can_stats() |
库内部 | 用于调试 CAN 接收状况 |
fs_ai_api_clear_can_stats() |
库内部 | 清空统计结构 |
这里有一个容易被误用的点:simulate 参数载入的仿真数据并不代表车辆运行行为,它只是每次调用 fs_ai_api_vcu2ai_get_data() 时变化一次。它适合验证链路是否连通,不能用于任何算法或控制逻辑的验证。
两套 DBC 与节点划分
节点划分可以从两套 DBC 的分工直接读出来:VCU 与 AI 之间是双向控制接口,PCAN-GPS 是单向传感器源,CAN 统计则是库内的调试支路,不占整车网络节点。
| DBC 文件 | 报文数 | 信号数 | 节点角色 |
|---|---|---|---|
ADSDV_2021_VCU_AI_interface_v2.dbc |
16 | 97 | VCU ↔ AI,双向:遥测下行、控制上行 |
PCAN-GPS for ADS-DV.dbc |
23 | 67 | PCAN-GPS → AI,单向:IMU 与 GPS 传感数据 |
值得注意的是报文数与信号量的不对称:传感器侧的报文更多(23 对 16)而信号更少(67 对 97)。这与两类接口的形态一致——VCU 接口把状态与控制量打包进少量高密度报文,GPS/IMU 则按物理量分成多条短报文。库只暴露 2021 赛季 DDT 比赛所必需的那部分接口,完整规范在 ADS-DV_Software_Interface_Specification_v4.0.pdf 中,该文件同时发布在 IMechE 网站上。
2021 相对 2019 的变化
这次发布把交付形态从二进制改成了源码,功能上也补上了新赛季新增的执行器能力。
| 维度 | 2019 | 2021 |
|---|---|---|
| 交付形态 | 静态库 libfs-ai_api_amd64.a,供静态链接 |
MIT 源码,可为任意 Linux 架构编译并按需修改 |
| 制动能力 | 未包含调制液压制动 | 更新的 CAN 接口支持调制液压制动 |
| 向后兼容 | — | 接口向后兼容 2019 车辆 |
| 示例程序 | — | Console 与 Tester 示例程序得到改进 |
| 版本状态 | — | release candidate,供车队参考实现车辆接口代码 |
对车队来说最有价值的一条是向后兼容:同一份 2021 接口代码可以跑在 2019 车辆上,这意味着制动等执行器能力的差异被吸收在接口层,而不是让每支车队各自维护分支。
构建、运行与证据边界
构建路径很直接:进入 FS-AI_API_Tester 或 FS-AI_API_Console 目录执行 make,库会按需自动构建或重建;随后以接口名为参数运行,虚拟总线用 vcan0,实车接口用 can0。仓库内的 setup.sh 给出 Linux 下配置 CAN 接口与创建 can0、vcan0 的具体命令。
证据边界需要如实标注:素材为固定快照(提交 33bcb61d2519ee1ac4935396d9bf465c6ebc81c1),两份 DBC 均按 Git blob 原样保留;PCAN-GPS 文件可能包含第三方传感器厂商的定义,其独立数据权利并未被确认,再分发前应复核该部分信号来源。仓库为 MIT 许可,许可文件与 README 一并保留。最重要的是,这些文件描述的是赛事用无人方程式车辆,不是量产道路车。
常见问题
2021 版接口相对 2019 版改了什么?
交付形态从静态库 libfs-ai_api_amd64.a 改为 MIT 源码,可为任意 Linux 架构编译并按需要修改;CAN 接口更新以支持新增的调制液压制动能力,同时保持对 2019 车辆的向后兼容;Console 与 Tester 两个示例程序也得到改进。该版本被标注为 release candidate,供车队参考实现车辆接口代码。
发送函数应该多久调用一次?
推荐每 10 ms 调用一次 fs_ai_api_ai2vcu_set_data()。调用必须足够频繁,否则会触发整车 ECU 的 CAN 超时诊断;但过于频繁又会占用总线,因此库内置定时器禁止以小于约 8 ms 的周期重发帧。每 10 ms 调用可以在两者之间取得最优平衡,数据更新会以尽可能快的速度下发到车辆。
simulate 模式的数据可以用来验证算法吗?
不能。文档明确说明仿真数据不代表车辆运行行为,它只是每次调用 fs_ai_api_vcu2ai_get_data() 时变化一次。它适用于确认链路连通与数据结构正确,任何算法或控制逻辑的验证都必须使用真实车辆数据。
这两套 DBC 能直接用到量产车上吗?
不能。它们描述的是 IMechE FS-AI ADS-DV 赛事用无人方程式车辆的 VCU 与 AI 接口以及随车 PCAN-GPS 传感器定义,不是量产道路车的网络定义。此外 PCAN-GPS 文件可能包含第三方传感器厂商定义,其数据权利未独立确认,再分发前应复核来源并保留 MIT 归属。
延伸阅读
- 方程式赛车总线档案:53 条报文与多设备 DBC 合并 —— 同类赛事车辆的 DBC 合并实践
- Waterloo 2024CAR DBC 档案:115 个报文与 890 条信号 —— 学生方程式整车网络的更大规模样本
- PACMod 线控 v3 平台档案:4.0.0 到 14.1.0 演进 —— 线控接口的向后兼容与版本演进对照
- Western Formula Racing 的 PECAN 遥测链 —— 赛车遥测链路的另一种组织方式
参考资料
- 项目 01 ——
public-can-dbc-datasets/additional/fs-ai-ads-dv-2021/README.md(7 个函数的调用契约、8 ms 节流与 10 ms 建议、构建运行方式与规范文档出处) - 项目 01 ——
public-can-dbc-datasets/additional/fs-ai-ads-dv-2021/SOURCE.md(两套 DBC 的报文与信号数、快照提交、权利与证据边界)
免责声明
本文所述内容来自公开开源仓库的说明文件与数据库文件,描述对象为赛事用无人方程式车辆,不代表任何量产道路车的网络定义,也未经实车验证。两份 DBC 均按固定快照原样保留,其中 PCAN-GPS 部分可能包含第三方传感器厂商定义,其独立数据权利并未被确认,再分发前应复核来源并保留 MIT 许可与归属。涉及车辆控制与执行器的改动请在封闭场地、专业人员监督下并遵守赛事规则进行。
更新记录
- 2026-10-14 初稿
发表回复