



關鍵詞: 雙輪機器人 消防 圖像識別 軌道交通
中圖分類號: TU998.1;TP242 文獻標識碼: A 文章編號: 1672-3791(2023)16-0074-04
在軌道交通的消防安全領域中,消防機器人除了應用于火災撲救外,更多的還是對各類消防重點隱患場所的巡邏和檢查,以及對各類易引發消防安全事故的突發、異常行為進行及時監控,特別是在客流量集中、重點管控、重點巡查的場所,如設備間、變電站、客流通道等地方[1]。這就需要消防機器人能夠基于機器視覺技術或其他傳感器技術對發生異常行為和現象進行圖像采集、分析、識別和判斷,然后進行預警。雙輪機器人具有靈活小巧、移動迅速的特點,適用于消防巡邏或偵察作業[2],本文主要是對其運動平衡原理、硬件結構和圖像識別技術應用進行了分析和探索。
1 雙輪消防機器人平衡原理
雙輪消防機器人是在左、右兩個電機驅動下,實現行走機構不傾倒并能平穩直立行走的一種移動式機器人。雙輪消防機器人在外力的推拉下,它的行走機構仍能保持不傾覆[3]。與三輪行走機構、四輪行走機構不同,雙輪行走機構只是靠雙輪進行支撐,一般情況下容易發生傾斜,從而導致傾覆。為了行走機構的兩個驅動輪時刻保持平衡,可以采用驅動輪來回移動的方式來抵消行走機構的傾斜角度與傾斜角速度,這樣可以達到保持行走機構直立而不傾倒的效果。圖1 是雙輪移動平衡原理圖,且傾斜角度和角速度是雙輪消防機器人保持平衡移動的關鍵[3]。
雙輪消防機器人采用負反饋機制來實現對傾斜角度和角速度的控制,從而達到運動平衡,以實現行走控制。雙輪消防機器人行走機構采用左、右兩個輪子接觸地面,車體的傾斜只會發生在輪子滾動的方向上,輪子的轉動控制得當,就能夠抵消行走機構在一個方向上傾斜的趨勢,從而達到車體平衡[3]。
根據此原理,機器人傾角和傾角速度數據的采集是控制機器人直立行走的關鍵。在硬件設計中,采用集成傳感器陀螺儀采集行走機構的傾角和傾角速度等數據[4],并通過軟件程序控制調整機器人車輪的加速度,從而消除行走機構的傾角。
2 雙輪消防巡邏機器人功能模塊設計
雙輪消防機器人其具有響應速度快、靈活程度高和復雜地形的通過能力強的優勢。因其配備足式結構,使其既可以充分發揮輪式移動的速度優勢,又可以通過彈跳實現越障,保持了足式機器人本身的機動越障優勢,還能做到整體動作靈活、跳躍更為敏捷。雙輪消防機器人的構型是目前消防機器人研究的熱門,結合了輪、足兩者優勢的一種消防移動機器人構型。雙輪消防機器人適用于軌道交通車站、設備間、車廂等場所,可以應用于消防安全巡檢、檢查等應用場景。
雙輪消防巡邏機器人的功能模塊設計如圖2 所示。其整體功能模塊由主控機構、行走機構和巡查機構這3 部分組成[5]。其中,主控機構包括主控板、通信裝置和電源裝置[5],是機器人平臺的主要控制部分;行走機構包括拓展控制板和兩組驅動輪(含輪胎),是機器人平臺的主要行走部分;巡查機構是機器人平臺執行消防安全作業的主要設備,包括攝像裝置、舵機云臺等,用于消防安全巡邏作業,并可以根據需要安裝其他的傳感器裝置,如超聲波、溫濕度、氣體、煙霧、火焰等傳感器。
3 雙輪消防巡邏機器人硬件結構設計
雙輪消防巡邏機器人的硬件結構包括主控板、拓展控制板、攝像裝置、舵機云臺、通信裝置、電源裝置、機器人底板等部分,其硬件與組裝效果具體見圖3。其中主控板為可編程控制器,是機器人平臺的中央控制部分;拓展控制板在主控板上方,與主控板連接在一起,是機器人平臺行走機構移動驅動的主要控制部分,內置陀螺儀等測量裝置,用于機器人雙輪平衡移動的測量控制,并為主控板提供了更多拓展接口,以便能夠連接不同的傳感器裝置;拓展控制板下方連接著兩組驅動輪裝置,驅動輪裝置是行走機構移動的主要執行部分,安裝有帶橡膠釘的防打滑輪胎,由拓展控制板驅動控制執行行走功能;通信裝置與拓展控制板通過USB接口連接,為主控板和拓展控制板提供無線Wi-Fi 通信功能,用于傳送數據[6];底板是機器人平臺行走機構的連接支架,下方連接著驅動輪并安裝有電源裝置,上方為主控板、拓展控制板、通信裝置、舵機云臺和攝像裝置提供了安裝支撐;舵機云臺安裝在底板上面,設置有兩組舵機,擁有兩個自由度,為攝像裝置提供左右和上下轉動控制,增大了設置裝置的視覺空間和巡查范圍;攝像裝置是機器人主要的巡查裝備,為機器人提供了機器視覺視頻監控功能和圖像識別功能;電源裝置位于底板下方,為機器人平臺各個部分提供充足的電壓電流。
4 軌道交通雙輪消防機器人的圖像識別應用
利用雙輪消防機器人移動靈活、便捷的特點,為雙輪消防機器人增設視頻攝像裝置,通過視頻攝像頭對消防隱患區域進行巡檢偵察,將其作為消防偵察巡邏機器人進行使用。
軌道交通雙輪消防機器人使用Python 程序設計語言獲取視頻攝像裝置的應用程序,以及使用圖像顏色空間模型的轉換實現對目標圖像中某些顏色特征進行查找和追蹤[7]。并實現在HSV 顏色模型下,通過調節顏色信息H、飽和度S、亮度V 的區間值,在機器人視覺視頻中對選定的顏色進行追蹤標示。
程序1 使用Python-OpenCV 應用程序讀取機器人視頻攝像裝置的視頻數據并顯示,實現對視頻圖像的獲取。
#程序1:讀取機器人攝像裝置的視頻數據顯示
import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():
print('Cannot open camera')
exit()
while True:
ret,frame = cap.read()
if not ret:
print(\"can't receive frame.\")
break
cv.imshow('frame',frame )
if cv.waitKey(20) == 27:
break
cap.release()
cv.destroyAllWindows()
5 實現對視頻中某一顏色的跟蹤
程序2 使用圖像顏色模型轉換來實現對機器人視覺視頻中某一顏色的跟蹤效果。
#程序2:對視覺視頻中某一顏色的識別跟蹤
import cv2 as c_cv
import numpy as c_np
def trace_color_demo():
capture = c_cv.VideoCapture(0)
while True:
c_ret, c_frame = capture.read()
if c_ret == False:
break
c_hsv = c_cv.cvtColor(c_frame, c_cv.COLOR_BGR2 HSV)
c_lower_hsv = c_np.array([0, 0, 221])
c_upper_hsv = c_np.array([180, 30, 255])
c_mask = cv. inRange(c_hsv, c_lower_hsv, c_upper_hsv)
c_cv.imshow(\"video\", c_frame)
c_cv.imshow(\"mask\", c_mask)
if c_cv.waitKey(20) == 27:
break
trace_color_demo()
cv.waitKey(0)
cv.destroyAllWindows()
圖4 是實現對視頻圖像中某一顏色的識別圖。
6 實現對圖像中多種顏色的捕捉分析
程序3 通過圖像顏色模型轉換實現對視覺視頻圖像中多種顏色的捕捉分析效果。
#程序3:對視覺視頻中多個顏色的捕捉識別
import numpy as c_np
import cv2 as c_cv
c_font = c_cv.FONT_HERSHEY_SIMPLEX
c_lower_red = c_np.array([0, 127, 128])
c_higher_red = c_np.array([10, 255, 255])
c_lower_green = c_np.array([35, 110, 106])
c_higher_green = c_np.array([77, 255, 255])
c_cap = c_cv.VideoCapture(0)
if (c_cap.isOpened()):
while (True):
c_ret, c_frame = c_cap.read()
c_img_hsv = c_cv. cvtColor(c_frame, c_cv. COLOR_BGR2HSV)
c_mask_red = c_cv. inRange(c_img_hsv, c_lower_red, c_higher_red)
c_mask_green = c_cv. inRange(c_img_hsv, c_lower_green, c_higher_green)
c_mask_green = c_cv.medianBlur(c_mask_green, 7)
c_mask_red = c_cv.medianBlur(c_mask_red, 7)
c_mask = c_cv. bitwise_or(c_mask_green, c_mask_red)
c_image1, c_cnts1, c_hierarchy1 = c_cv. findContours
(mask_red, c_cv. RETR_EXTERNAL, c_cv. CHAIN_APPROX_NONE)
c_image2, c_cnts3, c_hierarchy3 = c_cv.findContours
(c_mask_green, c_cv. RETR_EXTERNAL, c_cv. CHAIN_APPROX_NONE)
for cnt in c_cnts1:
(x, y, w, h) = cv.boundingRect(cnt)
c_cv. rectangle(c_frame, (x, y), (x + w, y + h), (0, 0,255), 2)
c_cv.putText(c_frame, 'red', (x, y - 5), font, 0.7, (0, 0,255), 2)
for cnt in c_cnts3:
(x, y, w, h) = c_cv.boundingRect(cnt)
c_cv.rectangle(c_frame, (x, y), (x + w, y + h), (0, 255,0), 2)
c_cv.putText(c_frame, 'green', (x, y - 5), c_font, 0.7,(0, 255, 0), 2)
c_cv.imshow('frame', frame)
c_k = c_cv.waitKey(20) amp; 0xFF
if c_k == 27:
break
c_cv.waitKey(0)
c_cv.destroyAllWindows()
圖5 是實現對圖像中多種顏色的分析圖。
從圖5 可以看出,通過顏色空間模型變換,可以實現視頻圖像獲取多個目標物體的多種顏色捕捉。
7 結語
通過對雙輪機器人的平衡原理、運動模型及結構分析,并建立運動學方程,同時通過程序設計,通過顏色空間模型變換,實現了視頻圖像獲取多個目標物體的多種顏色捕捉。