一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

基于FPGA加速的bird-oid object算法實(shí)現(xiàn)

友晶FPGA ? 來源:友晶Terasic ? 2024-04-09 11:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 項(xiàng)目概述

模型說明

Bird-oid object 簡稱Boids模型,是美國的一個(gè)圖形計(jì)算機(jī)科學(xué)家Craig Reynolds在 1986 年開發(fā)出來的。

6f39d15e-f61d-11ee-a297-92fbcf53809c.png

他的Boids模型為集群個(gè)體抽象出三個(gè)基本行為:分離(seperation)、對齊(alignment)、與聚集(cohesion)。將這三種行為按一定權(quán)重進(jìn)行混合,可以讓群體出現(xiàn)秩序化的社會(huì)性行為。這個(gè)模型自從提出到現(xiàn)在一直持續(xù)影響著社會(huì)學(xué)、生物學(xué)、計(jì)算機(jī)科學(xué)等學(xué)科的發(fā)展?;谶@個(gè)模型的應(yīng)用其實(shí)很多, 比如現(xiàn)在的集群無人地面車輛,集群無人機(jī)燈光秀等等。

項(xiàng)目說明

本項(xiàng)目使用DE1 SoC的ARM A9處理器FPGA邏輯的組合,不僅成功地模擬了動(dòng)態(tài)boid (bird-oid object)群集模式,而且還優(yōu)化了周期要求和執(zhí)行時(shí)間。

6f56a61c-f61d-11ee-a297-92fbcf53809c.jpg

本項(xiàng)目首先創(chuàng)建了一個(gè)完全運(yùn)行在ARM A9處理器上的“基線”設(shè)計(jì)。這個(gè)基線設(shè)計(jì)是使用C代碼創(chuàng)建的,能夠以每秒60幀的速度計(jì)算最多3,000個(gè)對象的群集模式。

我們的第二個(gè)對比設(shè)計(jì)是在FPGA上創(chuàng)建一個(gè)更新功能可以計(jì)算和更新每個(gè)物體在x和y坐標(biāo)上的位置,以及它們在x和y方向上的速度。最后成功地在FPGA上模擬了最多顯示150個(gè)對象的boids群集模式。

6f72d2ec-f61d-11ee-a297-92fbcf53809c.png

這個(gè)項(xiàng)目的目標(biāo)是改善更新功能所需的周期數(shù),并看到總體執(zhí)行時(shí)間的改進(jìn)。如果能夠減少運(yùn)行更新的專用硬件的循環(huán)次數(shù),估計(jì)就最終可以在ARM處理器上進(jìn)行超過3000個(gè)對象的計(jì)算。

2. 實(shí)現(xiàn)原理

要?jiǎng)?chuàng)建boids群集模擬,需要遵循三個(gè)主要步驟:分離、對齊和聚集。

分離 Separation:離得太近的物體會(huì)相互遠(yuǎn)離

對齊 Alignment:對齊是指每個(gè)物體試圖匹配其可見范圍內(nèi)物體的速度,朝著周圍同伴的平均方向前進(jìn)

聚集 Cohesion:朝著周圍同伴的平均位置移動(dòng)

6f9eb8c6-f61d-11ee-a297-92fbcf53809c.png

當(dāng)對象之間靠得太近時(shí),執(zhí)行兩個(gè)步驟使對象之間稍微散開一點(diǎn)。第一步是計(jì)算當(dāng)前節(jié)點(diǎn)到最近節(jié)點(diǎn)的距離:

close_dx += boid.x - otherboid.x

close_dy += boid.y - otherboid.y

一旦這被計(jì)算出來,我們就創(chuàng)造了一個(gè)回避因素:avoidfactor。這個(gè)avoidfactor雖然仍然相對較小,但將乘以之前計(jì)算的close_dx和close_dy值:

boid.vx += close_dx*avoidfactor

boid.vy += close_dy*avoidfactor

6fb7985a-f61d-11ee-a297-92fbcf53809c.png

下一步是對齊所需的計(jì)算。我們執(zhí)行以下步驟:

在開始更新特定對象時(shí),三個(gè)變量(xvel_avg、yvel_avg和neighboring_boids)為零。

循環(huán)遍歷每一個(gè)其他的對象。如果到特定對象的距離小于可見范圍,則

xvel_avg += otherboid.vx
yvel_avg += otherboid.vy

neighboring_boids += 1

循環(huán)遍歷所有其他物體后,如果neighboring_boids > 0,則執(zhí)行以下操作:

xvel_avg = xvel_avg/neighboring_boids
yvel_avg = yvel_avg/neighboring_boids

然后根據(jù)以下公式更新速度:

boid.vx += (xvel_avg - boid.vx)*matchingfactor
boid.vy += (yvel_avg - boid.vy)*matchingfactor

(其中matchingfactor是一個(gè)可調(diào)參數(shù))

6fc67492-f61d-11ee-a297-92fbcf53809c.png

最后一次物體對物體的更新是基于聚集性,因?yàn)槊總€(gè)物體對象都在其可見范圍內(nèi)緩慢地轉(zhuǎn)向其他對象的質(zhì)心。它是這樣做的:


1. 在開始更新特定對象時(shí),三個(gè)變量(xpos_avg、ypos_avg和neighboring_boids)為零


2. 循環(huán)遍歷每一個(gè)其他的對象。如果到特定對象的距離小于可見范圍,則

xpos_avg += otherboid.x
ypos_avg += otherboid.y
neighboring_boids += 1

循環(huán)遍歷所有其他對象后,如果neighboring_boids > 0,則執(zhí)行以下操作:

xpos_avg = xpos_avg/neighboring_boids
ypos_avg = ypos_avg/neighboring_boids

然后根據(jù)以下公式更新速度:

boid.vx += (xpos_avg - boid.x)*centeringfactor
boid.vy += (ypos_avg - boid.y)*centeringfactor

(其中centeringfactor是一個(gè)可調(diào)參數(shù))

6fdf8bc6-f61d-11ee-a297-92fbcf53809c.png

對象更新的最后一步是確定對象何時(shí)需要轉(zhuǎn)動(dòng),以便所有對象都保持在正在使用的VGA屏幕的范圍內(nèi)。這可以通過下面的條件語句來實(shí)現(xiàn):

ifboid.x boid.vx=boid.vx+turnfactor
ifboid.x>rightmargin:
boid.vx=boid.vx-turnfactor
ifboid.y>bottommargin:
boid.vy=boid.vy-turnfactor
ifboid.y boid.vy=boid.vy+turnfactor

707f2320-f61d-11ee-a297-92fbcf53809c.png

當(dāng)使用不同的微控制器和顯示器時(shí),邊界條件和背后的邏輯保持不變。



審核編輯:劉清

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

    關(guān)注

    1645

    文章

    22051

    瀏覽量

    618761
  • ARM處理器
    +關(guān)注

    關(guān)注

    6

    文章

    361

    瀏覽量

    42632
  • SoC芯片
    +關(guān)注

    關(guān)注

    1

    文章

    646

    瀏覽量

    35831

原文標(biāo)題:基于FPGA加速的bird-oid object算法實(shí)現(xiàn)

文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    基于FPGA的壓縮算法加速實(shí)現(xiàn)

    本設(shè)計(jì)中,計(jì)劃實(shí)現(xiàn)對文件的壓縮及解壓,同時(shí)優(yōu)化壓縮中所涉及的信號處理和計(jì)算密集型功能,實(shí)現(xiàn)對其的加速處理。本設(shè)計(jì)的最終目標(biāo)是證明在充分并行化的硬件體系結(jié)構(gòu) FPGA
    的頭像 發(fā)表于 07-10 11:09 ?847次閱讀
    基于<b class='flag-5'>FPGA</b>的壓縮<b class='flag-5'>算法</b><b class='flag-5'>加速</b><b class='flag-5'>實(shí)現(xiàn)</b>

    FPGA干貨分享六】基于FPGA協(xié)處理器的算法加速實(shí)現(xiàn)

    實(shí)現(xiàn)了一種I/O流水線接口,該接口具有I/O連接加速器的典型性能。FPGA/PowerPC/APU接口FPGA允許硬件設(shè)計(jì)工程師利用單芯片上的處理器、解碼邏輯、外設(shè)和協(xié)處理器
    發(fā)表于 02-02 14:18

    如何在LabVIEW 平臺(tái)下完成視覺算法加速

    在LabVIEW平臺(tái)下實(shí)現(xiàn)算法加速,傳統(tǒng)的邊緣提取和粒子分析以及預(yù)處理算法都比較耗時(shí)間,采用FPGA
    發(fā)表于 12-28 10:15

    為什么FPGA協(xié)處理器可以實(shí)現(xiàn)算法加速?

    代碼加速和代碼轉(zhuǎn)換到硬件協(xié)處理器的方法如何采用FPGA協(xié)處理器實(shí)現(xiàn)算法加速?
    發(fā)表于 04-13 06:39

    DCT域數(shù)字水印算法FPGA實(shí)現(xiàn)

    提出一種基于DCT域的數(shù)字水印算法,并用FPGA硬件實(shí)現(xiàn)其中關(guān)鍵部分DCT變換。采用VHDL語言有效設(shè)計(jì)和實(shí)現(xiàn)DCT變換,分析與仿真結(jié)果表明:與軟件
    發(fā)表于 12-28 10:22 ?20次下載

    ECT圖像重建算法FPGA實(shí)現(xiàn)

    ECT圖像重建算法FPGA實(shí)現(xiàn) ECT圖像重建算法FPGA實(shí)現(xiàn)
    發(fā)表于 11-19 14:59 ?2次下載

    如何使用FPGA加速機(jī)器學(xué)習(xí)算法?

    當(dāng)前,AI因?yàn)槠銫NN(卷積神經(jīng)網(wǎng)絡(luò))算法出色的表現(xiàn)在圖像識別領(lǐng)域占有舉足輕重的地位?;镜腃NN算法需要大量的計(jì)算和數(shù)據(jù)重用,非常適合使用FPGA實(shí)現(xiàn)。
    發(fā)表于 05-26 10:16 ?1567次閱讀

    FPGA實(shí)現(xiàn)CRC算法的程序

    Xilinx FPGA工程例子源碼:在FPGA實(shí)現(xiàn)CRC算法的程序
    發(fā)表于 06-07 15:07 ?28次下載

    基于FPGA的JPEG解碼算法的研究與實(shí)現(xiàn)

    基于FPGA的JPEG解碼算法的研究與實(shí)現(xiàn)
    發(fā)表于 08-29 16:05 ?11次下載

    Xilinx與IBM通過SuperVesselOpenPOWER開發(fā)云平臺(tái)實(shí)現(xiàn)FPGA加速

    SuperVessel將包括賽靈思SDAccel開發(fā)環(huán)境,支持用C、C++和OpenCL實(shí)現(xiàn)FPGA加速 All Programmable 技術(shù)和器件的全球領(lǐng)先企業(yè)賽靈思公司與IBM公司今天聯(lián)合宣布
    發(fā)表于 02-08 16:06 ?429次閱讀

    基于FPGA的Cordic算法實(shí)現(xiàn)的設(shè)計(jì)與驗(yàn)證

    本文是基于FPGA實(shí)現(xiàn)Cordic算法的設(shè)計(jì)與驗(yàn)證,使用Verilog HDL設(shè)計(jì),初步可實(shí)現(xiàn)正弦、余弦、反正切函數(shù)的實(shí)現(xiàn)。將復(fù)雜的運(yùn)算轉(zhuǎn)化
    發(fā)表于 07-03 10:18 ?3128次閱讀
    基于<b class='flag-5'>FPGA</b>的Cordic<b class='flag-5'>算法</b><b class='flag-5'>實(shí)現(xiàn)</b>的設(shè)計(jì)與驗(yàn)證

    基于FPGA的定點(diǎn)LMS算法實(shí)現(xiàn)講解

    基于FPGA的定點(diǎn)LMS算法實(shí)現(xiàn)講解。
    發(fā)表于 04-28 11:17 ?15次下載

    怎么用FPGA算法 如何在FPGA實(shí)現(xiàn)最大公約數(shù)算法

    FPGA算法是指在FPGA(現(xiàn)場可編程門陣列)上實(shí)現(xiàn)算法。FPGA是一種可重構(gòu)的硬件設(shè)備,可以
    的頭像 發(fā)表于 08-16 14:31 ?3379次閱讀
    怎么用<b class='flag-5'>FPGA</b>做<b class='flag-5'>算法</b> 如何在<b class='flag-5'>FPGA</b>上<b class='flag-5'>實(shí)現(xiàn)</b>最大公約數(shù)<b class='flag-5'>算法</b>

    fpga布局布線算法加速

    任務(wù)是將邏輯元件與連接線路進(jìn)行合理的布局和布線,以實(shí)現(xiàn)性能優(yōu)化和電路連接的可靠性。然而,FPGA布局布線的過程通常是一項(xiàng)繁瑣且耗時(shí)的任務(wù),因此加速布局布線算法的研究具有重要意義。本文將
    的頭像 發(fā)表于 12-20 09:55 ?1331次閱讀

    怎么用FPGA算法 如何在FPGA實(shí)現(xiàn)最大公約數(shù)算法

    FPGA算法的優(yōu)點(diǎn)在于它們可以提供高度的定制化和靈活性,使得算法可以根據(jù)實(shí)際需求進(jìn)行優(yōu)化和調(diào)整。此外,FPGA還可以實(shí)現(xiàn)硬件
    的頭像 發(fā)表于 01-15 16:03 ?3227次閱讀