修复了HT电机PID计算的bug

This commit is contained in:
NeoZng
2023-02-14 17:36:02 +08:00
parent cff796dbff
commit 53bdf1707c
18 changed files with 83 additions and 53 deletions

View File

@@ -18,7 +18,6 @@
VSCode可通过Cortex-Debug利用OpenOCD进行调试jlink/stlink/dap-link都支持具体的使用方法和环境配置教程在[VSCode+Ozone使用方法](./VSCode+Ozone使用方法.md)中。**请使用UTF-8编码查看\&编辑此项目**。
- **分层**
本框架主要代码分为**BSP、Module、APP**三层。三层的代码分别存放在同名的三个文件夹中这三个文件夹存放在根目录下。开发过程中主要编写APP层代码Module层与BSP层不建议修改。如需添加module如oled屏幕、其他传感器和外设等请按照规范编写并联系组长提交commit到dev分支或对应的功能名分支完善后合并至主分支。在配置git的时候将自己的`user.name`配置成英文缩写或易懂的nick name。
@@ -104,8 +103,6 @@
} CANInstance;
```
## BSP层(Board Sopport Package)
- TODO
@@ -165,21 +162,20 @@ Module层主要存放的是类型定义和实例指针数组在该层没有
## APP层(application)
- 功能:实现机器人的控制,对机器人**控制**结构进行抽象。
- 功能:实现机器人的控制,对机器人**控制**结构进行抽象。
在完成BSP层和Module层后如果在APP层没有控制代码则代码并无实际功能。换言之BSP层与Module层的存在是为了APP层更简单、更合理、更易于扩展和移植。本框架的初始目标即是实现在APP层仅需思考逻辑并用无关硬件的C语言代码实现即可完成整个机器人的控制。所有需要使用的模块和算法都在Module层提供硬件的抽象在bsp层完成。**所有使用到的模块都在APP层初始化**因此不需要module自行初始化。
- APP层按照机械设计结构如云台、发射、底盘建立对应的子文件夹在其中完成初始化和相关逻辑功能的编写。还有用于发布指令的云台指令应用和底盘指令应用前者应该包含一个遥控器模块和一个视觉通信模块后者包含裁判系统模块。它们包含的模块都会处理一些指令和控制信息因此将这两个应用从云台和底盘应用中隔离出来。这样还可以方便兼容双板。
- APP层按照机械设计结构如云台、发射、底盘建立对应的子文件夹在其中完成初始化和相关逻辑功能的编写。还有用于发布指令的云台指令应用和底盘指令应用前者应该包含一个遥控器模块和一个视觉通信模块后者包含裁判系统模块。它们包含的模块都会处理一些指令和控制信息因此将这两个应用从云台和底盘应用中隔离出来。这样还可以方便兼容双板。
- 单双板切换在application的`robot_def.h`中进行,**修改宏定义可以切换开发板的设定模式**。当设定为单板的时候,在`robot.c`中会对gimbalchassisshootgimbal_cmdchassis_cmd五个应用都进行初始化。对于双板的情况需要将上板配置为gimbal board下板配置为chassis board它们会分别初始化gimbal/shoot/gimbal_cmd和chassis/chassis_cmd。
- 单双板切换在application的`robot_def.h`中进行,**修改宏定义可以切换开发板的设定模式**。当设定为单板的时候,在`robot.c`中会对gimbalchassisshootgimbal_cmdchassis_cmd五个应用都进行初始化。对于双板的情况需要将上板配置为gimbal board下板配置为chassis board它们会分别初始化gimbal/shoot/gimbal_cmd和chassis/chassis_cmd。
- 对于单板的情况所有应用之间的信息交互通过message center完成。而使用双板时需要通过板间通信传递控制信息默认遥控器接收机和pc在云台板裁判系统在底盘板因此需要互发信息。当前通过**条件编译**来控制信息的去向发往message center/接收还是通过can comm发送/接收后续考虑将双板通信纳入message center的实现中根据`robot_def.h`的开发板定义自动处理通信,降低应用层级的逻辑复杂度。
- 对于单板的情况所有应用之间的信息交互通过message center完成。而使用双板时需要通过板间通信传递控制信息默认遥控器接收机和pc在云台板裁判系统在底盘板因此需要互发信息。当前通过**条件编译**来控制信息的去向发往message center/接收还是通过can comm发送/接收后续考虑将双板通信纳入message center的实现中根据`robot_def.h`的开发板定义自动处理通信,降低应用层级的逻辑复杂度。
## 文件树
板级支持包的每个组件,每个moduel,以及每个app都有对应的说明文档.
```shell
ROOT:.
│ .gitignore # git版本管理忽略文件
@@ -394,14 +390,10 @@ ROOT:.
vofa.h
```
## BSP/Module/Application介绍
在对应应用、模块和板级支持包文件夹下。每个.c文件或完整的功能模块都有说明文档。在编写新代码时注意按照规范编写说明文档。
## 整体架构
### 软件分层
@@ -424,4 +416,3 @@ HAL库初始化 --> BSP初始化 --> Application初始化 --> app调用其拥有
APP会调用其所有的模块的初始化函数注册函数这是因为本框架的设计思想是任何模块在被注册构造/初始化)之前,都是不存在的,当且仅当定义了一个模块结构体(也称实例)的时候,才有一个实体的概念。
main函数唯一需要的函数是app层的`robot.c`中的`RobotInit()`函数它首先会调用BSP初始化然后进行所有应用的初始化每个应用会调用对应模块的初始化一些依赖通信外设的模块会将通信支持相关的bsp进行初始化。初始化结束之后实时系统启动。