標籤:ros arc 多任務 dynamic 參考 分代 png 空間 發布
1. 閱讀筆記
結合本周課堂所講的即時作業系統知識內容,瀏覽如下商用和開源即時作業系統網站,寫一段文字向其他同學簡要介紹下某個即時作業系統的效能特點或進行作業系統間效能的比較:
- Vxworks: www.windriver.com/products/vxworks
- QNX:www.qnx.com
- Xenomai: xenomai.org
- Intime: www.tenasys.com/tenasys-products/intime-rtos-family/overview-rtos
- Sylixos: www.sylixos.com
- ucos: www.micrium.com
uC/OS II 簡介
uC/OS II(Micro Control Operation System Two)是一個可以基於ROM啟動並執行、可裁減的、搶佔式、即時多任務核心,具有高度可移植性,特別適合於微處理器和控制器,是和很多商業作業系統效能相當的即時作業系統(RTOS)。為了提供最好的移植效能,uC/OS II最大程度上使用ANSI C語言進行開發,並且已經移植到近40多種處理器體繫上,涵蓋了從8位到64位各種CPU(包括DSP)。
uC/OS II可以簡單的視為一個多任務調度器,在這個任務調度器之上完善並添加了和多任務作業系統相關的系統服務,如訊號量、郵箱等。其主要特點有公開原始碼,代碼結構清晰、明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。核心屬於搶佔式,最多可以管理60個任務。μC/OS-II 的前身是μC/OS,最早出自於1992 年美國嵌入式系統專家Jean J.Labrosse 在《嵌入式系統編程》雜誌的5 月和6 月刊上刊登的文章連載,並把μC/OS 的源碼發布在該雜誌的B B S 上。
μC/OS 和μC/OS-II 是專門為電腦的嵌入式應用設計的, 絕大部分代碼是用C語言編寫的。CPU 硬體相關部分是用組合語言編寫的、總量約200行的組合語言部分被壓縮到最低限度,為的是便於移植到任何一種其它的CPU 上。使用者只要有標準的ANSI 的C交叉編譯器,有彙編器、連接器等軟體工具,就可以將μC/OS-II嵌人到開發的產品中。μC/OS-II 具有執行效率高、佔用空間小、即時效能優良和可擴充性強等特點, 最小核心可編譯至 2KB 。μC/OS-II 已經移植到了幾乎所有知名的CPU 上。 嚴格地說uC/OS-II只是一個即時作業系統核心,它僅僅包含了任務調度,任務管理,時間管理,記憶體管理和任務間的通訊和同步等準系統。沒有提供輸入輸出管理,檔案系統,網路等額外的服務。但由於uC/OS-II良好的可擴充性和源碼開放,這些非必須的功能完全可以由使用者自己根據需要分別實現。
uC/OS-II目標是實現一個基於優先順序調度的搶佔式的即時核心,並在這個核心之上提供最基本的系統服務,如訊號量,郵箱,訊息佇列,記憶體管理,中斷管理等。uC/OS-II以原始碼的形式發布,但並不意味著它是開源軟體。你可以將其用於教學和私下研究(peaceful research);但是如果你將其用於商業用途,那麼你必須通過Micrium獲得商用許可。雖然uCOS-II在商業上使用時需要的得到授權並且費用也是一筆不小的數字,但是他的開源畢竟帶領我們走入了核心的世界。
2. 本課程需要完成一個Team 專案,主要功能是實現一個兩軸機械手的運動控制模擬,主要功能包括:
使用者介面任務:負責接收來自使用者的請求,並發送運動指令給軌跡插補任務。
軌跡插補任務:接收運動指令,即時計算各軸的位置和速度設定值。
物理引擎介面:基於ODE開源物理引擎,建立一個兩軸機械手及環境的物理模型,用軌跡插補任務輸出的各軸位置和速度設定值控制模型的運動,並把即時狀態反饋給軌跡插補任務。
圖形化使用者介面:可基於qt把上述功能整合到一個GUI介面。
1)請思考你最擅長或最有興趣參與哪一個模組的開發,並寫在部落格上。
2)除了編程,你可以以多種形式為一個軟體項目做貢獻,如團隊管理、需求分析、功能定義、演算法設計、模擬分析、軟體測試、文檔寫作......,快速閱讀鄒欣老師《構建之法》一書前五章和鄒欣老師的部落格(http://www.cnblogs.com/xinz),請寫下你對團隊協作開發的理解,以及自己在一個控制軟體項目中傾向於承擔的角色或任務。
設想:
圖形化使用者介面上使用者可以選擇典型的軌跡曲線或者NC檔案等,解析後給插補任務發送直線、圓弧、樣條曲線軌跡命令,插補任務再根據速度、加速度要求即時計算出各個軸轉速和加速度(傳動比等參數自己設定),物理引擎介面當作是運動的實體,以模擬的形式以規定的角度資訊運動,並以模擬的形式將位置資訊等反饋給插補任務(因為是模擬,資料流的方向只是單向的,所以是沒有實際誤差的,反饋也沒用),同時即時顯示所給定的速度、位置資訊。
各個模組的具體功能:
圖形化使用者介面:使用者選擇所需要的路徑,並發送給下一層(可以使用網路等);即時顯示已經加工過的路徑資訊;即時顯示各軸轉速等;
軌跡插補任務:接受基本的插補任務資訊(直線、圓弧等),解析成發送給電機的轉速和加速度(具體如何?還要看書);
物理引擎介面:相當於是機械實體,根據各軸位置和速度資訊實現相應的運動(並將位置資訊反饋給插補任務),將各軸轉速等反饋給圖形化使用者介面;
各個模組的功能分解:圖形化使用者介面:
顯示圖形映像等;
讀取檔案(dxf、G指令等);
實現不同模組之間的網路通訊(類比電腦與伺服裝置的通訊),定製自己的通訊協定(軌跡類型-直線、圓弧;起點終點;方向),校正;
資料的儲存和緩衝(接受方插補任務接受資料要緩衝下來);
插補任務:
接受資料並校正、緩衝;
按照給定的運動起點、終點等資訊計算中間點(插補)(假設數控裝置採用電壓脈衝作為插補點座標的輸出增量,即以步進電機作為驅動裝置,計算得到的就是進給脈衝,採用脈衝增量插補演算法,具體講就是逐點比較法和數字積分法;另外還有資料採樣插補)
將脈衝資料發送給物理介面;
物理引擎介面:
接受脈衝資料,經過計算後得到關節角度,關節運動到指定的位置(可以使用KDE或者OpenGL);
將自身位置資訊發送給使用者介面(網路通訊等),發送給插補任務(如果是閉環伺服系統);
可以仿照下面這個流程圖:
可參考資源:
ODE: http://www.ode.org/
openrave :http://www.openrave.org/docs/latest_stable/
Open Robot Control Software:http://www.orocos.org/
Kinematics and Dynamics Library :http://www.orocos.org/kdl
some other rescources on sourceforge about trajectory planning:https://sourceforge.net/directory/os:windows/?q=trajectory
eigen: http://eigen.tuxfamily.org/dox/GettingStarted.html
第三次作業-即時控制軟體設計