新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM和Linux的路徑記憶循跡小車

        基于ARM和Linux的路徑記憶循跡小車

        作者: 時間:2016-09-12 來源:網絡 收藏

        根據具體環境,可建立一個起點、多個終點的路線,并將各個路線記憶分別保存在下的不同文件中,通過讀取文件中內容實現循跡功能。

        4 系統軟件設計

        系統軟件設計分為3個層次:應用層、操作系統層和驅動層。應用層包括控制策略程序、建立和按鍵控制小車的工作模式;操作系統層包括Bootloader移植、操作系統內核的移植和根文件系統移植;驅動層主要包括us-100超聲波模塊、SG90舵機以及電機驅動模塊等驅動程序。

        4.1 系統移植以及驅動程序

        操作系統的移植包括uboot、內核和文件系統的燒寫,內核包含GPIO口、DM9000網卡、內存等關鍵的底層驅動。小車啟動時,通過uboot對S3C6410進行必要的初始化,然后引導的啟動。

        需要的驅動程序有:電機驅動模塊驅動程序、SG90舵機驅動程序、光電測速模塊驅動程序以及us-100超聲波模塊驅動程序。其中,舵機與超聲波編寫到一個驅動文件中。這些模塊的驅動程序都是以混雜設備驅動的方式編寫,主要的驅動函數采用ioctl函數。而電機驅動模塊與超聲波避障驅動程序的結構相似,僅是實現功能不同。電機驅動模塊驅動程序框架如下:

        d.jpg

        e.jpg

        光電測速模塊驅動程序完成兩種功能:①采用中斷的方式來記錄小車的測速,并反饋給應用層作為PID控制的反饋;②通過應用層傳遞車輪運轉的周數,驅動中利用異步通知的方式在運轉完規定周數后通知應用層,作為小車轉向時的控制。

        4.2 程序設計

        超聲波避障是決定智能小車運行狀態的關鍵所在。利用超聲波測得人為障礙物,讓智能小車通過躲避障礙物實現按預定路線行走,并通過Linux文件系統將小車行走過程中所有的狀態都記錄在一個文件中形成記憶庫。程序流程圖如圖3所示。

        f.jpg

        4.3 智能小車控制策略程序設計

        智能小車基本的控制是通過電機驅動模塊將模塊上對應的引腳與11的GPL口和GPK口中的部分引腳相連,通過對GPIO口輸出高低電平來控制小車的直行、90°左轉彎、90°右轉彎和180°掉頭。

        由于小車在轉向時,輪胎會出現打滑現象,這樣會影響小車的90°與180°的精確轉向。為了讓小車能在無黑線的情況下精確轉向,本設計中采用hmc58831電子羅盤作為小車的“眼睛”。一般的電子羅盤都會存在一定的偏差,通過校正以后可以使精度達到1°左右。

        由于本設計中只是為了讓小車轉向,并非準確地測出與地理北極方向的偏向角,所以在校正后可直接使用輸出數據。為了讓小車轉向時迅速且準確,設計了分段的轉向運行方案,利用光電測速模塊和20格碼盤控制小車的運行。主要的程序流程圖如圖4所示。

        g.jpg

        為了讓小車能在無黑線的情況下走出相對距離內的直線,在電機的控制中采用PID控制算法進行調速。根據測速系統反饋回來的當前電機速度和設定速度進行比較,將偏差作為新的輸入量控制PWM信號的占空比,從而實現各個電機在單位時間內走的路程近似相等。PID控制算法原理如圖5所示。

        h.jpg

        在記憶庫建立完成后,智能小車的運行是從記憶庫中讀取已定路線在各點的狀態值,最后實現小車按照規定路線行駛。主要的程序流程如圖6所示,而從終點回到起點只需將記憶庫的內容反向讀取,并將左右轉向取反。

        i.jpg

        4.4 工作模式的控制

        本設計中智能小車的運行有兩種工作模式:第一是建立記憶庫;第二是按照記憶庫實現循跡。通過按鍵控制小車的工作模式,當環境發生改變時,只需通過按鍵設置成建立記憶庫模式,即可完成記憶庫的修改。

        5 系統測試結果及結論

        通過對智能小車的測試,小車能將行駛過程中各個狀態記錄入庫,完成了利用超聲波避障和Linux文件系統的記憶庫的建立,并且通過記憶庫可實現小車按設定路徑的循跡的功能。

        本方案使得小車在不同的環境中只需人為地重新設置障礙,通過設置小車的功能模式讓智能小車按障礙路線運行一次便可建立新的記憶庫,不需要重新布線或更改程序。本設計進一步地擴展了智能小車的應用,增強了小車的環境適應性,并且可以擴展到智能家居和遠程監控領域,具有較強的實用性。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 延长县| 庆元县| 民乐县| 米林县| 富民县| 高雄市| 镇平县| 吐鲁番市| 微博| 济阳县| 青河县| 信阳市| 金塔县| 乌拉特中旗| 高淳县| 汤阴县| 铜川市| 琼中| 固镇县| 兰考县| 垦利县| 洪雅县| 绵竹市| 高要市| 洛扎县| 海丰县| 岱山县| 涞水县| 绵竹市| 江源县| 平泉县| 化州市| 阿尔山市| 游戏| 平阴县| 县级市| 商都县| 兴文县| 旬阳县| 彭泽县| 苍溪县|