基於WebRTC的機器人遙作業系統的製作方法
2023-05-24 15:41:56 1

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