本發(fā)明涉及一種基于webrtc的機(jī)器人遙操作系統(tǒng),屬于機(jī)器人領(lǐng)域。
背景技術(shù):
遙操作是一個(gè)古老的話題,自從提出至今對它的研究就一直沒有間斷。隨著科學(xué)和時(shí)代的發(fā)展,機(jī)器人遙操作在諸如太空、深海探測,遠(yuǎn)程的病房監(jiān)控等領(lǐng)域內(nèi),都發(fā)揮著不可替代的作用。借助于internet資源的諸多便利條件,人們對網(wǎng)絡(luò)機(jī)器人的需求必然會日益擴(kuò)大。而新興的html5技術(shù),又給網(wǎng)絡(luò)機(jī)器人的遙操作開辟了一個(gè)新的發(fā)展方向。
webrtc是一項(xiàng)基于html5的在瀏覽器內(nèi)部進(jìn)行實(shí)時(shí)的音視頻通訊的技術(shù)。實(shí)現(xiàn)了基于網(wǎng)頁的視頻會議,只通過瀏覽器內(nèi)部進(jìn)行javascript就可以達(dá)到實(shí)時(shí)通訊的能力,而且不需要瀏覽器提供任何形式的插件。webrtc提供了視頻會議的核心技術(shù),包括音視頻的采集、編解碼、傳輸和顯示,而且還支持跨平臺的調(diào)用。
當(dāng)前存在的網(wǎng)絡(luò)機(jī)器人遙操作系統(tǒng)設(shè)計(jì)是多種多樣的,各生產(chǎn)廠家分別用自己的手段和方法來實(shí)現(xiàn)控制信號和音視頻信號的傳輸。音視頻信號有些使用了第三方的開源軟件,如skype;有些使用了自己定制的音視頻傳輸軟件;有些使用了flash等音視頻的傳輸工具。而對于控制信號一般使用socket或xmlsocket;或者自己定制遙操作控制軟件。這些遙操作系統(tǒng)的主要問題在于需要先在客戶端安裝控制軟件或者瀏覽器插件,不能實(shí)現(xiàn)跨平臺訪問,而且也不能實(shí)現(xiàn)機(jī)器人運(yùn)動狀態(tài)變量對流媒體信號的調(diào)節(jié)。otorob考慮了機(jī)器人的所處場景,根據(jù)場景和機(jī)器人的速度來調(diào)節(jié)視頻流的參數(shù),來達(dá)到節(jié)省帶寬的目的;drrobotx80則是考慮了機(jī)器人的傳感器信息,將障礙物作為機(jī)器人運(yùn)動時(shí)的感興趣信息,當(dāng)檢測到障礙物時(shí)增大視頻流的幀率,以達(dá)到保證用戶體驗(yàn)性的目的;pr2則利用ros平臺搭建遙操作系統(tǒng),用websocket傳遞控制信號,使用mjpegserver搭建流媒體服務(wù)器,客戶端使用html插件來實(shí)現(xiàn)。上述所說遙操作系統(tǒng),增加了機(jī)器人的狀態(tài)變量對流媒體傳輸?shù)目刂?,達(dá)到了良好的效果,但是問題依然是對客戶端要求過高,而且沒有考慮網(wǎng)絡(luò)狀況。pr2雖然基于html5技術(shù)開發(fā),但是其流媒體傳輸編碼效率較低,而且本身也需要插件的支持。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種基于webrtc的機(jī)器人遙操作系統(tǒng),不僅客戶端能夠在瀏覽器內(nèi)與機(jī)器人進(jìn)行音視頻交互,而且利用webrtc開源代碼開源出分辨率和幀率的接口,用于通過云臺相機(jī)的轉(zhuǎn)角位置、距離傳感器的感知信息和機(jī)器人的速度控制機(jī)器人端的視頻流分辨率和幀率。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種基于webrtc的機(jī)器人遙操作系統(tǒng),包括機(jī)器人、客戶端和nodejs服務(wù)器,機(jī)器人頭部安裝有云臺相機(jī),通過二自由度轉(zhuǎn)動獲取環(huán)境視頻信號,機(jī)器人上安裝有麥克風(fēng),用于獲取環(huán)境的音頻信號,機(jī)器人周圍裝有距離傳感器,用于探測距離機(jī)器人較近障礙物的信息,機(jī)器人的頂部安裝有顯示器和音箱,用于呈現(xiàn)遙操作者的音視頻信號,機(jī)器人底部安裝在移動平臺上;客戶端使用支持webrtc功能的瀏覽器向機(jī)器人發(fā)出控制指令和音視頻信號,同時(shí)接收機(jī)器人發(fā)送的控制指令和音視頻信號;nodejs服務(wù)器分別向機(jī)器人、客戶端完成音視頻流報(bào)文的互換和轉(zhuǎn)發(fā);
作為本發(fā)明的進(jìn)一步優(yōu)選,控制指令的傳輸遵循websocket協(xié)議,包括控制移動平臺的運(yùn)動指令和控制云臺相機(jī)轉(zhuǎn)角運(yùn)動的指令;
作為本發(fā)明的進(jìn)一步優(yōu)選,客戶端用支持webrtc功能的瀏覽器,通過javascript調(diào)用實(shí)現(xiàn)與機(jī)器人的實(shí)時(shí)音視頻傳輸,機(jī)器人用webrtc的開源代碼,并開源出分辨率和幀率的參數(shù),音視頻傳輸前首先完成兩端初始化報(bào)文的傳輸,兩端在添加完sdp消息響應(yīng)后向nodejs服務(wù)器傳輸基于websocket的sdp消息,描述本端地址和端口信息,nodejs服務(wù)器完成報(bào)文的互換和轉(zhuǎn)發(fā),一旦對端的報(bào)文到達(dá)便進(jìn)行webrtc的音視頻點(diǎn)對點(diǎn)傳輸;
作為本發(fā)明的進(jìn)一步優(yōu)選,客戶端遙操作指令包括云臺相機(jī)轉(zhuǎn)角的運(yùn)動指令和移動平臺的運(yùn)動指令,客戶端控制云臺相機(jī)的轉(zhuǎn)角和底部移動平臺的運(yùn)動速度,機(jī)器人周圍的距離傳感器實(shí)時(shí)檢測距離機(jī)器人障礙物的信息;機(jī)器人視頻的分辨率根據(jù)云臺相機(jī)轉(zhuǎn)角位置、距離傳感器的信息和機(jī)器人運(yùn)動速度進(jìn)行調(diào)節(jié)。
通過以上技術(shù)方案,相對于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
本發(fā)明提出了一種基于webrtc的機(jī)器人遙操作系統(tǒng),該系統(tǒng)客戶端的瀏覽器內(nèi)部進(jìn)行與機(jī)器人端進(jìn)行音視頻交互,機(jī)器人端不僅利用webrtc的開源代碼與客戶端傳輸音視頻,還在webrtc的開源代碼上封裝了上層調(diào)用,通過云臺相機(jī)的轉(zhuǎn)角位置,距離傳感器的感知信息和機(jī)器人的運(yùn)動速度調(diào)節(jié)機(jī)器人端的流媒體傳輸分辨率和幀率。
附圖說明
下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)一步說明。
圖1是本發(fā)明的優(yōu)選實(shí)施例的硬件結(jié)構(gòu)圖;
圖2是本發(fā)明的優(yōu)選實(shí)施例的webrtc傳輸算法流程圖;
圖3是本發(fā)明的優(yōu)選實(shí)施例的移動平臺的流媒體傳輸方法流程圖。
具體實(shí)施方式
現(xiàn)在結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)的說明。這些附圖均為簡化的示意圖,僅以示意方式說明本發(fā)明的基本結(jié)構(gòu),因此其僅顯示與本發(fā)明有關(guān)的構(gòu)成。
如圖1所示,本發(fā)明的一種基于webrtc的機(jī)器人遙操作系統(tǒng),包括機(jī)器人、客戶端和nodejs服務(wù)器,機(jī)器人頭部安裝有云臺相機(jī),通過二自由度轉(zhuǎn)動獲取環(huán)境視頻信號,機(jī)器人上安裝有麥克風(fēng),用于獲取環(huán)境的音頻信號,機(jī)器人周圍裝有距離傳感器,用于探測距離機(jī)器人較近障礙物的信息,機(jī)器人的頂部安裝有顯示器和音箱,用于呈現(xiàn)遙操作者的音視頻信號,機(jī)器人底部安裝在移動平臺上;客戶端使用支持webrtc功能的瀏覽器向機(jī)器人發(fā)出控制指令和音視頻信號,同時(shí)接收機(jī)器人發(fā)送的控制指令和音視頻信號;nodejs服務(wù)器分別向機(jī)器人、客戶端完成音視頻流報(bào)文的互換和轉(zhuǎn)發(fā);
作為本發(fā)明的進(jìn)一步優(yōu)選,控制指令的傳輸遵循websocket協(xié)議,包括控制移動平臺的運(yùn)動指令和控制云臺相機(jī)轉(zhuǎn)角運(yùn)動的指令;
作為本發(fā)明的進(jìn)一步優(yōu)選,客戶端用支持webrtc功能的瀏覽器,通過javascript調(diào)用實(shí)現(xiàn)與機(jī)器人的實(shí)時(shí)音視頻傳輸,機(jī)器人用webrtc的開源代碼,并開源出分辨率和幀率的參數(shù),音視頻傳輸前首先完成兩端初始化報(bào)文的傳輸,兩端在添加完sdp消息響應(yīng)后向nodejs服務(wù)器傳輸基于websocket的sdp消息,描述本端地址和端口信息,nodejs服務(wù)器完成報(bào)文的互換和轉(zhuǎn)發(fā),一旦對端的報(bào)文到達(dá)便進(jìn)行webrtc的音視頻點(diǎn)對點(diǎn)傳輸;
作為本發(fā)明的進(jìn)一步優(yōu)選,客戶端遙操作指令包括云臺相機(jī)轉(zhuǎn)角的運(yùn)動指令和移動平臺的運(yùn)動指令,客戶端控制云臺相機(jī)的轉(zhuǎn)角和底部移動平臺的運(yùn)動速度,機(jī)器人周圍的距離傳感器實(shí)時(shí)檢測距離機(jī)器人障礙物的信息;機(jī)器人視頻的分辨率根據(jù)云臺相機(jī)轉(zhuǎn)角位置、距離傳感器的信息和機(jī)器人運(yùn)動速度進(jìn)行調(diào)節(jié);若檢測到障礙物在云臺相機(jī)的視野范圍內(nèi),則提高機(jī)器人端視頻流的分辨率和幀率;反之則保持預(yù)先設(shè)定的分辨率和幀率進(jìn)行傳輸。另外,機(jī)器人端視頻流的分辨率根據(jù)移動平臺速度進(jìn)行調(diào)節(jié),并且在一定范圍內(nèi)速度越大、分辨率越高。
如圖2所示,是webrtc傳輸算法流程圖,對于客戶端和服務(wù)器的webrtc程序,主要由以下幾步調(diào)用組成:
(1)捕獲本地的音視頻流;一路回送給本地顯示,一路用于rtp傳輸;
(2)設(shè)置視頻流的分辨率和幀率;這步在機(jī)器人端peerconnection完成,將peerconnection中決定視頻分辨率和幀率的函數(shù)調(diào)用提取出來,用于構(gòu)造流媒體參數(shù)調(diào)節(jié)算法的接口,調(diào)節(jié)機(jī)器人端視頻流的分辨率和幀率;
(3)添加sdp消息響應(yīng);為了傳輸webrtc流媒體的報(bào)文,需要構(gòu)造基于websocket的sdp消息,用于描述本次的會話名、帶寬信息、媒體類型、傳輸協(xié)議、媒體格式、端口和地址等方面的內(nèi)容,并設(shè)置本端的消息響應(yīng)機(jī)制。該報(bào)文用于流媒體傳輸?shù)某跏蓟?。一旦?gòu)造好sdp消息就向nodejs服務(wù)器發(fā)送。nodejs服務(wù)器完成消息的轉(zhuǎn)發(fā),并且完成傳輸情況的監(jiān)聽;
(4)使用websocket將構(gòu)造好的sdp消息傳輸?shù)綄Χ耍?/p>
(5)兩端接收到sdp消息后執(zhí)行相應(yīng)的消息處理,并按照消息中的對端端口和地址傳輸捕捉到的音視頻流。
如圖3所示為移動平臺的流媒體傳輸方法流程圖,由云臺相機(jī)的轉(zhuǎn)角位置(設(shè)該方向距離機(jī)器人正前方偏轉(zhuǎn)d度)和機(jī)器人距離傳感器的信息可知在距離傳感器的感知范圍內(nèi)是否存在障礙物,以及該障礙物是否在機(jī)器人云臺相機(jī)的視野范圍內(nèi)(d-δ,d+δ),若在該角度范圍內(nèi)存在障礙物,則按照下式調(diào)節(jié)視頻流的分辨率和幀率:
其中,video.interval為視頻流兩幀之間的時(shí)間差,反映出幀率信息,f1>f2>f3。dis(s,p)為根據(jù)云臺相機(jī)的位置p和傳感器的信息s確定的在云臺相機(jī)的視野范圍內(nèi)(d-δ,d+δ)障礙物距離機(jī)器人的距離。
同時(shí),速度檢測模塊實(shí)時(shí)檢測機(jī)器人當(dāng)前運(yùn)行的線速度和角速度,考慮到機(jī)器人運(yùn)動時(shí)遙操作者對視頻流的清晰度感知不明顯,為了降低運(yùn)動場景的網(wǎng)絡(luò)帶寬,確定如下機(jī)器人發(fā)送端的視頻分辨率決定公式:
其中,v為機(jī)器人運(yùn)行的線速度,w為機(jī)器人運(yùn)行的角速度。
若機(jī)器人存在速度,同時(shí)障礙物也存在與云臺相機(jī)的視野范圍內(nèi),則最終機(jī)器人端發(fā)送的視頻流的分辨率和幀率按照兩種方式的加權(quán)可得:
video.width=f(v,w,s,p)=m*video.height=m*g(v,w,s,p)=u*video.widthl+v*video.widthvvideo.interval=k(s,p)=video.intervall
其中,u,v分別為傳感器標(biāo)定系數(shù)和速度標(biāo)定系數(shù)。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語)具有與本申請所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣定義,不會用理想化或過于正式的含義來解釋。
本申請中所述的“和/或”的含義指的是各自單獨(dú)存在或兩者同時(shí)存在的情況均包括在內(nèi)。
本申請中所述的“連接”的含義可以是部件之間的直接連接也可以是部件間通過其它部件的間接連接。
以上述依據(jù)本發(fā)明的理想實(shí)施例為啟示,通過上述的說明內(nèi)容,相關(guān)工作人員完全可以在不偏離本項(xiàng)發(fā)明技術(shù)思想的范圍內(nèi),進(jìn)行多樣的變更以及修改。本項(xiàng)發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利要求范圍來確定其技術(shù)性范圍。