摘 要:以電磁循跡小車為對象,對小車的硬件總體設(shè)計和程序的基本框架進(jìn)行詳細(xì)闡述,采用位置式PID和增量式PID分別實現(xiàn)了小車的轉(zhuǎn)向和驅(qū)動控制,最后著重研究了彎道、環(huán)島、路障等道路元素的識別方法。通過對實驗道路的精心設(shè)計,全面測試小車的循跡能力、障礙規(guī)避能力以及在不同道路條件下的適應(yīng)性。實驗結(jié)果表明,小車的驅(qū)動與轉(zhuǎn)向控制精確,提出的道路元素識別方法效果較好,應(yīng)用該道路元素識別方法的電磁循跡小車展現(xiàn)出了卓越的循跡行駛和障礙規(guī)避能力。
關(guān)鍵詞:電磁循跡小車;STC32G12K128;PID算法;電感布置;道路元素識別;障礙規(guī)避
中圖分類號:TP273 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2025)01-0-04
0 引 言
電磁尋跡小車作為一種可以有效優(yōu)化物流運作效率、降低人力成本的自動化設(shè)備,已經(jīng)在智能運輸領(lǐng)域中被廣泛應(yīng)用,以替代人工執(zhí)行高重復(fù)性的流水線作業(yè),有效提升了作業(yè)的自動化水平。電磁循跡技術(shù)的顯著優(yōu)點在于其極高的穩(wěn)定性,在各種作業(yè)環(huán)境下都能保持出色的抗干擾能力,從而確保了小車的精準(zhǔn)運行和高效作業(yè)。
本次實驗道路的示意圖如圖1所示。
在實驗道路上設(shè)置了一條中心電磁引導(dǎo)線,該引導(dǎo)線通有100 mA、頻率為20 kHz的交變電流。實驗道路設(shè)計多樣,包括彎道、十字路口、坡道、環(huán)島以及橫斷路障等各種元素。特別地,橫斷路障被設(shè)計成一個長、寬、高均為20 cm的立方體,其長度與道路寬度相等。當(dāng)小車遇到這種路障時,能在距離路障1 m的范圍內(nèi)靈活駛離道路,繞過障礙后,在同樣的距離內(nèi)重新回到道路上[1]。對于圓環(huán)部分,要求小車必須完整地繞行一周后才能繼續(xù)前行。
通過對實驗道路的精心設(shè)計,旨在全面測試小車的循跡能力、障礙規(guī)避能力以及在不同道路條件下的適應(yīng)性,對車輛代碼的編寫與硬件的設(shè)計制作均提出了極高的要求。其中,道路元素識別算法作為車輛代碼的核心組成部分,具有尤為重要的地位,本文的主要目的就是對這一關(guān)鍵算法進(jìn)行深入的研究和討論。
1 硬件的總體設(shè)計
電磁循跡小車的硬件設(shè)計的核心在于傳感器和執(zhí)行器的外圍電路設(shè)計。道路上鋪設(shè)的引導(dǎo)線通過的交變電流會產(chǎn)生磁場,該磁場被電磁信號采集模塊捕獲并轉(zhuǎn)換為微弱的電信號[2]。此信號進(jìn)一步被運算放大器放大,再通過車輛上的陀螺儀、車輪編碼器、霍爾傳感器模塊、紅外測距模塊等多種傳感器協(xié)同作用,最終被傳輸至單片機(jī)中進(jìn)行處理,獲得車道信息,以此來控制轉(zhuǎn)向舵機(jī)和驅(qū)動電機(jī)工作,從而實現(xiàn)車輛的循跡功能。電磁循跡小車的硬件系統(tǒng)框架如圖 2所示,其硬件電路的設(shè)計主要包含了STC32G核心板(單片機(jī)最小系統(tǒng))、主控電路板、電源模塊、電磁信號采集模塊、編碼器、陀螺儀、TOF紅外測距模塊、霍爾傳感器模塊、舵機(jī)、電機(jī)驅(qū)動模塊、電機(jī)、無線串口模塊、獨立按鍵模塊、撥碼開關(guān)模塊和OLED顯示模塊。
2 程序的基本框架
在車輛的設(shè)計流程中,集成了多個傳感器和執(zhí)行器,這使得在代碼層面構(gòu)建一個優(yōu)良的框架顯得尤為重要。這一框架不僅影響著代碼的初始構(gòu)建,更對后續(xù)的代碼編寫、擴(kuò)展和維護(hù)具有深遠(yuǎn)影響[3]。
在實驗道路中,需要依據(jù)多種傳感器的實時數(shù)據(jù)來精確控制小車的行為。例如,電磁數(shù)據(jù)用于舵機(jī)的轉(zhuǎn)向控制;陀螺儀數(shù)據(jù)用于計算轉(zhuǎn)角;編碼器數(shù)據(jù)則用于調(diào)整電機(jī)轉(zhuǎn)速;紅外測距模塊的數(shù)據(jù)則為避障提供判斷依據(jù)。除此之外,還需要不斷識別當(dāng)前道路的元素。本文采用STC(宏晶)公司的STC32G12K128單片機(jī)為主控芯片。鑒于該芯片不支持實時操作系統(tǒng)(RTOS),無法利用多線程技術(shù)實現(xiàn)任務(wù)的并行處理。
因此,本文采用了一種基于定時器中斷和標(biāo)志位的策略來構(gòu)建小車的代碼框架,如圖 3所示。將需要實時處理的程序部分放入定時器中斷中,并通過設(shè)置標(biāo)志位的方式實現(xiàn)各個數(shù)據(jù)流的輪詢更新。這樣,可以確保每個傳感器數(shù)據(jù)都能得到及時的處理。在代碼的組織上,將實時性要求相對較低的代碼段放在主循環(huán)中,而對實時性要求較高的部分則放置在定時器中斷內(nèi)。這種結(jié)構(gòu)保證了關(guān)鍵任務(wù)的優(yōu)先執(zhí)行,同時還不會忽視其他非關(guān)鍵但必要的任務(wù)。
3 驅(qū)動與轉(zhuǎn)向控制
車輛采用四輪配置,其中轉(zhuǎn)向功能是通過前置的舵機(jī)實現(xiàn)的,而驅(qū)動功能則依賴于后置的雙電機(jī)。為了確保車輛的轉(zhuǎn)向和驅(qū)動控制具備高精度和高效率,本文采用了PID(比例-積分-微分)算法。
PID算法是一種廣泛應(yīng)用于控制系統(tǒng)中的經(jīng)典算法[4]。算法的具體數(shù)學(xué)表達(dá)見式(1):
(1)
式中:Kp、Ki和Kd分別為比例、積分和微分的調(diào)節(jié)系數(shù)。
PID算法的核心思想是根據(jù)系統(tǒng)誤差來調(diào)整控制參數(shù),使系統(tǒng)逐漸逼近目標(biāo)狀態(tài)。具體而言,它通過對目標(biāo)值和實際值之間的偏差進(jìn)行比例、積分和微分的計算,得出控制量,從而控制系統(tǒng)的行為。隨著技術(shù)的發(fā)展和應(yīng)用需求的不斷變化,PID算法也衍生出了許多變種和改進(jìn)版本,以適應(yīng)不同的控制場景和需求[5]。
在處理電感值的過程中,首先采用均值濾波和歸一化等方法,消除可能存在的噪音和異常值的影響;接著,計算了兩個對應(yīng)電感值的差比和,并將其作為輸入誤差值用于舵機(jī)的PID控制。當(dāng)小車處于道路中央時,差比和的值為0,表明小車并未偏離道路;但當(dāng)小車偏離道路時,差比和的值便不再為0。差比和的具體數(shù)值代表了舵機(jī)PID控制的誤差值。
對于舵機(jī)的控制,選用了位置式PID算法[6]。舵機(jī)控制部分代碼如圖4所示。
此算法的特點在于,其并不需要記憶控制量,而是直接根據(jù)設(shè)定值和反饋值之間的誤差來進(jìn)行計算,從而得出所期望的PWM輸出。
為了優(yōu)化并獲取較為合適的轉(zhuǎn)向性能,通過對代碼中的比例系數(shù)Kp和微分系數(shù)Kd進(jìn)行調(diào)節(jié)來實現(xiàn)。其中,比例系數(shù)主要決定了舵機(jī)對誤差的敏感程度以及其調(diào)節(jié)的力度,而微分系數(shù)則主要反映了舵機(jī)對誤差變化速率的響應(yīng)能力。通過適當(dāng)?shù)卣{(diào)節(jié)這兩個參數(shù),可以在一定程度上增強(qiáng)轉(zhuǎn)向的靈敏度和穩(wěn)定性,從而使得循跡小車能夠在實驗道路上保持良好的行駛軌跡。
在電機(jī)控制方面,主要采用增量式PID算法[7]。左電機(jī)控制部分代碼如圖 5所示。相較于位置式PID,增量式PID更適用于需要精確控制輸出量的場景。在每個控制周期內(nèi),它計算的是控制增量,而非絕對數(shù)值,因此能夠根據(jù)目標(biāo)轉(zhuǎn)速與實際轉(zhuǎn)速之間的差值來調(diào)整輸出量,從而實現(xiàn)對電機(jī)的精確控制。
編碼器用于反饋車輪的轉(zhuǎn)速,提供實時、準(zhǔn)確的轉(zhuǎn)速信息。通過將目標(biāo)轉(zhuǎn)速與實際轉(zhuǎn)速進(jìn)行比較,可以得到電機(jī)PID控制的誤差值。
增量式PID算法在每個控制周期內(nèi)根據(jù)誤差值計算出控制增量,并根據(jù)這個增量來調(diào)整電機(jī)的輸出量。通過不斷地迭代計算和調(diào)整,該算法能夠逐漸減小誤差值,使電機(jī)的實際輸出逐漸逼近目標(biāo)輸出。
需要注意的是,調(diào)節(jié)PID參數(shù)是一個經(jīng)驗性的過程,需要根據(jù)實際情況進(jìn)行多次嘗試和調(diào)整。此外,不同道路條件和車輛狀態(tài)也可能對PID參數(shù)的最優(yōu)選擇產(chǎn)生影響。因此,在實際使用中,可能需要根據(jù)具體情況進(jìn)行參數(shù)的微調(diào),以適應(yīng)不同的道路和車輛條件。
4 彎道元素識別
為了確保循跡小車的平穩(wěn)運行,需要對舵機(jī)的PID控制參數(shù)Kp和Kd進(jìn)行細(xì)致的調(diào)節(jié)。具體來說,在直道行駛時,為了降低舵機(jī)對電感信號的敏感度,會適度減小Kp值,避免小車在直道上因頻繁修正轉(zhuǎn)向而引起不必要的左右晃動。在進(jìn)入彎道時,若繼續(xù)使用在直道上設(shè)定的PID參數(shù),可能會導(dǎo)致小車轉(zhuǎn)向不足,增加偏離道路的風(fēng)險。因此,需要準(zhǔn)確判斷當(dāng)前所處的道路類型(彎道或直道),并據(jù)此設(shè)定相應(yīng)的PID參數(shù)。這樣,無論是在直道上還是彎道上,都能確保小車具備適當(dāng)?shù)霓D(zhuǎn)向性能,不僅增強(qiáng)了行駛的穩(wěn)定性,還降低了沖出道路的風(fēng)險。
經(jīng)過一系列的實驗和測試,最終確定了一種策略,如圖 6所示。data1、data2、data3、data4分別為4個電磁信號采集模塊采集到的數(shù)值,即根據(jù)data1和data4的差比和來判斷小車當(dāng)前所處的路況(直道或彎道),并設(shè)置相應(yīng)的PID參數(shù)。具體而言,當(dāng)data1與data4的差比和處于一個預(yù)設(shè)的較小閾值范圍內(nèi)時,判定小車正在直道上行駛。此時,需要適度減小Kp值,并對Kd進(jìn)行相應(yīng)的調(diào)整,以減小車輛因細(xì)微的轉(zhuǎn)向修正而產(chǎn)生的左右晃動,從而確保其在直道上的穩(wěn)定行駛。然而,一旦data1與data4的差比和超出預(yù)設(shè)的閾值范圍,則判定小車已進(jìn)入彎道。此時,需要增大Kp值,并對Kd進(jìn)行匹配性調(diào)整,以確保車輛在彎道中具備良好的通過性和操控穩(wěn)定性。
5 環(huán)島元素識別
環(huán)島元素的識別是一個尤為復(fù)雜的過程,如圖 7所示。為了使小車能夠成功通過環(huán)島,整個行駛過程被劃分為四個步驟:判斷、入環(huán)、正常循跡和出環(huán)。
在環(huán)島元素的處理中,判斷是否為環(huán)島是至關(guān)重要的一步。最初,本文采用基于電感值突變的方法來判斷環(huán)島。通過觀察小車經(jīng)過環(huán)島時的電感值變化,發(fā)現(xiàn)車輛在進(jìn)入環(huán)島時,四個電感值總會出現(xiàn)明顯的突變。因此,最初的策略是利用這種突變的電感值作為判斷環(huán)島的依據(jù)。然而,經(jīng)過多次實驗后,發(fā)現(xiàn)這種方法存在一些問題。道路搭建時的誤差、電壓不穩(wěn)定以及車輛靠近環(huán)島時的車身姿態(tài)變化等因素都可能導(dǎo)致判斷失誤。因此,單獨通過特征值判斷環(huán)島的方法對于不同道路的適應(yīng)性很差,需要尋找新的方法來判斷環(huán)島。
車輛在經(jīng)過左環(huán)島時,電感值data4和data3會先增大然后減小,而data1和data2則會先減小然后增大,這一數(shù)據(jù)變化與車輛行駛路徑和電感布置方式相符合。基于這一特征,可以在代碼中采用置標(biāo)志位的方式進(jìn)行預(yù)判斷,以區(qū)分左環(huán)島和右環(huán)島。當(dāng)滿足預(yù)判斷條件時,再結(jié)合閾值來判斷具體是左環(huán)島還是右環(huán)島。通過這種方式,發(fā)現(xiàn)小車對環(huán)島的判斷準(zhǔn)確率顯著提高,即使更換了道路,也基本無需調(diào)節(jié)閾值范圍即可準(zhǔn)確識別環(huán)島。經(jīng)過環(huán)島時4個電感參數(shù)的具體數(shù)值變化見表1,4個電感參數(shù)的變化趨勢如圖8所示。
在成功判斷道路元素為環(huán)島后,陀螺儀開始積分,并向舵機(jī)發(fā)送指令,使其固定打角。這是為了讓車輛平穩(wěn)地進(jìn)入環(huán)島。陀螺儀的積分是為了準(zhǔn)確計算車輛的角度變化,一旦陀螺儀計算出車輛進(jìn)入環(huán)島后達(dá)到了預(yù)設(shè)的角度,系統(tǒng)會切換至正常循跡模式。在正常循跡模式下,車輛會根據(jù)引導(dǎo)線的方向進(jìn)行行駛。當(dāng)車輛接近駛出環(huán)島時,系統(tǒng)會再次向舵機(jī)發(fā)送固定打角的指令,防止車輛受到旁邊電磁線的干擾,確保車輛能夠平穩(wěn)地駛離環(huán)島。最后,當(dāng)陀螺儀的積分達(dá)到360°時,系統(tǒng)會控制車輛直行一段距離,防止車輛再次誤判進(jìn)入環(huán)島,并穩(wěn)定地進(jìn)入直線路段。
針對環(huán)島元素,有多個需要調(diào)整的參數(shù)和閾值[8]。首先,車輛在環(huán)島中行駛時需要考慮到圓環(huán)半徑的大小。如果圓環(huán)半徑過小,可能需要切換電感和調(diào)整舵機(jī)的PID參數(shù);其次,入環(huán)預(yù)判斷和正式入環(huán)時的閾值也需要不斷優(yōu)化。這些閾值的設(shè)置直接影響到車輛是否能夠準(zhǔn)確判斷進(jìn)入環(huán)島以及進(jìn)入環(huán)島的時機(jī);另外,入環(huán)和出環(huán)時的固定打角也是一個需要考慮的因素。具體應(yīng)該打多少度比較合適,需要根據(jù)車輛的特性和環(huán)島的實際情況進(jìn)行確定;同時,固定打角時陀螺儀的積分角度也是一個重要的參數(shù),多少度才能確保車輛平穩(wěn)地進(jìn)入或駛離環(huán)島,需要根據(jù)實際情況進(jìn)行調(diào)整和優(yōu)化。
6 路障元素識別
如圖 9所示,車輛在面對橫向阻斷的路障時,能在距其前方1 m的范圍內(nèi)駛離道路;完成路障的規(guī)避后,車輛還應(yīng)保證在與路障保持1 m距離的前提下,重新返回道路。為滿足這一要求,本文采用了逐飛DL1B測距模塊以實現(xiàn)對路障的精準(zhǔn)識別,并通過調(diào)控舵機(jī)和電機(jī)實現(xiàn)對車模行駛軌跡的精細(xì)控制。
在規(guī)避路障元素的過程中,發(fā)現(xiàn)了幾個需特別注意的問題,并針對這些問題提出了相應(yīng)的解決方案。
(1)由于路障高度和坡道高度接近,安裝在車輛前方的測距模塊可能會出現(xiàn)將坡道誤判為路障的情況,進(jìn)而錯誤地啟動路障規(guī)避程序。為解決這一問題,采用了兩個測距模塊,它們分別被安裝在車輛前方,并具有一定的高度差。當(dāng)車輛經(jīng)過坡道時,由于兩個測距模塊存在高度差,它們所測量的距離會有所不同。當(dāng)兩個測距模塊測量到的距離差值超過某一預(yù)設(shè)閾值時,系統(tǒng)即可判定前方為坡道而非路障。而在經(jīng)過實際路障時,由于路障為立方體形狀,上下兩個測距模塊所測量的距離差值不會很大。當(dāng)兩個測距模塊的數(shù)據(jù)同時小于某一閾值且相差不大時,系統(tǒng)則判定前方為路障元素;
(2)如圖 10所示,在某些特定情況下,如小車行駛方向與坡道側(cè)面相對或道路與周圍擋板距離過近時,測距模塊有可能將坡道或擋板誤判為障礙。針對這種情況,采取了一種強(qiáng)制控制策略。當(dāng)系統(tǒng)檢測到非障礙干擾時,會強(qiáng)制控制小車按照正常循跡模式行駛,并通過編碼器進(jìn)行積分。這種控制模式將持續(xù)至小車完全駛離非障礙干擾區(qū)域后,系統(tǒng)才會重新恢復(fù)對各種元素的判斷功能[9]。這一策略有效地降低了誤判率,提高了小車在復(fù)雜環(huán)境中的穩(wěn)定性和適應(yīng)性。
7 其他元素識別
關(guān)于實驗道路中的其他元素,本文采用了以下策略進(jìn)行處理:道路記圈方面,選用了霍爾傳感器來感知鋪設(shè)在道路起點上的磁鐵,從而精準(zhǔn)判斷小車是否完成一圈并控制其進(jìn)出庫[10];在坡道元素的處理上,通過陀螺儀測量俯仰角的加速度來判斷車輛是處于上坡還是下坡狀態(tài)。根據(jù)這一信息,控制系統(tǒng)能夠精確調(diào)整電機(jī)的加減速,以保證車輛在坡道上的平穩(wěn)行駛和順利通過。
8 結(jié) 語
本文深入探討了電磁循跡小車的設(shè)計與制作過程,尤其著重于代碼框架的精心構(gòu)建以及在實驗道路上實現(xiàn)各種元素識別的有效方法。通過運用本文所闡述的道路元素識別技術(shù),電磁循跡小車在實際道路測試中展現(xiàn)出了良好的性能。展望未來,電磁循跡小車在智能交通、自動物流等領(lǐng)域擁有廣泛的應(yīng)用前景。隨著相關(guān)技術(shù)的持續(xù)進(jìn)步和研究的不斷深化,期待為電磁循跡小車的設(shè)計與控制注入更多的創(chuàng)新活力和實現(xiàn)重大突破。
參考文獻(xiàn)
[1]張旭,高琴,趙士勛.基于單片機(jī)的電磁四輪循跡及避障策略[J].物聯(lián)網(wǎng)技術(shù),2021,11(1):59-60.
[2]李全民,余華柱,楊杰勇.基于S9KEA128AMLK的智能電磁循跡小車設(shè)計與實現(xiàn)[J].機(jī)電工程技術(shù),2022,51(11):153-158.
[3]熊中華.基于電磁循跡的直立車設(shè)計[J].電子制作,2022,30(14):6-8.
[4]袁振洋,孔放,劉峻宇.基于PID算法的智能小車電磁循跡方法研究[J].電子制作,2022,30(1):27-30.
[5]黃飛璇,華志遠(yuǎn),李全彬.一種電磁車循跡及賽道元素識別算法
[J].物聯(lián)網(wǎng)技術(shù),2023,13(11):32-34.
[6]顧肖峰,楊宗良,于明亮.基于K60的電磁循跡避障小車的設(shè)計[J].物聯(lián)網(wǎng)技術(shù),2020,10(3):114-117.
[7]梁富銘,王曉剛,陳新兵.電磁循跡越野車的設(shè)計與制作[J].電子世界,2020(1):111-115.
[8]李全民,賈林鋒.電磁循跡式智能小車傳感器布置研究[J].實驗技術(shù)與管理,2019,36(8):139-142.
[9]李興旭,魏磊,高琴.基于單片機(jī)的無線充電電磁循跡小車[J].物聯(lián)網(wǎng)技術(shù),2019,9(2):90-94.
[10]秦磊,王佳宇,黃名揚,等.基于單片機(jī)的電磁循跡智能車系統(tǒng)的設(shè)計[J].物聯(lián)網(wǎng)技術(shù),2018,8(7):102-104.