黃俊曦,徐非凡,陳湘驥,陳浩銘
(華南農(nóng)業(yè)大學數(shù)學與信息學院,廣州 510642)
在RMUA 中,采用“全自動機器人射擊對抗”的形式進行比賽,全自動機器人通過發(fā)射彈丸擊打敵方機器人進行射擊對抗。比賽結(jié)束時,機器人總血量高的一方獲取比賽勝利。機器人身上配有四個裝甲板,是主要的承傷區(qū)域。因此,如何準確識別與瞄準敵方機器人裝甲板和靈活規(guī)避敵方機器人的攻擊是該比賽的取勝關(guān)鍵因素。
近年來,機器人領(lǐng)域技術(shù)得到極大的發(fā)展。在圖像識別方面,深度學習算法得到廣泛應用。如Jitian 等基于卷積神經(jīng)網(wǎng)絡(luò)和轉(zhuǎn)移學習,利用Web 的標簽圖像數(shù)據(jù),通過改進深度學習方法,實現(xiàn)從監(jiān)控圖像中識別車輛類型。Songlu等提出了一種端對端的深度神經(jīng)網(wǎng)絡(luò),通過兩個具有不同卷積層的獨立分支分別進行車輛檢測和車牌檢測,在車輛車牌同時檢測任務上取得良好效果。雷蕾等人基于YOLOv5 交通標志檢測算法,采用K-means++算法重新選擇先驗框,有效提升模型的檢測準確度和應用性能。郝達慧等基于YOLOv5 網(wǎng)絡(luò)對車牌定位,結(jié)合LPCRNet 網(wǎng)絡(luò)識別車牌字符,在復雜場景下的車牌檢測和識別有著較好的魯棒性。尉天成等基于Faster RCNN 模型,通過對提取特征的卷積神經(jīng)網(wǎng)絡(luò)以及候選框生成方法進行改進和優(yōu)化,在交通標志識別中取得良好效果。在軌跡預測方面,喬少杰等基于卡爾曼濾波提出了一種動態(tài)軌跡預測算法。金立生等提出了一種基于駕駛視角的自主駕駛環(huán)境感知軌跡預測算法,通過將LSTM 網(wǎng)絡(luò)模塊、空間交互模塊和時間行為注意力模塊相融合,實現(xiàn)了更高精度的軌跡預測。在重力補償方面,溫永祿等利用誤差對導彈發(fā)射點進行迭代補償,提高了發(fā)射點坐標的精準度。
2021RMUA 比賽規(guī)定只允許使用官方機器人。該機器人主要分為底盤和云臺模塊。底盤包含一組麥克納姆輪,可實現(xiàn)機器人的全向移動。云臺搭載了可發(fā)射17 mm 彈丸的發(fā)射機構(gòu),可完成Pitch 和Yaw 兩個自由度的旋轉(zhuǎn)運動。機器人配備了裁判系統(tǒng)模塊,可與比賽系統(tǒng)相互通訊。參賽隊伍可以基于該機器人配置攝像頭和激光雷達等傳感器、車載計算設(shè)備進行上層開發(fā)。通過實現(xiàn)自主導航、目標識別、自主決策等功能以進行多機器人全自動對抗。
本文基于近幾年機器人領(lǐng)域技術(shù)的發(fā)展,結(jié)合了2021RMUA 比賽的要求和規(guī)則,在比賽指定的機器人基礎(chǔ)上,基于可信距離范圍內(nèi)機器人底盤規(guī)避和云臺自動瞄準同步控制進行上層開發(fā),實現(xiàn)了可自動尋敵與攻擊的機器人。
通過發(fā)射子彈命中敵方機器人的裝甲板是比賽主要的攻擊方式。因此,如果想要取得比賽勝利,需要提升子彈的命中率和靈活規(guī)避敵方子彈的攻擊。
機器人是在8 m×5 m的比賽場地中進行射擊對抗。由于射擊距離和子彈飛行時間成正比,而敵方機器人一般處于運動狀態(tài)中,因此射擊距離會對子彈精準度產(chǎn)生一定的影響。同時機器人的可發(fā)射子彈數(shù)量是有限制的。為了提高機器人的攻擊效率,增設(shè)了一個攻擊可信距離。定義為在某一距離范圍內(nèi),機器人對靜態(tài)目標的射擊命中率達95%以上,對動態(tài)目標的射擊命中率達50%以上。用該標準來定義可信距離。經(jīng)過多次實驗,將可信距離設(shè)定為4 m。
如圖1所示。
圖1 算法具體流程
算法首先通過自動尋敵使機器人靠近敵方機器人,同時對車載攝像頭獲取到的圖像進行顏色相減、二值化和形態(tài)學等預處理操作,然后對預處理后的圖像進行特征提取,將提取出來的燈條按照角度差、長寬比進行配對,并從配對成功的燈條中選出最優(yōu)組合作為目標裝甲板。接著將獲取到的目標裝甲板信息通過PnP算法進行解算,PnP 是用于求解3D-2D 點對運動的方法,可通過個三維空間坐標及其二維投影位置估計相機位姿。由于機器人裝甲板長寬已知,因此可得出裝甲板四個角點在以裝甲板中心為原點的世界坐標系中的三維坐標,結(jié)合裝甲板的二維投影坐標,可解算出相機坐標系和世界坐標系之間的旋轉(zhuǎn)矩陣和平移矩陣,從而得出敵方機器人的距離和機器人當前云臺轉(zhuǎn)角。如果敵方機器人位于可信距離內(nèi),則同步控制機器人底盤擺動規(guī)避和云臺瞄準攻擊。
由于車載攝像頭安裝在機器人云臺的前方,因此攝像頭所能探測到的位置有限,僅限于機器人前方一定角度內(nèi)的范圍。而敵方機器人有可能出現(xiàn)在己方機器人的側(cè)方或后方進行攻擊。為了能夠盡早發(fā)現(xiàn)敵方機器人,進入規(guī)避和瞄準攻擊狀態(tài),本文結(jié)合哨崗系統(tǒng)實現(xiàn)了自動尋敵的功能。
哨崗系統(tǒng)由一個攝像頭和一臺計算設(shè)備組成,攝像頭可安裝在比賽場地的邊緣對角處,獲取全局圖像。而計算設(shè)備負責執(zhí)行多目標檢測和定位算法。算法首先通過YOLOv3-tiny 神經(jīng)網(wǎng)絡(luò)檢測敵方機器人,在檢測到敵方機器人后,通過將預測框中心向下四分之一處的點作為機器人的特征點,將該點進行透視變換,從而得到敵方機器人的位置。哨崗系統(tǒng)通過無線局域網(wǎng)將該位置信息給到己方機器人,通過獲取敵方機器人的位置信息,使用ROS 的move_base 框架進行導航靠近敵方機器人,同時控制底盤和云臺朝向敵方機器人的方向,從而實現(xiàn)機器人的自動尋敵。具體算法流程見圖2。
圖2 哨崗檢測與定位流程
機器人底盤配有四個裝甲板,敵方主要通過攻擊裝甲板對己方造成傷害。本文通過改變機器人底盤角速度實現(xiàn)底盤擺動規(guī)避行為,用于降低敵方子彈命中率。角速度控制主要流程為:如果底盤和云臺間偏移角大于-0.2 rad 時,控制底盤以-0.1 rad/s的角加速度進行勻變速轉(zhuǎn)動,直到底盤角速度大于-2 rad/s,則控制底盤進入勻速轉(zhuǎn)動狀態(tài)。如果底盤和云臺間偏移角小于-0.4 rad 時,則控制底盤以0.1 rad/s的角加速度進行勻變速轉(zhuǎn)動。直到底盤角速度大于2 rad/s,則控制底盤進入勻速轉(zhuǎn)動狀態(tài)。按照以上邏輯,循環(huán)控制底盤角速度變化,從而實現(xiàn)底盤規(guī)避行為。
使用彈丸攻擊不同位置裝甲板所產(chǎn)生的傷害不同。前裝甲板為20 點血量傷害,左右裝甲板為40 點血量傷害,后裝甲板為60 點血量傷害。按照以上邏輯對底盤角速度控制時,底盤和云臺間偏移角會在0°~35°范圍內(nèi)。而敵方機器人一般處于云臺前方,因此當機器人進入規(guī)避狀態(tài)時,可通過擺動底盤對敵方子彈進行規(guī)避,同時盡量讓前裝甲板面向敵方,而不會將左右裝甲板暴露給敵方。
由于在比賽中,機器人的可發(fā)射子彈數(shù)量是有限制的。如果想要取得比賽勝利,則需要提升子彈命中率。因此在機器人的瞄準攻擊部分加入了預測和彈道補償兩個功能。
因為機器人在比賽中一般是處于移動狀態(tài)的,所以需要加入預測攻擊功能來提升子彈命中率。首先通過PnP 算法獲取出當前時刻云臺角度,然后結(jié)合上一時刻云臺角度計算出敵方機器人相對于己方機器人云臺的相對角速度信息。將該相對角速度信息和機器人自身陀螺儀的Yaw 軸角速度信息進行融合,從而得到敵方機器人的絕對角速度。將云臺信息和敵方絕對角速度信息放入二維卡爾曼濾波算法中,通過公式(1)對當前狀態(tài)進行預測,結(jié)合當前時刻的測量值,獲取到當前時刻的云臺位置和敵方的絕對角速度,通過公式(2)對下一時刻的敵方機器人裝甲板所在位置進行預測,從而得到下一時刻云臺角度,達到預測的目的。
其中是當前時刻的預測云臺信息,是當前時刻的預測速度信息,是上一時刻的云臺信息,是上一時刻的速度信息。通過上述的位置和速度關(guān)系公式,結(jié)合上一時刻的云臺和速度信息,得到當前時刻的云臺和速度信息。
其中是下一時刻的云臺信息,默認一定時間間隔內(nèi)速度不變,通過當前時刻云臺信息,結(jié)合速度時間信息,預測出下一時刻云臺轉(zhuǎn)角信息。
僅對敵方機器人作預測攻擊無法很好提升子彈命中率。由于子彈發(fā)射后會受到重力、空氣阻力等作用力影響,當距離敵方機器人較遠時,子彈命中率會大大降低。為了保證在最可信距離內(nèi)擁有較高的子彈命中率,對2 m以外的攻擊目標進行彈道補償。機器人通過計算俯仰角差值來進行彈道補償,具體計算公式如公式(3)、(4)所示。
其中為俯仰角差值,為射擊距離,為重力下墜模型的靈敏度,經(jīng)過測試,當=1.2×10時效果較好。是用于調(diào)整整體偏差的變量,只對3.2 m 以外的目標有效,具體計算公式如公式(5)所示。
其中為射擊距離,為子彈初速。通過將子彈初速、射擊距離輸入到重力下墜模型中可計算出俯仰角差值。利用該差值可得到正確的俯仰角,從而實現(xiàn)彈道補償。
測試機器人是RoboMaster2020 標準版AI 機器人,搭載了SLAMTEC 的RPLIDAR A3 激光雷達,車載攝像頭是KS1A552 型號彩色全局曝光攝像頭,分辨率為640×480,車載工控機的CPU為Intel i7 10510U。
實驗測得,如表1目標為靜態(tài)時加入預測前后效果相近。對于動態(tài)目標,預測前命中率僅為13%,預測后命中率提升到54%。結(jié)果表明,預測可有效提高動態(tài)目標的命中率,提高了41%。
表1 有無預測功能子彈命中率對比
機器人只對2 m 以外的目標進行彈道補償。實驗測得,如表2 距離目標2 m 時,有無彈道補償效果相近。距離目標4 m時,未加入彈道補償情況下,未能命中一顆子彈,加入彈道補償后,命中率達96%。結(jié)果表明,彈道補償可有效提高遠程目標命中率。
表2 有無彈道補償子彈命中率對比
實驗測得,如表3 無規(guī)避情況下,射程為2 m 和4 m 的命中率相近。有規(guī)避情況下,2 m和4 m的命中率都降低了。結(jié)果表明,底盤規(guī)避有效降低敵方子彈命中率。
表3 有無規(guī)避效果對比
如表4 實驗中分別發(fā)射100 顆子彈,距離為4 m 時子彈命中率為52%,距離為5 m 時命中率為43%,距離為6 m 時命中率為28%。基于該實驗結(jié)果,結(jié)合本文對可信距離的定義,將可信距離定為4 m。
表4 可信距離內(nèi)外動態(tài)目標命中率
本文基于在可信距離范圍內(nèi)機器人底盤規(guī)避和云臺瞄準同步控制,結(jié)合哨崗檢測定位功能,實現(xiàn)了可自動尋敵和攻擊的機器人。該機器人在2021RMUA 機甲大師高校人工智能挑戰(zhàn)賽中斬獲季軍。