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

基于這些,我們做了一個兼容的版本,供大家使用,操作步驟如下:

  1. 更新最新的OpenIPC固件(晚于2025-02-15)
  2. 下載代碼git clone https://github.com/SnapDragonfly/OpenIPC-Adaptive-Link.git
  3. 檢出ssc30kq分支git checkout build_for_ssc30kq
  4. 編譯最新版本./build.sh star6e
  5. 使用新構建的二進制alink_drone
  6. 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
  1. 配置更新
$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
  1. reboot重啟OpenIPC

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70764.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70764.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70764.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解析第十一頁

多選707、如圖所示組網,SWA、SWB、SWC、SWD運行RSTP,則以下說法正確的是? A、可以在SWB的GE0/0/2端口開啟邊緣端口,讓連接終端的接口快速進入轉發狀態 B、邊緣端口收到BPDU之后會重新參與生成樹的計算 C、可以在SWC的GEO/0/2端口開啟邊緣端口,讓連接終端的接口快速進入轉…

禾邁電力電子嵌入式面經和參考答案

CMakeLists 怎么寫? CMakeLists.txt 是 CMake 構建系統的配置文件,用于描述項目的構建規則和依賴關系。以下是一個簡單的 CMakeLists.txt 示例及基本寫法說明。 首先,指定 CMake 的最低版本要求,例如cmake_minimum_required(VERSION 3.10)。 然后,定義項目名稱,如project…

我的AI工具箱Tauri版-FluxCharacterGeneration參考圖像生成人像手辦(Flux 版)

本教程基于自研的AI工具箱Tauri版進行ComfyUI工作流FluxCharacterGeneration參考圖像生成人像手辦&#xff08;Flux 版&#xff09;。 我的AI工具箱Tauri版 - FluxCharacterGeneration參考圖像生成人像手辦&#xff08;Flux版&#xff09; 基于先進的FLUX模型&#xff0c;通過…

什么是DrawCall?DrawCall為什么會影響游戲運行效率?如何減少DrawCall?

目錄 1 什么是DrawCall&#xff1f; 2 DrawCall為什么會影響游戲運行效率&#xff1f; 3 如何減少 DrawCall&#xff1f;&#xff08;結合性能分析工具&#xff09; 1 什么是DrawCall&#xff1f; DrawCall&#xff08;繪制調用&#xff09; 是 GPU 的一個指令&#xff0c…

深入解析提示詞:從基礎到結構化應用

在人工智能蓬勃發展的當下&#xff0c;提示詞&#xff08;Prompt&#xff09;扮演著至關重要的角色。無論是在與聊天機器人交流&#xff0c;還是驅動復雜智能體完成任務&#xff0c;精準且高效的提示詞都能起到事半功倍的效果。本文將帶你全面了解提示詞&#xff0c;深入探索結…

【前端基礎】Day 2 HTML

目錄 1.表格標簽 2.列表標簽 3.表單標簽 4.綜合案例 5.查閱文檔 1.表格標簽 <body><table align"center" border"1" cellpadding"0" cellspacing"0" width"500" height"100"><thead> …

R與RStudio簡介及安裝

目錄 一、R與RStudio關系 二、R簡介 2.1. 發展歷史 2.2. R語言特點 三、安裝指南 3.1 R安裝指南 3.2 R studio安裝指南 一、R與RStudio關系 R是統計領域廣泛使用的工具&#xff0c;屬于GNU系統的一個自由、免費、源代碼開放的軟件&#xff0c;是 用于統計計算和統計繪圖…

20分鐘 Bash 上手指南

文章目錄 bash 概念與學習目的第一個 bash 腳本bash 語法變量的使用位置參數管道符號&#xff08;過濾條件&#xff09;重定向符號條件測試命令條件語句case 條件分支Arrayfor 循環函數exit 關鍵字 bash 腳本記錄歷史命令查詢文件分發內容 bash 概念與學習目的 bash&#xff0…

django校園互助平臺~源碼

博主介紹&#xff1a;?程序猿徐師兄、8年大廠程序員經歷。全網粉絲15w、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;…

易基因:RNA甲基化修飾和R-loop的交叉調控:從分子機制到臨床意義|深度綜述

大家好&#xff0c;這里是專注表觀組學十余年&#xff0c;領跑多組學科研服務的易基因。 R-loop&#xff08;RNA-DNA雜合結構&#xff09;是轉錄調控、DNA復制和修復等關鍵細胞過程的重要組成部分。但R-loop異常積累可能會破壞基因組完整性&#xff0c;從而導致多種疾病的發生…

多智能體框架

多個不同的角色的Agent&#xff0c;共同完成一份復雜的工作。由一個統籌管理的智能體&#xff0c;自主規劃多個智能體分別做什么&#xff0c;以及執行的順序。 agent 應該包含的屬性 執行特定任務 根據其角色和目標做出決策 能夠使用工具來實現目標 與其他代理溝通和協作 保留…

wifi5和wifi6,WiFi 2.4G、5G,五類網線和六類網線,4G和5G的區別

wifi5和wifi6的區別 是Wi-Fi 5和Wi-Fi 6的選擇與路由器密切相關。路由器是創建和管理無線網絡的設備,它決定了網絡的類型和性能。具體來說: 路由器的標準支持:路由器可以支持不同的Wi-Fi標準,如Wi-Fi 5(802.11ac)和Wi-Fi 6(802.11ax)。支持Wi-Fi 6的路由器能夠提供更高…

Metal 學習筆記四:頂點函數

到目前為止&#xff0c;您已經完成了 3D 模型和圖形管道。現在&#xff0c;是時候看看 Metal 中兩個可編程階段中的第一個階段&#xff0c;即頂點階段&#xff0c;更具體地說&#xff0c;是頂點函數。 著色器函數 定義著色器函數時&#xff0c;可以為其指定一個屬性。您將在本…

什么是零拷貝?

零拷貝是一種優化技術&#xff0c;用于減少數據在計算機系統中的拷貝次數&#xff0c;從而提高性能和效率。在傳統的數據傳輸中&#xff0c;數據通常會在多個緩沖區之間進行多次拷貝&#xff0c;而零拷貝技術通過減少這些不必要的拷貝操作&#xff0c;顯著降低了CPU和內存的開銷…

【LeetCode20】有效的括號

題目描述 給定一個只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判斷字符串是否有效。 有效字符串需滿足&#xff1a; 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 每…

算法訓練(leetcode)二刷第三十七天 | *300. 最長遞增子序列、674. 最長連續遞增序列、*718. 最長重復子數組

刷題記錄 *300. 最長遞增子序列674. 最長連續遞增序列基礎解法&#xff08;非動規&#xff09;動態規劃 718. 最長重復子數組滾動數組 *300. 最長遞增子序列 leetcode題目地址 dp數組含義&#xff1a; dp[i]表示以nums[i]結尾的最長遞增子序列長度&#xff0c;即以nums[i]結尾…

Elasticsearch 相關面試題

1. Elasticsearch基礎 Elasticsearch是什么&#xff1f; Elasticsearch是一個分布式搜索引擎&#xff0c;基于Lucene實現。 Mapping是什么&#xff1f;ES中有哪些數據類型&#xff1f; Mapping&#xff1a;定義字段的類型和屬性。 數據類型&#xff1a;text、keyword、integer、…

TCP/IP的分層結構、各層的典型協議,以及與ISO七層模型的差別

1. TCP/IP的分層結構 TCP/IP模型是一個四層模型&#xff0c;主要用于網絡通信的設計和實現。它的分層結構如下&#xff1a; (1) 應用層&#xff08;Application Layer&#xff09; 功能&#xff1a;提供應用程序之間的通信服務&#xff0c;處理特定的應用細節。 典型協議&am…

pycharm技巧--鼠標滾輪放大或縮小 Pycharm 字體大小

1、鼠標滾輪調整字體 設置 Ctrl 鼠標滾輪調整字體大小 備注&#xff1a; 第一個是活動窗口&#xff0c;即縮放當前窗口 第二個是所有編輯器窗口&#xff0c;即縮放所有窗口的字體 2、插件 漢化包&#xff1a; Chinese Simplified 包

硬件工程師入門教程

1.歐姆定律 測電壓并聯使用萬用表測電流串聯使用萬用表&#xff0c;紅入黑出 2.電阻的阻值識別 直插電阻 貼片電阻 3.電阻的功率 4.電阻的限流作用 限流電阻阻值的計算 單位換算關系 5.電阻的分流功能 6.電阻的分壓功能 7.電容 電容簡單來說是兩塊不連通的導體加上中間的絕…