亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Ubuntu下ROS變種ROCOS的系統(tǒng)架構(gòu)①

        2021-08-02 11:08:26杜晉華
        關(guān)鍵詞:文件夾開(kāi)源架構(gòu)

        杜晉華,杜 剛,張 虎

        1(中國(guó)地質(zhì)大學(xué)(北京) 信息工程學(xué)院,北京 100083)

        2(湖北大學(xué) 物理與電子科學(xué)學(xué)院,武漢 430062)

        近年來(lái),伴隨人工智能技術(shù)和傳感技術(shù)等新型技術(shù)的快速發(fā)展,智能機(jī)器人技術(shù)獲得了突飛猛進(jìn)的進(jìn)步.與之對(duì)應(yīng)的是機(jī)器人相關(guān)體系結(jié)構(gòu)和操作系統(tǒng)迎來(lái)了發(fā)展的黃金時(shí)期,出現(xiàn)了以ROS為代表的專用于機(jī)器人的操作系統(tǒng)[1].

        鑒于ROS 操作系統(tǒng)在架構(gòu)的模塊化與層次化上的良好表現(xiàn),國(guó)內(nèi)外很多學(xué)者都基于ROS 進(jìn)行了有關(guān)研究與技術(shù)實(shí)現(xiàn),如基于ROS 實(shí)現(xiàn)機(jī)器人的各子功能部件的三維建模與開(kāi)發(fā)[2]有效降低了工作復(fù)雜度、使用ROS 作為機(jī)器人控制的嵌入式底層避免了對(duì)策略核心的重復(fù)設(shè)計(jì)與實(shí)現(xiàn)[3]、通過(guò)ROS 提供的各種功能包來(lái)進(jìn)行二次開(kāi)發(fā)[4]以期減少成本投入以及使用ROS 進(jìn)行相關(guān)仿真實(shí)驗(yàn)[5]取代實(shí)際重復(fù)性或長(zhǎng)周期的實(shí)地實(shí)驗(yàn),并能保證更高精度的數(shù)據(jù)獲取等.除此之外,國(guó)外研究大多集中于具體ROS 應(yīng)用的實(shí)現(xiàn),包括但不限于基于ROS的仿人雙臂機(jī)器人PR2[6]的實(shí)現(xiàn)、汽車自動(dòng)駕駛路徑規(guī)劃與導(dǎo)航[7]的實(shí)現(xiàn)、家用服務(wù)型機(jī)器人系統(tǒng)[8]的實(shí)現(xiàn)、醫(yī)療輔助式機(jī)器人交互邏輯[9]的實(shí)現(xiàn)等.

        除直接基于ROS 操作系統(tǒng)進(jìn)行機(jī)器人方面的工作外,也有部分開(kāi)發(fā)人員考慮借鑒ROS的邏輯,為專門化的機(jī)器人提供相應(yīng)的操作系統(tǒng),這種操作系統(tǒng)在保留ROS的主要功能和特點(diǎn)的前提下,都會(huì)在某一特定方面做出一定優(yōu)化,以期更好地控制與服務(wù)于相關(guān)機(jī)器人.其中有代表性的是ROCOS 操作系統(tǒng),主要實(shí)現(xiàn)了多臺(tái)機(jī)器人的配合調(diào)度.

        本文將對(duì)ROS和其變種ROCOS 做簡(jiǎn)要介紹,并詳細(xì)對(duì)比分析兩者的架構(gòu)邏輯,希望對(duì)有關(guān)機(jī)器人系統(tǒng)研究方面的人員提供一定的參考價(jià)值.

        1 系統(tǒng)簡(jiǎn)介

        1.1 機(jī)器人操作系統(tǒng)ROS

        ROS (Robot Operating System),即機(jī)器人操作系統(tǒng),是用于編寫機(jī)器人軟件程序的一種具有高度靈活性的軟件架構(gòu),是一個(gè)適用于機(jī)器人的開(kāi)源的元操作系統(tǒng).它提供了操作系統(tǒng)應(yīng)有的服務(wù),包括硬件抽象,底層設(shè)備控制,常用函數(shù)的實(shí)現(xiàn),進(jìn)程間消息傳遞,以及包管理.它也提供用于獲取、編譯、編寫和跨計(jì)算機(jī)運(yùn)行代碼所需的工具和庫(kù)函數(shù).

        在它誕生之前,很多專家致力于實(shí)現(xiàn)一個(gè)能夠自我感知、自我導(dǎo)航和自我控制的復(fù)雜機(jī)器人設(shè)計(jì).過(guò)程中,大家發(fā)現(xiàn)很多現(xiàn)有資源難以共享或者直接使用,所以都認(rèn)為機(jī)器人研究需要一個(gè)開(kāi)放式的協(xié)作框架,用以整合和提高各種資源的利用率.所以在這樣的需求下,2007年ROS 自斯坦福大學(xué)誕生,并在大量研究人員的共同努力下,逐漸發(fā)展和完善.ROS 發(fā)展歷史如圖1.

        圖1 ROS 發(fā)展歷史

        目前,ROS 廣泛應(yīng)用于機(jī)器人領(lǐng)域,主要實(shí)現(xiàn)機(jī)器人的建模、感知、導(dǎo)航和規(guī)劃,并能直接和機(jī)器人連接通訊,以實(shí)現(xiàn)對(duì)其物理實(shí)體的控制.

        1.2 機(jī)器人操作系統(tǒng)ROCOS

        ROCOS是世界杯機(jī)器人操作系統(tǒng)(RObotCup Operating System)的英文縮寫,是以ROS 操作系統(tǒng)為原型,剔除不必要的功能分支,專用于多機(jī)器人調(diào)度的軟件架構(gòu).

        它源自機(jī)器人世界杯RobotCup,一個(gè)為促進(jìn)人工智能和機(jī)器人等相關(guān)領(lǐng)域研究的國(guó)際項(xiàng)目.該項(xiàng)目是以足球機(jī)器人為主要研究平臺(tái),以推進(jìn)人工智能和機(jī)器人研究的國(guó)際比賽,旨在研究如何在實(shí)時(shí)性強(qiáng),即高動(dòng)態(tài)性和高對(duì)抗性的環(huán)境中,調(diào)度多臺(tái)機(jī)器人完成指定的工作任務(wù),和實(shí)現(xiàn)多機(jī)配合的智能化.圖2是RobotCup 賽場(chǎng)實(shí)況.

        圖2 RobotCup 賽場(chǎng)實(shí)況

        ROCOS 最先由卡內(nèi)基梅隆大學(xué)(CMU)在1997年發(fā)起構(gòu)建,其核心思路是在控制子系統(tǒng)的實(shí)現(xiàn)時(shí)按照STP (Skill-Tactic-Play) 框架進(jìn)行分層開(kāi)發(fā),之后于2012年對(duì)其改版,提出SSPS (Skill-State-Play-Selector)框架,有效提高了各機(jī)器人之間的配合度,在響應(yīng)機(jī)器指令方面也有很大提升.

        與此同時(shí),世界上其他機(jī)器人強(qiáng)校如康奈爾大學(xué)等也在積極引進(jìn)ROCOS 并投入到對(duì)其優(yōu)化與研發(fā)中.我國(guó)浙江大學(xué)也在持續(xù)跟進(jìn),其控制學(xué)院工業(yè)控制國(guó)家重點(diǎn)實(shí)驗(yàn)室于2003年就著手ROCOS的研究,2020年已形成比較完善的ROCOS 版本,并對(duì)ROCOS 實(shí)效做了相應(yīng)的測(cè)試與研究[10,11].表1說(shuō)明了浙江大學(xué)現(xiàn)有ROCOS 在世界機(jī)器人比賽上的優(yōu)異表現(xiàn).

        表1 RoboCup SSL 榮譽(yù)榜

        2 系統(tǒng)架構(gòu)

        2.1 ROS 架構(gòu)

        從硬件實(shí)現(xiàn)角度,ROS 系統(tǒng)可分為3個(gè)層次:OS層、中間層和應(yīng)用層.其中OS 層為底層,主要使用Linux 系統(tǒng)實(shí)現(xiàn)(如Ubuntu),中間層實(shí)現(xiàn)ROS 核心通信機(jī)制以及功能庫(kù),應(yīng)用層通過(guò)運(yùn)行ROS Master (管理者)來(lái)負(fù)責(zé)系統(tǒng)正常運(yùn)行.

        具體到中間層的實(shí)現(xiàn),又可將ROS 架構(gòu)細(xì)分為計(jì)算圖層、文件系統(tǒng)層和開(kāi)源社區(qū)層,如圖3.

        圖3 ROS 架構(gòu)

        2.1.1 計(jì)算圖層

        ROS 系統(tǒng)軟件的功能模塊以節(jié)點(diǎn)為單位獨(dú)立運(yùn)行,通過(guò)端對(duì)端的拓?fù)浣Y(jié)構(gòu)連接.所以ROS 引進(jìn)計(jì)算圖來(lái)描述這種拓?fù)浣Y(jié)構(gòu),進(jìn)而體現(xiàn)程序的運(yùn)行方式.

        計(jì)算圖的構(gòu)成方式是:ROS 創(chuàng)建一個(gè)連接所有進(jìn)程(節(jié)點(diǎn))的網(wǎng)絡(luò),其中的任何進(jìn)程(節(jié)點(diǎn))都可以訪問(wèn)此網(wǎng)絡(luò),并通過(guò)該網(wǎng)絡(luò)與其他進(jìn)程(節(jié)點(diǎn))交互,獲取其他進(jìn)程(節(jié)點(diǎn))發(fā)布的信息,并將自身數(shù)據(jù)發(fā)布到網(wǎng)絡(luò)上.其中,構(gòu)成計(jì)算圖網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)(node)、主題(topic)、服務(wù)(server)等都有唯一的名稱做標(biāo)識(shí).

        1)節(jié)點(diǎn):是主要的計(jì)算執(zhí)行進(jìn)程,功能包(在第2.1.2 節(jié)中詳細(xì)定義)中創(chuàng)建的每個(gè)可執(zhí)行程序在被啟動(dòng)加載到系統(tǒng)進(jìn)程中后,該進(jìn)程就是一個(gè)ROS 節(jié)點(diǎn),如圖4中的node1、node2等都是節(jié)點(diǎn).節(jié)點(diǎn)都是各自獨(dú)立的可執(zhí)行文件,能夠通過(guò)主題(topic)、服務(wù)(server)或參數(shù)服務(wù)器(parameter server) 與其他節(jié)點(diǎn)通信.ROS 通過(guò)使用節(jié)點(diǎn)將代碼和功能解耦,提高了系統(tǒng)的容錯(cuò)力和可維護(hù)性.

        2)消息:節(jié)點(diǎn)通過(guò)消息(message)完成彼此的溝通.它是ROS中一個(gè)進(jìn)程(節(jié)點(diǎn))發(fā)送到其他進(jìn)程(節(jié)點(diǎn))的信息.消息類型是消息的數(shù)據(jù)結(jié)構(gòu),ROS 系統(tǒng)提供了很多標(biāo)準(zhǔn)類型的消息可以直接使用,如果要使用非標(biāo)準(zhǔn)類型的消息,需要進(jìn)行自定義.

        3)主題:每個(gè)消息都必須發(fā)布到相應(yīng)的主題(topic),通過(guò)主題來(lái)實(shí)現(xiàn)在ROS 計(jì)算圖網(wǎng)絡(luò)中的路由轉(zhuǎn)發(fā).節(jié)點(diǎn)發(fā)送數(shù)據(jù)被稱為該節(jié)點(diǎn)正在向主題發(fā)布消息.節(jié)點(diǎn)可以通過(guò)訂閱某個(gè)主題,接收來(lái)自其他節(jié)點(diǎn)的消息.通過(guò)主題進(jìn)行消息路由不需要節(jié)點(diǎn)之間直接連接,這意味著發(fā)布者節(jié)點(diǎn)和訂閱者節(jié)點(diǎn)之間不需要知道彼此是否存在,從而保證發(fā)布者節(jié)點(diǎn)與訂閱者節(jié)點(diǎn)之間的解耦合.

        4)服務(wù):在一些特殊的場(chǎng)合,節(jié)點(diǎn)間需要點(diǎn)對(duì)點(diǎn)的高效率通信并及時(shí)獲取應(yīng)答,此時(shí)需要用服務(wù)的方式進(jìn)行交互.提供服務(wù)的節(jié)點(diǎn)被稱為服務(wù)端,向服務(wù)端發(fā)起請(qǐng)求并等待響應(yīng)的節(jié)點(diǎn)被稱為客戶端,客戶端發(fā)起一次請(qǐng)求并得到服務(wù)端的一次響應(yīng)就完成了一次服務(wù)通信過(guò)程.如圖4中node1 向node3 發(fā)起一次請(qǐng)求,并得到node3 返回給node1的響應(yīng).

        圖4 計(jì)算圖示例

        2.1.2 文件系統(tǒng)層

        與其他操作系統(tǒng)類似,一個(gè)ROS 程序的不同組件需要被放在不同的文件夾下進(jìn)行管理,而這些文件夾則根據(jù)不同的功能來(lái)對(duì)文件進(jìn)行組織,它們構(gòu)成了ROS的文件系統(tǒng).

        在文件系統(tǒng)中,最基本的管理單元就是功能包.功能包是ROS中軟件組織的基本形式,一個(gè)功能包具有用于創(chuàng)建ROS 程序的最小結(jié)構(gòu)和最少內(nèi)容,它可以包含ROS 運(yùn)行的進(jìn)程(節(jié)點(diǎn))和配置文件等.

        一個(gè)功能包可以按照?qǐng)D5的方式分為多個(gè)部分,其中具體到每個(gè)子部分如下文.

        圖5 ROS 文件系統(tǒng)中的功能包

        1)功能包清單:主要用于記錄功能包的信息以及發(fā)行者、功能包之間的依賴關(guān)系以及編譯的相關(guān)信息等.在功能包中扮演管理者的角色.

        2)消息類型:用于描述ROS 采用話題通信時(shí)消息的類型,通過(guò)該文件可了解這個(gè)功能包的相關(guān)通信接口.

        3)服務(wù)類型:用于描述ROS 采用服務(wù)通信時(shí)服務(wù)的類型,通過(guò)該文件也可了解這個(gè)功能包的相關(guān)通信接口.

        4)代碼:節(jié)點(diǎn)是通過(guò)相應(yīng)的編程語(yǔ)言進(jìn)行編寫的,其代碼稱作源代碼,存放于特定文件夾中.

        其中,由功能包還可以組成更大的功能包,被稱之為元功能包,用以實(shí)現(xiàn)更大、更復(fù)雜的功能.

        而在元功能包之上,還有一層文件夾,被稱作工作空間.工作空間是一個(gè)包含功能包、可編譯源文件和編譯包的文件夾,當(dāng)用戶想同時(shí)編譯不同的功能包或保存本地開(kāi)發(fā)包時(shí)必須使用這一機(jī)制.用戶可根據(jù)實(shí)際需要?jiǎng)?chuàng)建多個(gè)工作空間,在每個(gè)工作空間中開(kāi)發(fā)不同用途的功能包.

        如圖6所示,工作空間通常由3 種文件夾構(gòu)成.

        圖6 ROS 文件系統(tǒng)中的工作空間示例

        1)src 源文件空間:該文件夾放置各個(gè)功能包和用于這些功能包的CMake 配置文件CMakeLists.txt.由于ROS中的源碼采用catkin 工具進(jìn)行編譯,而catkin工具基于CMake 技術(shù),所以在src 源文件空間和各個(gè)功能包中都會(huì)有CMakeLists.txt,它起編譯配置的作用.

        2)build 編譯空間:該文件夾放置CMake和catkin編譯功能包時(shí)產(chǎn)生的緩存、配置、中間文件等.

        3)devel 開(kāi)發(fā)空間:該文件夾放置編譯好的可執(zhí)行程序,這些可執(zhí)行程序不需要安裝就能直接運(yùn)行.一旦功能包源碼編譯和測(cè)試通過(guò)后,可以將這些編譯好的可執(zhí)行文件直接導(dǎo)出與其他開(kāi)發(fā)人員分享.

        2.1.3 開(kāi)源社區(qū)層

        開(kāi)源社區(qū)層是位于ROS 架構(gòu)最外面的層次(注意這里討論的范圍還在中間層,其實(shí)開(kāi)源社區(qū)上還有應(yīng)用層).由于ROS的開(kāi)源讓很多人得以共享資源,這個(gè)共享資源的平臺(tái)稱之為ROS的開(kāi)源社區(qū),如圖7.

        圖7 ROS 開(kāi)源社區(qū)構(gòu)成

        ROS的開(kāi)源社區(qū)主要由網(wǎng)站、博客和代碼資源構(gòu)成.因?yàn)镽OS有各種功能的功能包,但ROS 安裝時(shí)只會(huì)安裝固定的一部分,所以用戶搭建自己的機(jī)器人時(shí),如果需要特定功能的功能包,可以自己寫功能包源碼,也可以從開(kāi)源社區(qū)中尋找,采用軟件源的形式下載別人的功能包來(lái)參考使用.

        具體的開(kāi)源社區(qū)功能模塊構(gòu)成如下:

        1)發(fā)行版(Distribution):ROS 發(fā)行版包括一系列帶有版本號(hào)、可以直接安裝的功能包.

        2)軟件源(Repository):ROS 依賴于共享網(wǎng)絡(luò)上的開(kāi)源代碼,不同的組織機(jī)構(gòu)可以開(kāi)發(fā)或者共享自己的機(jī)器人軟件.

        3)文檔社區(qū)(Wiki):記錄ROS 信息文檔的主要論壇.

        4)郵件列表(Mailing list):交流ROS 更新的主要渠道,同時(shí)也可以交流ROS 開(kāi)發(fā)的各種疑問(wèn).

        5)問(wèn)答社區(qū)(Answers):咨詢ROS 相關(guān)問(wèn)題的網(wǎng)站.

        6)博客(Blog):發(fā)布ROS 社區(qū)中的新聞[12]、圖片、視頻等內(nèi)容.

        2.2 ROCOS 架構(gòu)

        因?yàn)镽OCOS 操作系統(tǒng)是在ROS 系統(tǒng)的基礎(chǔ)之上做出的單方向(多機(jī)調(diào)度)的優(yōu)化.所以從實(shí)現(xiàn)角度看,其架構(gòu)與ROS 類似,也可分為3個(gè)層次:OS 層、中間層和應(yīng)用層.其中OS 層為底層,主要使用Linux 系統(tǒng)實(shí)現(xiàn)(如Ubuntu),中間層實(shí)現(xiàn)ROCOS 核心通信機(jī)制以及功能庫(kù),應(yīng)用層主要通過(guò)圖形界面的模式為用戶提供服務(wù).

        具體到中間層的實(shí)現(xiàn),ROCOS 更加關(guān)注具體的機(jī)器人仿真與通訊細(xì)節(jié),可將ROS 架構(gòu)細(xì)分為后端策略層、前端控制層、文件系統(tǒng)層和開(kāi)源社區(qū)層,如圖8.

        圖8 ROCOS 架構(gòu)

        2.2.1 后端策略層

        后端策略層是ROCOS 用于實(shí)現(xiàn)機(jī)器人操控邏輯、處理I/O 信息(如視覺(jué)信息、從機(jī)器人傳回的通訊信息、傳感器信息等)和形成指令的控制中心.

        在圖9中,機(jī)器人的正常運(yùn)行有賴于多個(gè)相互關(guān)聯(lián)系統(tǒng)的信息交互與功能配合.具體包括:視覺(jué)子系統(tǒng)、決策子系統(tǒng)、通訊子系統(tǒng)、機(jī)器人硬件子系統(tǒng)以及場(chǎng)地輔助子系統(tǒng)等.其中,ROCOS 操作系統(tǒng)裝載于策略機(jī)上,由其后端策略層處理從其他子系統(tǒng)搜集到的實(shí)時(shí)信息,并進(jìn)行整合、處理與計(jì)算,之后依靠代碼邏輯做出相應(yīng)的決策和命令,通過(guò)通訊機(jī)制傳輸給機(jī)器人,完成邏輯層與物理層之間的配合.

        圖9 ROCOS 在整個(gè)大型系統(tǒng)中的位置

        為完成相應(yīng)功能,后端策略層需要依賴外置功能包,并使用合理的框架對(duì)功能進(jìn)行解耦和處理.

        涉及到的功能包與運(yùn)行環(huán)境具體包括:

        1)開(kāi)發(fā)環(huán)境:為有效組織代碼邏輯、合理預(yù)留前端控制層需要的接口以及確保應(yīng)用層較好的可視化效果,選擇具有優(yōu)良跨平臺(tái)特性、面向?qū)ο蟮?、含豐富API、支持OpenGL的QT 作為默認(rèn)集成開(kāi)發(fā)環(huán)境.

        2)開(kāi)發(fā)語(yǔ)言:在ROCOS中,絕大部分底層邏輯代碼采用C++11 規(guī)范完成開(kāi)發(fā).而考慮到多機(jī)器人的調(diào)度,使用具有可擴(kuò)展、簡(jiǎn)單高效、與平臺(tái)無(wú)關(guān)等特性的LUA 語(yǔ)言實(shí)現(xiàn)相應(yīng)的功能.(具體實(shí)現(xiàn)中需要引入第三方軟件包tolua++)

        3)相關(guān)庫(kù):后端策略層需要對(duì)大批量、實(shí)時(shí)性數(shù)據(jù)進(jìn)行處理,有賴于C++里支持線性代數(shù)運(yùn)算、矩陣和矢量運(yùn)算、數(shù)值分析及其相關(guān)的算法的開(kāi)源模版庫(kù)Eigen.另外,為實(shí)現(xiàn)后端策略層和前端控制層、前端控制層和通訊子系統(tǒng)的數(shù)據(jù)傳輸,需要引入與平臺(tái)和語(yǔ)言無(wú)關(guān)、可擴(kuò)展且輕便高效的序列化數(shù)據(jù)結(jié)構(gòu)協(xié)議Protobuf.

        具體而言,后端策略層通過(guò)C++和LUA 兩種計(jì)算機(jī)語(yǔ)言的有機(jī)結(jié)合,用 C++進(jìn)行各種基礎(chǔ)算法、動(dòng)作任務(wù)的編寫,LUA 進(jìn)行上層任務(wù)的分配,構(gòu)建出一個(gè)能使機(jī)器人從完成一個(gè)簡(jiǎn)單動(dòng)作到多個(gè)機(jī)器人進(jìn)行相互協(xié)調(diào)配合的框架.

        框架結(jié)構(gòu)如圖10所示.

        圖10 ROCOS 后端策略層分層

        1)使用C++完成底層skill 動(dòng)作層的開(kāi)發(fā):該層主要完成單臺(tái)機(jī)器人的單個(gè)動(dòng)作,與硬件實(shí)現(xiàn)緊密相關(guān),如實(shí)現(xiàn)到達(dá)指定點(diǎn)、轉(zhuǎn)體等.

        具體實(shí)現(xiàn)框架為:

        1.#include "src/utils/PlayerTask.h"……

        2.extern "C"_declspec(dllexport) PlayerTask

        player_plan(const WorldModel* model,int robot_id);

        3.enum FourQuadrant{LeftUp,……}area;

        4.PlayerTask player_plan(const WorldModel*model,int robot_id){

        5.PlayerTask task;

        6.……

        7.if (ball.y>0) {

        8.if (ball.x>0) {area=RightUp;}

        9.else {area=RightDown;}

        10.}

        11.else {……}

        12.switch (area){

        13.case LeftUp:

        14.task.orientate=(ball - goal).angle();//dir

        15.task.target_pos=point2f(half_x,-half_y);

        16.break;

        17.case LeftDown:

        18.……}

        19.return task;}

        2)使用LUA 完成task 任務(wù)層的開(kāi)發(fā):該層主要調(diào)用多個(gè)skill 函數(shù),并將其封裝為一個(gè)完整的task 任務(wù),用以將該任務(wù)分配給單臺(tái)機(jī)器人執(zhí)行,如足球機(jī)器人執(zhí)行到達(dá)指定點(diǎn)拿球的任務(wù)(具體包含到達(dá)拿球點(diǎn)skill、控球skill、檢測(cè)是否拿球skill 等).

        具體實(shí)現(xiàn)框架為:

        1.gPlayTable.CreatePlay{

        2.firstState="halt",

        3.switch=function()

        4.return "halt"

        5.end,

        6.["halt"]={

        7.["Leader"]=task.stop(),

        8.["Special"]=task.stop(),

        9.match="[LS]"

        10.},

        11.name="NormalPlayV1",

        12.applicable={exp="a",a=true},

        13.attribute="attack",

        14.timeout=99999

        15.}

        3)使用LUA 完成play 場(chǎng)景層的開(kāi)發(fā):該層主要調(diào)用多個(gè)task 對(duì)象,并將其封裝為一個(gè)完整的play 場(chǎng)景,用以對(duì)多臺(tái)機(jī)器人進(jìn)行任務(wù)分配,使之并行執(zhí)行多個(gè)任務(wù),如多臺(tái)家用機(jī)器人處于清掃場(chǎng)景(掃地機(jī)器人分配地面清掃任務(wù)、擦窗機(jī)器人分配玻璃清潔任務(wù)等).其實(shí)現(xiàn)框架與task 層類似.

        如果對(duì)策略層做進(jìn)一步的細(xì)化,可將其分為6個(gè)工作層:

        1)視覺(jué)和傳感器的信息處理:將視覺(jué)系統(tǒng)傳過(guò)來(lái)的信息進(jìn)行分析整合,過(guò)濾重復(fù)內(nèi)容.另外,需要對(duì)從機(jī)器人本體上傳感器(如紅外傳感器)獲得的工作信息進(jìn)行處理,為后續(xù)指令的下達(dá)提供依據(jù);

        2)運(yùn)動(dòng)預(yù)測(cè):通過(guò)保留過(guò)去若干秒內(nèi)的圖像信息,將位置信息轉(zhuǎn)化為速度信息,根據(jù)數(shù)學(xué)計(jì)算來(lái)預(yù)測(cè)環(huán)境中各實(shí)體(包括機(jī)器人在內(nèi))位置,該工作也為機(jī)器人合理的路徑規(guī)劃打下基礎(chǔ);

        3)路徑規(guī)劃:實(shí)現(xiàn)機(jī)器人的動(dòng)態(tài)避障,在完成移動(dòng)任務(wù)的同時(shí)確保機(jī)器人不與各類靜止、運(yùn)動(dòng)物體發(fā)生嚴(yán)重碰撞;

        4)多層決策協(xié)作:實(shí)現(xiàn)從一個(gè)機(jī)器人完成一個(gè)動(dòng)作到多臺(tái)機(jī)器人協(xié)同運(yùn)作的多決策層的有機(jī)配合;

        5)場(chǎng)景實(shí)現(xiàn):包括場(chǎng)景動(dòng)態(tài)變換后的任務(wù)更新以及動(dòng)態(tài)分配;

        6)各種相關(guān)的算法:包括基于硬件提供功能的抽象與二次開(kāi)發(fā).

        2.2.2 前端控制層

        前端控制層是ROCOS 用于仿真機(jī)器人實(shí)時(shí)場(chǎng)景、提供應(yīng)用層控制接口以及與通信子系統(tǒng)連接配置等功能的集成.

        圖11是足球機(jī)器人前端控制層在應(yīng)用層的圖形頁(yè)面,其構(gòu)成包括左部的環(huán)境仿真與右部的控制面板,用以實(shí)現(xiàn)對(duì)機(jī)器人控制的可視化處理.

        圖11 ROCOS 前端控制層在應(yīng)用層的圖形頁(yè)面

        具體使用過(guò)程中,需要在控制面板中設(shè)置相關(guān)參數(shù)、選擇研究模式.如果場(chǎng)地子系統(tǒng)可以提供支持,可選擇實(shí)地模式,并在結(jié)合下文的通訊子系統(tǒng)后,完成實(shí)地圖像在系統(tǒng)上的二維仿真建模與控制;如果場(chǎng)地子系統(tǒng)不提供支持,用戶可以脫機(jī)進(jìn)行研究,在ROCOS中填充自定義的程序?qū)崿F(xiàn)文件,系統(tǒng)將解析用戶的文件并在環(huán)境仿真界面進(jìn)行仿真運(yùn)算,可獲得與實(shí)地模式同等的研究效果.

        圖12是ROCOS 前端控制層功能的另一方面體現(xiàn),ROCOS 搭載的策略機(jī)可直接和信號(hào)發(fā)射機(jī)連接,通過(guò)無(wú)線、藍(lán)牙等技術(shù)實(shí)現(xiàn)與機(jī)器人之間的通訊.其具體實(shí)現(xiàn)邏輯仿照無(wú)線電系統(tǒng)和無(wú)線網(wǎng)絡(luò)系統(tǒng)的實(shí)現(xiàn)模式:當(dāng)機(jī)器人與策略機(jī)連接在同一網(wǎng)段,或兩者頻率收發(fā)器均設(shè)置為相同的頻點(diǎn),即可實(shí)現(xiàn)自主式非人工連接.

        圖12 ROCOS 前端控制層在應(yīng)用層的圖形頁(yè)面

        為完成相應(yīng)功能,前端控制層也需要依賴外置的功能包,并使用合理的框架對(duì)功能進(jìn)行解耦和處理.

        值得注意的是:由于前端控制層的框架不是特別清晰,也需要之后隨著ROCOS的版本迭代逐步優(yōu)化,這里僅對(duì)其依賴的功能包做進(jìn)一步的說(shuō)明:

        1)仿真:為實(shí)現(xiàn)機(jī)器人環(huán)境與實(shí)體的三維建模與實(shí)時(shí)仿真,需要引入開(kāi)源的圖形函數(shù)庫(kù)OpenGL 進(jìn)行場(chǎng)景建模,也需要引入開(kāi)源的動(dòng)態(tài)引擎庫(kù)ODE 提供相應(yīng)的支持.

        2)驅(qū)動(dòng):需要為ROCOS 配置相應(yīng)從其他子系統(tǒng)獲取信息和進(jìn)行I/O 管理的軟件,如與信號(hào)通訊相關(guān)的發(fā)射機(jī)驅(qū)動(dòng)、加密狗驅(qū)動(dòng);與視覺(jué)信息捕獲相關(guān)的顯卡驅(qū)動(dòng)等.

        2.2.3 文件系統(tǒng)層

        ROCOS的文件系統(tǒng)層和ROS 沒(méi)有特別大的差別,而且在對(duì)文件系統(tǒng)管理的文件樹(shù)結(jié)構(gòu)也大致相同,均包含基本的文件夾架構(gòu):

        1)bin:該文件夾保存可執(zhí)行的程序和命令,大多是在ROCOS的終端界面可直接運(yùn)行的命令行.

        2)include:該文件夾用于放置頭文件.由于ROCOS里面的某一具體的頭文件屬于某一具體的功能包,如果一個(gè)功能包需要依賴另外的功能包,自然必須包含另外功能包的頭文件,功能包的頭文件在功能包安裝的時(shí)候被直接存放于該文件夾.

        3)lib:主要存放一些.so 結(jié)尾的可執(zhí)行程序.

        4)etc:主要存放ROS和catkin 配置文件.

        5)share:放置ROCOS 里面已經(jīng)安裝的功能包,主要包含功能包的各種信息,包括其接口、配置信息等.值得注意的是,如果用戶需要真正操作機(jī)器人,并不是直接在該文件夾下進(jìn)行,需要額外建立一個(gè)文件夾,即上文提及的工作空間,然后在工作空間下創(chuàng)建自己的功能包,進(jìn)行一系列開(kāi)發(fā)工作.

        2.2.4 開(kāi)源社區(qū)層

        由于ROCOS 相對(duì)較為小眾,所以并不像ROS 一樣提供一個(gè)廣泛開(kāi)源的社區(qū),它主要依托Git 實(shí)現(xiàn)代碼開(kāi)源與數(shù)據(jù)共享(Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)).

        本文介紹的浙江大學(xué)實(shí)現(xiàn)的ROCOS,就在應(yīng)用Git 系統(tǒng)的主流版本管理網(wǎng)站Github 上進(jìn)行了開(kāi)源[13],目前有包括筆者在內(nèi)的多個(gè)開(kāi)發(fā)者參與到相關(guān)代碼的研發(fā)與優(yōu)化中.

        3 仿真與實(shí)驗(yàn)

        為檢驗(yàn)ROCOS 架構(gòu)的合理性及其在單一實(shí)現(xiàn)方向上所展示出的強(qiáng)針對(duì)性,分別就ROS 系統(tǒng)和ROCOS系統(tǒng)進(jìn)行仿真實(shí)驗(yàn).

        由于本文主要針對(duì)浙江大學(xué)實(shí)現(xiàn)的ROCOS 做研究,研究者位處系統(tǒng)的優(yōu)化人員之列,所以不能估計(jì)本ROCOS的構(gòu)建成本.從浙江大學(xué)實(shí)驗(yàn)室獲悉的詳細(xì)數(shù)據(jù)是:ROCOS的初始架構(gòu)時(shí)間花費(fèi)不到半年,相較ROS 系統(tǒng)直接作為成品或工具而言,其成本偏高.但注意使用ROS的用戶需要花費(fèi)至少1 到2年的時(shí)間學(xué)習(xí)ROS的基本技術(shù),ROCOS 僅需1個(gè)月或者更短,所以從總時(shí)間成本投入上,ROCOS 更勝一籌.

        而通常情況下,ROCOS是為專門化領(lǐng)域或?qū)iT性需求所構(gòu)建,所以與ROS 普適性構(gòu)建相比,其與機(jī)器人的適配性會(huì)更好.

        基于上述原因,本次實(shí)驗(yàn)以SSL (Small Size League)小型足球機(jī)器人(其二維參數(shù)如圖13)為研究對(duì)象,在一臺(tái)策略機(jī)上運(yùn)行Ubuntu 下ROS 系統(tǒng)、一臺(tái)策略機(jī)上運(yùn)行Ubuntu 下ROCOS系統(tǒng).為保證實(shí)驗(yàn)不受無(wú)關(guān)因素干擾,確保兩臺(tái)機(jī)器有相同硬件環(huán)境配置:Intel core i5-8300,2.3 GHz,四核,內(nèi)存 8 GB.并同時(shí)接入SSL_Vision 對(duì)應(yīng)顯卡,加載相應(yīng)視覺(jué)軟件.相關(guān)參數(shù)如圖14.

        圖13 小型足球機(jī)器人二維參數(shù)

        圖14 SSL_Vision 配置環(huán)境及參數(shù)

        從圖14可知,初始條件下,數(shù)據(jù)傳輸率均為0.在仿真實(shí)驗(yàn)中,該值將指征系統(tǒng)的仿真效果以及穩(wěn)定性.

        3.1 多場(chǎng)景適應(yīng)性仿真

        使用5 臺(tái)藍(lán)色標(biāo)識(shí)標(biāo)記的足球機(jī)器人進(jìn)行仿真模擬,使用LUA 腳本指定其分別實(shí)現(xiàn)多邊形路徑規(guī)劃與隊(duì)列路徑規(guī)劃,檢驗(yàn)數(shù)據(jù)傳輸率、ROCOS 計(jì)算速度與計(jì)算精度以及畫(huà)面延時(shí)情況.

        在圖15中,圖15(a)是初始場(chǎng)景:可以看到數(shù)據(jù)傳輸率穩(wěn)定在62 幀/s,靜態(tài)仿真效果良好.圖15(b)和圖15(c)分別是多機(jī)路徑規(guī)劃場(chǎng)景中的多邊形路徑和隊(duì)列路徑動(dòng)態(tài)仿真,可以看到數(shù)據(jù)傳輸率仍舊維持在62 幀/s,所以系統(tǒng)穩(wěn)定性非常好.

        圖15 ROCOS 多場(chǎng)景適應(yīng)性仿真圖

        使用命令行查看CPU 使用情況可以看到(ROCOS沒(méi)有提供獨(dú)立任務(wù)管理器)如圖16.

        圖16 Ubuntu 下命令行任務(wù)管理器數(shù)據(jù)

        初始靜態(tài)仿真時(shí)刻CPU 占有率為179.5%,而動(dòng)態(tài)仿真時(shí)刻CPU 占有率為145.5% (注意這里占有率超過(guò)100%屬系統(tǒng)問(wèn)題,相對(duì)占有率為準(zhǔn)確值).可以看出相對(duì)占有率不增反降,主要原因在于靜態(tài)仿真需要維持機(jī)器人仿真二維視圖在可視時(shí)間內(nèi)保持靜止,實(shí)際仍在進(jìn)行計(jì)算,所以CPU 占用率較高.

        為對(duì)比ROCOS的顯著提升效果,在ROS 上做同組對(duì)比實(shí)驗(yàn).

        在圖17中,圖17(a)是初始場(chǎng)景:可以看到數(shù)據(jù)傳輸率穩(wěn)定在60 幀/s,靜態(tài)仿真效果與ROCOS 持平.圖17(b)和圖17(c)分別是多機(jī)路徑規(guī)劃場(chǎng)景中的多邊形路徑和隊(duì)列路徑動(dòng)態(tài)仿真,可以看到數(shù)據(jù)傳輸率下降較為嚴(yán)重,低至30 幀/s 左右,所以系統(tǒng)穩(wěn)定性不甚理想.

        圖17 ROS 多場(chǎng)景適應(yīng)性仿真圖

        同樣使用命令行查看CPU 使用情況如圖18.

        圖18 Ubuntu 下ROS 自定義任務(wù)管理器數(shù)據(jù)

        初始靜態(tài)仿真時(shí)刻CPU 占有率為0.3%,而動(dòng)態(tài)仿真時(shí)刻CPU 占有率為70.9%.可以看出雖然靜態(tài)環(huán)境下,ROS 系統(tǒng)的效率極高,但轉(zhuǎn)為動(dòng)態(tài)環(huán)境后CPU 占有率提升70.6%,與ROCOS 不增反降相比,具有普適性的ROS 系統(tǒng)在針對(duì)性領(lǐng)域效果不甚理想,由此可以看出ROCOS 系統(tǒng)所具有的強(qiáng)針對(duì)性:在專一領(lǐng)域,它的功能更加穩(wěn)定且效果良好.

        3.2 交互式仿真

        在機(jī)器人領(lǐng)域,給研究人員帶來(lái)極大阻礙的就是在程序運(yùn)行過(guò)程中,無(wú)法實(shí)時(shí)查看相關(guān)參數(shù).此外,在機(jī)器人運(yùn)行過(guò)程中如果出現(xiàn)問(wèn)題,一般很難立即定位問(wèn)題來(lái)源,極大程度上制約了項(xiàng)目推進(jìn)速度和效率.

        ROS 系統(tǒng)允許用戶根據(jù)機(jī)器人實(shí)際情況,借助系統(tǒng)提供的功能包自行定義交互式輔助軟件.仍以SSL為例.ROS 交互界面如圖19.

        圖19 ROS 交互界面

        使用ROS 提供的元功能包以及小型足球機(jī)器人硬件開(kāi)發(fā)文檔提供的相關(guān)接口,實(shí)現(xiàn)上述界面,可執(zhí)行簡(jiǎn)單的機(jī)器人控制:包括速度、自身行為、動(dòng)作觸發(fā)、多機(jī)選擇.但實(shí)際使用過(guò)程中,一旦出現(xiàn)程序問(wèn)題,只能確定觸發(fā)源為當(dāng)前時(shí)刻的前一條指令,無(wú)法確定具體原因.

        主要原因在于交互界面不靈活,不能實(shí)現(xiàn)用戶“所想即所得”,即實(shí)時(shí)性動(dòng)態(tài)調(diào)整可交互元素.ROCOS 可以實(shí)現(xiàn)上述需求.

        如圖20,使用ROCOS 搭建系統(tǒng)交互界面,可在可視化窗口中有選擇地或者全部顯示用戶需要獲取的中間參數(shù),在控制面板中,以列表形式提供各參數(shù)的設(shè)置接口,并允許用戶在使用系統(tǒng)時(shí)動(dòng)態(tài)調(diào)整列表項(xiàng).凡系統(tǒng)可從實(shí)體機(jī)器人硬件或者仿真后臺(tái)程序中獲取的參數(shù)項(xiàng),均可在控制面板動(dòng)態(tài)定義.

        與此同時(shí),在本次實(shí)驗(yàn)中,ROCOS 系統(tǒng)由于主要針對(duì)多機(jī)調(diào)度,所以從圖20中可以看出,針對(duì)每一臺(tái)機(jī)器人都可以獲取其獨(dú)立的參數(shù).為多機(jī)系統(tǒng)的設(shè)計(jì)與控制提供了極大方便.

        圖20 ROCOS 交互界面

        通過(guò)以上對(duì)比,可見(jiàn)ROCOS 在交互方面也獲得了較大程度的提升.與ROS 相比,在強(qiáng)針對(duì)性領(lǐng)域,顯示出足夠優(yōu)勢(shì).

        4 小結(jié)與展望

        本文對(duì)基于Linux內(nèi)核(Ubuntu)下的ROS 操作系統(tǒng)和ROCOS 操作系統(tǒng)分別進(jìn)行了對(duì)比式的介紹和說(shuō)明,并對(duì)二者具體的系統(tǒng)架構(gòu)進(jìn)行了相對(duì)詳盡的描述,最后以對(duì)比實(shí)驗(yàn)的方式論證了ROCOS的系統(tǒng)特性與系統(tǒng)優(yōu)勢(shì).雖然目前ROS的適用范圍仍在不斷擴(kuò)大,但像ROCOS 這樣從ROS中發(fā)展而來(lái)的強(qiáng)針對(duì)性操作系統(tǒng)才剛剛起步.它在保留ROS 原有的點(diǎn)對(duì)點(diǎn)設(shè)計(jì)、多語(yǔ)言支持、架構(gòu)精簡(jiǎn)、組件化工具包豐富以及免費(fèi)且開(kāi)源等特點(diǎn)的基礎(chǔ)上,更強(qiáng)調(diào)對(duì)某一特定場(chǎng)景的支持(如本文提及的ROCOS 就是對(duì)多機(jī)調(diào)度場(chǎng)景的支持),顯然它會(huì)比ROS 更專一,功能更穩(wěn)定,與特定場(chǎng)景的適配性更好.

        截止目前,由于ROCOS 需要的成本投入遠(yuǎn)低于ROS,用戶不需要學(xué)習(xí)ROS中大量復(fù)雜而多元的概念,僅需要參照現(xiàn)有ROCOS 實(shí)現(xiàn)模式,去實(shí)現(xiàn)自己方向的ROCOS 系統(tǒng),所以其成本更低.基于ROCOS的顯著優(yōu)勢(shì),隨著近年來(lái)人工智能等技術(shù)的不斷推向深入,像ROCOS 這樣的操作系統(tǒng)在未來(lái)可能會(huì)更有市場(chǎng).雖然目前看來(lái),它還有很長(zhǎng)的路要走.

        猜你喜歡
        文件夾開(kāi)源架構(gòu)
        磁力文件夾
        基于FPGA的RNN硬件加速架構(gòu)
        功能架構(gòu)在電子電氣架構(gòu)開(kāi)發(fā)中的應(yīng)用和實(shí)踐
        汽車工程(2021年12期)2021-03-08 02:34:30
        五毛錢能買多少頭牛
        調(diào)動(dòng)右鍵 解決文件夾管理三大難題
        LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
        大家說(shuō):開(kāi)源、人工智能及創(chuàng)新
        開(kāi)源中國(guó)開(kāi)源世界高峰論壇圓桌會(huì)議縱論開(kāi)源與互聯(lián)網(wǎng)+創(chuàng)新2.0
        開(kāi)源計(jì)算機(jī)輔助翻譯工具研究
        TC一鍵直達(dá)常用文件夾
        電腦迷(2015年1期)2015-04-29 21:24:13
        黑人巨大精品欧美一区二区 | 日韩Va亚洲va欧美Ⅴa久久| 国产在线视频一区二区三区| 色综合久久中文字幕综合网| 性色av浪潮av色欲av| 午夜成人理论无码电影在线播放 | 国产超碰人人模人人爽人人喊| 91精品国产免费久久久久久青草| 亚洲成生人免费av毛片| 伊人久久这里只有精品| 99亚洲男女激情在线观看| 久久久久久久久久久熟女AV| 风韵丰满妇啪啪区老老熟女杏吧| 国产精品后入内射日本在线观看| 亚洲专区一区二区在线观看 | 91青草久久久久久清纯| 永久免费看黄网站性色| 国产亚洲精品在线播放| 国产成人综合久久大片| 久久理论片午夜琪琪电影网| 亚洲精品国产第一区二区尤物 | av在线男人的免费天堂| 国产精品人成在线观看免费| 亚洲乱码中文字幕综合| 午夜dy888国产精品影院| 射死你天天日| 免费一级欧美大片久久网| 精品久久一品二品三品| 精品无码无人网站免费视频| 国产精品二区在线观看| 西西少妇一区二区三区精品| 精品人妖一区二区三区四区 | 亚洲综合在不卡在线国产另类| 国产精品无码一区二区三级| 区久久aaa片69亚洲| 日本精品久久性大片日本| 国产区女主播一区在线| 毛片大全真人在线| 爱情岛论坛亚洲品质自拍hd| 亚洲av第一页国产精品| 精品人妻中文av一区二区三区|