賀一烜 柏孟杰 鄭登華
摘 要:智能物流機器人是當前機器人行業發展的一個分支,由機械、電子、控制等學科交叉而成,其中包括機械結構的設計、電路的設計、控制程序的編寫和調試等,這些因素影響著機器人的移動速度、定位的準確性以及預期目標達成的能力等。對于初學者或有一定基礎的愛好者如何快速入門,以及對于工程訓練綜合能力競賽的相關策略,本文將做具體論述。
關鍵詞:Arduino;智能物流;機器人;競賽
Arduino是一款易于上手、功能齊全、[1]操作簡單的開源性電子設計平臺,其包含硬件(各種型號的Arduino開發板)和軟件(Arduino的開發環境)。目前,很多電子愛好者都以Arduino為核心,電機、傳感器等各種硬件為載體做出各種電子設計,市面上也有很多的以Arduino為核心的DIY電子設計。智能物流機器人的設計采用Arduino為控制核心,可以降低編程方面的難度,而且其豐富的功能又能滿足機器人的需要。目前,“中國大學生工程訓練綜合能力競賽”,浙江省、四川省、黑龍江省等一些省級教育廳主辦的機器人競賽或工程訓練競賽,都設有智能物流機器人這一競賽項目,對于此類競賽的應對方法,以及利用Arduino如何進行具體的設計,本文將從以下三方面論述。
一、智能物流機器人的設計
智能物流機器人的功能在于可以通過從二維碼讀取區的二維碼,得到夾取物塊的信息和物塊的放置位置,夾取物塊并將指定的物塊送到目標區域。機器人的設計主要分為底盤設計、機械手設計、電路設計以及控制程序設計。機器人的驅動方面多為直流電機和舵機,直流電機控制容易,舵機較大的扭力可以使機械手抓取物塊,直流電機的種類和舵機的型號視實際需求而定。
底盤結構上通常為剛性結構,底盤形狀根據輪子的數量和輪子的種類而定,通常有四輪底盤和三輪底盤,輪子通常有普通橡膠輪、全向輪、麥克納姆輪等。四輪底盤的形狀通常為長條形或者正四邊形,[2]采用普通橡膠輪時,輪以常規四驅車輪子分布方式安裝,采用全向輪或者麥克納姆輪時,輪通常以向底盤中心的十字線傾斜45°分布,且四個輪均以這兩條字線相互對稱。三輪底盤通常為圓形,三個輪三等分橫向分布在底盤邊緣,輪通常采用全向輪或麥克納姆輪。當四輪底盤采用普通橡膠輪時,轉彎前往取料區或放置區時,容易在循跡路線上出現偏差,會使機器人無法自我調整并偏離路線,而采用全向輪或者麥克納姆輪時,可以直接使機器人的側向成為機器人的正向,原機器人的正向轉為機器人的側向,成功避免了普通橡膠輪機器人轉彎時容易產生偏差的問題。三輪底盤也避免了轉彎時的偏差問題,這種底盤轉彎時只需要原地轉動90°,即視為完成轉彎變向,且三輪底盤前進時只需要控制兩個電機的轉動,更便于對機器人各種情況的編程。
機械手的設計方面,因使用舵機去驅動機械手,建議設計機械手時的舵機使用數目越少越好。舵機本身具有一定的誤差,如果使用n個舵機,那么實際的誤差便是一個舵機的誤差的n次方,舵機的數目越少,實際具有的誤差便越少,則降低了機械手抓取時產生意外的可能性。機械手抓取的部位,可以加海綿或者橡膠等物體,增加抓取部位的摩擦力。
在電路設計方面,則要多考慮電壓和供電方面的問題。機器人里主要用到直流電機、舵機、攝像頭模塊、顯示屏、控制板、穩壓模塊和傳感器等電路元件,再考慮到電路元件的自重和機器人機身重量,機器人運行電量消耗較大。所以盡量避免單電源供電,可以考慮準備兩個電源,一個電源給機器人底盤的各個電路元件供電,另一個直接給機械手上的舵機供電。因底盤有幾乎全部的電路元件,給機器人底盤供電的電源,其電壓和電量要偏高些,給機械手供電的電源的電壓和電量可以適當低一些。為了便于檢查故障的電路元件的連線,可以制作一PCB板,將電路元件和電源的布線集合在PCB板上,當電路出現故障時,能快速檢查線路方面的問題,而且也使機器人的電路元件連接更加方便。Arduino控制板的拓展板也可以作為替換PCB板的一個選擇,但相比之下PCB板更加個性化。
控制程序設計方面,Arduino的開發支持C/C++編程語言,因此用戶可以通過C/C++語言來實現對機器人上的輸入模塊(傳感器、攝像頭)的信號的處理和輸出模塊(電機、顯示屏、舵機)的控制,以此來達到預期的目標。目前智能物流機器人競賽中,參賽隊伍通常要根據賽道的實際情況設計出相應的程序,機器人在二維碼讀取區域附近讀取二維碼上的信息,并根據二維碼上的信息,二維碼上有要抓取的物塊的顏色和放置的區域的信息,移動到物塊提取的區域,抓取指定的物塊,并攜帶物塊運送到指定的放置位置,同時機器人上的顯示屏要顯示要抓取的目標和放置的路徑的信息。根據比賽要求的不同,程序視要求做出相應的改變。機械手上的舵機也可以接在16路舵機控制板上與Arduino控制板串口通信,初學者可以通過這種辦法用16路舵機控制板的上位機直觀的控制舵機轉動的角度,來設計機械手的抓取程序。在二維碼信息讀取的方面,初學者也可以使用專門的二維碼讀取模塊,讀取的程序會比攝像頭的讀取程序簡單。但需要注意的是,有的二維碼模塊讀取后的數字信息直接賦予執行命令的程序,可能會出現抓取指定物塊的程序無法執行的情況,這時需預先設定一個變量,用這個變量來代替讀取完二維碼后返回的數值,這樣抓取的程序便可以執行。例如,用“1”、“2”和“3”這三個數字生成二維碼,部分二維碼模塊讀取后返回的數值分別是“49”、“50”和“51”,那么定義三個變量int x,y,z,對應三個數值,當有數值返回時,便將“1”這數值賦予相應的變量,下為一段示例:if(Serial.available()>0){delay(1);ch=Serial.read();if(ch==49){x=1;}if(ch==50){y=1;}if(ch==51){z=1;}}。
當機器人制作完成后不斷調試的過程,對電路元件的消耗也是較大的。應該備用一些零件和電路元件,當出現問題時,及時將損壞部分更換,繼續調試。如果機械手采用的是舵機控制板和Arduino控制板串口通信,要注意給舵機控制板供電的電壓,舵機控制板相較于Arduino控制板更容易被電流燒毀。普通的直流電機相較于直流減速電機或者步進電機更容易被損壞,應當多備用一些。減速電機或者步進電機的金屬軸不能直接用手去觸碰,手上的汗液容易對轉軸位置造成腐蝕,影響電機的性能。電機的驅動模塊,如L298n電機驅動模塊,也比較容易損壞。除此之外,機器人各個接線部分要經常檢查,機器人運行時很容易造成接線處松動,致使部分電路元件短暫失效。
二、智能物流機器人的調試
智能物流機器人的設計制作的完成,對一個完整的可以按照要求準確執行命令的機器人來說,只算完成了最基礎的部分。而后期的改良和調試,是更為主要的一部分。在競賽賽道上調試時,經常會遇到很多種問題,例如采用循跡移動的機器人在直角時會偏離循跡路線、攝像頭或者二維碼模塊無法有效啟動去識別二維碼、機械手夾取物塊時突然松動等問題。對于這一類問題,通常要選擇排除法解決,從電路方面開始排查,很多時機器人出現故障都是因為線路松動或者電路元件損壞引發的,隨后再檢查機械結構和裝配方面,檢查機械結構是否損壞失效,最后是檢查程序問題,可能是程序中某一數值或循環邏輯出現了偏差。例如,采用循跡方式移動的機器人,在直角轉彎處第一次調試發現可以順利完成轉彎,而第二次卻偏離了循跡線。對于這種情況,可以先從電路方面開始檢查,確認接線無誤后,檢查電機情況,觀察正常通電的情況下左右兩個電機的轉速是否一致,如果電機本身沒有問題,在擰通過電機的長螺絲時不要擰過緊,螺絲擰過緊也會擠壓電機內部的齒輪,使轉彎出現一定程度的偏差。如果此時問題依然存在,因機械結構問題常出現在機械手上,可先不考慮機械結構的問題,直接在程序中檢查問題,如在轉彎程序、循跡程序和延時設定等方面檢查。
因智能物流機器人的調試需要花大量的時間,所以調試時一定要有耐心。在不斷的調試過程中發現問題、解決問題并積累經驗,以便于之后做類似的機器人時知道如何處理相似的情況。智能物流機器人主要執行的功能就是移動、抓放、和視覺。多數競賽場地是網格狀場地,那么在機器人的移動方式方面,就要多加考慮,可以采用在網格狀場地循跡移動到目標位置,那么在調試的過程中,如何優化循跡程序,是一個重要的問題,這需要在不斷的循跡測試的過程中對部分數據微調,使機器人可以順利循跡。不僅如此,考慮到場地會反光,如何能讓循跡的傳感器準確分辨循跡線也是一個重要的問題,這時需要在場地上對所有循跡的傳感器的靈敏度進行調整,使用于循跡的傳感器都可以準確分辨循跡線,減少光線對傳感器的影響,傳感器在調試到最佳后盡量不要再加以改動,微小的改動都有可能使傳感器靈敏度受影響。移動方式方面,除了循跡移動,也可以選擇定位移動,即通過計算機器人出發點到目標區域之間的距離以及輪子轉一圈所前進的距離,以此確定輪子需要轉動多少圈可以移動到目標區域,在調試這種移動方式的機器人時,要準確計算距離的大小,不僅如此,兩種移動方式都需要考慮機器人在目標區域停止時會不會打滑這種情況,視情況用一些材料增加輪子的摩擦力。在抓放物塊的調試時,要時刻根據機械手的情況去修改,舵機的轉動角度要準確測量再寫入程序里,不能讓機械手動作執行過快,盡量將速度減慢,避免物塊在運輸的過程中脫落以及在放置時不穩而倒下。在調試視覺時,要注意攝像頭的識別距離,進行識別時,將機器人在自己調試的最適距離范圍內。
三、智能物流機器人的競賽
完成智能物流機器人的設計制作和調試之后,最后的面對的就是相關競賽的發揮和策略。首先要找好隊員,隊員之間要相互協調,通常競賽為三人一組,一個人做機器人的結構、一個人編寫機器人的程序、最后一人最好兩者都懂一些來做機器人的相關調試。機器人的機身多為有機玻璃板用激光切割機切割而成,控制板多數競賽沒有要求,可自由選擇。因Arduino有中文社區,相關資料更為豐富,其自身控制板操作簡單、種類多和功能足,所以Arduino控制板是一個很好的選擇,其中Arduino Mega2560控制板效果更好。有些競賽要求機械手與物塊接觸的全部零件需要用3D打印機打印出來,應對策略可以調整機械手的抓取位置,在保證抓取效果不影響的情況下,減少與物塊接觸的部分,這樣會用最少的時間打印完零件,會有更多的時間進行現場調試。
競賽前,觀察賽道和各區域分布是否按照競賽規則上的圖紙布置,現場光線的情況,如有問題,及時向場地維護人員提出申請。正式比賽前調試時,要充分利用好每一分鐘,大多數情況下賽前調試的時間很短,此時盡量不要再修改機器人的程序了,需要的是依靠參賽選手備賽過程中調試時的大量經驗積累來應對賽前調試的突發情況。最后,良好的心理素質關系到競賽時水平的發揮,不要過于緊張,調整好狀態,穩定發揮出備賽時的水平。
四、結語
智能物流機器人的設計并不是很困難,但是要將其制作出來,應用在比賽中,取得優異的成績,也絕非易事。競賽時,考驗的是隊伍成員之間的相互配合,共同將機器人完成,而不是全由一個人負責。遇到特殊情況時,要保持冷靜,多方面考慮。
參考文獻:
[1]梅蓉.淺析Arduino單片機智能小車設計[J].企業科技與發展,2019(02):123-124.
[2]吳波濤,孔金平,王湘.基于Arduino和樹莓派的智能小車的設計與實現[J].電子設計工程,2017,25(15):58-61.
作者簡介:賀一烜,就讀于西南石油大學本科二年級學生,常參與機器人類相關競賽,單位是:西南石油大學機電工程學院。