龍佳樂(lè),祝歡亮,陳健恒,茹道志,黃楚鑫,伍康敏,李鵬,張建民※,倪素茵,吳清秀
(1.五邑大學(xué)智能制造學(xué)部,廣東江門 529020;2.廣東彩立方科技有限公司,廣東江門 529030;3.深圳中科銀狐機(jī)器人有限公司,廣東深圳 518126)
在現(xiàn)代社會(huì)中,下水道遍布城市各地,構(gòu)成了復(fù)雜的下水道網(wǎng)絡(luò)。下水道在城市美化、飲食衛(wèi)生、防止疾病傳播、污水處理等方面起到重要作用。然而隨著時(shí)間的推移,下水道長(zhǎng)期遭受污水的腐蝕以及堆積了各種各樣的垃圾、淤泥,會(huì)出現(xiàn)堵塞、破裂、產(chǎn)生有毒氣體等問(wèn)題,對(duì)環(huán)境造成了極大的污染,阻礙了城市的生活排水,給人們的生活出行造成極大的困擾,所以定期對(duì)地下的排水通道進(jìn)行排查、檢修、維護(hù)愈發(fā)重要[1]。但是由于大多數(shù)地下道操作空間狹小,不便于人們?cè)诘叵碌篱_(kāi)展人工作業(yè),再加上環(huán)境惡劣,存在有毒氣體,長(zhǎng)期呆在下水道作業(yè)會(huì)對(duì)人體的健康造成難以挽回的影響,研究出能夠代替人工開(kāi)展地下作業(yè)的特種機(jī)器人成為了一種必然的趨勢(shì)。在地下管道內(nèi)使用的機(jī)器人具有體積小、靈活多變的行駛方式,能夠很好地在狹小的地下管道內(nèi)通行,并且可以實(shí)時(shí)勘測(cè)管道內(nèi)部的堵塞情況,完成疏通管道的工作。地下道勘測(cè)機(jī)器人能夠替代人們完成復(fù)雜繁瑣的管道勘測(cè)和疏通清理工作,適用于各種管道,具有廣闊的應(yīng)用市場(chǎng)。從20 世紀(jì)70 年代開(kāi)始至今,發(fā)達(dá)國(guó)家對(duì)管道機(jī)器人的研究都有很大的進(jìn)展。日本的東京大學(xué)的HIROSE 的團(tuán)隊(duì)研究的Thes 系列的中小型管道的檢修機(jī)器人。日本的橫濱國(guó)立大學(xué)[2-3]通過(guò)大量采集數(shù)值與分析數(shù)值,然后建立機(jī)器人行駛數(shù)學(xué)模型,設(shè)計(jì)出能夠位置定位、清理污水的管道檢測(cè)機(jī)器人。為適應(yīng)未來(lái)社會(huì)的發(fā)展,復(fù)旦大學(xué)設(shè)計(jì)并成功制作了一臺(tái)地下道勘測(cè)機(jī)器人,使用了無(wú)線圖傳技術(shù)對(duì)攝像頭采集的圖像進(jìn)行無(wú)線傳輸,在電腦上接收視頻圖像[4]。通過(guò)遠(yuǎn)程控制技術(shù),實(shí)現(xiàn)機(jī)器人的遠(yuǎn)程控制操作,驅(qū)使機(jī)器人移動(dòng)與機(jī)械爪的控制夾取,并且可以通過(guò)非接觸感應(yīng)充電的形式,實(shí)現(xiàn)小車的無(wú)線充電的功能[5-6]。
圖1 所示為該地下道勘測(cè)機(jī)器人系統(tǒng)總體框架。包括電源管理電路、主控芯片電路、BTN7971B 電機(jī)驅(qū)動(dòng)電路、74L244 邏輯芯片電路、機(jī)械臂控制電路、無(wú)線充電模塊、OLED 顯示模塊、電壓采集模塊等。地下道勘測(cè)機(jī)器人的底盤控制采用了以STM32RCT6為主控的單片機(jī)芯片和使BTN7971B 芯片設(shè)計(jì)電機(jī)驅(qū)動(dòng)電路,電機(jī)的轉(zhuǎn)向與轉(zhuǎn)速通過(guò)單片機(jī)輸出的信號(hào)到電機(jī)驅(qū)動(dòng)電路上實(shí)現(xiàn)。本文以74LS244 設(shè)計(jì)一個(gè)邏輯電路,作為主控芯片與電機(jī)驅(qū)動(dòng)電路之間保護(hù)的橋梁。單片機(jī)的PWM信號(hào)經(jīng)過(guò)74LS244 邏輯電路,再轉(zhuǎn)接到驅(qū)動(dòng)電路,起到隔離保護(hù)單片機(jī)的作用,避免電機(jī)啟動(dòng)或堵轉(zhuǎn)時(shí)的電流過(guò)大,反沖倒灌從而燒毀單片機(jī)。機(jī)械臂的控制部分采用STM32F103C8T6 為主控的單片機(jī)芯片,機(jī)械臂的單片機(jī)通過(guò)串口通信與主控芯片連接,接收主控芯片發(fā)送的控制指令,再通過(guò)輸數(shù)PWM信號(hào)來(lái)控制機(jī)械臂的運(yùn)作和攝像頭云臺(tái)的控制。在該系統(tǒng)運(yùn)行的過(guò)程中,使用電壓采集模塊對(duì)電池的電量實(shí)時(shí)采集,使用一個(gè)OLED 模塊來(lái)顯示機(jī)器人運(yùn)動(dòng)的狀態(tài)信息和電池的電量。
圖1 系統(tǒng)總體框架
該機(jī)器人底盤的主控芯片采用意法半導(dǎo)體的32 位單片機(jī)STM32F103RCT6。STM32F103RCT6芯片是大量的微電子原件(二極管和三極管)集成電路,擁有32 位的處理器,外部的引腳共有64 個(gè),最高運(yùn)行頻率為72 MHz。還有工作性能穩(wěn)定、功耗低、內(nèi)部可使用的資源豐富等特點(diǎn)。該芯片程序存儲(chǔ)器的最大容量為256 kB,隨機(jī)存取容量存儲(chǔ)器(RAM)為48 kB。該芯片的功能強(qiáng)大,可為本機(jī)器人控制提供多個(gè)串口的使用,使其連接不同串口通信的模塊,多路PWM 輸出可以控制電機(jī)的轉(zhuǎn)速。ADC的采集通道,可以采集模擬量輸出模塊的電壓值。
機(jī)器人使用STM32F103C8T6 作為地下道勘測(cè)機(jī)器人的機(jī)械臂部分的主控制芯片,STM32F103C8T6 的最高運(yùn)行頻率為72 MHz,程序存儲(chǔ)器的最大容量為64 kB,隨機(jī)存取存儲(chǔ)器(RAM)最大容量為20 kB,可以同時(shí)使用多個(gè)通用定時(shí)器,同時(shí)輸出多路的PWM信號(hào),滿足機(jī)械臂控制功能的需求。該芯片擁有3 個(gè)串口通道,通過(guò)串口接收主控芯片的控制指令的數(shù)據(jù)信息,實(shí)現(xiàn)主控芯片對(duì)機(jī)械臂運(yùn)動(dòng)姿態(tài)的控制。機(jī)器人使用5 個(gè)自由度的機(jī)械臂,由5 個(gè)舵機(jī)共同構(gòu)成,通過(guò)改變舵機(jī)旋轉(zhuǎn)的角度,實(shí)現(xiàn)機(jī)械臂的運(yùn)動(dòng)姿態(tài)控制。機(jī)械臂和攝像頭控制云臺(tái)一共由7個(gè)舵機(jī)組成。
圖2 所示為BTN 電機(jī)驅(qū)動(dòng)電路。機(jī)器人使用BTN7971B 芯片作為地下道勘測(cè)機(jī)器人的電機(jī)驅(qū)動(dòng)電路的控制芯片。BTN 設(shè)計(jì)的驅(qū)動(dòng)電路耐壓值可達(dá)到45 V,通過(guò)的最大電流達(dá)到80 A,由其構(gòu)成的H橋驅(qū)動(dòng)電路,可以驅(qū)動(dòng)較大功率的電機(jī)。BTN7971B集成的驅(qū)動(dòng)IC具有自動(dòng)保護(hù)的功能,在檢測(cè)到過(guò)壓、過(guò)流、過(guò)溫等致命故障時(shí),可自動(dòng)關(guān)閉或者調(diào)整內(nèi)部的開(kāi)關(guān)管,強(qiáng)行停止或限流運(yùn)行,起到保護(hù)驅(qū)動(dòng)電機(jī)的作用。機(jī)器人地盤采用12 V 大扭矩的減速電機(jī),該電機(jī)的啟動(dòng)電壓電流比較大,其堵轉(zhuǎn)產(chǎn)生的電流大。BTN7971B 所設(shè)計(jì)H 橋驅(qū)動(dòng)電路,可以輸出較大的電壓和電流,滿足驅(qū)動(dòng)電機(jī)的參數(shù)要求。所以采用BTN7971B電機(jī)驅(qū)動(dòng)芯片作為本系統(tǒng)的驅(qū)動(dòng)芯片。
圖2 BTN電機(jī)驅(qū)動(dòng)電路
無(wú)線充電模塊包括發(fā)射端和接收端,發(fā)射端與24 V的充電器的輸出接口連接,接收端與電源管理電路的無(wú)線充電的輸入口連接。無(wú)線充電模塊可以給電源管理電路供電和給鋰電池充電。在管道內(nèi)設(shè)置一個(gè)無(wú)線充電的接口,機(jī)器人就能夠在管道內(nèi)完成充電,便于機(jī)器人在管道內(nèi)長(zhǎng)期工作,節(jié)省機(jī)器人在充電過(guò)程中搬運(yùn)過(guò)程的時(shí)間和返程的電量消耗。
使用英偉達(dá)開(kāi)發(fā)板作為機(jī)器人攝像頭采集視頻傳輸?shù)挠布糠帧T谟ミ_(dá)開(kāi)發(fā)板上安裝Ubuntu 系統(tǒng),并在系統(tǒng)上配置了運(yùn)行代碼所需要的Python 環(huán)境和各種協(xié)議所需的安裝包,采用TCP/IP 協(xié)議作為傳輸?shù)妮d體[7]。如圖3 所示。視頻傳輸?shù)倪^(guò)程首先是要確定上位機(jī)的IP 地址,在英偉達(dá)開(kāi)發(fā)板的運(yùn)行代碼上輸入上位機(jī)的IP 地址和設(shè)定的端口號(hào)。開(kāi)始運(yùn)行英偉達(dá)開(kāi)發(fā)板上的程序,嘗試連接上位機(jī)的圖像接收服務(wù)器并判斷是否連接成功,并打印相關(guān)連接信息。如果連接成功,則開(kāi)啟攝像頭,否則結(jié)束代碼進(jìn)程。將攝像頭采集的每一幀圖片進(jìn)行大小處理和壓縮處理,把壓縮的圖片數(shù)據(jù)轉(zhuǎn)換成numpy 格式的數(shù)據(jù),再轉(zhuǎn)成二進(jìn)制數(shù)據(jù),獲取二進(jìn)制數(shù)據(jù)的長(zhǎng)度,將根據(jù)二進(jìn)制數(shù)據(jù)長(zhǎng)度打包轉(zhuǎn)換成TCP/IP 協(xié)議發(fā)送的字符串?dāng)?shù)據(jù)[8]。并將圖片的字符串?dāng)?shù)據(jù)到服務(wù)器上。然后就可以在上位機(jī)上看到下水道的詳細(xì)信息。
圖3 攝像頭采集視頻傳輸程序流程
地下道勘測(cè)機(jī)器人的機(jī)械臂主控芯片使用的是STM32F103C8T6 的單片機(jī),通過(guò)串口中斷采集主控芯片發(fā)送的控制指令,采取中斷處理各種主要算法,其中包括控制機(jī)械臂運(yùn)動(dòng)和攝像頭云臺(tái)的運(yùn)動(dòng)。中斷處理可以提高程序的運(yùn)行效率和確保程序運(yùn)行的實(shí)時(shí)性。如圖4 所示。機(jī)械臂控制板上的芯片接收動(dòng)作指令后,其根據(jù)指令選擇具體的機(jī)械臂或者攝像頭云臺(tái)的控制軸,再輸出對(duì)應(yīng)的PWM 值。通過(guò)修改PWM信號(hào)值來(lái)控制機(jī)械臂上的舵機(jī)旋轉(zhuǎn)不同的角度,從而控制機(jī)械臂的運(yùn)動(dòng)姿態(tài)[9]。在控制機(jī)械臂和攝像頭云臺(tái)的過(guò)程中,由于機(jī)械臂和攝像頭云臺(tái)的運(yùn)動(dòng)的范圍廣,很容易由于某個(gè)軸的舵機(jī)的旋轉(zhuǎn)角度過(guò)大,導(dǎo)致機(jī)械臂將機(jī)器人的控制板撞壞或者攝像頭云臺(tái)導(dǎo)致攝像頭損壞等因素,所以還需要對(duì)每一個(gè)軸的舵機(jī)進(jìn)行范圍限制。
圖4 機(jī)械臂的控制代碼程序流程
4G 模塊基于4G 網(wǎng)絡(luò)、支持TD-LTE 和FDD-LTE 等LTE 網(wǎng)絡(luò)制式的通信模塊統(tǒng)稱。具有通信速度快、網(wǎng)絡(luò)頻譜寬、通信靈活等特點(diǎn)。4G 模塊在硬件上將射頻、基帶集成在一塊PCB 小板上,完成無(wú)線接收、發(fā)射、基帶信號(hào)處理功能。軟件上通過(guò)4GLTE 網(wǎng)絡(luò)傳輸,對(duì)下位機(jī)modbus 數(shù)據(jù)進(jìn)行傳輸?shù)椒?wù)器端,支持心跳包,注冊(cè)包功能。并可支持軟件支持語(yǔ)音撥號(hào)、短信收發(fā)、撥號(hào)聯(lián)網(wǎng)等功能。4G 模塊通過(guò)高速聯(lián)網(wǎng),將所有終端業(yè)務(wù)數(shù)據(jù)及設(shè)備運(yùn)行狀態(tài)實(shí)時(shí)傳輸?shù)綐I(yè)務(wù)中心,通過(guò)管理監(jiān)控平臺(tái),實(shí)時(shí)監(jiān)測(cè)終端設(shè)備運(yùn)行狀態(tài),因?yàn)闄C(jī)器人需要進(jìn)行圖像回傳,數(shù)據(jù)量比較大,所以選擇高速的4G通信來(lái)進(jìn)行數(shù)據(jù)傳輸,使機(jī)器人的實(shí)時(shí)通信得到保障[10]。
圖5 所示為遠(yuǎn)程控制流程。遠(yuǎn)程控制是地下道勘測(cè)機(jī)器人的核心部分,其原理是通過(guò)綁定PC 端的IP 地址和端口,等待與4G模塊連接,完成網(wǎng)絡(luò)通信。遠(yuǎn)程控制負(fù)責(zé)控制整個(gè)機(jī)器人的行動(dòng),其中包括機(jī)器人的行駛、機(jī)械臂的夾取、攝像頭的角度調(diào)整等。上位機(jī)的遠(yuǎn)程控制是通過(guò)TCP/IP 協(xié)議與4G 模塊連接,4G 模塊將獲取到的控制指令通過(guò)串口發(fā)送到主控單片機(jī)上,主控單片機(jī)根據(jù)控制指令執(zhí)行相應(yīng)的動(dòng)作,從而實(shí)現(xiàn)遠(yuǎn)程控制[11]。由于機(jī)器人的遠(yuǎn)程控制是通過(guò)廣域網(wǎng)控制的,而電腦本身的IP 地址是在局域網(wǎng)內(nèi)的,所以要進(jìn)行內(nèi)網(wǎng)映射,即把電腦的IP地址和端口號(hào)映射到外網(wǎng)上,4G模塊連接外網(wǎng)的IP 地址和端口號(hào),實(shí)現(xiàn)與上位機(jī)的遠(yuǎn)程部分網(wǎng)絡(luò)通信。遠(yuǎn)程控制由3 部分組成,分別為小車控制、機(jī)械臂控制、攝像頭控制,均通過(guò)發(fā)送不同的控制指令來(lái)實(shí)現(xiàn)不同功能的控制。發(fā)送控制指令的方式有兩種,一種是通過(guò)鼠標(biāo)點(diǎn)擊GUI 界面的按鈕,發(fā)送控制指令;另外一種是通過(guò)按下鍵盤的按鍵,發(fā)送控制指令。
圖5 遠(yuǎn)程控制流程
圖6 所示為本系統(tǒng)配套的電腦端上位機(jī),它是基于QT采用Python開(kāi)發(fā)的,通過(guò)點(diǎn)擊按鈕實(shí)現(xiàn)控制機(jī)器人、攝像頭獲取圖像、機(jī)械臂控制等功能[12]。上位機(jī)的程序使用雙線程的形式,使用兩次TCP協(xié)議分別對(duì)遠(yuǎn)程視頻監(jiān)控部分和遠(yuǎn)程控制部分進(jìn)行網(wǎng)絡(luò)通信,兩個(gè)線程獨(dú)立運(yùn)行互不干擾。
圖6 上位機(jī)界面
機(jī)器人的遠(yuǎn)程控制是通過(guò)廣域網(wǎng)控制的,而PC 端的IP 地址是在局域網(wǎng)內(nèi),上位機(jī)與4G 模塊通信需要將PC 端內(nèi)網(wǎng)的IP 和端口變成外網(wǎng)的IP 和端口,才可以實(shí)現(xiàn)廣域網(wǎng)的遠(yuǎn)程控制。
通過(guò)使用路由俠端口映射軟件,可以把PC端內(nèi)網(wǎng)的IP地址與端口映射到外網(wǎng)上,端口映射界面如圖7所示。
圖7 路由俠端口映射界面
調(diào)試時(shí)先打開(kāi)上位機(jī)軟件界面,在界面內(nèi)輸入PC端本地的地址和固定的端口號(hào),點(diǎn)擊啟動(dòng)圖像傳輸?shù)陌粹o,啟動(dòng)圖像傳輸服務(wù)器。在英偉達(dá)開(kāi)發(fā)板上,修改程序里面上位機(jī)的IP地址和端口號(hào)。然后運(yùn)行圖像傳輸?shù)某绦颍却c上位機(jī)圖像接收服務(wù)器連接。如果通信連接成功,則發(fā)送圖像到服務(wù)器端。通過(guò)上位機(jī)界面的視頻顯示窗口可以判斷是否連接成功,如果有圖像顯示則代表已經(jīng)與服務(wù)器連接,客戶端和服務(wù)器都正常工作,如圖8所示。如果沒(méi)有則要檢查服務(wù)器與客戶端的IP 地址和端口號(hào)是否相同且是否連接在同一個(gè)局域網(wǎng)內(nèi)。圖9所示為地下道勘測(cè)機(jī)器人實(shí)物。
圖8 上位機(jī)遠(yuǎn)程視頻傳輸
圖9 地下道勘測(cè)機(jī)器人實(shí)物
本文設(shè)計(jì)實(shí)現(xiàn)了基于STM32 的地下道勘測(cè)機(jī)器人智能控制系統(tǒng)。通過(guò)攝像頭采集圖像信息,上傳到電腦本地,實(shí)現(xiàn)遠(yuǎn)程的視頻監(jiān)控,根據(jù)接收的圖像數(shù)據(jù),確定機(jī)器人下一步要執(zhí)行的動(dòng)作和需要行駛的方向,通過(guò)上位機(jī)發(fā)送對(duì)應(yīng)動(dòng)作控制指令到單片機(jī)上,單片機(jī)接收上位機(jī)發(fā)送數(shù)據(jù)并處理數(shù)據(jù)。然后根據(jù)指示命令實(shí)現(xiàn)遠(yuǎn)程控制機(jī)器人的行動(dòng)與機(jī)械臂的夾取。同時(shí)利用QT5 平臺(tái)開(kāi)發(fā)上位機(jī),上位機(jī)與機(jī)器人的控制系統(tǒng)通過(guò)TCP/IP 協(xié)議通信,使用該協(xié)議通信能夠通過(guò)網(wǎng)絡(luò)傳輸數(shù)據(jù),增大機(jī)器人遠(yuǎn)程控制的范圍,最終實(shí)現(xiàn)下水道的高效清理。