基于無人機 RTK 和 yolov8 的目標定位算法

目錄

背景

算法思路

代碼實現

驗證


背景

????????在城市交通巡檢中如何進行車輛違停判斷很重要,一個方法是通過精確坐標判斷車輛中心是否位于違停框中,我們假設無人機坐標已知,并且無人機云臺鏡頭垂直地面朝下,可根據圖像分辨率、無人機參數、無人機坐標、識別目標位置等信息,解算出識別目標的具體坐標。

無人機采用大疆機場 2 自帶的 Matrice3TD 無人機,參數如下:

水平視場角:84 °

圖像分辨率:800 X 600

無人機自帶 RTK ,實時測定無人機當前坐標信息,包括經度緯度相對高度以及航向角

算法思路

????????通過水平視場角和高度計算出影像實際長度,再由實際長度和影像分辨率計算單個柵格長度,再由yolo 目標識別矩形框計算中心柵格坐標,并計算與無人機地面投影點的柵格坐標差,從而計算實際矢量坐標差,再由航向角計算出目標中心最終坐標。

簡要解算:

注意,本算法僅考慮無人機鏡頭垂直朝下的情況!!!

代碼實現

參數定義:

# 參數
Horizontal_view = 84  # 無人機水平視場角
Resolution_X = 800   # X 軸柵格數
Resolution_Y = 600   # Y 軸柵格數
R = 6371000  # 地球半徑(米)

獲取單個像素長度:

def calculate_pixel_length(h):"""計算像素長度:param h: 無人機相對高度(米):return: 像素長度(米)"""# 計算水平視場角的一半half_horizontal_view = Horizontal_view / 2.0# 圖像長度l = 2.0 * h * math.tan(math.radians(half_horizontal_view))distance = l / Resolution_Xreturn distance

可利用水平視場角、分辨率和高度 h 計算

解算目標坐標:

def calculate_target_coordinates(x1, y1, x2, y2, heading_angle, longitude, latitude, h):"""計算目標坐標,僅考慮目標位于北半球、東半球:param x1: 目標左上角 X 軸像素位置:param y1: 目標左上角 Y 軸像素位置:param x2: 目標右下角 X 軸像素位置:param y2: 目標右下角 Y 軸像素位置:param heading_angle: 無人機航向角(度):param longitude: 無人機經度(度):param latitude: 無人機緯度(度):param h: 無人機相對高度(米):return: 目標坐標 (x, y)"""pixel_length = calculate_pixel_length(h)# 目標中心點像素坐標target_x = (x1 + x2) / 2.0target_y = (y1 + y2) / 2.0# 無人機像素中心坐標drone_x = Resolution_X / 2.0drone_y = Resolution_Y / 2.0# 計算相對于中心點的像素位移,yolo 識別輸出圖像的坐標軸向下為 y 軸增加,需反轉,不然后面坐標系無法轉換raster_dx = target_x - drone_xraster_dy = drone_y - target_y# 實際距離vector_dx = raster_dx * pixel_lengthvector_dy = raster_dy * pixel_length# 圖像坐標系轉為地理坐標系,計算地理坐標系的分量,可理解為將圖像坐標系逆時針旋轉到與地理坐標系重合dx = vector_dx * math.cos(math.radians(heading_angle)) - vector_dy * math.sin(math.radians(heading_angle))dy = vector_dx * math.sin(math.radians(heading_angle)) + vector_dy * math.cos(math.radians(heading_angle))# 解算坐標,一緯度約為111km,一經度則還需乘cos(緯度)target_lon = longitude + (180 / math.pi) * (dx / (R * math.cos(latitude)))target_lat = latitude + (180 / math.pi) * (dy / R)# 返回目標坐標return target_lon, target_lat

????????計算出目標相對于中心點的位移后,需要將 y 軸反轉,因為圖像 y 軸正方向是朝下的,與地理坐標系相反,然后再將圖像坐標系作坐標系的旋轉,旋轉到地理坐標系上,從而能計算出目標點位移對于地理坐標系的分量,從而解算目標點坐標。

驗證

if __name__ == '__main__':x, y = calculate_target_coordinates(10, 20, 20, 30, 20, 115.89, 28.68, 5)print(f"Target Coordinates: Longitude={x}, Latitude={y}")

輸出結果:

大家可以自行驗證下,理論上是沒有問題的。

至于調用,在 yolo 識別后,會輸出 bbox 等參數,然后對每個幀循環目標再調用此算法即可。

感謝觀看!!!

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

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

相關文章

go入門 - day1 - 環境搭建

0. 介紹 go語言可以做什么? a. 區塊鏈 b. 分布式/微服務/云原生 c. 服務器/游戲軟件go的優勢 a. 代碼量比C和Java少 b. 編譯速度比Java或者C快上5到6倍,比Scale塊10被 c. 性能比C慢20%,但是比Java、python等快上5到10倍 d. 內存管理和C媲美&a…

【華為OD】MVP爭奪戰(C++、Java、Python)

文章目錄題目描述輸入描述輸出描述示例解題思路算法思路核心步驟代碼實現C實現Java實現Python實現算法要點復雜度分析解題總結題目描述 在星球爭霸籃球賽對抗賽中,最大的宇宙戰隊希望每個人都能拿到MVP,MVP的條件是單場最高分得分獲得者。可以并列所以宇…

Datawhale 2025 AI夏令營 MCP Server Task2

魔搭MCP &Agent賽事(MCP Server開發)/夏令營:動手開發MCP Server學習鏈接:魔搭MCP &Agent賽事(MCP Server開發) - Datawhale Task1回顧 1.task1應用功能 luner_info每日黃歷 這是一個可以獲取某天…

敏捷開發方法全景解析

核心理念:敏捷開發是以快速響應變化為核心的項目管理方法論,通過迭代式交付、自組織團隊和持續反饋,實現高質量軟件的高效交付。其本質是擁抱變化優于遵循計劃,強調"可工作的軟件高于詳盡的文檔"。 一、敏捷核心思想體系 #mermaid-svg-y7iyWsQGVWn3IpEi {font-fa…

Socket到底是什么(簡單來說)

簡單來說: Socket 抽象了網絡通信的復雜底層細節,讓應用程序開發者可以專注于發送和接收數據,而不用去操心數據在網絡上是如何傳輸的。 它就像一個“黑盒子”,你只需要把數據扔進去,或者從里面取數據,至于數…

linux系統mysql性能優化

1、系統最大打開文件描述符數查看限制 ulimit -n更改配置 # 第一步 sudo vim /etc/security/limits.conf* soft nofile 1048576 * hard nofile 1048576# 第二步 sudo vim /etc/sysctl.conffs.file-max 1048576# 第三步(重啟系統) sudo reboot驗證生效 u…

免費的需要嘗試claude code的API安利,截至今天可用(7月13號)

安裝方法放最后(很簡單,但是你得搞定網絡) 注冊如下: 鏈接如下(有詳細說明): 🚀 AnyRouter|Claude Code 免費共享平臺 安裝(windows用戶特殊點&#xff0…

Java 屬性配置文件讀取方法詳解

Java 屬性配置文件讀取方法詳解 一、配置文件基礎概念 1. 配置文件類型對比類型格式優點缺點適用場景Propertieskeyvalue簡單易讀,Java原生支持不支持層級結構簡單配置,JDBC參數XML標簽層級結構結構化強,支持復雜數據類型冗余,解析…

NW728NW733美光固態閃存NW745NW746

美光NW系列固態閃存深度解析:NW728、NW733、NW745與NW746的全方位評測技術架構與核心創新美光NW系列固態閃存(包括NW728、NW733、NW745、NW746)的技術根基源于其先進的G9 NAND架構。該架構通過5納米制程工藝和多層3D堆疊技術,在單…

【面試八股文】2025最新軟件測試面試

一、測試基礎 1、測試策略或測試包括哪些,測試要覆蓋哪些方面 UI、功能、性能、可靠性、易用性、兼容性、安全性、安裝卸載 2、設計測試用例的辦法 等價類、邊界值、錯誤推測法、場景法等設計方法來編寫測試用例的 (1)等價類分為有效等價…

AI軟件出海SEO教程

一、出海SEO核心思路 本地化:內容、技術、用戶體驗全面適應目標市場。關鍵詞策略:圍繞目標用戶的真實搜索習慣做關鍵詞挖掘和布局。內容為王:持續輸出高質量、解決用戶痛點的內容。技術優化:保證網站速度、結構、移動端體驗及安全…

PyVision:基于動態工具的具身智能體

論文地址: [2507.07998v1] PyVision: Agentic Vision with Dynamic Tooling 1. 背景 現有的智能體一般都是通過大模型規劃調用已經預定義好的一些工具(具體來說也就是一些函數)來解決問題。這樣就會導致在針對特征的任務上Agent去解決問題…

Higress 上架 KubeSphere Marketplace,助力企業構建云原生流量入口

隨著企業數字化轉型持續深化,云原生架構正逐漸成為構建現代應用的主流選擇。而服務治理作為云原生落地的核心能力之一,急需更靈活、高效的解決方案。近日,AI 原生的 API 網關 Higress 正式上架 KubeSphere Marketplace,助力用戶輕…

在LC480T上部署xapp1052

實驗環境:LC480T加速卡 開發環境:windows11vivado2020 運行環境:ubuntu22.04 硬件電路:LC480T加速卡(xc7k480tffg1156-2) vivado工程文件下載:https://download.csdn.net/download/xiaolangyangyang/91349686 驅動及應…

TCP的socket編程

TCP客戶端邏輯void Usage(const std::string & process) {std::cout << "Usage: " << process << " server_ip server_port" <<std::endl; } // ./tcp_client serverip serverport int main(int argc, char * argv[]) {if (ar…

【理念●體系】模板規范篇:打造可標準化復用的 AI 項目骨架

【理念●體系】從零打造 Windows WSL Docker Anaconda PyCharm 的 AI 全鏈路開發體系-CSDN博客 【理念●體系】Windows AI 開發環境搭建實錄&#xff1a;六層架構的逐步實現與路徑治理指南-CSDN博客 【理念●體系】路徑治理篇&#xff1a;打造可控、可遷移、可復現的 AI 開…

Skia---漸變色著色器

今天介紹的是實際工作中最常用到的著色器&#xff1a;漸變色著色器。 漸變色著色器是一個從一種顏色平滑的過渡到另一種顏色的效果&#xff0c;漸變色著色器的作用主要是增強圖形的視覺吸引力。 線性漸變 Skia 里的線性漸變色著色器是最簡單的漸變色著色器&#xff0c;它用于…

2025.07.09華為機考真題解析-第二題200分

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 02. 地鐵線路故障預警系統 問題描述 LYA 負責管理一個城市的地鐵網絡系統。地鐵網絡由 n n n

數學建模:非線性規劃:凸規劃問題

一、定義凸集定義??&#xff1a;設Ω是n維歐氏空間的一點集&#xff0c;若任意兩點x?∈Ω&#xff0c;x?∈Ω&#xff0c;其連線上的所有點αx?(1-α)x?∈Ω&#xff0c;(0≤α≤1)&#xff0c;則稱Ω為凸集。??凸函數定義??&#xff1a;給定函數f(x)(x∈D?R?)&…

ISIS | 廣播網絡中的 ISIS 偽節點 LSP

注&#xff1a;本文為 “ISIS | 偽節點 LSP” 相關合輯。 英文引文&#xff0c;機翻未校。 中文引文&#xff0c;略作重排。 如有內容異常&#xff0c;請看原文。 ISIS in Broadcast Network and Pseudonode LSP 廣播網絡中 的 ISIS 偽節點 LSP ISIS in broadcast network is…