2022-11-12 18:03:18 +08:00
|
|
|
|
# algorithms
|
|
|
|
|
|
|
|
|
|
<p align='right'>neozng1@hnu.edu.cn</p>
|
|
|
|
|
|
|
|
|
|
> TODO:
|
|
|
|
|
> 1. 实现麦轮和全向轮的速度解算
|
2023-05-19 14:45:48 +08:00
|
|
|
|
> 2. 实现一些通用的滤波器,如指数平均,窗平均,低通等
|
2022-11-12 18:03:18 +08:00
|
|
|
|
|
|
|
|
|
## 总览和使用
|
|
|
|
|
|
|
|
|
|
module层的algorithm提供了一些供其他模块以及app的应用层使用的算法,包括:
|
|
|
|
|
|
|
|
|
|
1. PID控制器`controller.h`
|
|
|
|
|
2. crc8 crc16循环冗余校验
|
|
|
|
|
3. 卡尔曼滤波器`kalman_filter.h`,可以通过用户自定义函数配置为扩展卡尔曼滤波
|
|
|
|
|
4. `LQR.h`,线性二次型调节器
|
|
|
|
|
5. `QuaterninoEKF.h`,用于`ins_task`的四元数姿态解算和扩展卡尔曼滤波融合
|
|
|
|
|
6. `user_lib.h`,一些通用的函数,包括限幅、数据类型转换、角度弧度转换、快速符号判断以及优化开方等功能。多个模块都会使用的、不好区分的函数可以放置于此
|
|
|
|
|
|
|
|
|
|
## 代码结构
|
|
|
|
|
|
|
|
|
|
.c 为算法的实现,.h为算法对外接口的头文件
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在编写应用的时候,你基本不会使用这里的函数,或是修改其实现。
|
|
|
|
|
|
|
|
|
|
若发现bug或需要增加功能,联系组长讨论。
|
|
|
|
|
|