- 版本: 0.1.4
- 作者: tangyong@stmail.ujs.edu.cn , 目前就读于江苏大学农机控制理论与工程博士
- 日期: 2025/09/28
hybrid_autonomous_tractor_vcu 是一个为油电混合动力自主作业拖拉机设计的整车控制器(Vehicle Control Unit, VCU)软件项目。本项目旨在提供一个符合工业级标准的、模块化的、可扩展的软件平台,用于实现自主作业(无人)拖拉机的自主精准作业决策和高效的能量管理。
该软件架构采用分层设计,涵盖了从底层硬件驱动、实时操作系统(RTOS)抽象,到上层感知、预测、决策和控制的全栈功能。其核心目标是实现拖拉机在复杂多变的农业环境中安全、可靠、高效地完成各项预定任务,如犁地、播种、施肥、喷药等。
-
模块化与分层架构: 软件被清晰地划分为硬件抽象层、感知层、预测层、控制层、执行层和诊断层。各层之间通过明确定义的接口进行通信,实现了高度的内聚和低耦合,便于独立开发、测试和维护。
-
工业级可靠性与安全性: 系统内置了全面的健康监控、故障诊断和安全冗余机制。从指令验证、安全监控到紧急停机处理,确保在任何情况下车辆和人员的安全。
-
预测性控制: 利用先进的预测算法(如负载预测、能量消耗预测),系统能够“预见”未来的工作状态,并提前做出最优控制决策,从而显著提升燃油效率和作业性能。
-
混合动力能量管理: 专为油电混合动力系统设计了先进的能量管理策略。通过智能扭矩分配(Torque Split)算法,在发动机和电机之间实现最佳的功率分配,最大化燃油经济性并减少排放。
-
标准化协议支持: 内置对
J1939和ISOBUS (ISO 11783)等行业标准协议的支持,确保与主流的发动机、传动系统和农具的互操作性。 -
配置驱动开发: 系统的关键参数,如车辆物理参数、控制增益、传感器标定数据和故障规则,全部通过外部
YAML配置文件进行管理,实现了“配置即代码”,极大提升了软件的灵活性和可移植性。 -
可扩展的农具控制: 设计了统一的农具控制接口 (
IImplementController),新增农具类型(如新型播种机、施肥机)只需实现该接口并提供相应的配置文件,即可无缝集成到系统中,实现了真正的“即插即用”。
- 平台层 (Platform Layer): 包含实时操作系统(或其抽象)和硬件抽象层(HAL),负责提供定时、中断、内存管理等基础服务,并封装对CAN控制器、GPIO、ADC等硬件的直接访问。
- 服务层 (Service Layer): 提供跨应用的核心服务,包括通信管理(CAN/ISOBUS协议栈)、配置加载、诊断和健康监控等。
- 应用层 (Application Layer): 实现车辆自主作业的核心业务逻辑,包括:
- 感知 (Perception): 融合多传感器数据,理解车辆自身状态和外部环境。
- 预测 (Prediction): 基于当前状态和历史数据,预测未来的负载、路径和能量需求。
- 控制 (Control): 根据预测结果和目标任务,做出最优的控制决策,如扭矩分配、转向角度、农具作业速率等。
- 执行 (Execution): 将控制指令安全地发送给硬件执行器,并监控其执行状态。
- C++17 编译器 (GCC/Clang)
- CMake (版本 >= 3.12)
- Eigen3, YAML-CPP, Google Test 等依赖库
# 克隆仓库
git clone https://github.com/qwagrox/hybrid_autonomous_tractor_vcu.git
cd hybrid_autonomous_tractor_vcu
# 运行构建脚本
./scripts/build.sh构建脚本会自动创建 build 目录,并编译生成主程序 vcu_main 和单元测试程序。
cd build/
./bin/unit_tests查看 Infineon + NuttX RTOS + POSIX移植
├── config/ # 所有YAML配置文件
├── docs/ # 项目设计与开发文档
├── include/ # 所有模块的头文件 (.hpp)
├── models/ # 机器学习模型文件 (.onnx, .tflite)
├── scripts/ # 辅助脚本 (构建, 部署, 分析等)
├── simulation/ # 仿真子系统(软件在环SIL)
├── simulation_hil/ # 仿真子系统(硬件在环HIL)
├── src/ # 所有模块的源文件 (.cpp)
└── tests/ # 单元测试、集成测试和系统测试
我们欢迎任何形式的贡献!如果您希望为本项目做出贡献,请遵循以下步骤:
- Fork 本仓库。
- 创建一个新的功能分支 (
git checkout -b feature/YourFeature)。 - 提交您的代码 (
git commit -m 'Add some feature')。 - 将您的分支推送到远程仓库 (
git push origin feature/YourFeature)。 - 创建一个新的 Pull Request。
在提交代码前,请确保您的代码遵循项目现有的编码规范,并通过了所有测试。
本项目采用 MIT License 开源许可证。

