新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MSP430的智能小車自動糾偏與避撞的實現

        基于MSP430的智能小車自動糾偏與避撞的實現

        作者: 時間:2012-07-06 來源:網絡 收藏

        輛是一種機器人,它可以按照預先設定的模式在一個環境里自動行駛,也可以根據現場情況自主執行特定操作。其設計內容涉及自動控制、計算機技術、傳感與檢測技術等多個學科。智能小車在自動控制領域具有廣闊的應用前景。其中,如何保證車輛直線行駛,而不是“之”字形行駛、轉彎過程如何保證平行行駛,和超車是其中3個需要解決的基本問題。文中根據3個問題分別提出了解決方法,實際實驗效果良好。

        1 現實應用模擬原理

        本文模擬現實應用,借助圖1所示跑道(2塊細木工板拼接而成,離地面高度8 cm,板上邊界線由約2 cm寬的黑膠帶構成:虛線由2 cm寬、長度為10 cm、間隔為10 cm的黑膠帶構成)實現如下功能:甲車車頭緊靠起點標志線,乙車車尾緊靠邊界,甲、乙兩輛小車同時起動,先后通過起點標志線,在行車道同向而行,在超車區超車,并實現兩車交替超車領跑功能。


        2 系統結構

        系統組成結構如圖2所示。小車主要由控制中心(F149單片機)、避撞檢測模塊、轉彎線檢測模塊(兼作彎道糾偏)、直道糾偏檢測模塊、電機驅動模塊、簡易按鍵、nRF905通信接口、電源等組成。



        2.1 避撞檢測模塊

        為保證兩車不相撞,需要使兩車之間距離保持在一個合適的范圍,即避撞。系統使用HY-SRF05超聲測距傳感器,將其安裝在小車車頭,可實時測得兩車縱向距離,從而控制兩車加速減速來使距離保持適中。HY-SRF05有優秀的性能,感應角度:不大于15度;探測距離:2~450 cm;精度可達0.2 cm。設l為測量距離,t為往返時間差,超聲波的傳播速度為c,則有t=2l/c,而聲波在空氣中傳輸速率為(m/s)。式中T為環境溫度;Co為絕對溫度時的速度,是常數。從上述兩式可以推出



        2.2 轉彎線檢測模塊

        采用紅外反射收發對管來檢測黑色標志線,放置在小車車頭,用于檢測圖1中的轉彎標志線和超車標志線,紅外發射管發出的紅外線照射到平板上,若紅外接收管不能接收到反射回的光線則表示光線全被吸收,則檢測出黑色標志線,從而輸出高電壓,若能接收到反射回的光線則表示檢測到非黑色標志線,輸出低電壓。

        2.3 直道糾偏檢測模塊

        行車道40 cm,邊界由2 cm黑膠帶圍成,如果不加防護措施小車容易滑落。正常如果不加防護措施,小車容易脫離跑道。由小車側面兩個E18-D80NK紅外傳感器進行直道中的糾偏,將兩個紅外避障傳感器分別向外傾斜一定角度,安裝在小車兩側,如圖4所示,調節紅外避障傳感器的感應距離,使避障距離介于傳感器到跑道與傳感器到地面之間,當傳感器探測到跑道時,輸出低電平,表示小車在跑道上,當探測到地面時,輸出高電平,說明小車即將脫離跑道,這時及時糾偏,確保小車正常行駛。



        2.4 通信接口

        超車時,為了確定兩車的位置、及時調節兩車的速度、減少超車時間,需要使用nRF905在兩車間進行無線通信。nRF905是挪威Nordic VLSI公司推出的單片射頻收發器,使用SPI接口與微控制器通信。

        2.5 電機驅動模塊

        采用L298N驅動直流電機,利用它內部的橋式電路來驅動電機,這種方法的優點是利用PWM波來控制電機速度,其余端口可以控制電機的正反轉。

        3 軟件設計

        小車行駛模式分為:自主模式、跟隨模式。自主模式即前面的車依照事先設定的速度行駛,并自動糾偏。跟隨模式即后車緊跟在前車后面,保持一定距離,并自動糾偏。自主模式和跟隨模式能自動切換。

        3.1 直道糾偏算法

        小車行駛過程中,直道糾偏采用兩次糾偏的方式。如果僅采用一次糾偏,如圖5左所示,雖然可以把小車的前進方向糾正,但小車整體處在跑道邊緣,偏離跑道中心,在下次出現偏離時很容易出現來不及糾正而小車已經掉落跑道的情況。根據否定之否定規律,采用兩次糾偏,在糾正行車方向同時,調整小車位置趨向跑道中心。該算法如下:

        直道糾偏的同時開啟TimerA計時;小車離開跑道邊緣時關閉TimerA,保存計時值:nTurnHold。

        繼續轉彎,時長為2*nTurnHold(繼續保持2*nTurnHold轉彎是為了將小車調整向跑道中間);反向轉彎,時長為nTurnHold(反向轉彎是為了糾正小車方向);恢復原來的行駛模式。具體流程圖如圖6所示,先判斷接近的是左或右邊線,做好左右轉標記,然后以直道兩次糾偏算法進行計算,最后根據左右轉標記進行反方向糾偏。


        3.2 彎道糾偏算法

        采用小車兩邊轉速不同、輔以延時的方法來實現轉彎,因此延時時間是關鍵。然而,通常在過轉彎標志線時,車身與線不垂直且角度也不固定,如圖7所示。這將造成無法確定一個固定的延時值。為此,采用彎道糾偏的方法,確保小車過彎后姿態可控,該方法流程圖如圖8所示。其中,每輛車配有兩塊對稱分布于車頭兩邊的轉彎線檢測模塊,當其中有一塊檢測到轉彎線時,先判斷是左還是右,如果是左邊先檢測到線則符號為“+”,否則為“-”,然后立刻打開的計時器TimerA,計算兩塊傳感器檢測到轉彎線的時間差。根據符號是“+”或“-”,將上面得到的時間差以一定比例加/減到固定延時時間上,這個比例無準確計算方法,實際數值主要根據跑道的摩擦力,小車速度等客觀條件確定,進而得到最終的時間參數(即轉彎時長nVeerTime),轉彎函數調用此參數。這樣一種“負反饋式修正”的方法,能使小車在轉彎后基本平行于跑道,且去向跑道中間。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 哈密市| 姜堰市| 会泽县| 泸水县| 丘北县| 华坪县| 当阳市| 密云县| 江川县| 汕头市| 东乡族自治县| 石林| 丽水市| 长垣县| 黄石市| 那坡县| 邻水| 枣庄市| 荥阳市| 衡南县| 巴中市| 淅川县| 葫芦岛市| 高平市| 师宗县| 绥芬河市| 梅州市| 万荣县| 拉孜县| 田阳县| 镇沅| 东乡县| 彝良县| 集贤县| 祁阳县| 岑巩县| 印江| 介休市| 九江市| 公安县| 遵义县|