OpenIPC开源FPV之Adaptive-Link安装
OpenIPC开源FPV之Adaptive-Link安装
- 1. 源由
- 2. 介绍
- 2.1 天空端安装
- 2.2 地面端安装
- 3. 问题汇总
- 3.1 安装脚本问题
- 3.2 网络安装问题
- 3.3 非SSC30KQ/SSC338Q硬件
- 3.4 代码疑问
- 4. 总结
- 5. 后续
1. 源由
鉴于飞行过程,发现一些马赛克现象,且60FPS桌面30FPS的录影有些许卡顿。
- OpenIPC SSC30KQ IMX335 + Ardupilot 4.5.6 + 梅岭隧道南入口 FPV飞行
- OpenIPC地面站OSD + Ardupilot 4.5.6 + 梅家坞山坳 FPV飞行

为了更好的确保FPV飞行质量:
- 提高图像的清晰度
- 保证图像流畅性
- 更好应对穿越场景
引入Adaptive Link势在必行!
2. 介绍
前面,已经简单的介绍了关于OpenIPC Adaptive Link的原理和逻辑:
【1】OpenIPC开源FPV之Adaptive-Link工程解析
【2】OpenIPC开源FPV之Adaptive-Link天空端代码解析
【3】OpenIPC开源FPV之Adaptive-Link地面站代码解析
接下去,我们将进行安装,以便更好的后续在上面的场景上进行验证。
2.1 天空端安装
$ cd /etc
$ curl -L -o alink_install.sh https://raw.githubusercontent.com/sickgreg/OpenIPC-Adaptive-Link/refs/heads/main/alink_install.sh
$ chmod +x alink_install.sh
$ ./alink_install.sh drone install
$ reboot
2.2 地面端安装
$ curl -L -o alink_install.sh https://raw.githubusercontent.com/sickgreg/OpenIPC-Adaptive-Link/refs/heads/main/alink_install.sh
$ sudo chmod +x alink_install.sh
$ sudo ./alink_install.sh gs install
3. 问题汇总
3.1 安装脚本问题
- Install gs adaptive link failed #14
不过在jetson-fpv中,会通过补丁的方式进行修正,并且所有安装方式都会使用菜单方式进行安装,详见:How to install the jetson-fpv?
3.2 网络安装问题
由于天空端采用了网络安装方式,因此,由于网络问题导致无法安装成功。
建议通过代理,可参考:apt-get通过代理更新系统
3.3 非SSC30KQ/SSC338Q硬件
因为,目前安装方式仅支持上述两个硬件,若需要其他硬件版本,可以参考以下方式自行编译:
- Build scripts for goke|hi3516|star6b0|star6e|star6c targets on x86 #13
3.4 代码疑问
- 【OSD】“pnlt%d xtx%ld idr%d” string lost #15
- 【WiFi】Which is the best profile for the 8812EU currently?
- 【WiFi】WIP: Add support for RTL8812EU-based Wi-Fi adapters for FPV firmware #1344
- 【Version】stucked “initializing… 6.3Mb FPS:60 54% tx34c rssi-44, snr15 fec1 pnlt0 xtx0 i” #17
- 【Version】[Request] Version control of adaptive link
- 【Version】Build scripts for goke|hi3516|star6b0|star6e|star6c targets on x86
- 【Version】 add exective attribute to bash files #12
4. 总结
通过实际楼道环境测试显示,H265最低比特率在2.2Mbps,最高在10Mbps左右。
实际情况,待天气好转,现场实测!
注意:目前该链路动态适配正在不断完善和开发,因此,很多情况会发生变化。上述仅供参考,谢谢!欢迎大家留言,指正,谢谢!
5. 后续
鉴于当前官方版本尚未进入版本管控,且在OpenIPC较新固件master+9fbdc40, 2025-02-15版本上无法使用最新的adaptive link。
基于这些,我们做了一个兼容的版本,供大家使用,操作步骤如下:
- 更新最新的OpenIPC固件(晚于2025-02-15)
- 下载代码
git clone https://github.com/SnapDragonfly/OpenIPC-Adaptive-Link.git - 检出ssc30kq分支
git checkout build_for_ssc30kq - 编译最新版本
./build.sh star6e - 使用新构建的二进制
alink_drone - BL-M8812EU2 功率表格更新
$ cat /etc/txprofiles.conf
# <ra - nge> <gi> <mcs> <fecK> <fecN> <bitrate> <gop> <Pwr> <roiQP> <bandwidth> <qpDelta>
999 - 999 long 0 12 15 3332 5.0 61 0,0,0,0 20 -12
1000 - 1150 long 0 12 15 3333 5.0 60 0,0,0,0 20 -12
1151 - 1300 long 1 12 15 6667 5.0 59 12,6,6,12 20 -12
1301 - 1700 long 2 12 15 10000 5.0 58 12,6,6,12 20 -12
1701 - 1950 long 3 12 15 12500 5.0 56 8,4,4,8 20 -12
1951 - 2001 short 3 12 15 14000 5.0 56 4,0,0,4 20 -12
- 配置更新
$cat /etc/alink.conf
### alink_drone settings ###### Allow power settings defined in txprofiles.conf
allow_set_power=1### weights - how much consideration alink_drone puts on gs rssi vs snr
rssi_weight=0.3
snr_weight=0.7### if gs heartbeat lost for x ms, set link low (fallback)
fallback_ms=1000
# keep link low for min x s
hold_fallback_mode_s=3### limit time between any link change and the next
min_between_changes_ms=150
# wait x seconds before increasing link speed
hold_modes_down_s=4### smooth out rssi/snr readings for link increase / decrease
hysteresis_percent=15
hysteresis_percent_down=5
exp_smoothing_factor=0.1
exp_smoothing_factor_down=1.0### allow lost GS packet to request new keyframe
allow_request_keyframe=1
# allow drone driver-tx_dropped to request new keyframe
allow_rq_kf_by_tx_d=1
# limit time between keyframe requests
request_keyframe_interval_ms=100
# request a keyframe at every link changes
idr_every_change=0### enable higher quality in center of image
roi_focus_mode=0### penalise link by this amount per packet above alarm (0 = disabled)
fec_rec_penalty=0
# allow fec below alarm value
fec_rec_alarm=2
# limit penalty to
max_fec_rec_penalty=150
apply_penalty_for_s=1### attempt to help encoder bitrate spikes by strategically lowering FPS when on high resolutions
allow_spike_fix_fps=0### Command templates - Don't change these unless you know what you are doing
powerCommand="iw dev wlan0 set txpower fixed %d"
fpsCommandTemplate="echo 'setfps 0 %d' > /proc/mi_modules/mi_sensor/mi_sensor0"
qpDeltaCommand="curl localhost/api/v1/set?video0.qpDelta=%d"
mcsCommand="wfb_tx_cmd 8000 set_radio -B %d -G %s -S 1 -L 1 -M %d"
bitrateCommand="curl -s 'http://localhost/api/v1/set?video0.bitrate=%d'"
gopCommand="curl -s 'http://localhost/api/v1/set?video0.gopSize=%f'"
fecCommand="wfb_tx_cmd 8000 set_fec -k %d -n %d"
roiCommand="curl -s 'http://localhost/api/v1/set?fpv.roiQp=%s'"
idrCommand="curl localhost/request/idr"
customOSD=&L%d0&F%d&B &C tx&Wc
reboot重启OpenIPC
相关文章:
OpenIPC开源FPV之Adaptive-Link安装
OpenIPC开源FPV之Adaptive-Link安装 1. 源由2. 介绍2.1 天空端安装2.2 地面端安装 3. 问题汇总3.1 安装脚本问题3.2 网络安装问题3.3 非SSC30KQ/SSC338Q硬件3.4 代码疑问 4. 总结5. 后续 1. 源由 鉴于飞行过程,发现一些马赛克现象,且60FPS桌面30FPS的录…...
[杂学笔记]OSI七层模型作用、HTTP协议中的各种方法、HTTP的头部字段、TLS握手、指针与引用的使用场景、零拷贝技术
1.OSI七层模型作用 物理层:负责光电信号的传输,以及将光电信号转化为二进制数据数据链路层:主要负责将收到的二进制数据进一步的封装为数据帧报文。同时因为数据在网络中传递的时候,每一个主机都能够收到报文数据,该层…...
RK3568开发笔记-AD7616调试笔记
目录 前言 一、AD7616介绍 高分辨率 高速采样速率 宽模拟输入范围 集成丰富功能 二、原理图连接 三、设备树配置 四、内核驱动配置 五、AD芯片测试 总结 前言 在嵌入式数据采集领域,将模拟信号精准转换为数字信号至关重要。AD7616 作为一款性能卓越的 16 位模数转换器…...
Unity摄像机与灯光相关知识
一、Inspector窗口 Inspector窗口可以查看和编辑对象的属性以及设置 其中包含各种组件,例如用Cube对象来举例 1.Sphere(Mesh)组件: 用来决定对象的网格属性,例如球体网格为Sphere、立方体网格为Cube 2.Mesh Renderer组件: 用来设置…...
AI前端革新金融风控:ScriptEcho助力高效开发
1. 引言:金融风控的挑战与前端效率需求 在当今快速变化的金融环境中,风险评估和反欺诈已成为金融机构运营的核心。金融风控不仅关乎企业的盈利能力,更直接影响着整个金融体系的稳定。一个强大的风控系统需要能够实时监控、分析并预测潜在的风…...
STM32--SPI通信讲解
前言 嘿,小伙伴们!今天咱们来聊聊STM32的SPI通信。SPI(Serial Peripheral Interface)是一种超常用的串行通信协议,特别适合微控制器和各种外设(比如传感器、存储器、显示屏)之间的通信。如果你…...
CryptoJS库中WordArray对象支持哪些输出格式?除了toString() 方法还有什么方法可以输出吗?WordArray对象的作用是什么?
前言:这里只说js用的CryptoJS库里的相关内容,只用js来进行代码操作和讲解。 这里网上相关的帖子很少,不得已问了很长时间AI 想引用CryptoJS库情况分两种,一种是html引用,另一种是在Nodejs里引用。 一、引用CryptoJS库…...
第六次作业
一.对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。 LVS-NAT模式的优势 配置简单:NAT模式的配置相对容易,无需复杂的网络设置,适合初学者和小型网络环境。 网络架构灵活:由于使用了NAT技术…...
八、Spring Boot:RESTful API 应用
创建第一个 Spring Boot RESTful API 应用 在现代 Web 开发中,RESTful API 是一种非常流行的设计风格,它基于 HTTP 协议,提供了简单、灵活的方式来构建网络应用。Spring Boot 作为一款强大的微服务框架,提供了丰富的工具和支持&a…...
Pytorch实现之混合成员GAN训练自己的数据集
简介 简介:提出一种新的MMGAN架构,使用常见生成器分布的混合对每个数据分布进行建模。由于生成器在多个真实数据分布之间共享,高度共享的生成器(通过混合权重反映)捕获分布的公共方面,而非共享的生成器捕获独特方面。 论文题目:MIXED MEMBERSHIP GENERATIVE ADVERSARI…...
微信小程序网络请求与API调用:实现数据交互
在前几篇文章中,我们学习了微信小程序的基础知识、数据绑定、事件处理以及页面导航与路由。这些知识帮助我们构建了具备基本交互功能的小程序。然而,一个完整的应用通常需要与服务器进行数据交互,例如获取用户信息、提交表单数据等。本文将深入探讨微信小程序的网络请求与AP…...
Cramér-Rao界:参数估计精度的“理论底线”
Cramr-Rao界:参数估计精度的“理论底线” 在统计学中,当我们用数据估计一个模型的参数时,总希望估计结果尽可能精确。但精度有没有一个理论上的“底线”呢?答案是有的,这就是Cramr-Rao界(Cramr-Rao Lower …...
nv docker image 下载与使用命令备忘
1,系统需求 Requirements for GPU Simulation GPU Architectures Volta, Turing, Ampere, Ada, Hopper NVIDIA GPU with Compute Capability 7.0 CUDA 11.x (Driver 470.57.02), 12.x (Driver 525.60.13) Supported Systems CPU architectures x86_64, ARM…...
C#连接sql server
连接时,出现如下提示: ERROR [IM014] [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 原因是odbc的驱动和应用程序的架构不一致。我的odbc如下所示: 显示为64位,而c#程序显…...
汽车智能制造企业数字化转型SAP解决方案总结
一、项目实施概述 项目阶段划分: 蓝图设计阶段主数据管理方案各模块蓝图设计方案下一阶段工作计划 关键里程碑: 2022年6月6日:项目启动会2022年12月1日:系统上线 二、总体目标 通过SAP实施,构建研产供销协同、业财一…...
vue2项目打包后js文件过大, 首次加载缓慢
vue2项目打包后js文件过大, 首次加载缓慢 安装插件 npm i compression-webpack-plugin6.1.1 -D配置vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin)module.exports {configureWebpack: {plugins:[new CompressionWebpackPlugin({filen…...
数据安全_笔记系列06:数据生命周期管理(存储、传输、使用、销毁)深度解析
数据安全_笔记系列06:数据生命周期管理(存储、传输、使用、销毁)深度解析 数据生命周期管理(存储、传输、使用、销毁)详解 数据生命周期管理(Data Lifecycle Management, DLM)是围绕数据从创建…...
机器学习数学基础:32.斯皮尔曼等级相关
斯皮尔曼等级相关教程 一、定义与原理 斯皮尔曼等级相关系数(Spearman’s rank - correlation coefficient),常用 ρ \rho ρ表示,是一种非参数统计量,用于衡量两个变量的等级之间的关联程度。它基于变量的秩次&…...
【AI-39】深度学习框架包含哪些内容
深度学习框架(如 PyTorch、TensorFlow)是用于构建和训练神经网络的工具,它们提供了底层的计算库、优化算法、张量操作等功能。而transformers库是基于这些深度学习框架构建的高级库,它封装了许多预训练模型和相关的工具࿰…...
uniapp h5支付宝支付
第1种,创建个div插入到body中 const div document.createElement(div); div.innerHTML 后端返回的form表单字符串; document.body.appendChild(div); document.forms[0].submit(); div.remove(); 第2种 <template> <view v-html"formAliPay"…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
