<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于Robei EDA工具的多功能可重構(gòu)機(jī)器人設(shè)計(jì)*

          基于Robei EDA工具的多功能可重構(gòu)機(jī)器人設(shè)計(jì)*

          作者:?鐘杭,孫浩,龔蓓蕾(南京航空航天大學(xué)電子信息工程學(xué)院,南京211106) 時(shí)間:2023-07-26 來源:電子產(chǎn)品世界 收藏
          編者按:通過分析智能家居行業(yè)發(fā)現(xiàn),機(jī)器人可分為家務(wù)功能型、娛樂家用型和助理管家型等,種類繁多但功能較為單一。市面上基于單片機(jī)的智能搬運(yùn)機(jī)器人不具有可重構(gòu)性和良好的實(shí)時(shí)性,不能夠滿足靈活多變的機(jī)器人需求。本團(tuán)隊(duì)研究一款采用Robei EDA設(shè)計(jì)的基于FPGA的多功能可重構(gòu)機(jī)器人,具有人為遙控控制與語音控制、自動(dòng)搬運(yùn)物體、感測周圍環(huán)境、發(fā)射電磁炮等功能,可以實(shí)現(xiàn)環(huán)境檢測及火災(zāi)預(yù)警、智能搬運(yùn)及安保防御等作用,在提供便利服務(wù)的同時(shí),有效保障居家安全。

          *本項(xiàng)目獲得“2021全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽”華東賽區(qū)一等獎(jiǎng),全國總決賽二等獎(jiǎng)。

          本文引用地址:http://www.ex-cimer.com/article/202307/448979.htm

          0 引言

          隨著自動(dòng)化技術(shù)以及計(jì)算機(jī)技術(shù)的發(fā)展,技術(shù)正從傳統(tǒng)的工業(yè)制造領(lǐng)域向醫(yī)療服務(wù)、教育娛樂、勘探勘測等領(lǐng)域迅速擴(kuò)展,適應(yīng)不同領(lǐng)域需求的系統(tǒng)不斷深入研究和開發(fā)。通過對智能家居的分析發(fā)現(xiàn),市面上的可分為代替人類完成家務(wù)的功能機(jī)器人、具有娛樂性的陪伴機(jī)器人和管理智能家電的助理機(jī)器人,種類繁多但是功能較為單一;多基于單片機(jī)或基于集成系統(tǒng)設(shè)計(jì),不具有可重構(gòu)性和良好的實(shí)時(shí)性,不能夠滿足靈活多樣的機(jī)器人需求且成本過高,而可重構(gòu)機(jī)器人則可以根據(jù)任務(wù)需求更新其硬件構(gòu)型[1]。

          本團(tuán)隊(duì)旨在通過一款機(jī)器人實(shí)現(xiàn)環(huán)境監(jiān)測及災(zāi)難預(yù)警、安保防御及智能搬運(yùn)等多種功能,有效保障居家安全,并提供便利服務(wù)。隨著中國老齡化的到來,獨(dú)居老人人數(shù)增多,以及當(dāng)今社會獨(dú)居青年比例越來越高,對能保證基本生活環(huán)境的機(jī)器人的需求也會越來越多。相比上述市面上的功能型、娛樂型、助理型的非必需高檔奢侈類機(jī)器人,所設(shè)計(jì)的機(jī)器人有更高的市場潛力。

          1 架構(gòu)設(shè)計(jì)

          本設(shè)計(jì)的架構(gòu)基于 工具設(shè)計(jì)(注:是一款可視化的跨平臺設(shè)計(jì)工具[2],能夠大大提高 的開發(fā)效率),分為中心處理部分、傳感感知部分、電源電路部分、機(jī)械運(yùn)動(dòng)部分、網(wǎng)絡(luò)傳輸部分、上位機(jī)部分、顯示器部分及遙控控制部分。架構(gòu)框圖如圖1 所示。

          image.png

          圖1 架構(gòu)

          邏輯流程圖如圖2 所示,設(shè)計(jì)的機(jī)器人運(yùn)行時(shí)可以進(jìn)入兩種模式(自動(dòng)和遙控)。進(jìn)入系統(tǒng)前首先進(jìn)行指紋識別,如果指紋正確則進(jìn)入系統(tǒng),如果指紋未錄入指紋傳感器的存儲器則無法進(jìn)入系統(tǒng),在進(jìn)入系統(tǒng)后可以通過刷未錄入指紋的手指對系統(tǒng)上鎖,此時(shí)全機(jī)除顯示屏和指紋以外的模塊全部復(fù)位,待按上正確的指紋時(shí)才進(jìn)行解鎖。

          整機(jī)原理圖如圖2 所示。

          1690349291675551.png

          圖2 整機(jī)原理

          2 控制電路

          2.1 遙控部分

          遙控部分分為手柄遙控和語音控制兩個(gè)部分,分別通過手柄和語音對機(jī)器人進(jìn)行實(shí)時(shí)控制。

          2.1.1 手柄遙控

          本模塊與外部指紋模塊與LCD HMI 串口顯示屏模塊相連,當(dāng)指紋輸入正確時(shí),手柄遙控模塊復(fù)位解除,機(jī)器人所有傳感器均開始工作,同時(shí)顯示屏顯示開機(jī)動(dòng)畫進(jìn)入主程序。PS2 手柄以SPI 的通信協(xié)議與 通信,使用者可以通過手柄按鍵和搖桿控制機(jī)器人移動(dòng)、機(jī)械臂抓取運(yùn)動(dòng)以及對電磁炮超級電容進(jìn)行充放電、放電發(fā)射金屬炮彈,其工作流程圖如圖3 所示。

          1690349400195944.png

          圖3 手柄遙控流程

          2.1.2 語音控制

          語音控制部分包括串口模塊、電機(jī)驅(qū)動(dòng)模塊、舵機(jī)驅(qū)動(dòng)模塊和電磁炮驅(qū)動(dòng)模塊;該部分的核心傳感器件是LD3320語音傳感器,通過SPI協(xié)議與通信。其工作流程如圖4 所示。

          image.png

          圖4 語音遙控部分的流程

          2.2 自動(dòng)部分

          2.2.1 自主避障模塊

          該模塊由4 個(gè)超聲波傳感器控制和8 路PWM 波直流電機(jī)驅(qū)動(dòng)控制組成,4 個(gè)超聲波傳感器分別位于機(jī)器人的前后左右部分,通過測量判斷機(jī)器人各個(gè)方向障礙物相對于機(jī)器人的距離來控制電機(jī)運(yùn)動(dòng),實(shí)現(xiàn)機(jī)器人的自主避障。

          2.2.2 自動(dòng)循跡模塊

          該部分由FPGA 對時(shí)序驅(qū)動(dòng)CCD 傳感器進(jìn)行曝光采集賽道信息,經(jīng)計(jì)算得到賽道中點(diǎn)相對于機(jī)器人的位置坐標(biāo),將該位置與像素中點(diǎn)相減得到賽道的偏移值,將偏移值代入PID 模塊作為誤差進(jìn)行運(yùn)算,為機(jī)器人輸出PWM 波,控制機(jī)器人的閉環(huán)循跡。

          3 機(jī)械結(jié)構(gòu)

          本作品的機(jī)械結(jié)構(gòu)主要由以下部分組成:機(jī)械臂部分、機(jī)器人運(yùn)動(dòng)部分、機(jī)器人輪胎和電磁炮部分。

          3.1 機(jī)械臂部分

          本作品采用三自由度機(jī)械臂,由機(jī)械部件和三個(gè)舵機(jī)組成,舵機(jī)的選型是MG996R,它是一種180° 的數(shù)字舵機(jī)。其特點(diǎn)是便宜、大扭力(最大扭力可達(dá)20 千克力),工作電壓為4.8~6 V。

          舵機(jī)的主要控制原理是:輸入1 個(gè)周期為20 ms 的矩形脈沖,根據(jù)其占空比的大小來決定舵機(jī)輸出的轉(zhuǎn)軸角。

          3.2 機(jī)器人運(yùn)動(dòng)部分

          該部分由直流電機(jī)、輪胎、電機(jī)驅(qū)動(dòng)模塊組成,其中直流電機(jī)采用4 個(gè)370 直流減速電機(jī),控制電壓為12 V。電機(jī)選取的轉(zhuǎn)速為中等的170 轉(zhuǎn)/min。電機(jī)驅(qū)動(dòng)部分由2 個(gè)電機(jī)驅(qū)動(dòng)模塊組成,其型號為L298N,是一種H 橋MOS 管驅(qū)動(dòng)電路,輸出電流大、隔離性強(qiáng)、頻帶寬,能夠輸出4 路信號控制2 個(gè)電機(jī)。

          3.3 機(jī)器人底盤部分

          機(jī)器人輪胎選用麥克納姆輪。由于獨(dú)特的機(jī)械結(jié)構(gòu),4 個(gè)麥克納姆輪通過矢量相加可實(shí)現(xiàn)機(jī)器人平移、原地旋轉(zhuǎn)等特殊運(yùn)動(dòng)。

          3.4 電磁炮部分

          該部分主要包含逆變升壓模塊、繼電器模塊、超級電容模塊和電磁線圈模塊。

          首先從繼電器模塊中引出兩根信號線給FPGA,F(xiàn)PGA 可根據(jù)手柄和語音控制繼電器模塊閉合張開以控制12 V 電源,通過逆變升壓模塊給超級電容充電,然后控制繼電器將12 V 電源斷開,此時(shí)電能被存儲在超級電容之中。然后再次由FPGA 控制電磁線圈閉合,使電能從電容中釋放,此時(shí)變化的電流通過線圈生成磁場。根據(jù)法拉第電磁感應(yīng)定律和楞次定律,線圈中將產(chǎn)生排斥方向的洛倫茲力帶動(dòng)炮管中的金屬彈射出。為了保護(hù)電路和隔離,使用可控硅和續(xù)流二極管等器件。

          4 算法系統(tǒng)

          4.1 機(jī)器人運(yùn)動(dòng)算法

          本作品設(shè)計(jì)的機(jī)器人運(yùn)動(dòng)部分采用4WD 的麥克納姆輪,每個(gè)麥克納姆輪上有若干傾斜45° 的小輪子,在轉(zhuǎn)動(dòng)時(shí)產(chǎn)生相比機(jī)器人傾斜45° 的摩擦力,4 個(gè)輪胎轉(zhuǎn)動(dòng)配合即可實(shí)現(xiàn)平移、原地旋轉(zhuǎn)等運(yùn)動(dòng)。其運(yùn)動(dòng)原理如圖5所示,其中紅色代表輪子向前轉(zhuǎn),藍(lán)色代表輪子向后轉(zhuǎn)。

          image.png

          圖5 機(jī)器人運(yùn)動(dòng)算法

          4.2 自主避障算法

          該部分在機(jī)器人周圍設(shè)計(jì)4 個(gè)超聲波傳感器,當(dāng)一方檢測到障礙物的距離小于15 cm 時(shí),機(jī)器人向逆時(shí)針90°方向平移,即左手定則,如前方檢測到障礙就向左平移,左邊檢測到障礙向后平移,以此類推。

          4.3 自主循跡算法

          本作品使用128 路線性CCD 傳感器進(jìn)行循跡,當(dāng)標(biāo)記線位置偏向任意一側(cè),控制機(jī)器人向另一側(cè)偏轉(zhuǎn),使標(biāo)記線始終保持在小車的中線附近。本作品還設(shè)計(jì)了循跡PID 算法,可實(shí)現(xiàn)平滑轉(zhuǎn)彎。

          4.4 濾波算法

          機(jī)器人傳感器進(jìn)行數(shù)據(jù)采集可能發(fā)生意外的抖動(dòng),數(shù)據(jù)現(xiàn)在誤差,進(jìn)而影響機(jī)器人的判斷。因此,采用均值濾波和中值濾波算法對部分傳感器,如超聲波傳感器、角度傳感器、溫度傳感器進(jìn)行一定的濾波,以改善傳感器效果。

          5 圖像處理

          圖像處理功能由CCD 基于FPGA 實(shí)現(xiàn),主要有兩種功能:軌跡識別及顯示、復(fù)雜循跡。以下將詳細(xì)介紹各個(gè)功能的實(shí)現(xiàn)。

          5.1 軌跡識別及顯示

          傳感系統(tǒng)中的CCD 模塊使用FPGA 實(shí)現(xiàn),本功能基于FPGA 驅(qū)動(dòng)TS1401 線性CCD 采集軌跡信息二值化后輸出至上位機(jī),以顯示軌跡。

          5.1.1 灰度值采集

          首先,F(xiàn)PGA 驅(qū)動(dòng)CCD 輸出其感光元件采集的線性128 個(gè)像素的模擬電壓,模擬電壓經(jīng)過AD9226 模塊轉(zhuǎn)換成12 位數(shù)字信號給FPGA??紤]到AD 模塊采集信號時(shí)有一定的隨機(jī)誤差,因此在采集時(shí)對其進(jìn)行均值濾波,即采集7 次AD,然后對采集的值求平均。由于本作品的AD 轉(zhuǎn)換頻率高達(dá)50 MHz,因此采集更多的次數(shù)也是可以實(shí)現(xiàn)的,通過多次試驗(yàn)且考慮到毛刺的影響,設(shè)置7 次AD 轉(zhuǎn)換比較合理。

          5.1.2 二值化

          為了方便FPGA 處理和識別,需要將采集的12 位數(shù)字電平信號進(jìn)行二值化操作,由CCD 的感光原理可知,采集像素點(diǎn)的灰度值越大,其模擬輸出的電壓就越大,但是根據(jù)AD9226 的工作原理:

          VD=2048-Vi÷5×2048   (1)

          其中VD 是數(shù)字轉(zhuǎn)換值,Vi是AD的模擬輸入值。

          可知CCD采集的灰度值越大,F(xiàn)PGA收到的12 位數(shù)字值就越小,因此軌跡越黑數(shù)字值越大。根據(jù)設(shè)置閾值則可將軌跡和軌跡外的灰度二值化為0 或1。本作品將黑色軌跡設(shè)置為0,其中閾值的大小由當(dāng)次灰度采樣值的平均值、場地光強(qiáng)和調(diào)試經(jīng)驗(yàn)共同決定[3]。

          5.1.3 平滑濾波

          隨后單次采樣的128 位像素均變?yōu)? 和1 的二值化量??紤]到在采集灰度時(shí)存在一定的毛刺,使采集的數(shù)據(jù)有0 到1 或1 到0 的錯(cuò)誤跳變,本作品對采集的軌跡進(jìn)行平滑濾波處理。由于軌跡的連續(xù)性灰度信號不存在突然的跳變,因此在圖像采集時(shí)采集的1 個(gè)、2 個(gè)或3個(gè)孤點(diǎn)都是毛刺產(chǎn)生的,該影響表現(xiàn)效果如圖6 所示。

          1690358454877259.png

          圖6 未平滑濾波圖像

          測試發(fā)現(xiàn),控制一定的曝光時(shí)間基本上可以將CCD產(chǎn)生的毛刺信號控制在3 個(gè)以內(nèi)。通過平滑濾波和調(diào)整曝光時(shí)間,CCD 的采集得到較為完美的圖像,測試結(jié)果如圖7 所示。

          image.png

          圖7 調(diào)整完善后CCD的采集圖像

          5.2 復(fù)雜循跡

          基礎(chǔ)紅外光電傳感器有很大的缺點(diǎn),如由于線路較少,其偏移值過于離散且數(shù)量?。▋H左右2 個(gè)),其測量的偏差范圍是(-2 ~ 2)。該數(shù)據(jù)基本無法進(jìn)行PID閉環(huán)控制,由于開環(huán)操作使得機(jī)器人循跡時(shí)抖動(dòng)很大,效果不好,而且由于線路少,一路出故障就會對整個(gè)系統(tǒng)功能產(chǎn)生很大的影響。為了確保機(jī)器人的性能和穩(wěn)定性,按上一節(jié)采用圖像處理方法實(shí)現(xiàn)機(jī)器人的復(fù)雜循跡,包含基礎(chǔ)連續(xù)軌跡、間斷軌跡和交叉環(huán)島,基于CCD圖像識別完成機(jī)器人對其復(fù)雜循跡。

          5.2.1連續(xù)軌跡

          首先是實(shí)現(xiàn)機(jī)器人的連續(xù)循跡,由上一節(jié)CCD 識別軌跡可以發(fā)現(xiàn),黑色的軌跡在FPGA 上表現(xiàn)為0,通過1 次采集的128 個(gè)像素所構(gòu)成的二值化數(shù)組,即可得到軌跡兩邊的邊緣坐標(biāo),根據(jù)邊緣坐標(biāo)即可計(jì)算出軌跡中點(diǎn)坐標(biāo),然后將中心坐標(biāo)與128 的1/2(取整數(shù)63)做差,即可得到機(jī)器人相對軌跡的偏差。如CCD 得到黑線左邊坐標(biāo)為68,右邊坐標(biāo)為97,經(jīng)計(jì)算得到黑線的中心坐標(biāo)為82,說明此時(shí)黑線中點(diǎn)位于小車右邊19個(gè)坐標(biāo)位置,小車則需要左移19 個(gè)坐標(biāo)才能實(shí)現(xiàn)軌跡的跟蹤即循跡。為了實(shí)現(xiàn)這一點(diǎn),基于Verilog 實(shí)現(xiàn)的PID 制器將軌跡中點(diǎn)和小車的偏差作為輸入,輸出為小車左邊電機(jī)和右邊電機(jī)的PWM 波占空比之差,以此閉環(huán)實(shí)現(xiàn)機(jī)器人的循跡功能。

          5.2.2 間斷軌跡

          對于間斷的軌跡而言,機(jī)器人若采取連續(xù)循跡方案很容易沖出賽道,因此在需要一定的判斷,在CCD 采樣前首先存儲一次機(jī)器人上一次采樣的數(shù)據(jù),如果判斷到錯(cuò)誤的軌跡,如左邊坐標(biāo)等于最小值、右邊坐標(biāo)等于最大值以及左邊坐標(biāo)大于右邊坐標(biāo)的情況,即讓上一次正確的采樣值完全替代這次的采樣值。該方法相當(dāng)于一種特殊的卡爾曼濾波法。

          5.2.3 交叉環(huán)島

          在(2)所提到的算法既可以修正CCD 采集到全0或者是全1 的情況,其中全1 代表間斷軌跡,全0 則代表環(huán)島的交叉點(diǎn),顯然在此算法下機(jī)器人將根據(jù)之前的采樣正確地通過環(huán)島。

          6 系統(tǒng)整合與調(diào)試

          6.1 串口模塊

          本部分采用UART 協(xié)議結(jié)合藍(lán)牙模塊形成無線串口,實(shí)現(xiàn)機(jī)器人與PC 端的上位機(jī)的無線通信,波特率為9 600 bit/s。

          6.2 上位機(jī)設(shè)計(jì)

          該部分基于PyQt設(shè)計(jì)和機(jī)器人配套的上位機(jī)軟件,在實(shí)現(xiàn)串口收發(fā)的基礎(chǔ)上,針對機(jī)器人的移動(dòng)和機(jī)械臂的抓取設(shè)計(jì)了獨(dú)立按鍵,用戶可以通過點(diǎn)擊鼠標(biāo)按鍵或者綁定的鍵盤來控制機(jī)器人運(yùn)動(dòng)和抓取,該部分主要用于調(diào)試機(jī)器人。

          6.3 HMI串口屏設(shè)計(jì)

          本部分基于FPGA 結(jié)合觸摸電阻屏和串口設(shè)計(jì)一款機(jī)器人顯示端,具有豐富的按鍵和人性化的GUI。用戶需要解鎖才能使用,可以通過點(diǎn)擊按鍵來獲取各類信息,當(dāng)觸發(fā)災(zāi)難事件時(shí)會預(yù)警。本部分是機(jī)器人主要的人機(jī)交互模塊,傳感器的測試均可在顯示屏的顯示中得到驗(yàn)證。

          7 結(jié)束語

          目前市面上少有純粹基于FPGA 設(shè)計(jì)的機(jī)器人,本設(shè)計(jì)的機(jī)器人完全采用FPGA 實(shí)現(xiàn)控制,由于其現(xiàn)場可編程特性以及并列運(yùn)行指令結(jié)構(gòu),具有很好的可重構(gòu)性和實(shí)時(shí)性。因此,基于FPGA 的多功能可重構(gòu)機(jī)器人能夠很好地彌補(bǔ)市場缺口,具有更低的成本。除此以外,隨著FPGA 性能的提升以及集成電路產(chǎn)業(yè)與自動(dòng)控制、計(jì)算機(jī)產(chǎn)業(yè)的互相促進(jìn)融合,基于FPGA 實(shí)現(xiàn)的機(jī)器人不僅能夠作為市場產(chǎn)品的替代,而且能夠?qū)崿F(xiàn)更為復(fù)雜的算法和功能。

          參考文獻(xiàn):

          [1]李斌,吳鎮(zhèn)煒,談大龍,等.可重構(gòu)機(jī)器人技術(shù)的探討[J].信息與控制,2001,30(0S1):684-688.

          [2]吳國盛.7天搞定FPGA:與Xilinx實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2016.

          [3]趙萬欣,陳思屹.基于TSL1401線性CCD的智能巡線小車[J].工業(yè)控制計(jì)算機(jī),2014,27(2):121-122.

          (本文來源于《電子產(chǎn)品世界》雜志2022年1月期)



          關(guān)鍵詞: 202201 Robei 機(jī)器人 EDA FPGA

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();