# algorithms

<p align='right'>neozng1@hnu.edu.cn</p>

> TODO:
>
> 1. 实现麦轮和全向轮的速度解算
> 2. 实现LQR
> 3. 实现一些通用的滤波器，如指数平均，窗平均，低通等
> 4. 实现系统辨识

## 总览和使用

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或需要增加功能，联系组长讨论。

