Skip to content

JoinNico/Hovercraft_Control_System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于 RISC-V 气垫船控制系统:嵌入式系统实践

GitHub Stars License: GPL v3 MCU: CH32V307 RTOS: FreeRTOS

第十九届全国大学生智能汽车竞赛参赛作品 | 一个完整的高性能实时控制系统实现

DEMO

气垫船运行效果演示

✨亮点速览:这是我和我的团队构建的气垫船控制系统,采用沁恒微电子公司的 CH32V307 + FreeRTOS,实现了气垫船的全向精准控制。不仅“能动”,还有不错的 速度、角度控制精度。下面,我将带你深入这个硬核而优雅的嵌入式系统世界。

为什么这个项目值得制作、被开源?

技术栈的完整实践

  • 前沿架构:基于RISC-V生态的CH32V307,探索国产芯片+开源指令集的可能性
  • 实时系统FreeRTOS多任务调度,可以实时性地完成任务控制
  • 算法深度:从电机无感驱动到运动串级PID控制的全链路实现(这里要感谢逐飞科技的大力开源)
  • 工程完备:硬件设计→固件开发→算法调试→系统集成的完整闭环

从理论到实战的跨越

这不是一个简单的“点灯Demo”,而是一个实际参加了竞赛、解决了真实工程挑战的项目。我和我的团队一起面对并攻克了:

  • 实时性保障(点击链接查看debug日志):在144MHz的RISC-V核心上优化FreeRTOS任务调度
  • 控制精度:在无传感器条件下实现稳定的电机驱动和姿态控制
  • 系统集成:将传感器、执行器、人机交互有机整合为可靠系统

项目结构

Hovercraft_Control_System/
├── README.md
├── Tools/          # 测试工具和辅助软件
├── Document/       # 技术文档和芯片手册
├── Firmware/       # 嵌入式固件和驱动程序
└── Hardware/       # 电路原理图和PCB设计

技术架构深度解析

智能控制核心

系统架构概览

系统软件架构图

本系统采用一套分层化、模块化的软件架构,自顶向下划分为业务逻辑层、功能中间件层、硬件驱动层以及片上外设驱动层,层间通过标准化 API 接口实现解耦,确保系统的高内聚低耦合特性。

业务逻辑层,我们构建了基于视觉的图像识别模块与实时元素决策模块,前者通过摄像头采集环境信息并识别关键航路点与障碍物,后者则依据识别结果、IMU姿态数据以及预设航迹规划,通过串并级 PID 算法生成精确的电机控制指令。同时,该层集成了用户交互(UI菜单)与数据传输(蓝牙)功能,实现了控制指令下发与船体状态信息的双向通信。

功能中间件层,我们整合了包括 OTSU 图像二值化、数字滤波器、PID控制器以及VOFA+上位机调试协议在内的核心算法库与工具集,为上层业务提供高效的计算与通信支持。

硬件驱动层,逐飞科技对电机、OLED显示屏、摄像头、IMU 等外设进行了统一的 抽象与封装,提供了稳定可靠的设备操作接口。

片上外设驱动层,沁恒微电子对 CH32V307 的片上外设驱动做了详细的封装,提供了标准化的外设库函数,涵盖 UART、GPIO、DMA、PWM、ADC、Timer 等核心模块。

关键技术实现

  1. 无刷电机无感驱动(由逐飞科技提供)

    • 基于反电动势过零检测的方波驱动算法
    • 启动策略优化:三段式启动(预定位→加速→闭环)
  2. 串并级PID运动控制

串并级 PID 框图

   // 简化的控制逻辑 - 伪代码

   /* 外环输入:摄像头采集的图像 -> 进行图像分析 -> 得出的误差
    * 外环输出:外环PID值
    */
   outer_loop = pid_calc(&image_pid, target_image, actual_image);
   /* 内环输入:外环输出-PID值
    * 内环输出:changePWM -> 控制电机转速
    */
   inner_loop = pid_calc(&angular_velocity_pid, outer_loop, actual_angular_velocity);

   /* 速度环输入:编码器实际采集到的速度
    * 速度环输出:basePWM -> 控制电机 基准 转速
    */
   speed_loop = pid_calc(&speed_pid, target_speed, actual_speed);

   // 基准速度 + 内环输出 -> 控制电机 PWM 变化 -> 电机转速变化
   motor_output = constrain(speed_loop + inner_loop, -MAX_PWM, MAX_PWM);
  1. FreeRTOS任务设计

我们采用硬实时中断触发 + 任务级软分频的混合架构。针对气垫船控制的特点,将系统划分为四个优先级分明的任务。

任务名称 优先级 触发方式 功能描述
Control_Task 最高 TIM6 1ms 任务通知 硬实时控制环:IMU 姿态解算、利用 PID 对 PWM 计算、电机驱动
Perception_Task 次高 摄像头场中断通知 图像处理:赛道识别、边线提取、路径决策
System_Task 次低 vTaskDelayUntil 100ms 系统监控:电池电压采集、状态更新
UI_Task 最低 vTaskDelayUntil 40ms 人机交互:LCD 刷新、编码器扫描、菜单响应

既保证 1ms 控制环的严格实时性,又兼顾图像处理、UI 响应等复杂功能的执行效率。

快速开始

1. 环境搭建

  1. 安装开发环境:MountRiver Studio (MRS)
  2. 配置工具链:RISC-V GCC 编译工具链
  3. 准备调试器:WCH-LinkE 调试编程器

2. 编译烧录

# 克隆项目
git clone https://github.com/JoinNico/Hovercraft_Control_System.git
# 导入工程到 MRS
# 配置编译选项
# 连接硬件并烧录程序

3. 基础测试

  1. MCU测试:上电后观察RGB LED状态(应显示系统状态)
  2. 屏幕按键测试:旋转EC11编码器浏览四级菜单
  3. 电机测试:在“ Motor Test ”菜单中尝试控制单个电机
  4. 传感器测试:查看显示屏上的实时传感器数据

4. 系统调试

  1. 参数整定:使用配套上位机工具调整 PID 参数
  2. 数据监控:通过串口实时监控系统运行状态
  3. 性能测试:分模块测试各功能单元性能指标


致谢

  • 全国大学生智能汽车竞赛组委会 - 提供宝贵的竞赛平台和学习机会
  • 南京沁恒微电子股份有限公司 - 提供 CH32V307 RISC-V 芯片技术支持和开发工具
  • 成都逐飞科技有限公司 - 提供完善的 CH32V307 软件库和硬件设计参考
  • DeepSeek 等 AI 大模型 - 提供随时随地的技术解答和润色那刻板印象般的文字

特别感谢

感谢所有为项目做出贡献的老师和同学们,你们的辛勤付出和智慧结晶成就了这个项目!



如果这个项目对你有启发,请给个⭐️ Star支持!
你的认可是我继续开源优质项目的最佳动力。

最后更新:2026年3月 | 持续维护中...

About

该气垫船项目基于沁恒CH32V307 RISC-V芯片与FreeRTOS实时操作系统,构建了多任务协同的嵌入式控制平台。系统采用串级PID控制算法实现精准的运动解耦,集成无感方波电机驱动与有感有刷驱动,具备软启动与过流保护功能。通过EC11编码器与ST7789显示屏实现四级菜单交互,支持参数实时调整与系统状态监控,并融合IMU20602姿态传感器与MT9V034视觉模块,实现全向稳定运动控制。作为第十九届全国大学生智能汽车竞赛作品,本项目展示了RISC-V在复杂嵌入式场景中的工程应用价值。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages