基于軟硬件協同處理的小型輪式機器人平臺
1項目背景及目標
1.1項目背景
本文課題源于華中科技大學瑞薩實驗室的移動機器人項目以及智能車競賽,主要目的是基于嵌入式技術和控制系統原理,基于FPGA結合ARM的基本架構設計一個小型移動機器人平臺,可以研究自動駕駛、自動泊車、圖像處理、智能控制算法等機器人應用。
該平臺是一種模塊化、通用、層次結構的設計方案,使得研究人員可以根據自己的要求選擇不同的模塊通過簡單的組合,構建符合要求的移動機器人平臺。所設計的小型移動機器人平臺不光有助于機器人技術領域的研究,也是一個理想的嵌入式技術的研究和驗證平臺。
移動機器人領域在可重配置和模塊化方面一直有大量的研究。隨著FPGA在嵌入式系統中的廣泛應用,通過硬件語言編程來實現所需的邏輯功能、實現硬件平臺的重配置,為可重配置和模塊化機器人的設計提供了一種新的方法。FPGA負責實現連接各類傳感器和執行機構的邏輯電路功能和必要的信號處理,只需編寫不同的硬件語言程序,即可實現所需的電路功能,連接相應的傳感器和執行機構,實現硬件的重新配置。隨著基于FPGA的SOPC技術的發展,使用SOPC技術來實現可重配置的機器人控制器也成為了機器人平臺研究的熱點。然而基于開發控制系統的商業性、系統可升級性、算法復雜度以及工具鏈、生態鏈成熟度的角度考慮,使用基于ARM的CPU作為主控制器更易于實現該平臺。因此本項目將基于分立的ARM和FPGA基本架構實現移動機器人平臺。
該機器人平臺系統分為三個層次:實時控制層、控制數據流層、傳感器與驅動器層。系統高兩層使用串行計算的MCU(ARM7)和并行計算的FPGA(Spartan6)這樣的AMP架構,處理器間高效的通信將是提升整個系統性能的關鍵,基于開發經驗,本平臺將采用EMC與SSP這樣串并結合的通信方式。平臺還可以上擴一個高端嵌入式系統接口,ARM7可以通過USB與ARM Cortex A9通信,完成更復雜的功能。傳感器與驅動器層可以搭載多種傳感器與驅動器模塊,運算在FPGA中完成。
關于軟件平臺設計,該小型移動機器人可以移植非常有商業前景的TOPPERS實時嵌入式操作系統,既可以在ARM7上移植,也可以考慮在Spartan6上移植。
該課題思想已經在專業課程、移動機器人項目以及兩項智能車競賽中得到數年設計的充分驗證,團隊有成熟的硬件平臺、OS及組件系統移植范例、IP設計范例、算法資源和測試數據,已經開始相關模塊的實現。
1.1.1FPGA處理底層密集數據流
FPGA相對CPU的特點在于并行計算和高速,因此適合于處理批量數據。針對本項目,FPGA負責數字圖像處理、智能控制、圖像人機接口等典型應用的底層密集數據流。
以點陣液晶LCM作為基本人機接口為例說明。引入映射緩沖區這一思想,可以把LCM接口的物理接口部分和數據部分分開,即ARM只讀寫映射區的數據,而FPGA負責液晶的具體時序要求,通用性、可移植性大大增強。引入雙口RAM,則可實現ARM的快速數據通道EMC接口與LCM的慢數據通道接口的跨時鐘域設計。這樣一來,系統的同步、模塊化、高效大大加強。同時可以利用C語言邏輯描述優勢實現復雜的畫圖功能,而利用Verlilog HDL物理并行優勢在數據間插入復雜的時序、命令及狀態機操作。
1.1.2ARM處理上層復雜控制流
CPU相對硬件的特點是復雜函數計算。實時嵌入式操作系統TOPPERS在ARM7上的移植可以豐富系統的應用及加強實時性。同時結合豐富的協議棧及應用支持,系統功能可以得到較大擴展。利用ARM處理復雜控制流并擴展功能、利用FPGA處理密集數據流,正是該平臺最顯著的特點。
1.2主要實現目標
1.2.1ARM與FPGA高效通信及重配置
采用的ARM7芯片擁有32 位外部存儲器控制器EMC以及串行同步接口SSP。EMC支持異步靜態存儲器(如SRAM、Flash)和動態存儲器(例如SDRAM)的并行接口,而SSP兼容SSI、SPI、MicroWave等格式,并支持DMA傳輸。
為了充分發揮接口性能,ARM7與Spartan6之間的通信采用雙向EMC與雙向SSP結合的方式,其中一路SSP被配置成SPI模式,完成ARM對FPGA從串配置。
1.2.2FPGA實現圖像處理
本項目使用攝像頭主要是為了完成循線和標志識別,上層控制流所需的信息并沒有那么豐富,大部分無用信息可以通過可編程硬件濾波、圖像分割、圖像細化;其次,高速運動的機器人平臺捕捉的圖像也是各幀運動的,需要對運動幀做濾波、趨勢判斷處理。由此產生的數據流均由可編程硬件FPGA完成。
1.2.3FPGA實現在系統圖像顯示
針對顯示輸出設備,有兩類任務:車載顯示和無線顯示。
車載顯示可利用小型LCM顯示基本的人機界面和實時監控數據;而無線顯示可采用無線局域網等網絡連接機器人平臺和上位機,實時回傳攝像頭圖像,還可以在FPGA中處理計算生成的路徑,將二者復合后回傳。
1.2.4FPGA實現運動控制算法
傳統PID基本算法并不會占用CPU多少時間,但考慮到運動控制中對雙閉環、智能算法、PMSM等更為迫切的需求,同時考慮到系統可擴展可重構性能,采用FPGA實現運動控制是一種合適的解決方案。
1.2.5FPGA實現模糊控制等智能算法
高級語言具有比硬件描述語言更好的行為級建模能力,而基于System Generator和Matlab Simulink的軟硬件協同設計方法正成為一大熱門控制系統開發方法。
模糊控制這類智能算法無需建立被控對象的數學模型,對控制對象的參數變化或非線性特性具有較好的適應能力,對干擾或噪聲具有更強的抑制功能。但其實現需要較高的并行程度,考慮到可重構性,由FPGA完成模糊控制硬件,而由ARM完成重構或升級,具有非常好的架構優點。
在本項目中使用模糊控制,既可以應用到控制層控制策略、傳感器層數據融合,也可以應用到驅動層電機控制,可以說各個層次都有應用。
本項目考慮在Matlab Simulink環境下建立模糊控制系統基本模型,得到理想仿真結果后,搭建System Generator模型并完成定點仿真,完成軟件硬件協同設計。
1.2.6FPGA實現傳感器數據融合
控制流層需要的信息更多的是抽象級、行為級,而具體傳感器帶來了大量的數據流,如何組合出各類傳感器,并提取出有效的信息是一大關鍵。為此,可以采用數據融合的方式,具體可以使用模糊控制等智能算法。
2系統原理及技術
2.1系統結構
2.1.1機器人平臺
暫定DFRobot的ROB0001:4輪驅動,無轉向驅動,需要通過差速轉向。
Four encodered DC motors
Includes 4x gearmotors
Aluminum frame and mounting hardware
Speed: 80 cm/s
Electronics, camera, servo motors sold separately
Package Dimensions: 360mm x 355mm x 165mm
27cm (Length) x 20cm (width) x 6cm(height) (rectangular base)
27cm (Length) x 20cm (width) x 7cm(height) (upper deck)
也可以考慮飛思卡爾或瑞薩智能車平臺,帶轉向驅動。
2.1.2控制系統結構
電機驅動環
車體控制環
2.1.3處理與計算平臺架構
系統分為ARM實時控制流層、FPGA控制與數據流層、傳感器與驅動器層這三層,最底層將由外擴的IO控制,運算在FPGA中完成。高性能處理層暫不實現。
硬件結構如下:
內部結構如下:
2.2硬件流程
2.2.1圖像處理模塊
與一般視頻圖像處理不同,該平臺是針對機器而非人而進行處理,因此需要得到機器能有效時別的圖像幀中的路徑、標志等。時序控制、濾波、分割、選擇、壓縮、運動檢測、跨時鐘域同步等步驟。
2.2.2電機控制模塊
轉速指令與電機控制器分開,后者由FPGA完成。
2.2.3模糊算法模塊
將T-S型FLC用在電機轉矩控制中,發揮FPGA的高度并行及快速特性。
2.3軟件流程
2.3.1任務調度
2.3.2圖像處理流程
2.3.3路徑識別
2.3.4循線控制算法
由于可以切內彎,因此可以分直道、普通彎道、S彎道三種情況來處理。而這三種情況可以通過主路徑曲線的拐點數區分。
跟蹤控制
轉向控制
動力控制
3需要的資源
3.1主要硬件
Nexys™3 Spartan-6 FPGA Board、NXP LPC2478、Xilinx XC6LX9-TQG144。
3.2儀器
ChipScope PRO、示波器、萬用表。
3.3開發工具
FPGA:ISE Design Suite、Modelsim、Matlab Simulink SystemGnerator;
ARM:Eclipse;
電路:Altium Designer。
評論