Arduino 101 IMU测试及问题
来源:互联网 发布:php留言板视频教程 编辑:程序博客网 时间:2024/04/30 21:47
关于惯导的实验及问题
1. 平台:Arduino101
2. 陀螺仪与加速度计:
BMI 160,即博世160,集成在了arduino101的硅片上
具体可以查看官网英文介绍,并且官网介绍中可以直接下载到BMI160的datasheet,看上去应该只是在arduino里面把它包装起来,做成了库的形式
3. 此次使用了两种方法进行姿态解算
第一种是调用MadgwickAHRS算法库
由于没有磁阻计的信息,所以并不是AHRS,而是IMU,进入了Update IMU函数里面
仔细观察MadgwickAHRS算法库发现里面用的姿态误差补偿算法是梯度下降法,通过计算目标梯度,逆着梯度向上求得极小值,此处将0视为误差函数的一个极小值。(貌似是)
此处程序中,加入了加速度计的IIR滤波和陀螺仪的两点的滑动窗口滤波(加速度计的IIR滤波没仔细研究,是直接移植的可能有问题)
之后调用MadgwickAHRS库里面的函数,采样频率和解算频率是1000Hz
由于没有试验台,此处用手将Arduino101转到约30度,等待一段时间,将
Arduino101放平。模拟阶跃信号,观察串口输出的pitch的图像如图所示。
问题:发现在小角度下动态特性比较好,能较为准确地反映角度变化,但是如果放大角度,例如30度,会经过一个较长的时间才能准确达到目标值。
第二种是使用互补滤波
互补滤波移植自烈火的小四轴,同样加入了加速度计的IIR滤波和陀螺仪的两点的滑动窗口滤波
互补滤波的实质是取加速度计读取方向与重力加速度方向的差值,送入一个PI控制器,发现效果和上面第一个方法即使用梯度下降法的相差不大
4. 移植了一个串级PID的程序。
主循环里面分别跑一个1000Hz(姿态解算),500Hz(内环角速度), 250Hz(外环角度)的任务。
- Arduino 101 IMU测试及问题
- IMU
- imu
- IMU
- IMU模块ADIS16448调试过程及经验总结
- 视觉SLAM融合IMU问题研究笔记
- arduino+oled测试实验
- 第二十七讲--Oracle IMU及Redo Private Strands技术
- Oracle学习笔记 Oracle IMU及Redo Private Strands技术
- arduino问题记录
- arduino实践问题
- ARDUINO驱动问题
- 理解redo(10)一个IMU的问题解释
- OpenCV安装及测试问题
- Monkey测试问题及解决方法
- Monkey测试问题及解决方法
- arduino bootload 修改及生成
- IMU原理
- NOIP2015解题报告
- BATCHSQL--GoldenGate Parameter
- 【java SE基础】Java线程详解
- asynctask
- LIBSVM在matlab下的使用安装
- Arduino 101 IMU测试及问题
- 【2016杭电女生赛1009】【挖掘本质找关系 模拟】sum 找到最小的正整数,满足a乘sum(n)==b乘S(2n)
- Hibernate_一级缓存_Demo
- Linux C笔记之 作用域 详解
- [Java] 作业6(字符串)
- threejs(二) 移动,相机
- get请求和post请求的区别
- 【教程】Ubuntu安装cryptominisat教程
- 【2016杭电女生赛1010】【旅行商问题DP + 贪心】Ingress 最多走L距离 最多hackK次 的最大得分