隨著計(jì)算機(jī)、網(wǎng)絡(luò)、機(jī)械電子、信息、智能移動機(jī)器人是一類能夠通過移動機(jī)器人技術(shù)研究綜合了多學(xué)科領(lǐng)域的知識,關(guān)鍵技術(shù)可分為:路徑規(guī)劃、導(dǎo)航定位、路徑跟蹤與運(yùn)動控制技術(shù)。路徑規(guī)劃又可分為全局和局部路徑規(guī)劃。全局路徑規(guī)劃是根據(jù)移動機(jī)器人總體任務(wù)進(jìn)行路徑規(guī)劃,將總體路徑任務(wù)分解,并建立全局地形數(shù)據(jù)庫;局部路徑規(guī)劃是根據(jù)全局規(guī)劃分解的子任務(wù),結(jié)合移動機(jī)器人當(dāng)前狀態(tài)信息,實(shí)時(shí)規(guī)劃可行路徑;導(dǎo)航定位技術(shù)確定移動機(jī)器人在全局地圖中的位置,并實(shí)時(shí)得到機(jī)器人與路徑跟蹤的相對位置關(guān)系,其關(guān)鍵技術(shù)是多傳感器信息處理與數(shù)據(jù)融合技術(shù)。路徑跟蹤與運(yùn)動控制技術(shù)的任務(wù)是控制移動機(jī)器人跟蹤局部規(guī)劃給出的路徑,結(jié)合導(dǎo)航定位系統(tǒng)得到機(jī)器人本身狀態(tài)信息與道路信息,完成航向和速度控制。移動機(jī)器人的路徑規(guī)劃、導(dǎo)航控制以及路徑跟蹤與運(yùn)動控制技術(shù)是相互關(guān)聯(lián)的,任何一個(gè)系統(tǒng)的不完善都會導(dǎo)致整體性能的下降。
本文通過對移動機(jī)器人的研究,實(shí)現(xiàn)了基于渡越時(shí)間法的超聲波測距模塊設(shè)計(jì),為機(jī)器人提供簡單方便的障礙物距離檢測。本文主要完成對主控板控制器軟件設(shè)計(jì)、電機(jī)驅(qū)動控制器軟件設(shè)計(jì)和超聲波測距軟件的設(shè)計(jì),使開發(fā)系統(tǒng)能夠服務(wù)于移動機(jī)器人研究的通用開發(fā)平臺。
移動機(jī)器人技術(shù)研究綜合了多學(xué)科領(lǐng)域的知識,關(guān)鍵技術(shù)可分為:路徑規(guī)劃、導(dǎo)航定位、路徑跟蹤與運(yùn)動控制技術(shù)。路徑規(guī)劃又可分為全局和局部路徑規(guī)劃。全局路徑規(guī)劃是根據(jù)移動機(jī)器人總體任務(wù)進(jìn)行路徑規(guī)劃,將總體路徑任務(wù)分解,并建立全局地形數(shù)據(jù)庫;局部路徑規(guī)劃是根據(jù)全局規(guī)劃分解的子任務(wù),結(jié)合移動機(jī)器人當(dāng)前狀態(tài)信息,實(shí)時(shí)規(guī)劃可行路徑;導(dǎo)航定位技術(shù)確定移動機(jī)器人在全局地圖中的位置,并實(shí)時(shí)得到機(jī)器人與路徑跟蹤的相對位置關(guān)系,其關(guān)鍵技術(shù)是多傳感器信息處理與數(shù)據(jù)融合技術(shù)。路徑跟蹤與運(yùn)動控制技術(shù)的任務(wù)是控制移動機(jī)器人跟蹤局部規(guī)劃給出的路徑,結(jié)合導(dǎo)航定位系統(tǒng)得到機(jī)器人本身狀態(tài)信息與道路信息,完成航向和速度控制。
1主控板軟件設(shè)計(jì)
主控板硬件完成模塊管理、設(shè)備通訊及機(jī)器人定位脈沖檢測等內(nèi)容。在實(shí)際應(yīng)用中,主控板硬件還負(fù)責(zé)超聲波測距的軟件管理。
主控板硬件中只有主控板控制器需要進(jìn)行軟件設(shè)計(jì)。主控板控制器TMS320LF2407A的主要任務(wù)是超聲波測距的軟件設(shè)計(jì)管理和其他一些基本設(shè)置內(nèi)容,包括電機(jī)碼盤的正交編碼脈沖檢測。初始選定TMS320LF2407A作為主控板控制器是考慮到此控制系統(tǒng)可以作為以后機(jī)器人應(yīng)用的平臺,可以在TMS320LF2407A里嵌入實(shí)時(shí)系統(tǒng),提升系統(tǒng)性能,方便接口開發(fā)。
主控板控制器的軟件設(shè)計(jì)內(nèi)容包括模塊初始化、串口通訊、正交編碼脈沖檢測和超聲波測距軟件。這里介紹模塊初始化串口通訊和正交編碼脈沖檢測等內(nèi)容。圖1主控板控制器程序流程圖。
復(fù)位向量地址為程序入口,然后程序進(jìn)行初始化。初始化內(nèi)容包括擴(kuò)展方式、溢出方式、DARAM、倍頻、JTAG等基本配置。另外還有使用的相關(guān)I/O的設(shè)置、程序使用相關(guān)定時(shí)器的設(shè)置、程序使用相關(guān)中斷的設(shè)置和串口通訊的相關(guān)設(shè)置。這些配置都是控制器使用的基本配置流程。初始化之后會開啟相關(guān)的中斷程序,隨后進(jìn)入超聲波測距程序,并一直循環(huán)。中斷服務(wù)程序處于就緒狀態(tài),一旦有中斷發(fā)生,中斷服務(wù)程序立即執(zhí)行。
在TMS320LF2407A的所有程序中,需要對其串口的數(shù)據(jù)發(fā)送和接收程序做說明。異步通信使用三條線(地線、發(fā)送線、接收線)連接采用RS232格式的終端。發(fā)送各位依次為一個(gè)起始位、l~8個(gè)數(shù)據(jù)位、可選的一個(gè)奇偶校驗(yàn)位、1~2個(gè)停止位。因此串口通訊能夠傳輸?shù)淖畲蟮臄?shù)據(jù)單位為8位,即一個(gè)字節(jié)。在設(shè)計(jì)中控制器和各終端會有各種類型的數(shù)據(jù)交流,如整形數(shù)據(jù)和浮點(diǎn)數(shù)據(jù),因此需要對串口發(fā)送和接收的數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。
四個(gè)字節(jié)的單精度浮點(diǎn)數(shù)的數(shù)據(jù)傳輸,因?yàn)榇诿看巫疃嘀荒軅鬏斠粋€(gè)字節(jié),所以只需要把每個(gè)四字節(jié)浮點(diǎn)數(shù)的存儲數(shù)據(jù)轉(zhuǎn)換成字節(jié)形式發(fā)送即可,設(shè)計(jì)中采用強(qiáng)制轉(zhuǎn)換的方式完成。數(shù)據(jù)接收的時(shí)候也可以采取同樣的處理方式,反向轉(zhuǎn)換即可。另外在數(shù)據(jù)轉(zhuǎn)換上也可選擇共用體來實(shí)現(xiàn),共用體的實(shí)質(zhì)和上面講述的類型轉(zhuǎn)換是一樣的,只是共用體的各個(gè)數(shù)據(jù)類型占用的存儲空間是共同的,對于這個(gè)存儲空間,共用體定義的任何結(jié)構(gòu)類型變量都可以調(diào)用。上位機(jī)里的串口數(shù)據(jù)處理采用的是這種方法,十分方便。
對于正交編碼脈沖的檢測,TMS320LF2407A具有獨(dú)立的正交編碼脈沖單元,只要對單元寄存器進(jìn)行簡單設(shè)置即可得到機(jī)器人驅(qū)動輪的運(yùn)行方向和距離參數(shù)。TMS320LF2407A將這些數(shù)據(jù)通過串口發(fā)送到上位機(jī),由上位機(jī)建模,對數(shù)據(jù)加以處理后得到機(jī)器人的位姿信息。
2 電機(jī)驅(qū)動軟件設(shè)計(jì)
電機(jī)驅(qū)動軟件完成電機(jī)的驅(qū)動控制和閉環(huán)調(diào)速。驅(qū)動控制使用的是電機(jī)驅(qū)動主控芯片STCl2C4052AD的片內(nèi)PWM外設(shè)單元,生成的PWM信號經(jīng)過電機(jī)驅(qū)動芯片驅(qū)動電機(jī),可以通過調(diào)節(jié)PWM占空比來調(diào)節(jié)加載在電機(jī)上24VDC電壓的占空比,從而調(diào)節(jié)電機(jī)轉(zhuǎn)速。PWM占空比由片內(nèi)8位的PWM控制寄存器進(jìn)行控制,該寄存器取值范圍為0-255,分別代表PWM信號占空比從l到0的連續(xù)變化。同時(shí)STCl2C4052AD接收電機(jī)光電碼盤的脈沖信號,利用片內(nèi)時(shí)鐘計(jì)算出電機(jī)運(yùn)行速度,通過速度控制算法完成電機(jī)的閉環(huán)調(diào)速。
電機(jī)驅(qū)動及閉環(huán)調(diào)速軟件算法流程圖如圖2所示。
圖2電機(jī)驅(qū)動控制器程序流程圖
如上圖所示,程序開始后進(jìn)行初始化,初始化包括程序使用相關(guān)變量定義、10ms定時(shí)器0、定時(shí)器l及串口、脈沖計(jì)數(shù)用外中斷0、看門狗等寄存器的設(shè)置和電機(jī)狀態(tài)參數(shù)(剎車、速度)等的初始化。然后進(jìn)入循環(huán)狀態(tài),循環(huán)過程中更新看門狗寄存器的相關(guān)標(biāo)志位。速度檢測和閉環(huán)調(diào)速程序分別在外中斷0和定時(shí)器0中完成。中斷服務(wù)程序也就包含了外中斷0、定時(shí)器0以及串口中斷服務(wù)程序。
外中斷0是電機(jī)光電碼盤的脈沖檢測外設(shè),所有電機(jī)光電碼盤的脈沖都會引起外中斷0的中斷。碼盤脈沖測速的原理是計(jì)算STCl2C4052AD單位定時(shí)時(shí)間內(nèi)的脈沖數(shù)目,因此外中斷0的中斷服務(wù)程序的內(nèi)容就是對脈沖計(jì)數(shù)。而上位機(jī)設(shè)定的目標(biāo)電機(jī)轉(zhuǎn)速也會被轉(zhuǎn)換為此單位定時(shí)時(shí)間內(nèi)的脈沖數(shù)目??梢远x一個(gè)全局變量,每次進(jìn)入外中斷0的中斷將該變量加1即可。另外為防止程序干擾,應(yīng)該對計(jì)數(shù)值加以修正,如小于0的時(shí)候等于0,大于某一設(shè)定值的時(shí)候等于某一設(shè)定值等。
3 超聲波測距軟件設(shè)計(jì)
設(shè)計(jì)中的超聲波測距軟件利用了常用超聲波測距的渡越時(shí)間法。渡越時(shí)間法的工作原理為發(fā)射超聲波的同時(shí)開始計(jì)時(shí),接收到超聲波后停止計(jì)時(shí),記錄超聲波的傳輸時(shí)間為t,那么超聲波測距模塊和障礙物的距離為s由下式表示。
S=v*t/2
其中v為超聲波在空氣中的傳播速度。由下式表示。
?
其中,T為空氣的華氏溫度。
在常溫下,超聲波的傳輸速度隨溫度變化并不太大,而且超聲波的傳輸時(shí)間都為毫秒級,因此影響不是很大。不過也可以為超聲波測距模塊添加一個(gè)溫度校正模塊,檢測環(huán)境溫度,再在主控板控制器計(jì)算超聲波速度時(shí)進(jìn)行修正。現(xiàn)在市場已有集成溫度檢測器件,也很方便。
超聲波測距的主要流程為發(fā)射超聲波以后,如果有反射超聲波信號返回,則由外中斷0接收計(jì)算距離。在超聲波信號發(fā)射的同時(shí)打開定時(shí)器3,定時(shí)時(shí)間為最大超聲波測量距離所需的傳輸時(shí)間,如果在定時(shí)器3中斷的時(shí)候還沒有外中斷0中斷事件發(fā)生,即沒有反射超聲波信號返回,那么在進(jìn)入定時(shí)器3中斷的時(shí)候關(guān)閉超聲波返回中斷和超聲波傳輸時(shí)間定時(shí)器l,進(jìn)行下一次的超聲波測距循環(huán)。程序流程圖如圖3所示。
圖3超聲波測距程序流程圖
外中斷0接收到超聲波測距信號返回,則進(jìn)入外中斷0服務(wù)程序進(jìn)行測距程序處理。若沒有超聲波信號返回則將發(fā)生定時(shí)器3的定時(shí)中斷,說明等待超時(shí),設(shè)定測距范圍內(nèi)無障礙物。兩種情況都將引發(fā)等待標(biāo)志位的改變,程序跳出等待狀態(tài),更改工作超聲波測距模塊,進(jìn)行下一個(gè)超聲波模塊的測距處理。
外中斷0和定時(shí)器0的程序流程圖如圖4所示。
圖4 外中斷0和定時(shí)器3程序流程圖
圖中A為外中斷0程序流程圖。進(jìn)入中斷服務(wù)程序表示有超聲波信號返回。程序開始關(guān)閉所有系統(tǒng)的可屏蔽中斷和測距使用外設(shè),讀取定時(shí)器l計(jì)數(shù)值,計(jì)算障礙物距離。更改程序循環(huán)標(biāo)志,然后中斷服務(wù)程序返回。B為定時(shí)器3的程序流程圖。進(jìn)入中斷服務(wù)程序表示測距范圍內(nèi)無障礙物,因此只用關(guān)閉系統(tǒng)的可屏蔽中斷和測距使用外設(shè),直接更改程序循環(huán)標(biāo)志,退出中斷服務(wù)程序即可。設(shè)置定時(shí)器1不產(chǎn)生中斷,而設(shè)置定時(shí)器1為定時(shí)最大值也不會發(fā)生定時(shí)器l中斷。因此不必寫定時(shí)器1的中斷服務(wù)程序。
4 結(jié)論
本主控板控制器協(xié)調(diào)上位機(jī)和各模塊的工作,軟件設(shè)計(jì)中詳細(xì)講述串口傳輸中的數(shù)據(jù)類型處理問題。利用單片機(jī)PWM外設(shè)生成脈沖寬度調(diào)制信號驅(qū)動電機(jī),并通過光電碼盤實(shí)現(xiàn)電機(jī)的閉環(huán)調(diào)速。超聲波測距模塊已經(jīng)有廣泛的應(yīng)用,超聲波測距模塊軟件程序采用通用的渡越時(shí)間法完成距離的測量,并通過模擬開關(guān)實(shí)現(xiàn)多超聲波測距模塊的分時(shí)工作。
評論
查看更多