林俊仁,郭駿祥,王一凡,張博鑫,倪虹霞
(長春工程學院,長春 130012)
近年來,制造企業(yè)不斷完善生產(chǎn)系統(tǒng),智能制造與智慧物流行業(yè)快速發(fā)展,智能倉儲由于其便于管理、效率高等特點得到廣泛應用。過去傳統(tǒng)人力進行搬運、運輸?shù)戎貜凸ぷ?,費時費力,應用ROS 智能車和AGV 智能車在物流運輸領域成為必然趨勢。智能搬運機器人是智能倉儲的重要組成之一。本文設計的智能搬運機器人是一款基于STM32 和樹莓派的室內(nèi)自主行走、自動避障的自動導引小車(Automated Guided Vehicle,AGV),可以自主進行路徑規(guī)劃,識別物料,獨立完成搬運工作。
STM32 單片機用于控制車的行進、速度及轉向等基本功能,如前進、后退、拐彎等。設計一個二輪平衡車和四輪智能車結構,兩種機械結構更加適用于多種環(huán)境,電機PID 速度控制,了解并使用電機編碼器,完成航向角的測量,可以對智能車精確控制。而樹莓派主要用于發(fā)布導航信息和里程信息,利用SLAM 算法對智能車精準定位,以達到導航的目的。
智能搬運機器人的核心技術是自主導航技術,其包括環(huán)境感知、定位及路徑規(guī)劃等3 個部分。室內(nèi)環(huán)境感知,由激光雷達傳感器實現(xiàn),通過激光雷達傳感器測出機器人與目標之間的距離,運用算法計算目標地點的位置。
智能搬運機器人室內(nèi)定位由二維碼導航技術實現(xiàn),通過差分定位,結合現(xiàn)場地圖,利用控制系統(tǒng)分析地圖坐標數(shù)據(jù),并與已建立的地圖信息對比實現(xiàn)定位。該技術定位準確、靈活,易于鋪設和更換路徑,易于控制通信,是現(xiàn)場應用比較廣泛的方式。
智能搬運機器人由多個模塊組合構成,其硬件包括了智能車車架、樹莓派4b、舵機、STM32 f103c8t6開發(fā)板、雙路直流減速電機、激光雷達、編碼器、電池、電機驅動、MPU6050、LED 屏幕,系統(tǒng)硬件組成結構圖如圖1 所示。
圖1 系統(tǒng)硬件組成結構
硬件系統(tǒng)主要組成部分:
(1)采用STM32 單片機作為主控芯片,其內(nèi)部資源豐富,片上外設、定時器等數(shù)量較多,功能強大,有專用的PWM 引腳,更加穩(wěn)定。該單片機具有I2C,SPI 等接口,利于開發(fā)和控制,DMA 控制器用于數(shù)據(jù)的運輸,減少對CPU 的占用。
(2)智能車機械結構分為兩種:兩輪和四輪。兩輪為平衡車結構,體積小,更利于進入狹小的環(huán)境;四輪更加穩(wěn)定,利于進入地面不平的環(huán)境,穩(wěn)定性和平衡性更好。
(3)電源:本設計采用航模電池,電池組規(guī)格為,電壓:11.1V 到12.6V,1100mAh,8C。其尺寸:69mm×34mm×19mm,重量約90g。滿足電機驅動模塊和樹莓派供電要求,電機驅動模塊給STM32 單片機提供5V 的直流電源供電。
(4)測速編碼器:編碼器是一種將角位移或者角速度轉換成一連串電數(shù)字脈沖的旋轉式傳感器,我們可以通過編碼器測量到位移或者速度信息。編碼器從輸出數(shù)據(jù)類型上可以分為增量式編碼器和絕對式編碼器。從編碼器檢測原理上來分,還可以分為光學式、磁式、感應式、電容式。常見的是光電編碼器(光學式)和霍爾編碼器(磁式)。設計采用的是霍爾編碼器,滿足智能搬運車測速編碼需求。
(5)超聲波傳感器:采用HC-SR04 超聲波測距模塊,有UART 和IIC 功能,2cm 盲區(qū),采用升級解調(diào)芯片RCWL-9205,2.2mA 工作電流,工作電壓3~ 5.5V,接口豐富。
(6)舵機:采用該SG90,反應速度0.12~ 0.13 秒/60°,工作扭矩為0.156 8Nm,可使用溫度為-30℃到60℃,使用電壓為5V,可用于舉升等功能。
(7)屏幕采用OLED 屏,由STM32 控制驅動,優(yōu)點有可視角度大,功耗低,不需要背光源,對比度高等優(yōu)點,供電范圍:3.3~ 5V,工作溫度:-30℃~70℃,通信方式采用I2C 或者SPI,使用壽命不少于160 000 小時。
(8)樹莓派4b 采用Ubuntu 系統(tǒng),CPU 為64 位1.5GHz 四核(28nn 工藝),藍牙5.0,內(nèi)存為1~ 4GB DDR4,擁有雙micro HDMI 接口,千兆以太網(wǎng),電力需求為3A,5V。
(9)激光雷達采用了RPLIDAR A1,精度較高,可用于定位導航,采樣頻率可達8k,掃描頻率達到5.5Hz,掃描范圍為360°,功耗較低,可以實現(xiàn)多點觸控與人機交互,抗環(huán)境光能力強。
本系統(tǒng)主要功能有導航定位,二維碼識別,避障等功能。軟件設計模塊主要分為兩個部分,一個是樹莓派部分,包括激光雷達導航,SLAM 算法,模型文件編寫等模塊,一個是STM32 智能車部分,有PID 速度控制,航向角度控制,二維碼識別等軟件模塊。軟件模塊組成框圖如圖2 所示。
圖2 系統(tǒng)軟件組成結構
2.2.1 PID 部分
二輪結構下:平衡智能車運用了PID 進行直立、平衡和速度控制,分為直立環(huán)、速度環(huán)、轉向環(huán),每一個PID 出的輸出結果都由單片機輸出成PWM 進入電機。直立環(huán)PID 只運用了PD 控制,輸入的參數(shù)為角度偏差和機械中值(取決于平衡車的機械結構),角度由MPU6050(陀螺儀)測量;速度環(huán)運用了PI 控制,輸入的參數(shù)為智能車輪子的轉速,也就是智能車電機編碼器的速度,同時使用了一階低通濾波器,使速度控制更精準;轉向環(huán)用了PD 控制,輸入?yún)?shù)為智能車的轉向角度。PID 的基本流程如圖3 所示。
圖3 PID 的基本流程
四輪結構下,前輪使用舵機轉向,整個四輪車采用了四驅驅動,通過PID 控制其速度,輸入的參數(shù)為智能車的輸入電機編碼器的轉速,輸出結果為PWM值。
2.2.2 舵機控制
使用不同的PWM 波實現(xiàn)舵機的各個角度轉動,控制脈沖的長短來控制舵機的最大轉動角度。本系統(tǒng)下,舵機的基準信號周期為20ms,寬度為1.5ms,而最小脈沖為1ms,最大脈沖為2ms 實現(xiàn)搬運,具有卸下物品等功能。
2.2.3 激光雷達部分
使用思嵐科技的RPLIDAR A1,用5V 直流電源供電,有以下兩種使用方法。
直接通過STM32 與激光雷達相連接,使用STM32F401RE_Nucleo 開發(fā)板(STM32F401RE_Nucleo開發(fā)板背面的SB62、SB63 各自連通后開發(fā)板正面CN9上面的D0、D1才能和UART2 的Rx、Tx 連通),RPLidar 通過UART1 引腳與STM32F401 相連并通訊,波特率為115 200,通過程序讀取激光雷達的輸出。
程序1 的基本思路如下:定義一個UART1 Rx的DMA 緩沖區(qū)用于存儲數(shù)據(jù),取變量名為uart1_rx_buffer,將以定義成一個環(huán)形隊列,所占用的連續(xù)內(nèi)存空間從邏輯上可分為UART1_RX_BUFFER_AMOUNT(程序中的一個變量)份,這個變量中的每一個元素的data 指針都指向uart1_rx_DMA_buffer的n 份的首地址。UART 接收過程中,將數(shù)據(jù)傳給DMA,并完成數(shù)據(jù)入列,并在中斷函數(shù)中實現(xiàn)入隊操作,調(diào)整隊列。定義一個UART1_RX_BUFFER 結構體,其中state 用于表示DMA 緩存區(qū)的狀態(tài),start_DMA_time_ms 和finish_DMA_ms 用于表示DMA 的開始接收和完成接收的時間。ValidPos 用于表示保存了多少數(shù)據(jù),readPos用于將要存儲的數(shù)據(jù)的下標,data中存儲著緩存區(qū)里的數(shù)據(jù),可以通過printf 函數(shù)打印出來。圖4 為思嵐官網(wǎng)RPLIDAR A1 的打印數(shù)據(jù),引腳配置如圖5 所示。
圖4 打印數(shù)據(jù)程序(部分截圖)
圖5 芯片引腳配置
將RPLIDAR A1 連接樹莓派,使用思嵐科技官網(wǎng)的SDK 包,得到需要的位置信息用于導航,在SDK包中ultra_simple 是一個簡單的演示程序,可以快速地集成到現(xiàn)有的系統(tǒng),但并不穩(wěn)定,使用simple_grabber 是輸出柱狀圖的雷達數(shù)據(jù),用戶需要使用connect()函數(shù)打開串口并連接到激光雷達上。采用了Cartographer 算法(由google 推出的一套基于圖優(yōu)化的SLAM 算法),相較于Hector 算法能更加精準地判斷位置,具有回環(huán)檢測功能,Cartographer 是一個在多個平臺和傳感器配置上提供2D 和3D 實時同步定位和繪圖(SLAM)的系統(tǒng),本方案采用的是2D SLAM,主要融合了Local 和Global 兩種方式,使用了Submap 這一概念。使用Cartographer 算法時,需先安裝ROS 和cartographer_ros 的依賴項,或則會報錯,還需配置自己的設備信息,構建.launch 文件,最終實現(xiàn)點云的第一人稱可視化。
2.2.4 顯示部分
本設計采用的顯示屏幕是OLED 屏幕,由I2C 或者SPI 控制,可以用來顯示中文,英文,標點符號。如圖5 所示,一共有四個引腳。VCC 接單片機的3.3V引腳,GND 接電源負極,也可以并聯(lián)上一個濾波電容,保證供電穩(wěn)點,不會出現(xiàn)閃屏的現(xiàn)象,SCL 和SDA 分別為OLED 屏時鐘線和數(shù)據(jù)線連接單片機的I2C 引腳。
2.2.5 二維碼識別
使用openmv 實現(xiàn)二維碼識別,可以讀取不同的二維碼信息,獲得智能車的基本位置。
智能搬運機器人系統(tǒng)測試內(nèi)容是對研究完成的系統(tǒng)的主要功能進行測試,檢驗系統(tǒng)功能的完成程度是否滿足設計要求。在測試過程中,對系統(tǒng)中不滿足設計要求的部分進行優(yōu)化和完善。本系統(tǒng)的智能車主要由PID 速度控制,MPU6050 姿態(tài)控制,二維碼識別,激光雷達導航,發(fā)布里程計和深度信息,機器人模型文件等多部分代碼文件組成,使用Keil uVision5、VIM 等多個編程軟件以及調(diào)試軟件,使用STLINK 下載器將調(diào)試好的軟件下載到單片機和樹莓派中,最終完成智能物流搬運車的設計。測試內(nèi)容及結果如表1 所示。
表1 測試內(nèi)容及結果
文章設計一款實現(xiàn)智能搬運功能的機器人,實現(xiàn)了智能定位、導航、避障及物資搬運等功能,實現(xiàn)了搬運智能化的設計要求,解決了傳統(tǒng)物流行業(yè)依賴人工、效率低等問題。該智能搬運機器人適應性強,只需對其程序進行簡單修改就可以適應多個不同環(huán)境需求,為智能制造領域物流運輸提供有力支撐。