0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AI模型部署邊緣設(shè)備的奇妙之旅:視覺巡線

福州市凌睿智捷電子有限公司 ? 2025-03-31 09:56 ? 次閱讀

1、項(xiàng)目簡介

在本次項(xiàng)目中,我們將采用LockAI視覺攝像頭與OpenCV-C++技術(shù)相結(jié)合的方式來實(shí)現(xiàn)特定場地內(nèi)的視覺巡線任務(wù)。

控制方面,我們選用了小凌派-RK2206開發(fā)板,該開發(fā)板運(yùn)行OpenHarmony請諒解操作系統(tǒng),并通過串口通訊與LockAI進(jìn)行高效的數(shù)據(jù)交互?;跀z像頭傳輸回來的目標(biāo)坐標(biāo)數(shù)據(jù),我們將運(yùn)用PID算法精確地對智能車的行駛進(jìn)行調(diào)控。這樣,不僅能夠確保智能車沿著預(yù)定線路穩(wěn)定行駛,還能通過實(shí)時數(shù)據(jù)分析優(yōu)化行車路徑,提升整體運(yùn)行效率和穩(wěn)定性。整個方案集成了先進(jìn)的圖像識別技術(shù)和精準(zhǔn)的控制算法,為實(shí)現(xiàn)自動化巡線提供了可靠的技術(shù)保障。

2、基本知識

2.1、PID算法簡介

PID算法,即比例-積分-微分(Proportional-Integral-Derivative)控制器,是一種在工業(yè)控制中廣泛應(yīng)用的反饋控制機(jī)制。它通過計(jì)算設(shè)定值(目標(biāo)值)與實(shí)際值之間的誤差,并基于此誤差進(jìn)行調(diào)節(jié),以達(dá)到穩(wěn)定系統(tǒng)輸出的目的。其原理如下:

比例(P)控制:比例控制是根據(jù)當(dāng)前誤差值(即設(shè)定值與實(shí)際值之差)直接按比例調(diào)整輸出。它的作用是快速響應(yīng)誤差,減少誤差幅度。比例系數(shù)Kp越大,調(diào)節(jié)的速度越快,但是過大的Kp會導(dǎo)致系統(tǒng)振蕩。

積分(I)控制:積分控制是對過去所有誤差的累積進(jìn)行調(diào)節(jié),其目的是消除靜差(即系統(tǒng)穩(wěn)定后仍然存在的誤差)。積分項(xiàng)通過累加過去的誤差來影響控制量,使得即使誤差很小,只要持續(xù)存在,也會逐漸增加控制量,直到誤差被完全消除。積分系數(shù)Ki需要謹(jǐn)慎選擇,因?yàn)樘叩姆e分作用可能導(dǎo)致系統(tǒng)不穩(wěn)定。

微分(D)控制:微分控制考慮的是誤差的變化率,用于預(yù)測誤差的未來趨勢,從而提前采取措施減小誤差。微分項(xiàng)能夠幫助抑制超調(diào)現(xiàn)象,提高系統(tǒng)的響應(yīng)速度和平穩(wěn)性。然而,由于它對噪聲較為敏感,因此實(shí)際應(yīng)用中往往需要慎重設(shè)置微分系數(shù)Kd。

在實(shí)際的控制過程中我們采用離散型PID控制。在離散時間系統(tǒng)中,假設(shè)采樣周期為TT,則離散型PID控制器的輸出u(k)u(k)可以表示為: u(k)=Kpe(k)+Ki∑i=0kTe(i)+Kde(k)?e(k?1)Tu(k)=Kpe(k)+K**ii=0kTe(i)+KdT**e(k)?e(k?1) 其中,

KpK**p、KiK**i和 KdK**d分別為比例、積分和微分系數(shù)。

e(k)e(k) 代表第kk次采樣時的誤差,即設(shè)定值與實(shí)際值之差。

TT是采樣時間間隔。

為了更有效地實(shí)現(xiàn)積分項(xiàng)的計(jì)算,通常采用增量式PID算法,其表達(dá)式為: Δu(k)=u(k)?u(k?1)=Kp[e(k)?e(k?1)]+KiTe(k)+Kde(k)?2e(k?1)+e(k?2)TΔu(k)=u(k)?u(k?1)=K**p[e(k)?e(k?1)]+KiT**e(k)+KdT**e(k)?2e(k?1)+e(k?2)

這樣做的好處在于,只需保存最近幾次的誤差值以及上一次的控制量,就可以計(jì)算出當(dāng)前的控制增量Δu(k)Δu(k),從而減少了存儲需求,并且易于編程實(shí)現(xiàn)。

2.2、LockAI簡介

凌智視覺模塊(Lockzhiner Vision Module) 是福州市凌睿智捷電子有限公司聯(lián)合百度飛槳傾力打造的一款高集成度人工智能視覺模塊,專為邊緣端人工智能和機(jī)器視覺應(yīng)用而設(shè)計(jì)。讀者如有興趣,可以參考Gitee倉庫(LockAI Gitee倉)

3、實(shí)驗(yàn)內(nèi)容

3.1、視覺代碼實(shí)現(xiàn)

本項(xiàng)目是基于攝像頭的視覺檢測系統(tǒng),主要功能包括實(shí)時捕獲視頻流、提取感興趣區(qū)域(ROI)、通過 HSV 閾值分割檢測黑色區(qū)域,并計(jì)算目標(biāo)質(zhì)心位置以確定水平偏移量。系統(tǒng)通過串口將質(zhì)心 X 坐標(biāo)發(fā)送給外部設(shè)備(如小車控制器),同時在圖像上繪制 ROI 邊框和質(zhì)心位置,并將處理結(jié)果發(fā)送至編輯模塊進(jìn)行顯示,便于調(diào)試和驗(yàn)證。代碼采用模塊化設(shè)計(jì),支持動態(tài)調(diào)整攝像頭分辨率,具備良好的靈活性和擴(kuò)展性,適用于智能車視覺巡線、目標(biāo)跟蹤等場景。為進(jìn)一步提升性能,建議增強(qiáng)異常處理機(jī)制、優(yōu)化算法效率,并將關(guān)鍵參數(shù)提取到配置文件中以便于調(diào)整和適配不同環(huán)境。整體而言,該系統(tǒng)實(shí)現(xiàn)了實(shí)時性、可視化與模塊化的結(jié)合,為嵌入式視覺應(yīng)用提供了可靠的技術(shù)支持。

#include#include#include#include#include#include#includeintmain(intargc,char*argv[]){ // 設(shè)置串口波特率為115200 lockzhiner_vision_module::USART1 usart; if(!usart.Open(115200)) { std::cout <> temp_mat;// 獲取新的一幀 if(temp_mat.empty()) { std::cerr <(cx + roi_rect.x),static_cast(cy + roi_rect.y)),5, cv::Scalar(0,255,0),-1);// 綠色圓點(diǎn)表示質(zhì)心位置 // 輸出質(zhì)心的X坐標(biāo) std::cout <

3.2、PID代碼實(shí)現(xiàn)

本項(xiàng)目主要通過串口與 LockAI 攝像頭進(jìn)行通信,并在串口任務(wù)中解析出目標(biāo)的關(guān)鍵數(shù)據(jù),例如目標(biāo)的質(zhì)心坐標(biāo)、目標(biāo)檢測區(qū)域的大小等信息。這些數(shù)據(jù)被用作 PID 控制器的反饋輸入,進(jìn)而計(jì)算出 PID 的輸出值。小凌派開發(fā)板基于該輸出值實(shí)現(xiàn)了麥克納姆輪的運(yùn)動解算。只需輸入期望的 X 軸、Y 軸以及旋轉(zhuǎn) W 軸的速度,即可通過解算函數(shù)計(jì)算出四個輪子對應(yīng)的速度。各軸的速度會自動疊加,確保運(yùn)動的平滑性與精確性。將 PID 的輸出結(jié)果輸入到麥克納姆輪的解算函數(shù)中,即可實(shí)現(xiàn)對小車車身姿態(tài)和運(yùn)動的精準(zhǔn)控制。

floatPID_Calc(PidTypeDef *pid,floatref,floatset){ if(pid == NULL) { return0.0f; } pid->error[2] = pid->error[1]; pid->error[1] = pid->error[0]; pid->set=set; pid->fdb =ref; pid->error[0] =set-ref; if(pid->mode == PID_POSITION) { pid->Pout = pid->Kp * pid->error[0]; pid->Iout += pid->Ki * pid->error[0]; pid->Dbuf[2] = pid->Dbuf[1]; pid->Dbuf[1] = pid->Dbuf[0]; pid->Dbuf[0] = (pid->error[0] - pid->error[1]); pid->Dout = pid->Kd * pid->Dbuf[0]; LimitMax(pid->Iout, pid->max_iout); pid->out= pid->Pout + pid->Iout + pid->Dout; LimitMax(pid->out, pid->max_out); } elseif(pid->mode == PID_DELTA) { pid->Pout = pid->Kp * (pid->error[0] - pid->error[1]); pid->Iout = pid->Ki * pid->error[0]; pid->Dbuf[2] = pid->Dbuf[1]; pid->Dbuf[1] = pid->Dbuf[0]; pid->Dbuf[0] = (pid->error[0] -2.0f* pid->error[1] + pid->error[2]); pid->Dout = pid->Kd * pid->Dbuf[0]; pid->out+= pid->Pout + pid->Iout + pid->Dout; LimitMax(pid->out, pid->max_out); } returnpid->out;}voidUserControl(){ WheelControl wheelControls[WHEELS_COUNT]; floatvx =0;// X方向線速度,單位:m/s floatvy =0;// Y方向線速度,單位:m/s floatw =0; // 角速度,單位:rad/s CtrolInit(); for(;;) { // PID_Calc(&PWMPid[0], x, 320); // PID_Calc(&PWMPid[0], x, 320); if(FirstRec ==1) { // 檢測用 // PID_Calc(&PWMPid[2], x, 240); // PID_Calc(&PWMPid[1], s, 10000); // calculateWheelPWMSpeeds(-PWMPid[1].out, vy, PWMPid[2].out, wheelControls); // 循跡用 PID_Calc(&PWMPid[2], x,240); calculateWheelPWMSpeeds(-5, vy, PWMPid[2].out, wheelControls); // 設(shè)置方向GPIO LzGpioSetVal(GPIO0_PA5, wheelControls[0].direction);// 右前 LzGpioSetVal(GPIO0_PA3, wheelControls[3].direction);// 右后 LzGpioSetVal(GPIO0_PA1, wheelControls[2].direction);// 左后 LzGpioSetVal(GPIO0_PA0, wheelControls[1].direction);// 左前 // 啟動PWM IoTPwmStart(RU_B4, wheelControls[0].pwm,1000);// 右前 IoTPwmStart(RD_B6, wheelControls[3].pwm,1000);// 右后 IoTPwmStart(LD_C7, wheelControls[2].pwm,1000);// 左后 IoTPwmStart(LU_C3, wheelControls[1].pwm,1000);// 左前 } LOS_Msleep(1); }}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • PID
    PID
    +關(guān)注

    關(guān)注

    37

    文章

    1480

    瀏覽量

    87451
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    34405

    瀏覽量

    275670
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5563

    瀏覽量

    102683
收藏 0人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    邊緣AI應(yīng)用越來越普遍,AI模型邊緣端如何部署

    模型在端側(cè)的部署也成了業(yè)界關(guān)注的焦點(diǎn)。 ? 如何把AI 模型邊緣部署 ? 首先得軟硬件適配
    的頭像 發(fā)表于 07-04 00:11 ?3395次閱讀
    <b class='flag-5'>邊緣</b><b class='flag-5'>AI</b>應(yīng)用越來越普遍,<b class='flag-5'>AI</b><b class='flag-5'>模型</b>在<b class='flag-5'>邊緣</b>端如何<b class='flag-5'>部署</b>?

    邊緣側(cè)部署模型優(yōu)勢多!模型量化解決邊緣設(shè)備資源限制問題

    電子發(fā)燒友網(wǎng)報道(文/李彎彎)大模型邊緣部署是將大模型部署邊緣
    的頭像 發(fā)表于 01-05 00:06 ?4953次閱讀

    邊緣AI實(shí)現(xiàn)的核心環(huán)節(jié):硬件選擇和模型部署

    電子發(fā)燒友網(wǎng)綜合報道 邊緣AI的實(shí)現(xiàn)原理是將人工智能算法和模型部署到靠近數(shù)據(jù)源的邊緣設(shè)備上,使這
    發(fā)表于 05-26 07:09 ?837次閱讀

    AI模型部署邊緣設(shè)備奇妙之旅:如何實(shí)現(xiàn)手寫數(shù)字識別

    處理,而不必傳輸?shù)酵獠糠?wù)器,這有助于更好地保護(hù)用戶隱私和數(shù)據(jù)安全。 然而,邊緣計(jì)算也帶來了獨(dú)特的挑戰(zhàn),特別是在資源受限的嵌入式系統(tǒng)中部署復(fù)雜的AI模型時。為了確保神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 12-06 17:20

    AI模型部署邊緣設(shè)備奇妙之旅:如何在邊緣部署OpenCV

    的能力。 本文章主要講述如何在邊緣設(shè)備上使用OpenCV。本次使用的邊緣設(shè)備是凌智電子開發(fā)的凌智視覺模塊,具體如下: 如對該
    發(fā)表于 12-14 09:31

    AI模型部署邊緣設(shè)備奇妙之旅:目標(biāo)檢測模型

    以及邊緣計(jì)算能力的增強(qiáng),越來越多的目標(biāo)檢測應(yīng)用開始直接在靠近數(shù)據(jù)源的邊緣設(shè)備上運(yùn)行。這不僅減少了數(shù)據(jù)傳輸延遲,保護(hù)了用戶隱私,同時也減輕了云端服務(wù)器的壓力。然而,在邊緣
    發(fā)表于 12-19 14:33

    AI模型部署邊緣設(shè)備奇妙之旅邊緣設(shè)備的局域網(wǎng)視頻流傳輸方案

    代碼展示了如何使用Python內(nèi)置的socket庫來實(shí)現(xiàn)一個簡單的TCP回顯服務(wù)器和客戶端。 3 邊緣設(shè)備實(shí)現(xiàn) 我此次使用的設(shè)備是凌智視覺模塊,但是該
    發(fā)表于 01-04 14:32

    邊緣設(shè)備奇妙之旅:在小凌派-RK2206上部署AI模型來實(shí)現(xiàn)視覺

    1、項(xiàng)目簡介 在本次項(xiàng)目中,我們將采用LockAI視覺攝像頭與OpenCV-C++技術(shù)相結(jié)合的方式來實(shí)現(xiàn)特定場地內(nèi)的視覺任務(wù)。 控制方面,我們選用了小凌派-RK2206開發(fā)板,該開
    發(fā)表于 03-31 10:58

    Deepseek海思SD3403邊緣計(jì)算AI產(chǎn)品系統(tǒng)

    海思SD3403邊緣計(jì)算AI框架,提供了一套開放式AI訓(xùn)練產(chǎn)品工具包,解決客戶低成本AI系統(tǒng),針對差異化AI 應(yīng)用場景,自己采集樣本數(shù)據(jù),進(jìn)
    發(fā)表于 04-28 11:05

    EdgeBoard FZ5 邊緣AI計(jì)算盒及計(jì)算卡

    科技攜手百度,推出系列高性能及高性價比EdgeBoard 邊緣AI計(jì)算卡/計(jì)算盒,助力AI項(xiàng)目落地。可靈活適配海量的且不斷迭代的AI模型,并
    發(fā)表于 08-31 14:12

    嵌入式邊緣AI應(yīng)用開發(fā)指南

    保駕護(hù)航。下面讓我們來了解如何不借助手動工具或手動編程來選擇模型、隨時隨地訓(xùn)練模型并將其無縫部署到TI處理器上,從而實(shí)現(xiàn)硬件加速推理。圖1: 邊緣A
    發(fā)表于 11-03 06:53

    嵌入式AI邊緣智能系統(tǒng)用,加速機(jī)器人&amp;機(jī)器視覺設(shè)備部署 ——2022研華工業(yè)物聯(lián)網(wǎng)在線論壇

    邊緣智能系統(tǒng)包含了邊緣AI + 邊緣計(jì)算,在設(shè)備側(cè)進(jìn)行推理和部署深度學(xué)習(xí)
    發(fā)表于 07-07 11:31 ?774次閱讀
    嵌入式<b class='flag-5'>AI</b><b class='flag-5'>邊緣</b>智能系統(tǒng)用,加速機(jī)器人&amp;機(jī)器<b class='flag-5'>視覺</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>部署</b> ——2022研華工業(yè)物聯(lián)網(wǎng)在線論壇

    AI模型部署邊緣設(shè)備奇妙之旅:如何在邊緣部署OpenCV

    1簡介Opencv(OpenSourceComputerVisionLibrary)是一個基于開源發(fā)行的跨平臺計(jì)算機(jī)視覺庫,它實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法,已成為計(jì)算機(jī)視覺領(lǐng)域最有
    的頭像 發(fā)表于 12-14 09:10 ?815次閱讀
    <b class='flag-5'>AI</b><b class='flag-5'>模型</b><b class='flag-5'>部署</b><b class='flag-5'>邊緣</b><b class='flag-5'>設(shè)備</b>的<b class='flag-5'>奇妙</b><b class='flag-5'>之旅</b>:如何在<b class='flag-5'>邊緣</b>端<b class='flag-5'>部署</b>OpenCV

    AI模型部署邊緣設(shè)備奇妙之旅:目標(biāo)檢測模型

    1簡介人工智能圖像識別是人工智能領(lǐng)域的一個重要分支,它涉及計(jì)算機(jī)視覺、深度學(xué)習(xí)、機(jī)器學(xué)習(xí)等多個領(lǐng)域的知識和技術(shù)。圖像識別主要是處理具有一定復(fù)雜性的信息。計(jì)算機(jī)采用與人類類似的圖像識別原理,即對圖像
    的頭像 發(fā)表于 12-19 14:12 ?1218次閱讀
    <b class='flag-5'>AI</b><b class='flag-5'>模型</b><b class='flag-5'>部署</b><b class='flag-5'>邊緣</b><b class='flag-5'>設(shè)備</b>的<b class='flag-5'>奇妙</b><b class='flag-5'>之旅</b>:目標(biāo)檢測<b class='flag-5'>模型</b>

    AI模型部署邊緣設(shè)備奇妙之旅邊緣設(shè)備的局域網(wǎng)視頻流傳輸方案

    1、簡介隨著物聯(lián)網(wǎng)(IoT)和智能設(shè)備的快速發(fā)展,邊緣計(jì)算技術(shù)已成為高效數(shù)據(jù)處理和服務(wù)交付的重要組成部分。當(dāng)我們考慮利用邊緣設(shè)備進(jìn)行實(shí)時監(jiān)控時,一個常見的需求是通過攝像頭捕捉視頻,并
    的頭像 發(fā)表于 01-04 12:00 ?660次閱讀
    <b class='flag-5'>AI</b><b class='flag-5'>模型</b><b class='flag-5'>部署</b><b class='flag-5'>邊緣</b><b class='flag-5'>設(shè)備</b>的<b class='flag-5'>奇妙</b><b class='flag-5'>之旅</b>:<b class='flag-5'>邊緣</b>端<b class='flag-5'>設(shè)備</b>的局域網(wǎng)視頻流傳輸方案

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品