当前位置: 首页 > news >正文

关于穿越机FPV视频果冻效应的讨论

关于穿越机FPV视频果冻效应的讨论

  • 1. 名词定义
  • 2. 摄像原理
    • 2.1 快门分类
    • 2.2 卷帘拍摄
  • 3. 产生原因
  • 4. 解决方法
    • 4.1 振动出处
    • 4.2 软件方法(辅助作用)
    • 4.3 硬件方法(直接办法)
  • 5. F450试验机遇到的问题
    • 5.1 现象
    • 5.2 测试
    • 5.3 减震改善
    • 5.4 其他改善
    • 5.5 初步结论
    • 5.6 改进方向
  • 6. 总结
  • 7. 参考资料

这里讨论下穿越机FPV视频果冻效应的问题,看了好多B站的视频,从逻辑上讲,主要的问题来自硬件。

【1】萌新穿越机改pid出现抖动?
【2】自带高清果冻还是很厉害
【3】达尔文花飞练习
【4】399达尔文套机1公里小远航第二次
【5】达尔文FPV,室内室外通吃,稳飞10分钟续航
【6】穿越机果冻的五大硬件原因 -TimmyRC 5 Reasons Your Setup Has Jello

1. 名词定义

果冻效应,指在生产生活中像果冻一样产生的变形和颜色变化。

2. 摄像原理

在我们谈视频产生果冻效应之前, 先了解一下数码相机的摄像原理。

2.1 快门分类

首先,数码相机的重要部件就是快门,分为:Global shutter and Rolling shutter(全局快门 与 卷帘快门)。

  1. 使用CMOS传感器的相机多数使用卷帘快门,它是通过图像传感器逐行曝光的方式实现的。在曝光开始的时候,图像传感器逐行扫描逐行进行曝光,直至所有像素点都被曝光。当然,所有的动作在极短的时间内完成,一般不会对拍摄造成影响。

  2. 使用CCD传感器的相机多数采用全局快门,因此一帧所有像素是在同一时间段内进行曝光。相较于卷帘快门,具有拍摄高速物体更优的性能(不易模糊)。

快门

2.2 卷帘拍摄

运动物体拍摄

3. 产生原因

果冻的形成是摄影机本身的特性决定的,当拍摄物体相对于相机高速运动或快速振动时,用卷帘快门方式拍摄,逐行扫描速度不够,拍摄结果就可能出现“倾斜”、“摇摆不定”或“部分曝光”等情况。这种卷帘快门方式拍摄出现的现象,就定义为果冻效应。

注:通常来说全局快门不太可能出现果冻,但是如果曝光时间过程,拍摄高速运动或者在振动的情况下拍摄,会导致图像模糊。

4. 解决方法

对于FPV视频来说,要解决CMOS/CCD传感器卷帘快门方式拍摄下果冻效应的就是:硬件减振(避免摄像头卷帘快门工作方式下的“倾斜”、“摇摆不定”或“部分曝光”等情况)。

4.1 振动出处

  1. 机架问题:炸机(断裂),螺丝松动
  2. 动平衡问题:炸机(桨叶损坏,电机轴歪)
  3. 飞控减振: 飞控晃动,飞控振动
  4. 飞控受力:电线压迫飞控、器件压迫飞控
  5. 设备共振:电机 + 桨叶 + 机架
  6. 操作手抖

注:关于操作问题,这个首先需要大家根据自己的情况排除,也可以通过日志数据看RC stick的数据来确认。

4.2 软件方法(辅助作用)

  1. 【摄像头】曝光时间调小(解决果冻,越小越好)

暗场景,曝光时间不够可能比较暗,需要根据实际使用情况权衡。

  1. 【飞控】陀螺仪滤波(避免飞控由于振动数据导致的误动作:软件调整平衡飞机)

为什么说辅助的原因就是这里,不管怎么软件滤波,振动始终在物理世界存在。除非是PID非常不合理导致的问题。

4.3 硬件方法(直接办法)

  1. 【机架】拧紧螺丝

金属疲劳,起降/飞行振动 螺丝松动导致机臂机身松动。

  1. 【机架】更换机架

由于炸机导致机臂开列或者某些部件松动固定不牢,导致飞行期间振动。
也可能是机架本身比较软 或者 与电机、桨叶产生共振。

  1. 【动平衡】更换桨叶

桨叶损坏,动平衡被破坏,有专门的工具可以测试,如果损坏需要立即更换(通常炸机的桨叶,有缺损,有弯折,需要立即更换)。

  1. 【动平衡】更换电机 或 轴承

炸机 或 长时间使用导致轴承磨损或者弯曲,可以使用测试软件单独电机(脱桨)测试稳定性。

  1. 【飞控减振】增加飞控减振橡胶垫 或者 橡胶螺柱

飞控板上SMT有陀螺仪芯片,因此板子如果硬连接在机架上,振动能够非常轻易的影响陀螺仪,干扰数据。可以通过减振脚垫来物理屏蔽,长时间橡胶如有损坏,请更换。

  1. 【飞控受力】重新整理飞控板子周边,电线不要顶住机架,电解电容等大型外挂器件不要接触飞控板,进而影响陀螺仪

为了走线美观,电机线可能会贴着机架,绕过机架上的铝管,某些AIO的飞控板会直接焊接电机线,从而传递到振动。
电池电源外接的电解电容如果碰到飞控板也会带来振动,尽量保证飞控板仅仅是减振螺柱固定到飞控机架上即可。

  1. 【设备共振】更换部件(桨叶、电机、机架)使得不产生共振

这种问题是最头疼的,通常来说桨叶的更换最为方便,多选择其他品牌或者好的口碑的桨叶来进行测试。
使用前面的电机动平衡测试方法来确保电机本身没有问题。

  1. 【摄像头】更换全局快门摄像头

从硬件的角度来说更换CCD(通常全局快门)是一个方法。但是从实际情况看,CMOS摄像头在比较好的硬件减振情况下,也是不应该有果冻的。

5. F450试验机遇到的问题

5.1 现象

飞行过程发现,地面呈现水波纹,高楼有扭动,视频自arm以后,有明显的振动。

5.2 测试

  1. 【无果冻】静止(电机不转):模拟信号雪花点
  2. 【无果冻】运动(电机不转):模拟信号雪花点,大FOV视频畸变(正常)
  3. 【无果冻】静止(电机带桨叶转):有明显上线振动(抖动)
  4. 【有果冻】运动(电机带桨叶转):果冻效应明显
  5. 【有果冻】悬停(第三人称,飞机悬停稳定):第一人称FPV视角,有水泼纹(大楼图像晃动)
  6. 【有果冻】离地越高,地面水波纹效应越明显
  7. 【有果冻】新桨叶问题依旧

老桨叶(白色,最早视频模糊,但是果冻相较好不少) 新桨叶(红色,果冻更多更强),历史视频显示,新桨叶果冻效果厉害

  1. 视频显示机臂上的天线振动厉害(怀疑桨叶 + 机架,引起振动)

某次试飞,将Rx天线正好放在了FPV摄像头拍摄区域,发现明显的振动。

5.3 减震改善

  1. 【无效】飞控板增加减振胶垫

其实飞控板的陀螺仪上是有泡沫垫与飞控板连接的,有避震效果)

  1. 【无效】电机增加减震垫

增加一定的软连接来减少电机和桨叶带来的振动。

  1. 【无效】更换新桨叶(新购买)

问题依然存在,稍有改善

  1. 【无效】电机振动:测试每个电机无轴承问题

电机(不带桨叶),平放桌上,单独控制每个电机独立转动,无明显振动。

  1. 【无效】摄像头增加软连接

摄像头减震:1) 棉花+单股电线软线,防震软连接;2) 3M双面胶垫底+软胶带固定

5.4 其他改善

  1. 使用PDB分电板上的12V/5V(独立)供图传和摄像头,并增加2200uF + 0.01uF滤波

期望减少电源干扰雪花点,横波纹等。

  1. 陀螺仪软件滤波(日志数据显示,低频信号,数据完美)

期望减少飞控由于干扰数据的误动作,收效甚微。

  1. 曝光时间未做调整

仍然采用自动(全场景几乎都有果冻,所以没做过多测试)

  1. 增加摄像头屏蔽(稀薄接电池地)

怀疑480Hz PWM控制线或者飞控电磁干扰,屏蔽CMOS模拟摄像头(屏蔽干扰,锡箔纸接GND) ,有一定效果,果冻效应依旧存在

5.5 初步结论

怀疑:电机910KV和桨叶带来的振动,与F450机架(软)共振,导致固定频率振动。

证据:滤波(干净)前日志显示锯齿状振动频率, 滤波后陀螺仪数据完美,且第三人称看飞机飞行稳定,但FPV视频果冻。

机架振动+电机振动,干扰很重滤波后的数据曲线
低频陀螺仪数据

5.6 改进方向

  1. 更换更硬材质的机架(小机架,非廉价机架)
  2. 更换大KV值电机(高频小幅度振动)
  3. 电机与机架的TPU防震
  4. 保持飞控防震垫防震

6. 总结

PS:高人也请多多指点,评论留言,看看是否还有哪些可能与因素没有考虑到,万分感谢!

注:暂时保留该章节,待后续更新改进后的效果。

7. 参考资料

【1】果冻效应rolling shutter
【2】四轴飞控DIY集成FPV功能
【3】四轴飞控DIY简明步骤介绍

相关文章:

  • 顺序表(c++类模板实现)
  • Leetcode 698. 划分为k个相等的子集
  • 开发工具安装
  • 图解字符串匹配算法:从Brute-Force到KMP,一下子就整明白了
  • Python语言:散修笔记
  • 为什么要学习Linux内核,如何学习?
  • 块级作用域绑定
  • 8.7 迁移学习域适应
  • 高企认定评分标准有哪些?
  • halcon提取数据集中指定图片并进行裁剪
  • 使用PdfSharp从模板生成Pdf文件
  • HTML篇三——(2)
  • 【012】基于JavaWeb酒店客房管理系统(附源码、数据库、数据库文档、运行教程)
  • Gitee账号注册以及Git下载安装
  • 边学边记——Java中有关接口的知识
  • 4. 路由到控制器 - Laravel从零开始教程
  • bearychat的java client
  • CentOS6 编译安装 redis-3.2.3
  •  D - 粉碎叛乱F - 其他起义
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • gops —— Go 程序诊断分析工具
  • gulp 教程
  • input实现文字超出省略号功能
  • Python socket服务器端、客户端传送信息
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • 分享一份非常强势的Android面试题
  • 利用DataURL技术在网页上显示图片
  • 聊一聊前端的监控
  • 使用Swoole加速Laravel(正式环境中)
  • 数组大概知多少
  • 运行时添加log4j2的appender
  • Java数据解析之JSON
  • 阿里云服务器如何修改远程端口?
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #前后端分离# 头条发布系统
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (175)FPGA门控时钟技术
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (分布式缓存)Redis分片集群
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (力扣)循环队列的实现与详解(C语言)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四)Controller接口控制器详解(三)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)Mysql的优化设置
  • .net core 6 redis操作类
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET4.0并行计算技术基础(1)
  • .net访问oracle数据库性能问题
  • .net开发时的诡异问题,button的onclick事件无效