UIML(v2) 为吉林大学 TARS_Go
战队统一接口中间件库(Uniform Interface Middlewares Library),旨在提高底层代码的复用率,避免重复造轮子,提高开发效率
本项目基于 FreeRTOS 在 STM32 平台上运行,由一个轻量级调度框架和一系列周边模块构成,具有易上手、易操作、易拓展的特点,用户可以仅通过修改配置文件随意选用已有模块,或按要求自行编写其他模块
- 与 Linux 内核驱动相似的模块管理机制
- 低耦合、易增删的动态模块管理
- 与 YAML 文件相似的系统配置方式
- 模块间通信主要使用观察者模式
- 与 ROS 相似的话题订阅机制
- 与安卓系统相似的广播机制
- 与网络请求相似的远程函数机制
尽可能少写甚至不写代码,不同机器人间仅通过修改配置文件进行适配,或仅需添加少量上层个性化逻辑
整个项目主要有核心模块和周边模块两大部分
项目的核心模块有软总线模块和系统配置模块,是维持整个框架运行不可缺少的部分
周边模块是在核心模块基础上运行的用户模块,可由用户自行配置随意选用。周边模块被分成以下两大类:
- 服务类模块:可自运行的模块
- 服务类模块是可以自己运行的,一般包含一个持续运行的 FreeRTOS 任务,或可以由外设中断触发,因此可以向其他模块主动提供服务
- 每个服务类模块都需要在配置文件中进行配置
- 例如:串口驱动、底盘模块、遥控器模块等
- 工具类模块:无法自己运行的模块
- 此类模块无法自行运行,不包含 FreeRTOS 任务,也不能由外设中断触发,其作用是被服务类模块通过函数接口直接调用,作为服务类模块的工具使用
- 工具类模块没有在配置文件中的独立配置,而是通过服务类模块进行配置
- 例如:滤波模块、PID 计算模块、电机模块等
项目中几个一级文件夹的作用:
system
:系统与配置模块softbus
:软总线模块services
:服务类模块tools
:工具类模块
详细的开发说明请移步 UIML 开发指南 进行查看,其中包含了使用步骤、开发说明、开发规范、注意事项等详细内容
- 系统模块
- 系统配置模块
- 软总线模块
- 离线检测模块
- 数学计算模块
- 斜坡函数
- PID 计算
- 一阶滤波
- 外设驱动模块
- CAN 通信模块
- 串口模块
- SPI 模块
- IIC 模块
- TIM 模块
- USB 虚拟串口模块
- 外部中断模块
- 设备驱动模块
- 遥控器驱动模块
- 蜂鸣器音乐模块
- INS 模块
- bmi088 驱动
- MPU6500 驱动
- IST8310 驱动
- JY901 驱动
- 电机模块
- M3508
- M6020
- M2006
- PWM 电机
- 直流电机
- 裁判系统模块
- 运动控制模块
- 底盘模块
- 麦轮底盘
- 舵轮底盘
- 云台模块
- 射击模块
- 机械臂模块
- 底盘模块
- 上层决策模块
- 云台-底盘综合控制
- Fork 本仓库
- 提交代码
- 新建 Pull Request