最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深入Originbot:PID人臉追蹤

2023-03-24 10:36 作者:古月居GYH  | 我要投稿

1.前言

OriginBot小車 基于?旭日X3pi?和?tros??開發(fā),為了能夠編寫出更優(yōu)秀的 'App' 釋放小車的潛能,我們需要熟讀?旭日X3pi?和?tros?用戶手冊以便更好地理解本文內(nèi)容;

在用戶手冊中,需重點了解以下內(nèi)容:

  • x3派面向生態(tài)開發(fā)者的產(chǎn)品定位,以及如何通過?Ai工具鏈?與?機器人開發(fā)平臺(tros)?發(fā)揮5Tops算力;

  • x3派系統(tǒng)安裝、配置,了解 x3派 的硬件接口,體驗基礎(chǔ)圖像采集和Ai推理功能;

  • 了解 tros 基于 ros 新增的功能模塊,例如 Hobot Sensor(機器人常用傳感器)、Hobot Codec(視頻編碼器)、Hobot Render(Web端可視化)等;

  • 體驗 tros 圖像采集->圖像編解碼->圖像展示 功能;

  • 了解 Boxs 算法倉庫 和 Apps 應(yīng)用實例;

  • 學(xué)習(xí)?小車人體跟隨(body_tracking)?App 源碼;

您可以通過 '地平線程序員奶爸' 的教程來深入學(xué)習(xí) tros 手勢控制app和人體追蹤app:

開發(fā)者說 | 地平線程序員奶爸帶你玩轉(zhuǎn)機器人開發(fā)平臺 —— 第一期 手勢控制(附直播課視頻)

開發(fā)者說 | 地平線程序員奶爸帶你玩轉(zhuǎn)機器人開發(fā)平臺 —— 第二期 人體跟隨(附直播課視頻)


2.白話

說白了,旭日x3pi為我們機器人開發(fā)提供了硬件平臺,tros為我們機器人開發(fā)提供了軟件平臺,二者需結(jié)合起來一起使用;

硬件平臺為我們提供了很高的算力,而軟件平臺則為發(fā)揮硬件的潛能提供了豐富的 demo;

我們可以借助這些demo(Boxs和Apps),高效、便捷(復(fù)制、粘貼)的進行機器人開發(fā),打造具有競爭力的智能機器人產(chǎn)品。

3.創(chuàng)建人臉追蹤功能包

通過ssh連接上OriginBot小車,cd進 /userdata/dev_ws/src/originbot 目錄,創(chuàng)建 originbot_face_tracking 功能包:

這里的命名規(guī)則與Originbot其他功能包一致

4 編寫Launch文件

在功能包路徑下新建 launch 目錄,編寫 ob_face_tracking.launch.py 文件欲實現(xiàn)的系統(tǒng)框圖如下:

其中橢圓形框內(nèi)為Node名,矩形框內(nèi)為topic名。

節(jié)點名與功能對照下圖:

  • 傳感節(jié)點使用了 tros Hobot Ssnros組件中的 /mipi_cam Node,參數(shù)指定使用 GC4663 攝像頭,發(fā)布的圖片格式和分辨率可以直接用于算法推理,其中通過共享內(nèi)存的方式發(fā)布圖片,可以極大地降低系統(tǒng)負(fù)載和傳輸延遲。

  • 感知節(jié)點使用了 tros 中的 Boxs 算法倉庫,訂閱 Hobot Sensor(mipi_cam Node)發(fā)布的圖像數(shù)據(jù)后,通過視覺算法進行推理,檢測出人體關(guān)鍵部位;

  • 人體檢測和跟蹤算法Node 訂閱 Hobot Senso r發(fā)布的圖像消息,利用 BPU 處理器進行AI推理,發(fā)布包含人體、人頭、人臉、人手框和人體關(guān)鍵點檢測結(jié)果的AI msg,并通過多目標(biāo)跟蹤(multi-target tracking,即MOT)功能,實現(xiàn)檢測框的跟蹤和ID分配。

  • 交互節(jié)點,人體檢測結(jié)果訂閱節(jié)點 /ai_msg_sub_node,訂閱人體檢測和跟蹤節(jié)點發(fā)布的 Ai msg 消息,執(zhí)行跟蹤策略。根據(jù)人臉在畫面中的位置通過比例控制器計算出小車旋轉(zhuǎn)角度;

  • 控制節(jié)點/ob_tracking_Robot_CmdVel,發(fā)布消息名為'/cmd_vel'的命令控制小車做旋轉(zhuǎn)運動;

  • WEB展示,由 /hobot_codec 將 /mipi_cam 發(fā)布的 ’nv12‘ 格式的圖像轉(zhuǎn)換為 ’jpeg‘ 格式,以便 /websocket 展示。同時, /websocket 節(jié)點訂閱 /hobot_mono2d_body_detection 消息用于圖像渲染;

ob_face_tracking.launch.py 文件的代碼如下:

5 功能包的實現(xiàn)

功能包中的 py 文件如下:

功能包程序設(shè)計如下:

略縮圖如下:

main.py 代碼如下:

smart_subscriber.py 代碼如下:

face_tracking.py 代碼如下:

6 程序設(shè)計難點

難點1:Python 多線程 Queue:

Python Queue是線程安全的不同于C++,因此可以直接使用get()、put() 而不需要使用鎖Lock();

難點2:PID人臉追蹤器:

  • PID(proportion integration differentiation)?控制器只了P(proportion),因此為比例控制器,類似于一次函數(shù);

  • PID(5.0,?0.0,?0.0,?setpoint=0)? ?# P 經(jīng)過調(diào)試后被設(shè)置為 5,setpoint 目標(biāo)點為 0,即 NDC 空間下圖像的中點;

  • pid.sample_time = 0.1? ? ? ? ? ? ? # 設(shè)置采樣率可以簡化 PID 的計算,推薦設(shè)置;采樣率與函數(shù)的調(diào)用頻率無關(guān);

Q: 什么是 NDC 空間?

在計算機圖像中,NDC空間是指歸一化設(shè)備坐標(biāo)(Normalized Device Coordinates)空間。

攝像頭的分辨率各不相同,因此產(chǎn)生了 NDC,它可以將輸入的圖像歸一化至 [-1 ,1]區(qū)間方便計算。err =?float(((rect.x_offset + rect.width /?2) /?self.track_cfg_.img_width -?0.5) *?2)本例算法中,在NDC空間下,0.5即為圖像中心點。

您可以代入真實的人臉坐標(biāo),進行計算,以便理解算法;

參考:

  • 奇樂編程學(xué)院 - 人臉追蹤

  • 阿凱愛玩機 - 云臺人臉追蹤

難點3:Ai msg 消息的解析

通信接口在 \opt\tros\share\ai_msgs\msg\ 路徑下:

PerceptionTargets.msg 接口如下:

Target.msg 接口如下:

Roi.msg 接口如下:

BUG:經(jīng)解析后,筆者認(rèn)為這里有一個數(shù)據(jù)結(jié)構(gòu)錯誤,但不影響程序使用;

PerceptionTargets.msg 中有一個 Target[] targets 數(shù)組,其中這個 target 的類型可以是人、車、動物、物體,這個 target 下有一個 Roi[] rois,這個 Roi 包含人體框、人頭框、人臉框、人手框多個元素;
然而在實際使用中發(fā)現(xiàn):

rois[]數(shù)組中只包含一個元素,數(shù)據(jù)偽代碼如下:

我認(rèn)為正確的數(shù)據(jù)結(jié)構(gòu)如下:

正確 √

錯誤 ?

6 編譯運行

ssh連接小車,安裝 py 功能包依賴庫simple_pid:

1、使用 pip 安裝 simple_pid 庫:

2、執(zhí)行功能包根目錄下的 .\install.sh 腳本自動安裝依賴:

cd 進 /userdata/dev_ws/ 目錄,執(zhí)行如下命令編譯功能包;

使用 Launch 文件啟動人臉追蹤功能:

啟動小車底盤:

7 執(zhí)行效果



深入Originbot:PID人臉追蹤的評論 (共 條)

分享到微博請遵守國家法律
武功县| 嫩江县| 金堂县| 平湖市| 石泉县| 宜兰县| 长阳| 汉川市| 睢宁县| 平昌县| 桦甸市| 衡阳市| 夏邑县| 南木林县| 毕节市| 晋城| 邻水| 恩平市| 杂多县| 巫溪县| 张掖市| 海口市| 台州市| 独山县| 开化县| 乐业县| 陆丰市| 鹤壁市| 乳山市| 博白县| 嫩江县| 益阳市| 会东县| 江山市| 衢州市| 万荣县| 四会市| 万州区| 巴南区| 淮滨县| 喜德县|