嚴(yán)毓培 尹雪梅 湯佩豫 黎偉 鄧澤霖 朱貴芳
摘要:大部分的機(jī)器人設(shè)計都是基于ROS系統(tǒng),該系統(tǒng)的優(yōu)點是功能豐富、設(shè)計快速,缺點是設(shè)計的硬件成本高、功耗高,ROS系統(tǒng)龐大,實時性不高。針對以上缺點,本文闡述的物流機(jī)器人的設(shè)計是基于ARM架構(gòu)的S5PV210的CPU,運(yùn)行嵌入式Linux操作系統(tǒng),由單片機(jī)、S5PV210主板和APP3部分組成。該設(shè)計降低了硬件成本、節(jié)省了電池功耗,可根據(jù)定制需求開發(fā),實時性較高,且運(yùn)行穩(wěn)定、負(fù)載量大,可在室內(nèi)動態(tài)環(huán)境中自主導(dǎo)航并完成相關(guān)搬運(yùn)服務(wù)。目前該物流機(jī)器人已經(jīng)制作完成。
關(guān)鍵詞:搬運(yùn)機(jī)器人;ARM;嵌入式Linux;單片機(jī);自主導(dǎo)航
*基金項目:廣東省普通高校特色創(chuàng)新類項目(自然科學(xué))(2018GKTSCX056);廣東普通高校重點項目(自然科學(xué))(2019GZDXM014);珠海城市職業(yè)技術(shù)學(xué)院2021年科研項目(KY2021Y01Z);2020年教育部高等學(xué)校項目(2020ITA03008)
0 引言
目前大部分的機(jī)器人都是基于ROS系統(tǒng)實現(xiàn),一般ROS在Ubentu系統(tǒng)中的穩(wěn)定性最好,因此需要Intel或者高性能ARM架構(gòu)的CPU的支撐,但存在的問題是硬件成本高,功耗高,產(chǎn)品的體積大。同時ROS系統(tǒng)中有很多功能對于某些特定的應(yīng)用場景而言是冗余的,這些冗余的功能會使系統(tǒng)龐大,占用很多內(nèi)存和CPU的資源,而且機(jī)器人反應(yīng)不夠靈敏,實時性較差。如果將ROS移植到基于ARM架構(gòu)的低成本低功耗的CPU上,或者對ROS系統(tǒng)進(jìn)行裁剪以去掉冗余的部分,存在工作難度大周期長的問題,而且ROS后期運(yùn)行時不夠穩(wěn)定。因此要設(shè)計一款在特定應(yīng)用場景中運(yùn)行的低成本、低功耗的機(jī)器人,不應(yīng)采用ROS系統(tǒng)開發(fā),而應(yīng)根據(jù)具體需求采用適用于特定應(yīng)用場景下的定制化的軟硬件設(shè)計方案,在降低成本、功耗、體積的同時可以提高系統(tǒng)的穩(wěn)定性和實時性。
1硬件設(shè)計
本文闡述的搬運(yùn)機(jī)器人如圖1所示,硬件部分由ARM主板和單片機(jī)電路板組成,具體的硬件框架如圖2所示。
其中ARM主板采用了S5PV210的CPU,帶有512M的RAM和512M的flash,LCD觸摸屏,SD卡插槽,3個USB接口和4個串口,運(yùn)行嵌入式Linux操作系統(tǒng)[1],如圖3所示。利用該主板可實現(xiàn)機(jī)器人的激光雷達(dá)掃描,LCD觸摸屏顯示,機(jī)器人與手機(jī)APP之間的藍(lán)牙通信,運(yùn)行mjpeg-stream的實時web視頻顯示等功能。
因ARM主板運(yùn)行的是嵌入式Linux系統(tǒng),該系統(tǒng)是非實時系統(tǒng),無法準(zhǔn)確讀取25kHz的光電編碼器的脈沖,因此用單片機(jī)進(jìn)行電機(jī)控制和光電編碼器的脈沖讀取,單片機(jī)與S5PV210主板之間用自定義的通信協(xié)議傳輸電機(jī)數(shù)據(jù)[2],如圖4所示。
SCM6716的電流驅(qū)動模塊,可輸出的最大瞬時電流達(dá)2A,如圖5所示。該機(jī)器人采用了直流電機(jī)搭配減速電機(jī)的方式,增強(qiáng)驅(qū)動力,可以負(fù)載超100kg重物。
機(jī)器人外接模塊可以為機(jī)器人提供更加豐富的功能,如圖6所示,其中USB攝像頭用來提供機(jī)器人現(xiàn)場的視頻,USBWiFi模塊用來將攝像頭的視頻傳輸?shù)絯eb頁面瀏覽,串口藍(lán)牙模塊用來和手機(jī)APP連接,飛控模塊包含GPS,陀螺儀,電子羅盤,加速度計等傳感器,并內(nèi)置了傳感器融合等算法,為室內(nèi)機(jī)器人判斷運(yùn)動方向提供參考[3]。
機(jī)器人可連接激光傳感器,該傳感器可以掃描周圍的環(huán)境,得到周圍6m范圍內(nèi)的每個障礙物的角度和距離,如圖7所示。
2 軟件設(shè)計
2.1 單片機(jī)的軟件設(shè)計
機(jī)器人的直流電機(jī)連接著減速電機(jī),因此光電編碼器 1s可以讀入 25kHz的脈沖,但嵌入式Linux操作系統(tǒng)是非實時的操作系統(tǒng),讀取脈沖不夠準(zhǔn)確 [4],因此用單片機(jī)來讀取25kHz的脈沖,并將脈沖值通過串口自定義的簡單協(xié)議傳給ARM開發(fā)板。
單片機(jī)采用STC15F2K60S2,其中外部中斷0和外部中斷1分別用來讀取左右兩個電機(jī)的光電編碼器的脈沖,定時器0設(shè)置為8位重裝用以設(shè)置波特率為115200。定時器1每4ms中斷1次,在中斷服務(wù)程序里,生成可以驅(qū)動直流電機(jī)轉(zhuǎn)速的占空比,每200ms計算1次輪子的速度,假設(shè)兩個電機(jī)的光電編碼器的脈沖數(shù)為P,輪子轉(zhuǎn)一圈是25000個脈沖,輪子的半徑是r,則輪子的速度為2×3.14×9/25000,并進(jìn)行1s的定時[5]。
串口中斷服務(wù)程序根據(jù)從ARM板獲取到的串口信息控制兩個電機(jī)的啟動停止、轉(zhuǎn)動方向、設(shè)定速度,如圖8所示,可通過手機(jī)APP或者機(jī)器人的液晶觸摸屏上的按鈕來發(fā)送這些指令,因點擊按鈕是間斷性的動作,同時發(fā)送兩次設(shè)定速度的按鈕的時間間隔會比較久,所以在獲取設(shè)定速度時如果buffer[2]的值有可能等于13,即/r,也不會認(rèn)為這是新的一條指令。
主程序每秒鐘發(fā)送兩個電機(jī)的速度到ARM板,因嵌入式系統(tǒng)底層讀取串口數(shù)據(jù)是不定時的,很多情況下會讀取到一個不完整的包[6],考慮到機(jī)器人的速度不可能達(dá)到65535mm/s,因此可以將通信協(xié)議簡單設(shè)計如下:
當(dāng)嵌入式Linux讀到兩個連續(xù)的0xFF,則認(rèn)為是1個新的包的開始,將后面接收到的數(shù)據(jù)存放起來,直到讀滿6個字節(jié)再開始計算兩個輪子的速度。
主程序中每秒將計算設(shè)定速度的上下限,上限是設(shè)定速度的105%,下限是設(shè)定速度的95%,當(dāng)電機(jī)的速度在上下限之間不需調(diào)節(jié)占空比,否則每200ms調(diào)節(jié)1次占空比。
2.2嵌入式Linux的軟件設(shè)計
系統(tǒng)從QT的TMainForm進(jìn)入后分別對mjpeg-stream,GPIO,串口,液晶屏,攝像頭進(jìn)行初始化,并啟動QT的定時器,每1秒刷新1次控件。
在robot_start的進(jìn)程中設(shè)置1個死循環(huán),不斷從串口0連接的串口藍(lán)牙模塊來獲取手機(jī)APP發(fā)送過來的命令并加以執(zhí)行,同時不斷從串口3連接的單片機(jī)來獲取機(jī)器人的速度,通過與設(shè)定的速度對比后向單片機(jī)發(fā)送占空比,并根據(jù)累積的脈沖數(shù)計算機(jī)器人行走的總里程和某時刻的朝向。
由于GPS傳感器、陀螺儀、加速度計、磁力計和電子羅盤等傳感器在室內(nèi)無法使用,該方法使用里程計信息對機(jī)器人的位置和角度進(jìn)行計算,因此機(jī)器人的朝向可以通過剛體的運(yùn)動進(jìn)行計算得出。
移動機(jī)器人的輪子由電機(jī)帶動,輪子的直徑為D,則輪子的周長為πD,電機(jī)轉(zhuǎn)動的圈數(shù)m可以由光電編碼器獲取,當(dāng)機(jī)器人在前進(jìn)或者后退狀態(tài),移動機(jī)器人移動的距離S可以由S=m×πD得到[7]。
當(dāng)移動機(jī)器人在左轉(zhuǎn)或者右轉(zhuǎn)狀態(tài),左轉(zhuǎn)或者右轉(zhuǎn)的角度可以由圖11中的弧線S獲取,機(jī)器人的初始位置在黃色的位置,旋轉(zhuǎn)過一定角度θ2后到了綠色的位置,從圖1可知θ1=θ2,如果可以得到圖11中的長度AC,則通過弧線S和AC則可求出機(jī)器人旋轉(zhuǎn)的角度θ1,則旋轉(zhuǎn)角度θ2也可以得到[8]。
從圖12可知,機(jī)器人的重心位置在A,對于前后左右對稱的機(jī)器人,A是機(jī)器人的中心位置,如果不是前后左右對稱的機(jī)器人,A的位置可以通過測量得到,B是機(jī)器人左邊沿的中點,C是左上輪的中心點,因此AB和BC的長度可以通過測量得到,則AC的長度可通過余弦定理得到:
AC=(AB2+BC2)????????????????????????????????? ??????(1)
機(jī)器人后端的光電編碼器得到的反饋脈沖數(shù)的總數(shù)是P,如果機(jī)器人的輪子旋轉(zhuǎn)2π,光電編碼器得到的反饋脈沖數(shù)是F,則旋轉(zhuǎn)的圈數(shù)M=P/F,則旋轉(zhuǎn)角度θ2的弧度值為
θ2=S/AC=D×P/(F*(AB2+BC2) ? )??? (2)
圖5中綠色方塊代表在移動機(jī)器人,紅色圓圈代表導(dǎo)航的終點位置,A代表移動機(jī)器人的初始位置,C代表移動機(jī)器人在某一時刻的位置,B點為導(dǎo)航的終點位置[9],由圖5可知:
BC=((BX?CX)2+(BY?CY)2) ??????????????????????? (3)
其中:
Bx=AB×cosα
By=AB×sinα
因為AB和α為移動機(jī)器人在初始位置時獲取的導(dǎo)航終點位置和終點角度,可以由手機(jī)APP輸入,以便告知初始位置的機(jī)器人,導(dǎo)航終點的距離和角度,因此BX和BY可以式(3)計算得出。
接下來計算CX和CY,因為機(jī)器人運(yùn)動的距離會不斷地累積,因此可知
式(4)中i為機(jī)器人根據(jù)表1和表2轉(zhuǎn)變運(yùn)動狀態(tài)的次數(shù),S為機(jī)器人在前進(jìn)和后退時移動的距離,前進(jìn)時S為正值,后退時S為負(fù)值,β為機(jī)器人在左轉(zhuǎn)和右轉(zhuǎn)時轉(zhuǎn)動的角度,右轉(zhuǎn)時β為正值,左轉(zhuǎn)時β為負(fù)值,S和β可由里程計信息得出[10]。
由上得出BX和BY,CX和CY,則BC的值便可以求出,接下來求移動機(jī)器人在任意一點C的終點角度θ,首先γ可由下式得出,
由圖5可知,θ=γ-β,因此機(jī)器人在任意位置的終點角度θ便可求出,需要注意的是當(dāng)θ<0時,θ=θ+2π,因此移動機(jī)器人在任意位置相對于導(dǎo)航終點的距離和終點角度都可以求出,結(jié)合上面的分析,移動機(jī)器人在未知室內(nèi)動態(tài)環(huán)境中,在無傳感器,無地圖和動態(tài)避障的情況下導(dǎo)航到終點。
根據(jù)以上公式,機(jī)器人在每1s求1次角度,并計算角度的累計和,以此判斷出機(jī)器人的朝向,因為激光數(shù)據(jù)處理的進(jìn)程也會對角度數(shù)據(jù)進(jìn)行讀寫操作,因此在以上流程執(zhí)行前需要加上互斥鎖mutex_lock,執(zhí)行完畢后關(guān)閉互斥鎖[11]。
串口3連接飛控模塊,根據(jù)模塊提供的通信協(xié)議,每1s獲取1次飛控模塊的經(jīng)緯度的數(shù)據(jù),經(jīng)度和緯度數(shù)據(jù)都是4個字節(jié),需要拼接后得到十進(jìn)制的經(jīng)緯度,當(dāng)機(jī)器人如果到室外運(yùn)動時可以通過經(jīng)緯度對機(jī)器人進(jìn)行粗略的定位。
機(jī)器人每1s也會判斷設(shè)定速度是否發(fā)生改變,如果改變了就會根據(jù)新的設(shè)定速度計算占空比并下發(fā)到單片機(jī),如果機(jī)器人按照設(shè)定速度來調(diào)整占空比,會出現(xiàn)機(jī)器人的速度忽大忽小的情況,因此將速度上限定為設(shè)定速度的101%,速度下限定為設(shè)定速度的99%,誤差率為±1%,當(dāng)機(jī)器人的速度在速度的上下限范圍內(nèi)則不用調(diào)整占空比,機(jī)器人可以運(yùn)行得更平穩(wěn)[12]。
機(jī)器人的液晶觸摸屏采用QT的圖形界面進(jìn)行設(shè)計,其中界面布局可以在QTdesigner中完成,并在QTdesigner中直接添加槽函數(shù),可通過qt_second()函數(shù)每秒鐘對界面的控件進(jìn)行刷新,當(dāng)按鈕單擊后按鈕文本會發(fā)生變化,可通過PushButton->setText函數(shù)完成按鈕文本的設(shè)計,同樣設(shè)定速度的輸入框可以通過LineEdit1->setText(QString::number(setup_speed));完成設(shè)計,單擊+、-兩個按鈕可以修改機(jī)器人的設(shè)定速度,當(dāng)機(jī)器人的設(shè)定速度大于1000mm/s或者小于0時,彈出警告框QMessageBox::information(this,”Error”, “speedshouldbeinrange0-999mm/s”);,設(shè)定速度、兩個電機(jī)的速度、經(jīng)緯度數(shù)據(jù)可通過以下TextLabel2->setText(QString::number(setup_speed)+”mm/s”);等函數(shù)完成顯示。
if(webcamera==0)
{
intmjpg_streamer2;
chararg[40]=”/mjgp-streamer/start_uvc_yuv.
sh”;
mjpg_streamer2=system(arg);
if((mjpg_streamer2==127)||(mjpg_streamer2<0))
webcamera=0;
else
webcamera=1;
printf(“themjgp_streamer2is%i\n”,mjpg_streamer2);
}
機(jī)器人通過以上mjpeg-streamer組件的代碼完成了web遠(yuǎn)程監(jiān)控的功能,可在遠(yuǎn)程打開firefox瀏覽器看到機(jī)器人上攝像頭拍到的視頻。
激光探頭可以測量到周圍障礙物的距離和角度,當(dāng)激光探頭發(fā)現(xiàn)在320°~40°的范圍內(nèi),在距離激光探頭1m的范圍內(nèi)有移動障礙物,則變量stop_forward=1,否則該變量為0,該角度和距離可以根據(jù)實際機(jī)器人的情況做相應(yīng)調(diào)整。同理當(dāng)激光探頭發(fā)現(xiàn)在40°~140°的范圍內(nèi),在距離激光探頭1m的范圍內(nèi)有障礙物,則變量stop_right=1,否則該變量為0。
如果變量stop_forward=1,則此時機(jī)器人需要旋轉(zhuǎn)到某個角度,從周圍障礙物的縫隙中出去,圖15中障礙物的縫隙的角度θ1~θ4可以計算得出,例如θ1=θB-θA,OA,OB的值可以通過激光探頭的輸出數(shù)據(jù)得出,則根據(jù)余弦定理,障礙物縫隙的大小可通過下式得出
AB=(OA2+OB2?2*OA*OB*cosθ) ?????????? ( 8)
當(dāng)導(dǎo)航的終點在機(jī)器人的左側(cè)時,此時機(jī)器人可以沿著θ3/2的方向移動出去。
圖16中的紅色圓圈是導(dǎo)航的終點,綠色的是機(jī)器人,黑色的是障礙物,機(jī)器人的初始位置在底部,此時機(jī)器人左右分別有障礙物1和障礙物2,如果按照逆時針來計算角度,圖3中的θ1是機(jī)器人在初始位置的終點相對于機(jī)器人的角度,把這個角度叫做終點角度。
根據(jù)表1的內(nèi)容,移動機(jī)器人可判斷下一秒是前進(jìn)、右轉(zhuǎn)、左轉(zhuǎn)或者后退,如果沿著終點角度的方向有障礙物,則根據(jù)表2的判斷,移動機(jī)器人計算出一個與終點角度最近且縫隙間隔大于機(jī)器人寬度的角度,沿著該角度的中線方向移動出去。
if(angle new_start=1; if ((max_data[1]>=40.0)&&(max_data[1]<=130.0)) turning_right++; elseif((max_data[1]>=220.0)&&(max_data[1]<=310.0)) turning_left++;} if((angle>310)||(angle<40)){?????????? if((distance<800.0)&&(distan ce>0.0)){ stop_forward++;}}if((destination_angle>30)&&(destination_ angle<330)){ if(angle<=(360-destination_ angle+30))&&(angle>=(360-destination_angle-30))){if((distance<1000.0) &&(distance>0.0)){ stop_destination++;}}} 結(jié)合以上的內(nèi)容,可以了解到機(jī)器人在周圍布滿障礙物的情況下該如何決策,比如在圖4中,機(jī)器人在初始位置position1應(yīng)前進(jìn),但此時前方有障礙物,此時左邊無障礙物,根據(jù)表1向左轉(zhuǎn)至position2后再向前移動,在前進(jìn)的過程中一直監(jiān)測終點角度,當(dāng)移動至position3時突然前方出現(xiàn)了移動障礙物3,結(jié)合表1和表2,則機(jī)器人應(yīng)向右轉(zhuǎn),在旋轉(zhuǎn)的過程中一直檢測終點角度,當(dāng)終點角度滿足表1的前進(jìn)時,機(jī)器人則向著終點前進(jìn),如果在前進(jìn)的過程中又出現(xiàn)了其他的障礙物,則機(jī)器人根據(jù)實時監(jiān)測到的終點角度和表1與表2的內(nèi)容,迭代地進(jìn)行決策,直到達(dá)到終點。 以上導(dǎo)航過程不需要事先對周圍環(huán)境建圖,也不需要傳感器的數(shù)據(jù),在整個導(dǎo)航過程中可以根據(jù)實際移動障礙物的情況做出實時判斷,適合在室內(nèi)未知動態(tài)環(huán)境中進(jìn)行導(dǎo)航。該方法簡單高效,使用成本較低的CPU甚至MCU就可以實現(xiàn),同時可節(jié)省機(jī)器人的功耗和體積。 在激光掃描的進(jìn)程中,機(jī)器人根據(jù)表1和表2進(jìn)行相應(yīng)的運(yùn)動決策,激光傳感器7圈/s,因激光傳感器的精度有限,加上環(huán)境噪聲的影響,在激光掃描的過程中會出現(xiàn)一些噪點,通過計算7個點/s落在了哪個角度區(qū)域,選擇擁有點數(shù)最多的角度區(qū)域作為判斷下一步動作的依據(jù),如圖17所示,20~160的區(qū)域有5個黑色的點,200~340的區(qū)域有1個紅色的點,340~360的區(qū)域有1個紅色的點,20~160區(qū)域?qū)?yīng)的動作是右轉(zhuǎn),因此機(jī)器人下一秒的動作是右轉(zhuǎn)。 可利用狀態(tài)機(jī)處理該部分代碼,一共有3種狀態(tài): ①在左轉(zhuǎn)或者右轉(zhuǎn)中以尋找終點方位的狀態(tài),②前進(jìn)或者后退中不斷向終點靠近,③尋找新的空隙的狀態(tài)。 2.3安卓端軟件設(shè)計 機(jī)器人通過串口藍(lán)牙模塊和安卓手機(jī)連接,主要修改的文件是安卓系統(tǒng)里的BluetoothChat.java文件,以下是控件的初始化。 APP的其他控件功能如下:bluetoothdatabuffer區(qū)域顯示的是機(jī)器人和安卓手機(jī)通過藍(lán)牙通信的數(shù)據(jù),fullscreen按鈕可將該區(qū)域全屏顯示,hexdisplay單選框可以切換該區(qū)域數(shù)據(jù)的十六進(jìn)制和十進(jìn)制的顯示,clearscreen按鈕可以清空該區(qū)域的數(shù)據(jù)顯示,connect按鈕可以啟動或者關(guān)閉安卓手機(jī)和機(jī)器人之間的連接,stop按鈕可以啟動或者停止機(jī)器人,speed(mm/s)用來顯示機(jī)器人的實時速度,hexoutput單選框用來切換速度的十六進(jìn)制或十進(jìn)制的顯示,longitude顯示機(jī)器人所在位置的經(jīng)度,latitude顯示機(jī)器人所在位置的緯度,angle需要輸入機(jī)器人相對于導(dǎo)航終點的朝向角度,distance需要輸入機(jī)器人相對于導(dǎo)航終點的距離,這是一種角坐標(biāo)的表示,有了這兩個數(shù)據(jù)就可以確定導(dǎo)航終點相對于機(jī)器人的具體位置,laserscanstop按鈕可以切換激光傳感器的啟動和停止,sendspeed按鈕可以發(fā)送機(jī)器人的設(shè)定速度,sendposition按鈕會將angle輸入框和distance輸入框的內(nèi)容發(fā)送到機(jī)器人,以便機(jī)器人了解導(dǎo)航終點的位置,navigation按鈕用來切換手動移動和自動導(dǎo)航模式,整體界面左下方的上下左右四個箭頭按鈕可以控制機(jī)器人前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn),界面右下方顯示機(jī)器人的實時速度,電機(jī)1和電機(jī)2的速度,以及距離機(jī)器人最近的障礙物的距離。 4 結(jié)束語 本文闡述了一種非ROS系統(tǒng)的定制化物流機(jī)器人的設(shè)計方法,通過該方法設(shè)計,可以節(jié)省機(jī)器人的成本和功耗,在實現(xiàn)豐富的定制化功能的同時,可根據(jù)手機(jī)APP上輸入的終點位置和角度,在室內(nèi)動態(tài)未知環(huán)境中導(dǎo)航到終點,通過實驗驗證,機(jī)器人運(yùn)行穩(wěn)定高效,說明該設(shè)計方法具有一定的實用性和可靠性。 參考文獻(xiàn): [1] 蘇青.多機(jī)器人路徑規(guī)劃與協(xié)同避碰研究[D].南京:南京郵電大學(xué),2014. [2] 張文輝,齊乃明,尹洪亮.自適應(yīng)神經(jīng)變結(jié)構(gòu)的機(jī)器人軌跡跟蹤控制[J].控制與決策,2011(7):33-37. [3]鮑敦橋.仿真類人機(jī)器人設(shè)計及高層決策方法的研究[D].合肥:合肥工業(yè)大學(xué),2009. [4]余婷.多機(jī)器人隊列曲線運(yùn)動研究[D].上海:上海交通大學(xué),2009. [5]韓雪峰.導(dǎo)盲機(jī)器人[D].哈爾濱:哈爾濱工程大學(xué),2009. [6] 馬斌奇.多機(jī)器人協(xié)作與控制策略研究[D].西安:西安電子科技大學(xué),2009. [7] YAN Y P. WONG S F, A navigation algorithm of the mobile robot in the indoor and dynamic environment based on the PF-SLAM algorithm[J].Cluster Computing,2019(12):133-139. [8]YANYP.LIYM.Mobilerobotautonomouspathplanning based on fuzzy logic and filter smoothing in dynamic environment[C].12th World Congress on Intelligent Control and Automation,2016,6. [9] HE P.Consensus of uncertain parabolic PDE agents via adaptive unit-vector control scheme[J]. IET Control Theory &Applications,2018,12(18):2488-2494. [10]ZHUSP,XIA L M.Human action recognition based on fusion feathers extraction of adaptive background subtraction and optical flow model, mathematical problems in engineering [J].2015(4). [11]YANY P,LI Y M, Autonomous path planning and navigation of a mobile robot with multi-sensors based on fuzzy logic in dynamic environment[J].International Journal of Intelligent Systems and Applications in Robotics,2016,7(1):1-14. [12] YAN Y P, WONG S F. A navigation algorithm for the mobile robot in the indoor and dynamic environment based on the image recognition algorithm[J].The Hong Kong Institution of Engineers,2018.