完善文档
This commit is contained in:
parent
145e886618
commit
50479fc16c
|
@ -4,7 +4,7 @@ Ozone的实时变量可视化监测(示波器)功能可以很好地帮助我们
|
|||
|
||||
## 调试顺序
|
||||
|
||||
先内环,后外环。若有已知的外部扰动如阻力、重力等可以在**保持kp不变**的情况下添加积分环节,并查看达到稳态时积分的输出,该输出值可以作为**前馈**作用通过feedforward_ptr一同送入下一个串级控制器。
|
||||
先内环,后外环。若有已知的外部扰动如阻力、重力等可以在**保持kp不变**的情况下添加积分环节,并查看达到稳态时积分的输出,该输出值可以作为**前馈**作用通过feedforward_ptr一同送入下一个串级控制器。在没有模型的时候,计算前馈一般通过**数据驱动**的方法,如稳态误差-参考值关系拟合。
|
||||
|
||||
经典的经验式整定方法有简单的Ziegler-Nicols法和Cohen-Coon法,还有需要一定的系统辨识的Chien-Hrones-Reswick、Tyreus-Luyben和Skogestad法。这些方法在网络上或提出方法的论文中都有详尽的说明,这里不再赘述。
|
||||
|
||||
|
@ -15,5 +15,18 @@ Ozone的实时变量可视化监测(示波器)功能可以很好地帮助我们
|
|||
1. 首先整定P参数,使用二分法确定大致范围。将电机参考速度和实际速度在Ozone示波器同一窗口中打开以观察时域表现。把pid的ref值添加到变量观测,方便修改(只要修改ref值,每次就可以触发阶跃信号输入)。当P达到欠阻尼且波动只有一个周期(只有超调一个峰)时,开始添加D参数。
|
||||
2. 添加微分参数。务必打开微分滤波器,并根据你的闭环带宽(速度环要跟随的频率)设置滤波系数。目前使用的是一阶低通滤波,后续考虑增加高阶滤波器和特殊的带宽滤波器(切比雪夫、巴特沃斯等)。调节D参数至P进入临界阻尼或过阻尼的状态(没有超调)。
|
||||
3. 交替增大比例系数和微分系数,直到出现不可控的微分抖动,然后减小两者的值直到出现一个合适的平衡(调个大概即可,没有模型的情况下很难达到均衡)
|
||||
4.
|
||||
4. **固定PD参数**,查看不同目标值的**静差**。如果没有对云台进行建模,则拟合目标值与静差的关系(线性、多项式、指数、对数),并将该值作为前馈加入系统,以补偿PD无法影响的扰动项。
|
||||
5. 增加额外的积分控制以消除前馈模型不准确带来的影响。务必使用积分分离和变速积分。参数不要求精细,一般来说大致即可。
|
||||
|
||||
## model-based控制
|
||||
|
||||
无模型的控制显然存在其劣势和效果上限,为了提高性能,我们需要对云台进行建模。
|
||||
|
||||
建模的方式包括动力学方程推导和数据驱动的系统辨识。
|
||||
|
||||
动力学方程的推导即分析系统的输入(电机的扭矩)和输出(速度/角度)的关系,得到系统动态的微分方程,然后使输入等于微分方程中除输出外的项,从而让输出的动态变为简单的一阶线性常微分方程,以最快的方式到达期望位置。此时再额外增加PID控制器,用于补偿建模得到的系统和实际不匹配造成的误差。建模考虑的因素越全面,建模的效果可能会越好。
|
||||
|
||||
系统辨识的经典方法是伯德图法即频域分析。通过给定一系列的正弦输入,观察系统的输出表现得到系统的相频曲线和幅频特性曲线,并选择一个特定结构的系统对曲线进行拟合(最小二乘或极大似然估计),对得到的系统应用超前-滞后补偿控制器以确定合适的PID参数,在裕度和带宽之间权衡,使得系统的频率响应满足设计要求。
|
||||
|
||||
Ozone可以非常方便的获取系统的频率响应数据。
|
||||
|
||||
|
|
|
@ -110,6 +110,23 @@
|
|||
} CANInstance;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## 其他IDE支持
|
||||
|
||||
你还可以尝试VSC的EIDE插件+ozone的方式开发ac5/6工具链的程序。ac5/6工具链由于为arm出品的商业闭源软件,对mcu硬件架构的针对性优化更多,编译出来的程序优化效果往往更好、体积更小,执行速度快过arm-gnu工具链。
|
||||
|
||||
另外的可能是Visual Studio + VisualGDB,根据VisualGDB的官网进行配置即可,可以利用VS提供的各种测试调试性能分析功能。对于熟悉VS丰富的功能支持的开发者,可以选择此方式。
|
||||
|
||||
还可以尝试VSC的插件KEIL assistant,通过此法你需要在根目录打开cubeide配置文件,在project manager标签页选择将工具链改为MDK,**我们非常不推荐这种方式**。若要使用CubeIDE,也在相同的地方修改工具链。
|
||||
|
||||
***不过开发本框架的最佳实践仍然是VSCode+Ozone。***
|
||||
|
||||
> 只要你学习了[VSCode+Ozone使用方法](./VSCode+Ozone使用方法.md)文档内的*预备知识* ,掌握了工具链的用途和原理之后,不论换用什么IDE什么编译器,你都可以切换自如。
|
||||
|
||||
|
||||
|
||||
## BSP层(Board Sopport Package)
|
||||
|
||||
- 主要功能:实现对STM HAL的封装功能,进一步抽象硬件。
|
||||
|
@ -190,6 +207,8 @@ ROOT:.
|
|||
│ debug_ozone.jdebug # ozone debug调试配置和缓存文件
|
||||
│ LICENSE # 开源协议文件
|
||||
│ Makefile # 编译管理文件,为make(mingw32-make)命令的目标
|
||||
| Makefile.upgrade # 编译管理文件的升级版, 资深用户使用
|
||||
| CMakeLists.txt # cmake构建规则, 资深用户使用
|
||||
│ openocd_dap.cfg # 用于OpenOCD调试使用的配置文件,dap用
|
||||
│ openocd_jlink.cfg # 用于OpenOCD调试使用的配置文件,jlink用
|
||||
│ README.md # 本说明文档
|
||||
|
@ -199,10 +218,6 @@ ROOT:.
|
|||
│ STM32F407IGHx_FLASH.ld # F407IGH(C板MCU)目标FLASH地址和链接规则,用于编译(作为链接阶段的链接器)
|
||||
│ task.ps1 # powershell脚本,一键编译并进入ozone调试/reset开发板用
|
||||
│ TODO.md # 项目待完成的任务
|
||||
│ VSCode+Ozone使用方法.md # 开发环境配置和前置知识介绍
|
||||
│ 修改HAL配置时文件目录的更改.md # 重新配置CubeMX时的步骤和注意事项
|
||||
│ 必须做&禁止做.md # 开发必看,规范和要求
|
||||
│ 如何定位bug.md # 开发必看,快速定位bug并进行修复.还提供了一些debug典例
|
||||
│
|
||||
├─.vscode
|
||||
│ launch.json # 调试的配置文件
|
||||
|
@ -210,14 +225,17 @@ ROOT:.
|
|||
│ tasks.json # 任务配置文件,包括一键编译下载调试等
|
||||
│
|
||||
├─.assets # 说明文档的图片
|
||||
├─.Doc # 本框架的各类说明文档
|
||||
├─.github # github action CI支持文件
|
||||
│
|
||||
├─application # 应用层
|
||||
├─bsp # 板级支持包
|
||||
├─modules # 模块层
|
||||
│
|
||||
├─Src #hal生成的外设初始化源文件
|
||||
├─Inc #hal生成的外设初始化头文件
|
||||
├─Drivers #hal driver和cmsis drivers
|
||||
└─Middlewares # STusb ext , rtos , segger rtt等
|
||||
├─Src # hal生成的外设初始化源文件
|
||||
├─Inc # hal生成的外设初始化头文件
|
||||
├─Drivers # hal driver和cmsis drivers
|
||||
└─Middlewares # STusb ext, rtos, segger rtt等
|
||||
```
|
||||
|
||||
## BSP/Module/Application介绍
|
||||
|
|
|
@ -254,7 +254,9 @@ app、module和bsp都有相应的rtos任务。其中bsp为创建任务提供了
|
|||
|
||||
想要调试,在左侧tab页选择合适的调试选项,按F5或图形界面的绿色小三角形按钮,开始调试。当然,调试器的设置也请参考配置文档,主要是将可执行文件路劲加入环境变量的PATH。
|
||||
|
||||
**更详细的开发流程,请参照`.Doc/VSCode+Ozone使用方法.md`**
|
||||
**更详细的开发流程和本仓库工作流的最佳实践,请参照`.Doc/VSCode+Ozone使用方法.md`**,里面介绍了开发所需的前置知识、环境配置,以及工具链原理、使用方法等。
|
||||
|
||||
要对本仓库进行开发,务必先阅读`.Doc/架构介绍与开发指南.md`,内含本仓库组织结构的**文件树**。若你希望使用其他工具链或IDE,里面也有相关说明。
|
||||
|
||||
### 基本文档
|
||||
|
||||
|
|
Loading…
Reference in New Issue