• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于ROS通信的運行管理系統(tǒng)的設(shè)計與實現(xiàn)

    2021-12-14 11:07:46常賽賽楊洋樊玉琦
    關(guān)鍵詞:明細表命令管理系統(tǒng)

    ◆常賽賽 楊洋 樊玉琦

    基于ROS通信的運行管理系統(tǒng)的設(shè)計與實現(xiàn)

    ◆常賽賽1楊洋2樊玉琦1

    (1.合肥工業(yè)大學 計算機與信息學院 安徽 230601;2.中國科學院 等離子體物理研究所 安徽 230088)

    針對十三五遙操作(RH)控制系統(tǒng)的設(shè)計,文章基于開源機器人操作系統(tǒng)ROS設(shè)計了一個低成本、易移植的針對多機器人運作的運行管理系統(tǒng)。本系統(tǒng)采用了模塊化設(shè)計方法,將系統(tǒng)分為操作計劃、操作執(zhí)行、數(shù)據(jù)管理三個部分。系統(tǒng)實現(xiàn)了對任務的創(chuàng)建、執(zhí)行、存儲等功能,并將任務命令通過ROS的Actionlib機制發(fā)送給其他系統(tǒng),再實時接收命令的反饋消息。系統(tǒng)通過UR機械臂和DH-3手爪測試可以穩(wěn)定運行,滿足系統(tǒng)的基本需求。

    ROS通信;Qt;MySQL;運行管理

    十三五遙操作(RH)控制系統(tǒng)的設(shè)計是中國聚變工程實驗堆(CFETR)中的一個關(guān)鍵問題,它采用了模塊化設(shè)計方法,這樣有利于保證RH控制系統(tǒng)的可維護性和易拓展性[1]。RH控制系統(tǒng)分上層和底層控制系統(tǒng)。上層控制系統(tǒng)包含所有與RH用戶接觸的操作接口和與RH控制器之間通訊的中間件。而底層控制系統(tǒng)包含所有RH設(shè)備、工具、傳感器的控制器。運行管理系統(tǒng)(OMS)位于上層控制系統(tǒng)中,屬于“任務監(jiān)控”組件,是上層控制系統(tǒng)中用于人機交互的關(guān)鍵模塊。OMS是一個圖形用戶界面軟件,用于開發(fā)和執(zhí)行控制遠程維護任務序列。

    文章的主要研究工作是采用Qt、MySQL、C++語言開發(fā)了一套運行在Ubuntu系統(tǒng)上基于 ROS平臺的運行管理系統(tǒng)。通過一系列的實驗,證明了該方案的可行性。

    1 開發(fā)技術(shù)概述

    (1)ROS

    ROS 產(chǎn)生于斯坦福大學與 Willow Garage 公司的一個機器人項目,是一個針對機器人開發(fā)的系統(tǒng),可以依托在其他操作系統(tǒng)下運作。ROS的主要目標是為機器人研發(fā)提供代碼復用的支持,像 Linux 操作系統(tǒng)一樣提供常用的軟件包與算法包方便用戶的安裝與調(diào)用[2-3]。它有許多進程的概念,并且提供了進程通信的功能。ROS的節(jié)點是可執(zhí)行程序的最小單位,節(jié)點和節(jié)點之間可以相互通信[4-5]。具體的通信方式有Topic(話題)、Service(服務)、Parameter Service(參數(shù)服務器)、Actionlib (動作服務器)[6-8]。一個節(jié)點可以同時使用多種通信方式收發(fā)消息。本系統(tǒng)的ROS版本是ROS melodic,ROS的節(jié)點間通信都必須通過ROS Master才能找到要通信的對象。系統(tǒng)使用到了Topic和Actionlib兩種通信機制。

    (2)Qt

    Qt是一個跨平臺的C++開發(fā)環(huán)境,也是面向?qū)ο蟮能浖_發(fā)環(huán)境,方便擴展,易于組件編程。它提出了一種信號與槽機制,可以替代之前的回調(diào)機制,并具有更加靈活、方便等特點。Qt使用的不是標準的C++語言,而是進行了一定程度“擴展”的C++語言,比如信號與槽的關(guān)鍵詞signals和slot等[9]。

    (3)MySQL

    MySQL是一種開源的關(guān)系數(shù)據(jù)庫系統(tǒng),使用結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)庫管理,它具有功能強、使用簡便、管理方便、運行速度快、安全可靠性強等優(yōu)點,用戶可利用許多語言編寫訪問MySQL數(shù)據(jù)庫的程序[10]。

    2 系統(tǒng)設(shè)計

    2.1 系統(tǒng)體系結(jié)構(gòu)設(shè)計

    系統(tǒng)設(shè)計使用Qt做界面開發(fā),MySQL作為底層數(shù)據(jù)庫,通過ROS的多種通信機制實現(xiàn)對命令的管理以及命令狀態(tài)的實時監(jiān)控。

    系統(tǒng)采用ROS的Topic和Actionlib通信機制。其中接收任務執(zhí)行時發(fā)生的事件和產(chǎn)生的數(shù)據(jù)不需要進行消息反饋,但應保證接收的實時性,故采用ROS的Topic通信機制來實現(xiàn)這一功能。ROS的在發(fā)送命令時系統(tǒng)要求能夠檢測命令的執(zhí)行狀態(tài)、執(zhí)行時期的反饋信息甚至可能會由于某些原因取消命令。而ROS中Service是一個請求和應答的交互模式,客戶端和服務端在一次命令發(fā)送后互相得到的信息有限,無法滿足系統(tǒng)發(fā)送命令的需求。Actionlib通信機制中客戶端和服務端有多個交互信息能夠很好滿足這一點。

    系統(tǒng)使用Topic來實時接收UR機器人關(guān)節(jié)信息,用Actionlib來發(fā)送命令。Actionlib 發(fā)送的命令需要經(jīng)過其他系統(tǒng)的處理以及機器人對命令的執(zhí)行,有時需要等待較長時間才能收到結(jié)果反饋。為提高CPU利用率,防止Actionlib占用大量CPU處理時間,在系統(tǒng)中引入多線程概念。利用Qt的QThread將Actionlib通信單獨放在一個線程中,保證系統(tǒng)在使用Actionlib來發(fā)送命令接收命令狀態(tài)的同時不會影響到Topic接收大量UR機械臂關(guān)節(jié)信息以及主線程的運行。

    為滿足設(shè)計需求,系統(tǒng)需要使用兩種數(shù)據(jù),一個是任務的基本數(shù)據(jù),包括任務使用到的設(shè)備信息、設(shè)備執(zhí)行動作的介紹以及向設(shè)備傳輸?shù)臄?shù)據(jù)等。另一個是任務數(shù)據(jù),包括任務表以及任務步驟明細表。每一個任務創(chuàng)建時都會有它專屬的任務表和步驟明細表,里面包括了任務的整個流程以及每一個步驟的命令數(shù)據(jù)。系統(tǒng)的體系機構(gòu)圖如圖1所示。

    圖1 運行管理系統(tǒng)體系結(jié)構(gòu)圖

    2.2 系統(tǒng)功能結(jié)構(gòu)設(shè)計

    根據(jù)系統(tǒng)功能需求和性能需求的分析,將運行管理系統(tǒng)分為任務創(chuàng)建、任務執(zhí)行、數(shù)據(jù)管理三個功能模塊,各個模塊之間功能相對獨立,數(shù)據(jù)可相互調(diào)用。系統(tǒng)的功能結(jié)構(gòu)圖如圖2所示。

    任務創(chuàng)建模塊負責制定任務和操作步驟,這些任務和操作步驟需要明確地描述任務的結(jié)構(gòu)和執(zhí)行順序。任務執(zhí)行模塊向命令控制系統(tǒng)或虛擬現(xiàn)實場景發(fā)送命令,去執(zhí)行所創(chuàng)建的任務。數(shù)據(jù)管理模塊負責存儲任務預先制定的數(shù)據(jù),并保存任務執(zhí)行時的一些數(shù)據(jù)。每個模塊中都包含數(shù)據(jù)顯示區(qū)以及模塊中的功能按鈕。

    3 系統(tǒng)功能實現(xiàn)

    3.1 任務創(chuàng)建

    任務創(chuàng)建模塊中可以根據(jù)實際情況的需求創(chuàng)建多個不同的任務。如圖3所示,點擊創(chuàng)建任務按鈕可看到已有的任務列表如圖5所示,并創(chuàng)建任務。由圖4中下拉框可以選擇查看并修改已創(chuàng)建的任務。

    圖2 運行管理系統(tǒng)功能結(jié)構(gòu)圖

    圖3 任務創(chuàng)建界面

    任務創(chuàng)建成功后會生成任務表和任務步驟明細表。任務表的結(jié)構(gòu)設(shè)計如表1所示。

    表1 任務表設(shè)計

    本系統(tǒng)根據(jù)任務表中任務的上級id和所屬層級來判斷任務的執(zhí)行順序以及任務結(jié)構(gòu)。每一個最小的子任務由步驟明細表中的一個或多個步驟組成,每一個步驟在執(zhí)行時都將作為一道命令發(fā)布。每個任務都需要劃分出多個層次,甚至要切換不同的場景執(zhí)行任務。因此本系統(tǒng)采用樹形結(jié)構(gòu)來展示各級任務。在任務表中task_id表示任務的序列號,task_name表示任務的名稱,parent_id表示任務的上級id,task_layer表示任務的所屬層級。首先判斷一個節(jié)點是否為根節(jié)點,再采用遞歸的方法逐級尋找其子節(jié)點直到它的葉子節(jié)點,最終根據(jù)任務名稱來樹形顯示整個任務。在創(chuàng)建任務時根據(jù)任務的需求設(shè)置好每一個任務的上級id以及所屬層級。在任務執(zhí)行模塊中以樹形結(jié)構(gòu)展示任務,使得任務結(jié)構(gòu)層次分明、執(zhí)行順序等更加明朗。樹形結(jié)構(gòu)的遞歸設(shè)計如圖4所示。

    圖4 遞歸設(shè)計圖

    步驟明細表的結(jié)構(gòu)設(shè)計如表2所示,任務表和步驟明細表由兩個表中的task_id連接。在步驟明細表中可以設(shè)置任務具體執(zhí)行步驟,以便在任務執(zhí)行時將數(shù)據(jù)發(fā)送出去。

    表2 步驟明細表設(shè)計

    在步驟明細表中,系統(tǒng)任務基本數(shù)據(jù)應從數(shù)據(jù)庫導入,同時又需要規(guī)范要發(fā)送的數(shù)據(jù),以防止用戶在制定任務命令時數(shù)據(jù)內(nèi)容和格式不符合系統(tǒng)要求。系統(tǒng)允許操作人員在創(chuàng)建任務步驟明細表時用下拉框來選擇每一個子任務的步驟明細內(nèi)容。系統(tǒng)中使用Qt的QTableview顯示數(shù)據(jù)庫中的數(shù)據(jù),QTableview可以顯示數(shù)據(jù)庫中數(shù)據(jù)表的數(shù)據(jù),但是QTableview單元格無法提供下拉框的功能。故使用Qt中QItemDelegate做代理,根據(jù)需求設(shè)置不同列的單元格以下拉框的形式顯示對應的內(nèi)容。比如在步驟明細表中主體確定,那主體后面的action_name以及action_data都只能選擇與主體對應的數(shù)據(jù)。

    3.2 任務執(zhí)行

    任務執(zhí)行模塊是運行管理系統(tǒng)中的核心模塊。如圖5所示,它負責命令的發(fā)送、命令的狀態(tài)顯示、接收任務執(zhí)行過程中的事件以及重要數(shù)據(jù)的保存。

    圖5 任務執(zhí)行界面

    系統(tǒng)要與運行管理系統(tǒng)同等級別的兩個系統(tǒng)建立連接,這兩個系統(tǒng)分別是虛擬現(xiàn)實場景(VR,Virtual Reality)和命令控制系統(tǒng)(C&C,Command & control)。命令控制系統(tǒng)負責解析本系統(tǒng)發(fā)送的命令后發(fā)送給真實機器人,虛擬現(xiàn)實場景需要訂閱命令控制系統(tǒng)或真實機械臂的數(shù)據(jù)來模擬現(xiàn)實場景。

    運行管理系統(tǒng)(OMS,Operation Management System)、C&C和VR的ROS通信結(jié)構(gòu)圖如圖6所示。OMS的ROS節(jié)點名稱是/oms,C&C的ROS節(jié)點名稱為/cc,VR的ROS節(jié)點名稱為/ros_vrep。其中/vr/action_topics是OMS和VR之間發(fā)布的Actionlib消息,/cc/action_topics是OMS和C&C之間發(fā)布的Actionlib消息。/send_event和/send_data是C&C向OMS發(fā)布的Topic名稱,分別傳輸執(zhí)行時的事件和UR機械臂的關(guān)節(jié)數(shù)據(jù)。/ur_coppeliasim_command/URScript則是C&C向VR發(fā)送的真實機器人的數(shù)據(jù)。

    圖6 ROS通信結(jié)構(gòu)圖

    任務執(zhí)行時,首先在下拉框中選擇要加載的任務,點擊加載任務,任務會以樹形結(jié)構(gòu)顯示在左邊的窗口中。雙擊某一個子任務會在中間的窗口中顯示其子任務的所有步驟明細。點擊下一條按鈕則會依次顯示子任務的每一個步驟,即要發(fā)送的命令信息。點擊發(fā)送按鈕即可通過ROS的Actionlib通信機制發(fā)送。若接收信息的服務端沒有與本系統(tǒng)建立連接則會彈出相應的提示,并終止發(fā)送數(shù)據(jù)。VR需要預先加載場景命令來打開預先創(chuàng)建的現(xiàn)實場景,而C&C也要預先加載場景命令來準備場景中可能會用到的機械臂等機器的接口和數(shù)據(jù)格式。故發(fā)送場景按鈕點擊后會同時發(fā)送給這兩個系統(tǒng),而發(fā)送命令按鈕點擊后只將命令發(fā)送給命令控制系統(tǒng)去解析并控制機器人執(zhí)行命令。OMS與其他系統(tǒng)的接口如表3所示。

    表3 系統(tǒng)接口表

    發(fā)送命令的接口解釋如下:

    接口說明:用于客戶端向服務端發(fā)送服務命令

    接口類型:action

    服務名稱:/sys_name ,如“cc”,“oms”

    接口參數(shù):

    head:

    rosTime 當前時間

    source 源系統(tǒng),即發(fā)送命令系統(tǒng)

    target 目標系統(tǒng),即接收命令的系統(tǒng)

    subject 動作主體,如gripper,ur,cc

    action 動作,如loadModel,moveTo ,setMode

    actionData 動作參數(shù)

    qualifierData 輔助參數(shù)

    ---

    result 命令是否完成

    ---

    feedback 0執(zhí)行中 1.暫停 …

    C&C和VR都使用QLineText作為反饋與結(jié)果的顯示框。反饋框中,‘1’表示命令已發(fā)送成功,‘0’表示已執(zhí)行。結(jié)果框中,‘1’表示命令執(zhí)行錯誤,‘0’表示命令執(zhí)行成功。訂閱事件框來顯示一些任務執(zhí)行中需要人為判斷的事件。訂閱數(shù)據(jù)框中顯示UR機械臂的6個關(guān)節(jié)的實時關(guān)節(jié)數(shù)據(jù),點擊記錄按鈕便可以記錄UR機械臂示教時或者執(zhí)行時的關(guān)節(jié)數(shù)據(jù)。這兩個窗口中的數(shù)據(jù)訂閱均來自命令控制系統(tǒng)。

    3.3 數(shù)據(jù)管理

    數(shù)據(jù)管理模塊中使用了MySQL數(shù)據(jù)庫來進行存儲數(shù)據(jù)信息。包含的是系統(tǒng)中的基本表,包括主體動作表、動作基本表、關(guān)節(jié)位置表、手爪位置表、任務名稱表等。此模塊中主要是對基本表做增、刪、改、查操作,以及存儲示教或?qū)嶋H運行時產(chǎn)生的數(shù)據(jù)。各個基本表在編輯數(shù)據(jù)時相互獨立,但在任務創(chuàng)建時可根據(jù)數(shù)據(jù)表的內(nèi)容互相調(diào)用。在添加數(shù)據(jù)時,如果要在表的中間插入數(shù)據(jù),就點擊要插入行的下一行,再點擊添加命令會出現(xiàn)目標位置的空白行,方便操作人員添加數(shù)據(jù)。數(shù)據(jù)管理模塊的界面如圖7所示。

    圖7 數(shù)據(jù)管理界面

    4 結(jié)語

    本文提出一種基于ROS通信的運行管理系統(tǒng),可在Ubuntu18.04系統(tǒng)上安裝ROS melodic和MySQL后運行。任務數(shù)據(jù)可由本地導入或者建立自己的數(shù)據(jù)庫去使用。系統(tǒng)滿足了十三五RH控制系統(tǒng)中運行管理系統(tǒng)模塊的基本功能需求,包括任務的創(chuàng)建、多方式通信、數(shù)據(jù)存儲等,為RH組提供了一個便利、穩(wěn)定的運行管理系統(tǒng)。實際使用中運行管理系統(tǒng)將需要更多的功能以及不同操作人員對權(quán)限的需求,接下來考慮增加用戶權(quán)限管理、任務發(fā)布以及任務分析等模塊。本系統(tǒng)的創(chuàng)建也提高了使用多機器人操作的工作效率,具有一定的應用價值。

    [1]魏江華.一種基于上垂直窗口的包層RH遙操作系統(tǒng)的設(shè)計研究[D].中國科學院大學,2015.

    [2]張鵬,高放,雙豐.基于ROS的全向移動機器人控制系統(tǒng)的設(shè)計與實現(xiàn)[J].組合機床與自動化加工技術(shù),2018(07):89-92+96.

    [3]王輝. 基于ROS的機器人路徑導航系統(tǒng)的設(shè)計與實現(xiàn)[D].中國科學院大學(中國科學院沈陽計算技術(shù)研究所),2019.

    [4]賈鵬飛,王容川,徐林森,陳丹惠,李開霞.基于ROS和CANopen協(xié)議的控制器實時通信系統(tǒng)構(gòu)建[J].中國科學技術(shù)大學學報,2018,48(09):703-710.

    [5]謝萌. 基于ROS的車輛遠程控制和定位導航仿真[D].中國科學技術(shù)大學,2019.

    [6]宋庭新,李軻.基于OPC UA的智能制造車間數(shù)據(jù)通信技術(shù)及應用[J].中國機械工程,2020,31(14):1693-1699.

    [7]丁承君,馮玉伯,高雪,等.基于ROS的臨場可重構(gòu)排爆機器人系統(tǒng)架構(gòu)研究[J].現(xiàn)代制造工程,2019(01):64-68.

    [8]Willow Garage. Robot Operating System [EB/OL] . http: / /www.ros.org /,2015-5.

    [9]徐睿,韋璐.基于QT的數(shù)字邏輯虛擬實驗平臺設(shè)計[J].軟件,2016,37(01):101-104.

    [10]蘭旭輝,熊家軍,鄧剛.基于MySQL的應用程序設(shè)計[J].計算機工程與設(shè)計,2004(03):442-443+468.

    [11]李慧霞,高梓豪. 室內(nèi)智能移動機器人規(guī)則物體識別與抓取[J].軟件,2016,37(02):89-92.

    中國聚變堆主機關(guān)鍵系統(tǒng)綜合研究設(shè)施(2018-000052-73-01-001228)

    猜你喜歡
    明細表命令管理系統(tǒng)
    基于James的院內(nèi)郵件管理系統(tǒng)的實現(xiàn)
    只聽主人的命令
    2019年中國出口石材明細表(三)
    石材(2020年8期)2020-10-28 07:53:18
    2019年中國出口石材明細表(二)
    石材(2020年7期)2020-08-24 08:28:08
    2019年中國出口量值石材明細表(一)
    石材(2020年6期)2020-08-24 08:27:08
    基于LED聯(lián)動顯示的違停管理系統(tǒng)
    移防命令下達后
    海盾壓載水管理系統(tǒng)
    中國船檢(2017年3期)2017-05-18 11:33:08
    這是人民的命令
    基于RFID的倉儲管理系統(tǒng)實現(xiàn)
    斗六市| 南木林县| 绥棱县| 诸暨市| 鄂伦春自治旗| 桐柏县| 山阳县| 葵青区| 曲靖市| 奉节县| 旌德县| 绥芬河市| 荣成市| 清河县| 张家川| 朝阳县| 阜南县| 蒙阴县| 双辽市| 侯马市| 农安县| 杭锦后旗| 调兵山市| 禄丰县| 祁东县| 连城县| 乡宁县| 银川市| 师宗县| 化德县| 麻栗坡县| 荔浦县| 徐汇区| 南投县| 河池市| 吴江市| 双流县| 山东| 清丰县| 勐海县| 陈巴尔虎旗|