更新一些开发文档,方便统一开发环境与格式

This commit is contained in:
2026-04-09 15:45:03 +08:00
parent 028a0b72ec
commit c740e5db20
15 changed files with 231 additions and 0 deletions

4
doc/API.md Normal file
View File

@@ -0,0 +1,4 @@
# 接口标准
version: v0.0.0
> TODO

4
doc/LOG.md Normal file
View File

@@ -0,0 +1,4 @@
# 更新日志&想法记录
## 2026-4-8
> 创建仓库我们Simba也要有自己的电控框架了

3
doc/TODO.md Normal file
View File

@@ -0,0 +1,3 @@
# TODO
> 完成基本框架的开发以及补全文档

71
doc/appendix.md Normal file
View File

@@ -0,0 +1,71 @@
# 附录
- [附录](#附录)
- [1 代码编写](#1-代码编写)
- [1.1 编辑器与IDE的选择](#11-编辑器与ide的选择)
- [1.2 代码格式](#12-代码格式)
- [1.3 编辑代码](#13-编辑代码)
- [2 科学调参](#2-科学调参)
- [3 部分问题及解决方案](#3-部分问题及解决方案)
- [3.1 Cortex\_M4 报错](#31-cortex_m4-报错)
## 1 代码编写
### 1.1 编辑器与IDE的选择
- **IDE : Keil5**
- **编辑器 : VSCode**
为了方便大家进行环境配置本项目使用Keil5所带的AC6工具链进行编译
- 关于keil5经典IDE环境配置极为方便对STM系列芯片使用者极为友好
- 关于VSCode现代化代码编辑器其实就是一高级版的文本编辑器支持各种插件进行功能拓展能极高的提高大家的工作效率
### 1.2 代码格式
本项目代码格式主要基于Google风格具体的格式配置信息请参照 [.clang-format](../.clang-format) 文件
- **如何格式化你的代码:** 右键选择 `格式化代码` (默认快捷键 `Shift + Alt + F`
- **如何在部分区域禁用格式化:** \
在区域开始的位置添加注释
```C
// clang-format off
```
在区域结束的位置添加注释
```C
// clang-format on
```
这样在格式化代码的时候就不会使用 [.clang-format](../.clang-format) 格式化这部分代码而保持原有风格了。
> **关于禁用格式化的作用:** 部分地方由于格式化之后变成奇怪格式效果,这时候可以禁用格式化来保持我们所需要的格式。
### 1.3 编辑代码
> TODO
## 2 科学调参
> TODO
## 3 部分问题及解决方案
### 3.1 Cortex_M4 报错
如在烧录代码时出现 Cortex_M4 的报错
![Cortex_M4](./pic/Cortex_M4.png)
请在魔术棒中
![magic_bar](./pic/magic_bar.png)
打开 `Utilities` 选项卡,点击 `Settings` 按钮
![magic_bar_Utilities](./pic/magic_bar_Utilities.png)
勾选 `reset and run` 选项
![magic_bar](./pic/magic_bar_Utilities_setting.png)

46
doc/framework.md Normal file
View File

@@ -0,0 +1,46 @@
# 框架
## 总体介绍
### 机器人参数
机器人的主要选项在 [robot_typedef](../application/robot_typedef.h) 中定义。
在[robot_param](../application/robot_param.h)中导入个性化定义的每个机器人具体的物理参数包括但不限于控制中要用到的物理参数、PID参数等等。
通过这种做法达到机器人代码通用化的目的,只需替换不同机器人的 `robot_param.h` 文件即可实现不同车型的适配。
### 模块划分
本框架主要划分为以下几个模块。
- assist 辅助模块
- chassis 底盘模块
- gimbal 云台模块
- IMU 陀螺仪模块
- referee 裁判系统模块
- robot_cmd 机器人控制模块
- shoot 射击模块
- other 其他乱七八糟的东西
### 模块控制
不同的模块由其对应的控制任务进行控制如底盘为chassis_task云台为gimbal_task射击为shoot_task ...
#### * 层级结构
每个模块都做成了三层的上中下结构,上层可以调用下层的数据和函数。防止了上下层之间循环调用造成的混乱局面。
- **上层**task任务层\
该层中提供freertos的任务函数接口用来创建本模块的控制任务。同时创建各个任务执行函数的弱定义空函数当无需用到此模块时使用。
- **中层**:任务执行层\
该层为任务函数的实体部分,根据不同的硬件条件有不同的执行方式。需对每种硬件条件编写不同的执行代码以实现适配,并通过预编译的方式选择编译对应硬件的控制代码。
- **下层**:任务根基层\
该层为整个模块的根基部分,定义了在不同硬件条件下都需要用到的类型、函数、变量等等。
#### * 步骤划分
每个控制任务都可以分成以下几个步骤:
1. **发布数据 (xxxPublish)**:发布本模块的数据以供其他模块使用。
2. **初始化 (xxxInit)**:在进入任务循环前先行对该任务所需要的各种参数进行初始化。
3. **获取反馈 (xxxObserver)**:获取各种传感器的反馈数据,以便接下来进行控制处理。
4. **异常处理 (xxxHandleException)**:在任务循环中遇到异常情况时如果有处理方法则进行异常处理(通常为电机失能等等),若无法处理且会造成危险的话则尝试进行报警。
5. **模式设置 (xxxSetMode)** :设置对应模块的模式,在不同模式下模块会有不同的动作。
6. **更新目标 (xxxReference)**:更新各个目标值,作为控制的目标结果。
7. **计算控制量 (xxxConsole)**:计算出各个执行机构的控制量使得模块效果达到目标。
8. **发送控制量 (xxxSendCmd)**:将控制量发送给执行机构来执行。
> 后续内容待完善

BIN
doc/pic/Cortex_M4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
doc/pic/magic_bar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

3
doc/questions.md Normal file
View File

@@ -0,0 +1,3 @@
# 解决问题
> TODO

6
doc/reference.md Normal file
View File

@@ -0,0 +1,6 @@
# 参考资料
## 其他战队的嵌入式框架开源
- 深圳北理莫斯科大学 `北极熊` 战队 [StandardRobot++](https://gitee.com/SMBU-POLARBEAR/StandardRobotpp)
- 辽宁科技大学 `COD` 战队 [COD战队电控通用控制系统](https://gitee.com/wangcaofan/cod-h7-template)

View File

@@ -0,0 +1,3 @@
# 代码编写指南
> TODO

15
doc/注意事项.md Normal file
View File

@@ -0,0 +1,15 @@
# 注意事项
## 贡献代码
### 代码风格
本项目采取Google的开源代码风格
### 编译要求
最终编译结果要做到 `0-error,0-warning` ,本项目启用了 `--diag_error=warning` 在编译时将 `warning` 视作 `error`
### 提交要求
禁止将自己的 **开发插件** 夹带私货上传!
如EIDE WorkSpace 等
## 硬件上的
**禁止在DJI电机工作时开启调试**

16
doc/碎碎念.md Normal file
View File

@@ -0,0 +1,16 @@
# 碎碎念
## 来自木水的碎碎念
> 老的电控代码是抄的山海机甲的,然而标准库+AC5实在是难以品鉴尽管逻辑上没有问题但是ST已经不给新芯片上标准库了没法战未来大悲事已至此重构吧
> 实际上开源的优质代码框架并不少但是Simba的情况特殊~~我嗨专自有校情在此~~我到了实验室只剩下几个C板和A板不少C板的框架只能给AC5编译器用过于拖慢开发效率除非你想编译一次将近一分钟而且拿来就用有时候不知根知底会出现一些邪门问题
> 比如DJI官方例程没有缓启动一走一个超功率
> 山海机甲的代码没做好PID限幅会疯车
> 北理莫斯科的代码用了之后开不了自校准上位机的Release版本还是有问题的一启动就崩溃但是企鹅佬的代码质量还是可以的 ~~让我抄抄~~
> COD的代码框架是给达妙H7的得自己移植
> 综上,我受不了了,代码框架一定要自己的!

View File

@@ -0,0 +1,60 @@
# 全向轮步兵
## 操作指南
### DT7遥控器
- 左拨杆:
- 上档:开启摩擦轮
- 中档:无功能
- 下档:开启自瞄
- 左摇杆:
- 水平控制云台yaw轴旋转
- 竖直控制云台pitch轴旋转
- 左滚轮:发射/退弹
- 右拨杆:
- 上档:慢速小陀螺
- 中档:无功能
- 下档:高速小陀螺
- 右摇杆:
- 水平控制机体y方向速度(云台朝向为正方向)
- 竖直控制机体x方向速度(云台朝向为正方向)
### 键鼠
- W:前进
- S:后退
- A:向左移动
- D:向右移动
- SHIFT:开启/关闭超电加速
- CTRL:开启/关闭小陀螺
- Q:开启/关闭摩擦轮
- E:退弹
> 以下按键为图传遥控时可用,目前没有编写功能
- R:
- F:
- G:
- Z:
- X:
- C:
- V:
- B:
### 校准
> TODO
## 硬件指南
### C板
使用两块C板控制底盘和云台。
### 电机
- 底盘驱动轮电机采用GM3508接入底盘C板CAN1id分别为1 2 3 4
- 云台 yaw 电机采用GM6020接入云台C板CAN2id为1
- 云台pitch电机采用GM6020接入云台C板CAN1id为2
- 拨弹盘电机采用GM2006接入整车CAN2id为 7
- 摩擦轮电机采用GM3508接入云台C板CAN1id分别为1 2