初学四旋翼之光流定点
来源:互联网 发布:关于农副产品的软件 编辑:程序博客网 时间:2024/04/25 15:31
本项目使用px4flow模块测速,与飞控的通讯方式为I2C。
安装时因注意光流模块与飞控的方向。
(一) 为什么使用光流模块?
在悬停时,若采用开环控制,由于一些不可控的外界因素,四旋翼会晃动,稳定性不能满足要求。此时可采用速度闭环控制,将x和y方向的速度返回,形成一个位置闭环,保证x和y方向的速度为0,便能消除晃动,增强稳定性。
也可采用位置闭环控制,将x和y的位置变换返回,形成一个位置闭环,保证x和y方向的位置变化为0。
(二) 光流测速,测距,定点原理
当目标物体在摄像机前运动或者摄像机在环境中移动时,目标图像是在发生变化的,图像灰度模式的表面运动就称为光流。简单理解,光流就是通过检测图像中光点和暗点的移动,来判断图像中像素点相对于飞行器的移动速度。
举个例子,当我们做火车时,可以看到窗外的树在不断地向后“流动”,通过树向后流动的速度,我们可以估计当前火车的速度。光流模块就是基于这个原理,检测两帧图像中“树”的相对位置,由于拍摄两帧图片的时间差是固定的,便可以计算出像素点的移动速度。若我们知道“树”和相机的距离,便可以计算当前的实际速度。
测距:对速度进行积分就可以得到位移。
定点:利用光流模块返回的位置信息或者速度信息,形成一个闭环控制,即可实现定点。
(三) Px4flow模块调试步骤
1. 现在并安装Q GroundControl;
2. 用usb线连接电脑和光流模块,QGC会自动检测PX4flow;
3. 烧写固件,一般可以自动在线更新。也可以根据需求烧写自定义的固件;
4. 打开analyze,查看光流模块数据是否正常(水平匀速移动光流模块,看输出值是否稳定);
5. 若上述步骤完成,即可将光流模块连接到飞控板。
(四) 飞控定位思路
1. 分别计算x和y方向的速度误差(目标速度为0)
2. 累计误差(用于积分),累计误差需要限幅(误差无限累计后会造成溢出,导致积分环节出错。比如有符号数溢出,输出突变)
3. 计算PID
output= p* error+ i* error_sum+d*( error- error_old);
4. 输出限幅(防止输出超过pwm的调节范围)
5. 保存当前误差
error_old =error
(五) 代码
- 初学四旋翼之光流定点
- 光流定点若干问题分析
- 光流定点程序梳理
- OpenGL ES 学习教程(十) Light casters 之 Point Light (定点光)
- 定点c程序之二:定点加减法
- 初学四旋翼之遥控
- 光流
- 光流
- 光流
- 光流
- 光流
- 初学四旋翼之定高
- 初学四旋翼之蓝牙通讯
- 定点c程序之三:乘法
- 定点c程序之四:除法
- 《文明之光》读书笔记
- 新时代之光
- 《文明之光》读后感
- Sqoop ERROR tool.ImportTool: Imported Failed: There is no column found in the target table
- ThreadLocal
- Codeforces 266B
- android 事件分发
- c++中的explicit关键字及隐式类型转换
- 初学四旋翼之光流定点
- Rabbitmq priority 优先级
- Tsung:开源多协议分布式负载&压力测试工具
- 静态变量/非静态变量的区别
- ECMAScript 6新特性简记
- Docker笔记二:Lumen + Redis
- PHP对象相关知识点的总结
- Laravel框架一:原理机制篇
- Ruby 学习之枚举器