999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

機器人控制軟件框架中實時任務模塊的設計與實現

2013-01-22 05:25:20李曉明孫辰晨
機電工程 2013年2期
關鍵詞:系統設計

李曉明,孫辰晨

(浙江理工大學機械與自動控制學院,浙江杭州310018)

0 引言

現代的機電系統已經朝著智能化、網絡化、分布式的方向發展,其對軟件的開發也提出了更高的要求。以機器人技術[1-4]為例,單個機器人本身就是一個復雜的機電系統,需要通過自身的軟件設計來實現各種不同功能,適應不同的環境。課題組研究了適用于機器人此類復雜機電系統的軟件開發方法和開發模式,提出了一種輕量級的基于組件的軟件框架[5-8],可簡化移動機器人應用程序的結構,使設計工作變得省時。該架構基于組件的軟件工程,保證最大限度的模塊化和可重用性。

該框架最大的不足是系統的實時性問題。以機器人控制為例,在現有軟件平臺上,研究者盡管可以設計出各個功能模塊,通過模塊之間的相互協作和數據交換實現諸如導航、避障等控制任務,但由于其采用多線程實現機制,具體功能模塊在實際運行時無法確定自己的運行時刻,這對于一些有實時性要求的應用場合來說是不符合其要求的。實時性要求系統必須對外來事件在限定時間內做出反應。例如,足球機器人的策略系統軟件,其功能模塊運行必須在兩次圖像采樣之間完成,且功能模塊的運行周期要求必須穩定和精確,否則諸如預測模塊、運動控制、規劃等模塊就會失效。大部分機器人控制系統對實時性要求非常嚴格,各控制任務必須在一定的時間內完成,否則各任務之間會產生資源和時間上的競爭,造成控制程序產生錯誤指令、死鎖甚至崩潰,對機器人的性能造成嚴重影響。所以機器人實時控制部分必須精確安排各任務的執行順序和執行時間,避免上述情況發生。

本研究將在上述軟件架構的基礎上加入實時任務模塊的設計,完善系統,使其可以實現機器人控制的實時性。

1 模塊化機器人軟件框架

軟件整個框架的結構包括:框架的模型、模塊的接口定義、模塊的加載和配置、模塊之間的通訊[9],即Platform平臺、Module模塊和Wire通訊連線等。

Platform 類負責模塊的加載、運行、停止以及銷毀,分析模塊的配置并建立模塊之間的通訊。

在軟件框架內部,以模型Module的概念來表示一個功能模塊。一個軟件系統由許多個Module 組成,Module之間保證最大程度的獨立性,每個Module可以獨立運行于Platform 上(以線程的方式),并通過端口與外部進行通訊。研究者通過合理劃分Module 的功能,以及不同模塊之間通過通訊管道進行組合,可以實現不同的系統應用,這也是組件編程思想的主要部分。這種模型驅動編程機制源于Auslander[10-11]提出的基于任務和狀態的機電系統軟件模型以及多智能體的基本模型。

平臺中組件之間的通訊采用了基于管道技術的通訊模型。管道資源由平臺分配,組件在平臺中注冊名字唯一的通訊管道,就可以向管道中寫入數據或者接收該管道中的數據。開發者采用這種方式可以方便地實現多個組件的協作。

該軟件系統框架的優點是,開發者可以專注于組件的開發,并可復用已經開發的組件,通過XML 配置文件對組件進行組合,實現自己所需要的具體控制應用。但由于每個組件是以單獨線程的方式在運行,對于機器人控制系統而言,在任務這一層次上的管理較為困難;此外,每個模塊功能的執行順序依賴于線程的同步,整體執行效率比較低,而整個系統的控制周期是難以確定的,因此難以應用于對實時性有一定要求的機器人應用中。

2 軟件框架中實時任務模塊的設計

2.1 實時性需求

在復雜機電系統或者機器人等應用中通常會涉及到實時控制的問題,從簡單的溫度控制的應用到復雜的機器人視覺伺服應用等。由于存在著實時控制,要求研究者在開發這些軟件的時候必須考慮實時性問題。

對于任何一個計算機控制系統而言,其控制系統設計的一個重要前提都是采樣周期T。采樣周期決定了控制系統的許多性能,甚至穩定性。同理,在實際控制中精確穩定的采樣(控制)周期對控制系統的實際控制效果也同樣非常重要。首先,如果在實際軟件開發中不考慮控制周期的穩定性問題,那么在實際控制中由于采樣周期的變化,原先設計的控制算法可能不會達到預想的控制效果,甚至失效;其次,即使考慮了控制周期的穩定性,但如果實際執行時控制周期與設計時的采樣周期不一致,同樣會導致控制系統效果變差或者失控。

以常用的PID控制器為例:

當T的值發生變化時,控制器的輸出u也會發生變化,并最終影響系統的穩定性。因此,對于面向實時控制的機電系統軟件框架而言,實時性需求應當包括兩點:①能夠提供準確的采樣周期;②能夠提供穩定的采樣周期。

2.2 模塊化實時軟件框架設計

加入實時任務模塊的設計后,軟件框架的總體結構圖如圖1所示。

該設計將Platform升級為具有實時功能的運行平臺,將組件升級為包含實時任務接口的組件模型,同時保留原組件模型為非實時組件。Platform平臺將主要包括實時時鐘設計、實時任務調度設計、組件管理模型設計、通訊模型設計等關鍵內容。其中,組件管理模型設計、通訊模型設計和原模型基本相同,下面著重介紹實時時鐘和實時任務調度的設計。

(1)實時時鐘模塊。為了解決控制中的實時性問題,本研究在平臺模型中設置了實時時鐘模塊。實時時鐘模塊的實現在嵌入式系統中比較容易,但是在基于PC 的系統上很難保證其絕對的實時性,尤其是運行于諸如Windows等非實時的操作系統上時。一般情況下,在PC上運行的控制系統屬于監督控制范疇,即屬于軟實時系統,其實時性要求并非十分苛刻,因此可以采用宿主操作系統提供的時鐘信號,例如在Win?dows平臺下的多媒體時鐘中斷,可以提供精度為1 ms的時鐘周期,可以滿足大多數基于PC 的控制需求。例如在基于PC 的運動控制系統中,當運動出現異常時,運動控制卡能自動進入保護狀態,因此對于該類控制問題,精度為1 ms的采樣周期完全符合要求。事實上,對于此類應用,精度更差的普通定時器往往也能滿足要求[12]。但是對于工業上的一些實時性要求相對高的實時任務,Windows 系統的多媒體擴展庫MMSYSTEM.LIB 提供的多媒體定時函數已經不能滿足系統需要,例如點膠控制系統[13]。

(2)實時任務調度模塊。實時時鐘模塊產生精度為1 ms且指定時間間隔的時鐘信號,實時任務調度模塊負責當檢測到時鐘信號時通過實時組件的接口調用組件中的實時任務程序進行執行。在設計時,本研究要求這些實時任務程序中的代碼應盡量做到高效,執行時間短;同時嚴格禁止在實時任務模塊中執行非實時的工作。任務管理模型中采用了動態的數據結構來維護平臺中注冊的所有實時組件,并可以通過設計算法動態地更新不同組件實時任務的優先級和調用順序,將重要的模塊優先執行。實時任務調度模塊嚴格監控每個任務的執行時間,會對執行時間過長的任務降低其優先級,如果時間片即將用完,將會停止執行后續任務,保證下一時鐘信號來臨的時候可以進行下一控制周期高優先級的任務。實時任務調度示意圖如圖2所示。

上述實時任務的實現方法與點膠控制系統中的方法大致相同,都是利用定時器產生一定周期的定時中斷,在中斷中執行實時任務。不同的是在點膠控制系統中,實時任務執行完畢后可自行結束中斷;但本研究中實時時鐘控制周期一旦確定,即使實時任務結束后仍有空閑的時間片,也不能結束當前中斷。

圖1 具有實時功能的軟件框架模型

圖2 實時任務調度

3 實時框架的實現

3.1 實時時鐘模塊的實現

本研究所設計的面向機電系統的軟件框架是基于Java 平臺開發的,Java 平臺本身所提供的定時器顯然無法滿足前述實時性要求,因此必須采用操作系統所提供的精度更高的定時器中斷。為此,本研究在Windows平臺上設計實現了精度為1 ms的定時器,并通過JNI 技術將其與Java 平臺結合起來,從而實現了在框架內的實時時鐘模型。

具體模型如圖3所示。

圖3 Java平臺的實時時鐘實現

在該系統模型中,本研究采用了Java/C 混合編程技術,其中核心是JNI。首先,Java 的實時時鐘模塊在初始化時通過JNI調用響應的基于C的多媒體時鐘初始化函數進行初始化工作,最重要的是設置時鐘周期,以及設置回調函數入口地址等;其次Java 的實時時鐘模塊啟動時,也要調用相應C函數啟動多媒體定時器計數;啟動完畢后,多媒體定時器會按照預置的時間間隔定期調用C設置的回調函數,而回調函數則通過JNI 與Java 虛擬機通訊,找到實時時鐘模塊并調用其時鐘觸發方法。此時,所有在Java平臺中注冊監聽實時時鐘消息的所有對象都會得到通知。

3.2 實時時鐘開發過程簡述

本研究所采用的工具是Sun公司創建的Java De?velopment Kit(JDK)版本1.6.0_22,以及微軟公司的Vi?sual C++6 開發環境。本研究設計中的Java 語言與C語言相互調用,這就要用到JNI。JNI是Java Native In?terface 的縮寫,JNI 是一種機制,有了它就可以在Java程序中調用其他本地代碼,或者使本地代碼調用Java層的代碼。

在Java程序中,首先要編寫帶有native方法的類,要在該類中聲明所調用的庫名稱System.LoadLibrary(String libname);在該類中只需要聲明將要調用的本機方法,關鍵字為native,不需要具體實現,實現放在由C編寫的DLL文件中實現。

本研究編寫好帶有本機方法的TimerManager 類后,進行編譯,生成對應的class 文件。再用javah scc.TimerManager 語句編譯,就會生成對應的scc_Timer?Manager.h頭文件。

之后就可運用該頭文件中的函數原型:JNIEXPORT void JNICALL Java_scc_TimerManager_timer(JNIEnv*env,jobject obj)來編寫所需要的DLL文件,來產生固定周期的時鐘信號。

雖然Win 平臺下可視化開發工具如VC、Delphi、C++Builder 等都有專用的定時器控件Timer,而且使用很方便,可以實現一定的定時功能,但最小計時精度僅為55 ms,且定時器消息在多任務操作系統中的優先級很低,不能得到及時響應,往往不能滿足實時控制環境下的應用。不過Microsoft公司在Win32 API函數庫中已經為用戶提供了一組用于高精度計時的底層函數,如果用戶使用得當,計時精度可到1 ms。這個計時精度對于一般的實時系統控制完全可以滿足要求。具體應用時,研究者可以通過調用timeSetEvent()函數,將需要周期性執行的任務定義在LpTimeProc回調函數中,從而完成所需處理的事件。需要注意的是,任務處理的時間不能大于所設置的時鐘周期。定時器使用完畢后,應及時調用timeKillEvent()將之釋放。

前面分析過Java層和JNI層(即C語言模塊)應該可以互相交互,通過Java 層中的native 函數可以進入到JNI 層,而JNI 層的代碼則通過JNIEnv 操作Java 層中函數。JNIEnv是一個與線程相關的代表JNI環境的結構體。JNIEnv實際上提供了一些JNI系統函數。通過這些系統函數可以調用java 層中的函數或者操作jobect。GetObjectClass()方法可以通過對象jobect 直接得到其所對應的類的定義。GetMethodID()方法可以得到所需要用到函數的id。而CallXXXMethod()函數則實現了java類中相應方法的調用。這樣就完成了JNI層向java層的調用。要注意的是這里JNI層中調用的方法實際上是java中對象的成員函數,如果要調用static 函數可以使用CallStaticXXXMethod()。這種機制實現了native層回調Java代碼完成相應操作。

該系統實現中,在回調函數void CALLBACK TimeProc()中調用CallXXXMethod(JNIEnv *env,jclass clazz)方法,從而調用java 程序中的TimerMan?ager 類中的方法來觸發一次時鐘事件,產生周期為100 ms(可配置)的時鐘。

3.3 實時任務調度模塊的實現

實時時鐘模塊解決了實時性問題,但是大型控制應用往往都是多任務的,為實現多任務的實時運行,就需要利用實時任務調度模塊。

本研究對實時任務的管理通過一種類似時間片的方式進行。首先,實時任務模塊在初始化時需要在實時任務調度模塊中注冊實時任務信息,主要包括該實時任務的執行周期和任務序號;任務調度模塊根據這些信息確定時鐘觸發的頻率以及任務模塊的調用順序。在任務執行時,實時任務調度模塊會創建優先級較高的線程來單獨運行實時任務;而且其他非實時模塊的任務仍然在其他的線程中運行,由于Java線程管理采用的是搶占式,可以保證實時模塊的優先運行。

對于超時運行時間片的實時模塊,目前的策略是監測并給出警告。實時任務模塊的設計者應當保證實時模塊的任務能夠在最小的時間片長度內運行完畢。對于因為運算量巨大且無法優化從而需要較多計算時間的實時任務,只能通過增大時間片的方法解決,此時整個系統的控制周期也會隨之增大。

控制周期、實時時鐘周期和時間片之間的關系如圖4所示。

從圖4 中可以看出,時間片是任務執行的最小單位,一個任務只能占用一個時間片,時間片是由任務調度模塊在一個實時時鐘周期內分配給各個實時任務模塊的,其時長是可變的,取決于任務的數量和實時時鐘周期的大?。粚崟r時鐘周期是確定的不可改變的,控制周期則由多個時鐘周期組成,對于大部分實時控制系統而言,控制周期往往只有一個,因此可以將時鐘周期設置為控制周期同樣大??;如有多個實時控制對象,應將時鐘周期設置為多個控制周期的最大公約數。

圖4 控制周期,時鐘周期和時間片之間的關系

4 系統測試

為了測試系統的實時性,本研究只定義了一個實時模塊和一個非實時模塊來測試系統。該實時模塊只有一個實時任務,其功能就是打印出運行時的系統時間,通過分析其間隔的時間精度與設計時的控制周期的誤差來驗證上述系統的實時性,加入非實時任務的目的是驗證實時任務的實時性是否受非實時任務的影響。

測試結果如圖5所示。從圖5中可以看到,第1次與第2次調用時鐘時系統時間間隔為98 ms,其余的時間間隔均為100 ms,與之前設定的時鐘周期一致。可得出結論:前面設計的實時任務模塊每隔100 ms就將模塊中的實時性任務執行一次,可以滿足整個系統的實時性要求。

圖5 測試結果

5 結束語

本研究在原基于組件的機器人控制軟件框架的基礎上,開發了實時任務模塊,將原系統改造為支持實時性軟件開發的軟件框架,基于該框架,可以快速開發具有實時性功能要求的控制軟件,重點解決了在Windows平臺上實時時鐘模塊以及實時任務調度模塊的實現方法。

目前,該軟件框架正用于本課題組RoboCup 小型組足球機器人控制策略軟件的開發中,在后續工作中,筆者將重點對實時任務的調度算法進行研究,重點解決如何能夠發現用戶開發的實時任務中存在的問題,以及如何避免因某一實時模塊的問題引起整個應用程序實時性變差的問題等。

(References):

[1]陳萬米,張 冰,朱 明,等.智能足球機器人系統[M].北京:清華大學出版社,2009.

[2]李 策.基于DSP和FPGA的小型足球機器人控制系統的研究[D].大連:大連理工大學電子與信息工程學院,2006.

[3]徐璟業.F-180 小型足球機器人的無線通信系統設計[J].電子技術應用,2004(5):60-63.

[4]張叢榮.足球機器人運動控制系統的研究與完善[D].沈陽:東北大學信息學院,2006.

[5]LI Xiao-ming,JIN Yu-zhen,HU Xu-dong.An XML-driven component based Software Framework for Mobile Robotic Applications[C]//Proceedings of the 2nd IEEE/ASME Inter?national Conference on Mechatronic and Embedded Systems and Applications,MESA 2006.Beijing:[s.n.],2006.

[6]BRUGALI D,SCANDURRA P.Component-based robotic engineering(part 1)[J].IEEE Robotics and Automation Magazine,2009,16(4):84-96.

[7]BRUGALI D,SCANDURRA P.Component-based robotic engineering(part 2)[J].IEEE Robotics and Automation Magazine,2010,17(1):100-112.

[8]INGHAM M,RAGNO R,WILLIAMS B.A Reactive Mod?el-based Programming Language for Robotic Space Explor?ers[C]//Proceedings of ISAIRAS-01,2001.Montered:[s.n.],2000.

[9]胡海濤.面向對象技術在實時系統中的研究與應用[D].西安:西北工業大學計算機學院,2003.

[10]AUSLANDER D M.What is mechatronics[J].IEEE/ASME Transactions on Mechatronics,1996,1(1):5-9.

[11]AUSLANDER D M,RIDGELY J R,RINGGENBERG J D.Control Software for Mechanical Systems:Object-oriented De?sign in a Real-time World[M].北京:清華大學出版社,2004.

[12]李曉明,肖亮亮,孫琛琛.基于VB的通用運動控制軟件模型設計[J].機電工程,2009,26(12):50-53.

[13]趙翼翔,陳新度,陳 新.全自動芯片粘片機點膠控制系統的設計與實現[J].機械與電子,2006(3):33-35.

猜你喜歡
系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
主站蜘蛛池模板: 一本大道无码高清| 波多野结衣第一页| 伊人91视频| 亚洲视屏在线观看| 青青草a国产免费观看| 亚洲美女久久| 99精品在线视频观看| 日本久久网站| 黄色在线不卡| 91在线无码精品秘九色APP| 国产系列在线| 男女性午夜福利网站| 激情综合网址| 欧美特级AAAAAA视频免费观看| 午夜少妇精品视频小电影| 久操中文在线| 日本精品视频| 亚洲妓女综合网995久久| 波多野结衣无码中文字幕在线观看一区二区 | 五月天久久综合| 国产欧美日韩综合一区在线播放| 毛片一级在线| 色婷婷啪啪| 国产成人成人一区二区| 欧美一区二区精品久久久| 久夜色精品国产噜噜| 在线观看无码av免费不卡网站| 国产不卡一级毛片视频| 久久大香伊蕉在人线观看热2| 国产精品亚洲一区二区三区在线观看| 丁香婷婷激情网| 久久婷婷五月综合色一区二区| 综合亚洲色图| 美女无遮挡免费网站| 精品夜恋影院亚洲欧洲| 日韩欧美高清视频| 国产日韩久久久久无码精品| 在线播放91| 精品自窥自偷在线看| 污污网站在线观看| 草逼视频国产| 69视频国产| 日韩在线永久免费播放| 久久99久久无码毛片一区二区| 国产91无码福利在线 | 亚洲久悠悠色悠在线播放| 久久亚洲国产视频| 亚洲国产亚洲综合在线尤物| 成年人福利视频| 国产精品手机在线播放| 精品人妻一区二区三区蜜桃AⅤ| 成人国产免费| 2021国产乱人伦在线播放 | 色悠久久综合| 欧美自慰一级看片免费| 国产成人在线无码免费视频| 91免费国产在线观看尤物| 亚洲天堂久久| 最新加勒比隔壁人妻| 在线观看国产精品日本不卡网| 国产日韩丝袜一二三区| 五月天丁香婷婷综合久久| 超清无码熟妇人妻AV在线绿巨人| 91蜜芽尤物福利在线观看| 中国特黄美女一级视频| 国产自视频| 国产无人区一区二区三区 | 午夜爽爽视频| 亚洲人成电影在线播放| 免费看a级毛片| 毛片免费在线| 波多野结衣久久高清免费| 国产综合在线观看视频| 又黄又爽视频好爽视频| 色有码无码视频| 蜜臀av性久久久久蜜臀aⅴ麻豆| 精品人妻一区二区三区蜜桃AⅤ| jijzzizz老师出水喷水喷出| 中文字幕无码制服中字| 日韩在线第三页| 国产99久久亚洲综合精品西瓜tv| 中文字幕亚洲综久久2021|