更新一些开发文档,方便统一开发环境与格式
This commit is contained in:
4
doc/API.md
Normal file
4
doc/API.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 接口标准
|
||||
|
||||
version: v0.0.0
|
||||
> TODO
|
||||
4
doc/LOG.md
Normal file
4
doc/LOG.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# 更新日志&想法记录
|
||||
|
||||
## 2026-4-8
|
||||
> 创建仓库,我们Simba也要有自己的电控框架了
|
||||
3
doc/TODO.md
Normal file
3
doc/TODO.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# TODO
|
||||
|
||||
> 完成基本框架的开发以及补全文档
|
||||
71
doc/appendix.md
Normal file
71
doc/appendix.md
Normal 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 的报错
|
||||
|
||||

|
||||
|
||||
请在魔术棒中
|
||||
|
||||

|
||||
|
||||
打开 `Utilities` 选项卡,点击 `Settings` 按钮
|
||||
|
||||

|
||||
|
||||
勾选 `reset and run` 选项
|
||||
|
||||

|
||||
|
||||
46
doc/framework.md
Normal file
46
doc/framework.md
Normal 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
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
BIN
doc/pic/magic_bar.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
BIN
doc/pic/magic_bar_Utilities.png
Normal file
BIN
doc/pic/magic_bar_Utilities.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
doc/pic/magic_bar_Utilities_setting.png
Normal file
BIN
doc/pic/magic_bar_Utilities_setting.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
3
doc/questions.md
Normal file
3
doc/questions.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# 解决问题
|
||||
|
||||
> TODO
|
||||
6
doc/reference.md
Normal file
6
doc/reference.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# 参考资料
|
||||
|
||||
## 其他战队的嵌入式框架开源
|
||||
|
||||
- 深圳北理莫斯科大学 `北极熊` 战队 [StandardRobot++](https://gitee.com/SMBU-POLARBEAR/StandardRobotpp)
|
||||
- 辽宁科技大学 `COD` 战队 [COD战队电控通用控制系统](https://gitee.com/wangcaofan/cod-h7-template)
|
||||
3
doc/代码编写指南.md
Normal file
3
doc/代码编写指南.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# 代码编写指南
|
||||
|
||||
> TODO
|
||||
15
doc/注意事项.md
Normal file
15
doc/注意事项.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# 注意事项
|
||||
|
||||
## 贡献代码
|
||||
### 代码风格
|
||||
本项目采取Google的开源代码风格
|
||||
|
||||
### 编译要求
|
||||
最终编译结果要做到 `0-error,0-warning` ,本项目启用了 `--diag_error=warning` 在编译时将 `warning` 视作 `error`。
|
||||
|
||||
### 提交要求
|
||||
禁止将自己的 **开发插件** 夹带私货上传!
|
||||
如EIDE WorkSpace 等
|
||||
|
||||
## 硬件上的
|
||||
**禁止在DJI电机工作时开启调试!!!!**
|
||||
16
doc/碎碎念.md
Normal file
16
doc/碎碎念.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# 碎碎念
|
||||
|
||||
## 来自木水的碎碎念
|
||||
> 老的电控代码是抄的山海机甲的,然而标准库+AC5实在是难以品鉴,尽管逻辑上没有问题,但是ST已经不给新芯片上标准库了,没法战未来(大悲),事已至此,重构吧
|
||||
|
||||
> 实际上,开源的优质代码框架并不少,但是Simba的情况特殊(~~我嗨专自有校情在此~~)我到了实验室只剩下几个C板和A板,不少C板的框架只能给AC5编译器用,过于拖慢开发效率(除非你想编译一次将近一分钟),而且拿来就用有时候不知根知底,会出现一些邪门问题
|
||||
|
||||
> (比如DJI官方例程没有缓启动,一走一个超功率)
|
||||
|
||||
> (山海机甲的代码没做好PID限幅会疯车)
|
||||
|
||||
> (北理莫斯科的代码用了之后开不了自校准,上位机的Release版本还是有问题的,一启动就崩溃,但是企鹅佬的代码质量还是可以的 ~~让我抄抄~~)
|
||||
|
||||
> (COD的代码框架是给达妙H7的,得自己移植)
|
||||
|
||||
> 综上,我受不了了,代码框架一定要自己的!
|
||||
60
doc/组合使用文档/全向轮步兵.md
Normal file
60
doc/组合使用文档/全向轮步兵.md
Normal 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板CAN1,id分别为1 2 3 4
|
||||
- 云台 yaw 电机采用GM6020,接入云台C板CAN2,id为1
|
||||
- 云台pitch电机采用GM6020,接入云台C板CAN1,id为2
|
||||
- 拨弹盘电机采用GM2006,接入整车CAN2,id为 7
|
||||
- 摩擦轮电机采用GM3508,接入云台C板CAN1,id分别为1 2
|
||||
Reference in New Issue
Block a user