董燕麗 秦嘉程 劉攀 趙曉艷
(晉中信息學院智能工程學院 山西省晉中市 030800)
隨著智能時代的到來,機器人技術得到空前發(fā)展。機器人技術是科學技術發(fā)展的綜合產(chǎn)物,是一門交叉學科,綜合了生物學、手部運動、計算機圖形學、通信等多個學科,是對社會經(jīng)濟發(fā)展有重大影響的產(chǎn)物,是生產(chǎn)力發(fā)展的必然。機器人技術可以衡量中國的制造技術以及一體化水平,因此機器人技術的蓬勃發(fā)展是未來必然的趨勢。
從傳統(tǒng)的履帶式機器人到現(xiàn)代的四足機器人,機器人的應用越來越廣泛。移動機器人不僅工作范圍廣,而且它們能夠很好的適應惡劣的生存環(huán)境,躲避障礙。機器人作為科學技術的產(chǎn)物,可以幫助人們更方便、更快捷、更高效、更安全的完成任務,尤其是一些特殊任務。如疫情期間,為減少接觸減少感染,采用移動機器人為病人配送藥物和防疫物資。國家對機器人的創(chuàng)新、創(chuàng)造也是大力支持,通過舉辦各種比賽,讓大家通過競技的形式互相學習,并形成良性競爭,以比賽促發(fā)展,為進一步的研究打下堅實的基礎。
移動機器人的整體設計主要分為三個部分:PCB 電路設計、軟件編程、總體裝配和機構調試。移動機器人的整體結構要求是:打孔精準,螺絲精確入位,各個元器件部分可拆卸,不同元器件之間相互配合,最終達到精確到達指定位置的目的。其次,硬件電路要細化完善,使每臺電機和傳感器都能完全通電,在程序中將各個部分有機的結合起來,控制整個系統(tǒng)的運行,完成規(guī)定的動作,最終到達我們要求的目的地。
機器人的傳感器識別系統(tǒng)相當于整個機器人的“眼睛”,如果機器人遇到障礙物時,傳感器會識別出機器人與障礙物的距離,并隨著移動的行進改變路徑,然后用攝像頭來識別障礙物的類型,通過復雜的計算完成路徑規(guī)劃,機器人會選擇最佳的運行方式。當目標物體顏色差別很大時,它可以自動的檢測出目標的顏色,識別出并比較物體的色差從而保證能夠正確找到目標。自動的顏色尋找在眾多機器人比賽中十分實用且重要。但缺點也十分明顯,在實際運行現(xiàn)場,環(huán)境光照對攝像頭的影響非常大,光照的強弱會直接影響機器人識別目標物的正確率。為盡量避免環(huán)境光對識別系統(tǒng)的影響,提高識別正確率,可以通過多次實驗對比,找到適應攝像頭的光源強度,從而能更好地保證所有搜集到的圖像是準確的。
移動機器人的算法設計分為辨識算法和控制算法。首先用辨識算法從外部獲取大量信息并從中提取中對自己有用的信息,剔除無用無效信息;然后控制算法對搜集到的信息和數(shù)據(jù)進行分類。本設計采用的環(huán)境辨識算法是通過攝像頭檢測和超聲波障礙物判斷,屬于初級行為決策算法。高端行為決策算法非常復雜,如人工神經(jīng)網(wǎng)絡、遺傳算法、模糊邏輯等,決策分析法和層次分析法也是未來機器人領域的研究重點。人工運動,又稱Ki,是行為決策算法發(fā)展的產(chǎn)物。本文設計的算法是通過各元器件發(fā)揮作用,從而確定最簡單有效的路徑,使機器人能夠快速到達,為后續(xù)進程節(jié)省時間。
移動機器人的硬件設計采用模塊化的思路,系統(tǒng)的硬件主要是由電機、電源模塊、電機驅動模塊、攝像頭模塊、超聲波模塊、編碼器模塊、控制器模塊等組成的,核心控制器采用STM32 的單片機,具體的系統(tǒng)框圖如圖1所示。
圖1:移動機器人的硬件系統(tǒng)框圖
移動機器人的核心控制器選用32 位CPU 的STM32 單片機,開關時鐘采用8MHZ 外接晶體振蕩器,系統(tǒng)時鐘工作頻率為72MHZ 內倍頻,選擇外接晶體振蕩器是為了避免外部干擾造成的內部晶體振蕩器的穩(wěn)定性不強,導致時鐘不準確。因此,大多數(shù)STM32 開發(fā)板使用外部8MHz 的晶體振蕩器源。
電源模塊為整個系統(tǒng)供電,起著非常重要的作用。由于不同模塊需要的電壓幅值不同,因此需要對電源進行降壓處理。電機模塊采用12V 的蓄電池作為輸入電壓,其他各個元件均為5V 供電。需將12V 電壓經(jīng)過降壓電路后進行穩(wěn)壓,12V 的輸入電壓降到穩(wěn)定的5V 電壓左右后,供給單片機系統(tǒng)和其他元件作為輸入電壓。
攝像頭模塊的主要功能是依據(jù)對象顯示的顏色進行路徑搜索,也就是說,攝像頭可以找出自己需要的物體顏色并找到一條最適合的路線,用攝像頭拍攝的照片為240×160 像素。如果要求更精準的顏色識別,可對攝像頭模塊進行適當改進,在攝像頭附近添加新光源以實現(xiàn)準確的檢測。攝像頭的圖像傳輸速率是每秒30 幀,曝光時間也可以由自己依據(jù)實際情況設置,本設計最終設置采用13 ms 來搜集外界信息。合成的攝像頭模塊,良好的性能可以滿足機器人競賽的要求。
超聲波模塊是一個距離測量模塊,在移動機器人的路徑規(guī)劃中主要用來避障,保證機器人能順利避開障礙,迅速到達指定位置。其測距原理為:一端發(fā)射聲波,聲波碰到障礙物后反射回來,另外一端負責接收聲波,測量出聲波發(fā)射到遇到障礙物返回的時間,所用時間乘以聲波速率即為障礙物與模塊之間的距離。通過多次實驗對比發(fā)現(xiàn):如果障礙物在模塊3 米范圍內,探測結果是相對準確的,若超過3 米則會存在較大誤差,容易誤判,若超過4.5 米,則障礙物無法被探測到。市場上有激光測距模塊,其測量距離可以達到幾十米到幾百米,精度也比較高,但是激光模塊的電源比較大,而且成本太高,不適合使用,且超聲波測距模塊已足夠滿足機器人比賽的實際需求。
本設計采用型號為TB6612FNG 的電機驅動模塊,該模塊的AINl/AIN2、BIN1/BIN2 是控制信號輸入端,A01/A02和B01/B02 是電機控制插座;STBY 是正常待機模式下的控制引腳;VM(4.5-15 V)和VCC(2.7-5.5 V)是電機驅動電壓。TB6612FNG 是一種基于MOSFET 的H 橋,雙通道電路輸出,可同時驅動2 個電機。比晶體管H 橋驅動器效率更高,每通道600 mA 的平均驅動速度相當于1.2 A 的最大電流水平。比L293D 的初始負載增加了一倍,它不需要任何額外的充放電,其外圍結構簡單,對于PWM 信號,100 kHz 的頻率比5 kHz 和40 kHz 的頻率高。
編碼器模塊是機器人定位的關鍵模塊,編碼器因其精度高,外形小巧,分辨率高,耗損率低,使用壽命長,易于安裝等諸多優(yōu)點而被廣泛使用。相同的產(chǎn)品既可以通過角位移來檢測,也可以使用技術轉換工具通過線性位移來檢測。編碼器的中間為帶有光柵的碼盤,光通過光柵,接收管接收到高電平,沒通過,接收到低電平。電機旋轉一圈,碼盤上有多少光柵,接收管就會接收多少個高電平。
由于光電管的儀器產(chǎn)生數(shù)字脈沖信號,它們可以直接連接到單片機的計數(shù)器端口。每一個光電元件產(chǎn)生兩個脈沖,它們具有相同的形狀,只有90°的相位差。如果電機正轉,第二次脈沖滯后90°,如果電機倒轉,第二次脈沖超前90°。在實際的運行中只有一個脈沖信號,需通過測量脈沖頻率來獲得電機的速度。電機的旋轉是通過給電機施加正電壓和負電壓來確定的,參加比賽期間,電機運行強度很高,電機轉速很快,電機的旋轉與電壓方向一致,可通過電壓脈沖的極性來有效地確定電機的旋轉方向并實現(xiàn)速度的控制。
陀螺儀模塊的作用是檢測移動機器人的姿態(tài),通過檢測俯仰角、航向角和橫滾角來確定機器人的姿態(tài)。系統(tǒng)選用型號為ATK-MPU60X0 的陀螺儀,該型號的陀螺儀是一款高性能三軸加速度加三軸陀螺儀的六軸傳感器模塊??衫米詭У臄?shù)字運動處理器DMP 硬件加速引擎,將第三個數(shù)字傳感器連接到I2C 接口。擴展后可通過I2C 或SPI 接口發(fā)送9軸信號。MPU60X0 還可以通過I2C 接口連接非慣性數(shù)字傳感器。
完成硬件的各元器件選型后,應用SOLIDWORK 軟件繪制移動機器人模型圖,并進行裝配,根據(jù)模型圖購買硬件實物后,組裝起來即為參賽的移動機器人。機器人的模型圖如圖2所示。
圖2:移動機器人模型圖
軟件程序是單片機控制系統(tǒng)中最重要的部分,通過軟件控制完成系統(tǒng)優(yōu)化、攝像頭數(shù)據(jù)搜集、超聲波數(shù)據(jù)搜集、電機控制、準確到達目的地等工作,系統(tǒng)流程圖如圖3所示。
圖3:系統(tǒng)流程圖
單片機的初始化過程包含4 部分,分別是時鐘初始化、定時器中斷初始化、串口初始化和PWM 初始化。
3.2.1 時鐘初始化
單片機的時鐘是單片機運行中非常重要的部分,STM32單片機有著自己的時鐘樹和5 個時鐘源:HSE、LSI、HSI、LSE 和PLL,系統(tǒng)時鐘可以用HSE、HSI 和PLL 作為時鐘源,通常是HSE 時鐘,所有的MCU 引腳和外圍設備都掛在時鐘上。因此,必須先啟動時鐘,才能啟動系統(tǒng)。否則,所有組件和I / O 端口將無法正常使用。
3.2.2 定時器中斷初始化
該系統(tǒng)使用時鐘來設置攝像頭區(qū)域并收集圖案,從而確定機器人的移動路徑。要求系統(tǒng)在相應時間內運行一定周期,由于攝像頭曝光時間應設置在指定時間,因此確定搜集周期的目的是確保收集的編碼器脈沖正確,并在指定時間內檢查電機的PWM 是否正常。
3.2.3 串口初始化
單片機的串口是用來通信的,而各串口通信的模塊,默認值可能會有不同,導致各模塊間無法正常通信。要想正確通信,就需要初始化串口的通信參數(shù)使各模塊通信同步。串行接口的波特率通常選115200bit/s,串行時鐘采用PLL 時鐘源。由于串口通信的同步收發(fā)模式對外部設備要求高,對時鐘的要求嚴格,且程序代碼編寫較為復雜,所以串口通信一般都使用異步收發(fā)模式。
3.2.4 PWM 初始化
PWM 表示脈沖寬度調制,它是一系列脈沖,這一系列脈沖是以方波的形式向前傳輸。在單片機工作的任何時間段內,PWM 波形只有高低兩種形式的電平。當涉及PWM 信號時,需要注意兩個重要的領域,一個是PWM 的占空比,另一個是PWM 信號頻率。占空比不同,PWM 波形的接通時間就不同,通過控制從0%到100%的占空比,我們可以調整PWM 信號的“接通時間”,從而控制信號的寬度。由于我們可以通過調節(jié)脈沖信號的寬度來改變接通時間,所以將這種控制方式稱為“脈沖寬度調制”。
為了確保每個采集脈沖的周期相同,初始化后應立即啟動編碼器。編碼器啟動如果滯后了,由于不同的圖像和不同的處理時間,會導致編碼器的脈沖時間的不同,從而產(chǎn)生錯誤,進而影響電機的閉環(huán)控制,導致機器人無法精準定位。
PID 控制是應用最早、最廣泛的控制策略之一,常用于自動控制過程中,參數(shù)匹配合理的情況下,該方法的控制過程簡單、完整,可靠性很高。PID 指的是比例、積分和微分控制,在此系統(tǒng)中,積分裝置的作用是限制振幅,即作用時間和作用位置,微分裝置的作用是使系統(tǒng)更穩(wěn)定。但實際上比例系數(shù)P 和積分系數(shù)I 的閉環(huán)控制就能夠使系統(tǒng)穩(wěn)定運行,因此系統(tǒng)只使用兩個系數(shù)P 和I,即電機為閉環(huán)P、I 控制且微分系數(shù)D 設置為0。但由于系統(tǒng)控制的電機經(jīng)常加減速,積分層只能在積分PID 位置出現(xiàn)一段時間,因此系統(tǒng)采用增量式PID 控制。
增量式PID 根據(jù)每單位的脈沖數(shù)讀取電機信息,并將實時讀取的數(shù)據(jù)與設定的目標值進行對比,根據(jù)偏差值進行控制,通過算法處理減小偏差并趨于零。增量式PID 的積分時間是系統(tǒng)積累的,沒有積分極限,這也是它與PID 最重要的區(qū)別。
圖像處理包括:圖像解析、圖像分離與處理以及圖像編碼。主要是通過計算機對原始圖像進行解析,然后通過原始圖像濾波、圖像的壓縮、圖像增強復原等,攝像頭收集圖像并將其放置在二維陣列中。
3.5.1 圖像矯正
由于地面不平或者其他環(huán)境因素的影響,安裝好的攝像頭在拍攝圖片的時候可能會存在失真,一般是垂直失真和水平失真兩類。水平失真對系統(tǒng)影響很小,無需專門校正。但垂直失真對最終的數(shù)據(jù)結果影響很大,一般圖像壓縮越深,壓縮程度越大,在機器人的路徑規(guī)劃中越容易出現(xiàn)嚴重偏差。為了解決垂直失真問題,我們采用持續(xù)采樣的方法,攝像頭拍攝的圖像以像素的形式存儲在二維矩陣中。二維數(shù)組的兩個維度是圖像的行數(shù)和列數(shù),要糾正垂直失真,必須在短距離內收集較少的行,在長距離內收集較多的行。具體的行數(shù)通過設置實際圖像來確定。
3.5.2 圖像有效信息采集
機器人運動位置和軌跡的邊界是照片中最有效的信息。因此,使用實時邊緣跟蹤方法從搜集到的照片里來提取邊緣線條。移動機器人的運行軌跡是沿著黑線行進的,因此在正常運行的狀態(tài)下,機器人可以檢測到黑線,且黑線應該在相機圖像中心,如果照片中沒有黑線,說明機器人已經(jīng)偏離既定軌道。以第一條線中心為測量點,左右掃描,直至該點由黑變白,上一行記錄的點X為參考點,以X為基準,掃描兩側,設定掃描區(qū)域。掃描跳轉點后,記錄該點。然后掃描上一行中記錄的點作為該行的參考點。最后,將這些點記錄在一個陣列中,對機器人的運動采取實時監(jiān)控。
3.5.3 顏色識別
攝像頭搜集的圖像以像素的形式存儲在二維矩陣中,不同顏色對應的像素模擬值會有不同,因此用采集到的圖像信息分別與二維陣列中的255 個模擬值相對照,即可選出正確的模擬值也就是正確的顏色。它們受光的影響,直接會導致模擬值的誤差。程序中模擬值的范圍是有限的,范圍是彩色的。
移動機器人的定位調試,包括硬件調試和軟件調試兩部分。硬件調試主要是檢查移動機器人的各硬件設備的性能,包括PCB 板調試、攝像頭調試和車輪安裝等;軟件調試則是檢查和驗證程序是否準確,控制算法和定位精度等。
4.1.1 PCB板調試
首先用萬用表測試所有線路,先檢查電源周圍的進出線是否存在短路情況,進出線直接影響著整個系統(tǒng)的安全運行;接下來檢查降壓電路出口處是否正常輸出5V 或3.3V,TEM模塊輸出5V 和3.3V;然后測試控制單元5.03V、3.3V、3.35V。確認電源正常,將電機驅動器下載到MCU,用示波器檢查相應的MCU 引腳是否有PWM 波輸出,尤其要測試通過光耦電路后引腳是否還能正常輸出PWM 波,因為PCB 板上的光耦電路經(jīng)常會出現(xiàn)異常。繪制的系統(tǒng)PCB 板如圖4所示。
圖4:PCB 板繪制圖
4.1.2 攝像頭調試
為了使移動機器人在行進過程中看的更遠,攝像頭應安裝在機身較高的位置,可以采用廣角攝像頭,給與攝像頭充足的識別時間。但對于機器人自身的圖像要進行篩除。實驗發(fā)現(xiàn),當攝像頭與地面呈一定角度拍攝時,圖像通常呈現(xiàn)的是線路一部分,所以安裝攝像頭時,通常會與地面成一定角度來裝配。由于攝像頭與地面存在夾角,拍攝的圖像會有大大小小的垂直失真。為了糾正垂直失真,我們應該在近距離收集較少的線,在遠處收集更多的線,但線的數(shù)目是由實際圖像的設置決定的。調整路線上黑線的位置,并設置兩個數(shù)組,在數(shù)組A 中記下距離,在數(shù)組B 中記下圖像中黑線的坐標。兩個數(shù)組A 和B 是內置的,找到了匹配效果最好的函數(shù)圖像,最后,用七次冪函數(shù)進行鑲嵌時,函數(shù)圖像最平滑,其數(shù)據(jù)被填充到陣列中,攝像頭捕捉到存儲在二維陣列中的函數(shù)后,最后得到攝像頭的實際圖像,通過算法修正后的圖像效果如圖5所示,左側圖為原始圖像,右側圖為壓縮圖像,可以看到失真修復效果較好。
圖5:失真修復效果圖
4.1.3 車輪的安裝
總體框架搭建后,安裝電機。電機由一塊鐵板和一塊三腳架固定,形成機器人的底盤,編碼器安裝在輪子旁邊,安裝時通過調整電機和編碼器的位置,可以完全合并,測試編碼器通電正常。移動機器人的實體外觀如圖6所示。
圖6:移動機器人外觀圖
軟件調試主要是看攝像頭對圖像的處理效果和電機PID的參數(shù)設置的調試。
4.2.1 圖像處理
攝像頭搜集的圖像由眾多像素組成,去除圖像中的線條后,二維陣列由240×1160 到93×1160 組成。調試時,我們先逐行接管,即每行采集左右邊緣,并存儲在兩個數(shù)組中,表示軌跡的左右信息。掃描的方法是從兩邊到中間。由于中心在車前,所以應該是注釋中的一個元素,在兩側掃描后,可以掃描到軌道邊緣并停止掃描,這樣就可剔除軌道外的干擾數(shù)據(jù),從而獲得更精準的路徑數(shù)據(jù)了。試驗表明,機器人計算出的坡度是穩(wěn)定的,因為坡度是邊線的曲率,但直線部分的曲率是相同的。在直線段,采用中線掃描算法進行校正,使其在中線保持穩(wěn)定。
4.2.2 PID 控制
采用PID 控制算法控制電機轉速,如果地面摩擦等因素影響機器人的運動,會對機器人的行徑造成不可預知的干擾。PID 控制算法中的微分判據(jù)會增加高頻干擾,這將大大改變機器人的行進速度。因此系統(tǒng)不采用微分控制D,只采用P比例控制和I 積分控制來調節(jié)機器人電機的性能。
調參數(shù)時,首先只使用比例控制,將其余參數(shù)設置為零。假如小車調試穩(wěn)定,則實際值與設定值之間存在靜態(tài)誤差,接著不斷修改P 參數(shù),直到使誤差值達到理想值,則增加I積分系數(shù)以消除之前數(shù)據(jù)的錯誤,控制速度緩慢增加,發(fā)現(xiàn)改進后電機驅動問題得到了解決。如果任務不正確,系統(tǒng)將覆蓋。這時,縮小尺寸和范圍可以在一定程度上修復覆面。
試驗時發(fā)現(xiàn)機器人在曲線和在直線上的轉速不同。采用PID 控制系統(tǒng)在直線速度和曲線速度之間切換是非常重要的。實驗發(fā)現(xiàn)移動機器人在直線和曲線之間的速度切換是剛性的,進入彎道時,有明顯的突然延遲,離開彎道時卻很快。改進思路是在測量評估后再降低目標速度,這樣,由直線到曲線的速度切換變得更平滑。由于直線和曲線之間的頻繁變速,很好地解決了電機轉速不穩(wěn)定帶來的一系列不必要的麻煩。
經(jīng)過反復實驗并對測試數(shù)據(jù)進行對比,發(fā)現(xiàn)在電機的轉速控制中加入PID 算法后,機器人的定位比上次比賽過程中更精準,尤其是在彎道和直道的切換過程中,移動機器人的速度更加平滑,運行更加穩(wěn)定,最終達到行走最優(yōu)路徑的目標,大大提高了機器人的操作精度,實現(xiàn)了機器人的顏色識別和精準定位。