# 第二十四届全国机器人大赛 R1 **Repository Path**: ibst/curc ## Basic Information - **Project Name**: 第二十四届全国机器人大赛 R1 - **Description**: 世界机器人运动会 全国第四名 | 全国机器人大赛Robocon 全国第八名 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-31 - **Last Updated**: 2025-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: Robocon, 机器人, PID, RC, 控制 ## README # Fir_Car ## 项目简介 Fir_Car 是基于 STM32F4 系列微控制器开发的嵌入式控制系统,主要用于机器人或智能小车的运动控制。该项目集成了 FreeRTOS 实时操作系统,支持 CAN、UART、I2C、PWM 等多种外设通信方式,并结合 PID 控制算法实现对电机、舵机、IMU 等模块的精确控制。 主要功能模块包括: - **CAN 总线通信**:用于与电机控制器(如 GM6020、M3508)进行数据交互。 - **FreeRTOS 多任务调度**:实现多线程控制,包括速度控制、CAN 通信、IMU 数据采集等。 - **PID 控制算法**:用于电机速度和位置的闭环控制。 - **SBUS 接收机通信**:用于遥控器信号解析。 - **IMU 数据解析**:用于姿态感知和导航。 - **电机控制**:支持多种电机驱动器,如 AK7010、GM6020、M3508。 ## 项目结构 ``` Core/ ├── Inc/ // 核心头文件(如 main.h、stm32f4xx_hal_conf.h) ├── Src/ │ ├── main.c // 主程序入口 │ ├── freertos.c // FreeRTOS 任务初始化及线程函数 │ ├── can.c // CAN 总线初始化及过滤器配置 │ ├── gpio.c // GPIO 引脚配置 │ ├── i2c.c // I2C 初始化 │ ├── tim.c // 定时器配置 │ ├── usart.c // UART 初始化 │ └── stm32f4xx_it.c // 中断处理函数 ├── Drivers/ │ ├── CMSIS/ // ARM CMSIS 核心库 │ └── STM32F4xx_HAL_Driver/ // STM32 HAL 驱动库 ├── Middlewares/ │ └── Third_Party/FreeRTOS/ // FreeRTOS 实时操作系统源码 ├── USER/ │ ├── Inc/ // 用户自定义头文件(如 PID.h、RobotControl.h) │ └── Src/ // 用户功能实现代码(如 PID 控制、电机驱动、IMU 解析) ├── EWARM/ // IAR 工程文件及编译输出 └── README.txt // 项目说明文档 ``` ## 主要功能模块说明 ### 1. FreeRTOS 多任务调度 - 使用 FreeRTOS 实现多线程控制,包括: - `StartDefaultTask`:主任务 - `AK7010_Task`:电机控制任务 - `M3508_Task`:电机控制任务 - `speedtask`:速度控制任务 - `sbustask`:SBUS 信号处理任务 - `ads1115`:ADC 数据采集任务 - `Change_yaw`:偏航角控制任务 - `Change_N`:导航控制任务 - `Ak7010_reinit`:电机重新初始化任务 ### 2. CAN 总线通信 - 使用 STM32 的 CAN 控制器实现与外部电机控制器(如 GM6020、M3508)的通信。 - 支持 CAN1 和 CAN2 双通道通信。 - 包含 CAN 过滤器配置函数 `can1_filter_init` 和 `can2_filter_init`。 ### 3. PID 控制算法 - 实现增量式 PID 控制,用于电机速度和位置控制。 - 支持多个 PID 实例,适用于不同电机或传感器控制。 ### 4. 电机控制 - **GM6020**:支持 CAN 总线控制的电机驱动器,用于速度和位置控制。 - **M3508**:支持 CAN 总线控制的电机驱动器,用于底盘运动控制。 - **AK7010**:支持 CAN 总线控制的伺服电机,用于机械臂或舵机控制。 ### 5. SBUS 信号解析 - 支持 Futaba SBUS 接收机协议,用于遥控器信号输入。 - 解析通道数据并映射为控制指令。 ### 6. IMU 数据采集与解析 - 支持 CH Robotics 系列 IMU,通过 UART 接口获取姿态数据。 - 实现数据同步、CRC 校验、数据解析等功能。 ### 7. 机器人运动控制 - 实现基于运动学模型的速度分解与方向控制。 - 支持世界坐标系与自身坐标系之间的转换。 - 支持路径规划、速度限制、加速度限制等功能。 ## 编译与调试 - 使用 **IAR Embedded Workbench** 编译和调试。 - 工程文件位于 `EWARM/Fir_Car.ewp`。 - 支持 IAR 的调试器(如 J-Link)进行在线调试。 ## 依赖库 - **STM32 HAL 库**:用于 STM32 外设驱动。 - **FreeRTOS**:实时操作系统,用于任务调度。 - **CMSIS**:ARM 提供的数学和系统控制库。 ## 开发环境 - **IDE**:IAR Embedded Workbench for ARM - **MCU**:STM32F427xx - **编译器**:IAR ARM Compiler ## 使用说明 1. 打开 `EWARM/Fir_Car.ewp` 工程文件。 2. 配置 CAN、UART、I2C 等外设参数。 3. 编写或修改 `USER/Src/` 中的控制逻辑。 4. 编译并下载到目标板。 5. 使用调试器连接并运行程序。 ## 注意事项 - 确保 CAN、UART 等外设的引脚配置与硬件一致。 - FreeRTOS 的堆栈大小和优先级需根据任务需求合理配置。 - PID 参数需根据实际系统进行调优。 ## 版权信息 本项目基于 MIT 许可证开源,请参考项目根目录下的 `LICENSE` 文件。 ## 联系方式 如有问题或建议,请提交 Issue 或联系项目维护者。 --- **项目地址**:[https://gitee.com/ibst/curc](https://gitee.com/ibst/curc)