2019 年 7 月 20 日是阿波羅 11 號登陸月球的 50 周年紀念日。
為了紀念這個偉大的事件,我們一起回顧 Richard J. Gran 發布于 1999 年,關于設計登月艙(Lunar Module, LM)數字自動駕駛儀的第一手資料。通過對比 1960 年代、1999年和現如今進行 GN&C(制導、導航與控制)系統開發方式的不同,展示基于模型設計的快速發展。
Richard @ 1999
當我還是個小男孩的時候,我就知道我想成為一名工程師。但我不知道的是,大學畢業后不久,我就參與了有史以來最偉大的工程項目之一。1962 年 9 月 12 日,美國總統約翰·F·肯尼迪宣布:“我們選擇在十年內登上月球”,推動這個國家快速走上載人登月的道路。同年,我成為格魯曼制導與控制小組的一員,接下來,從 1963 年到 1966 年,我在麻省理工學院儀器實驗室(MIT IL)參與了登月艙數字自動駕駛儀的設計工作。
登月艙數字自動駕駛儀設計:1961-1969
最初為登月艙推出的自動駕駛儀是一個模擬系統,使用調制器通過有節奏的跳動控制反作用控制噴射裝置的開關。
雖然控制系統使用模擬信號,但是導航和制導功能在一臺數字計算機上運行,后者在指令和和服務艙 (Command and Service Module,CSM) 和阿波羅助推器中很常見。制導和導航的算法由麻省理工學院儀器實驗室 (MIT IL) 的一個團隊開發,現在這個實驗室被稱為德雷珀實驗室。
在阿波羅計劃的早期,NASA 決定在登月艙設計中將制導與導航計算機設計為一個備份控制系統,以提高任務的可靠性。為此,阿波羅公司的三個承包商(Grumman、MIT IL和BellComm)于 1963 年初開始進行了一場設計競賽。
數字自動駕駛儀設計的主要問題是計算機存儲和速度。
有大約 2000 個 16 位指令分配給數字自動駕駛儀,而這些操作指令不允許干擾主制導和導航功能。在眾多必須解決的問題中,一個現實情況是這款計算機并不是針對時間關鍵事件處理而設計的。由于這個原因,系統只有一個中斷級別,沒有數字信號到模擬信號的接口。
為了讓我們了解這臺計算機有多簡單,下表顯示了它的整個操作碼集。要實現數字自動駕駛儀,需要實現第二個中斷。我們使用了計算機的二進制反碼結構,這意味著有一個正零和一個負零。當計數器從負數遞增或從正數遞減時,這種結構允許發生不同的中斷。
開發最優控制系統
1962 年,“現代控制理論”仍然是一種學術追求。
沒有關于最優控制的教科書,包括我在內的畢業生還沒有精通狀態空間法,也沒有接觸過最優 bang-bang 控制系統。麻省理工學院儀器實驗室的工程師與麻省理工學院的學生們進行了密切合作,使他們成為基于 Pontryagin 最大值原理的狀態空間建模和最優控制技術的早期使用者。
儀器實驗室的工程師 George Cherry 建議使用最佳控制系統來控制航天器。由于在太空中的航天器僅面臨非常少的外部干擾,從而可以非常確切的對轉動動力學特性進行預估。這種對動力學特性近乎完美的理解,讓 Cherry 洞察到,控制器可以設計成在很低的采樣速率下工作。
在美國航空航天局(NASA)的會議上,每個設計團隊都提出了他們的方法,George Cherry展示了他的設計方案,如同艾薩克·牛頓爵士站在身邊描述控制器如何工作。毋庸置疑,美國航空航天局選擇了麻省理工學院的設計。
選擇這種方法的決定是正確的。格魯曼的設計需要 0.02 秒或更快的采樣時間,而麻省理工的方法(在牛頓的幫助下)只需要 0.2 秒的采樣時間(比格魯曼的設計慢 10 倍)。NASA 對這個設計非常滿意,并決定采用數字自動駕駛儀做主系統,而將原來的模擬系統降級為備用系統。
最優控制器
Cherry 設計的最優控制器是一個將時間指標和燃油指標加權組合最小化的控制器。在 Athans 和 Falb 的一本書稿形式的書中介紹了相關理論,這本書直到 1966 年才出版。
下圖顯示了登月艙中設計的反饋控制噴射邏輯。圖中的拋物線是決定何時打開和關閉反饋控制噴射的“開關曲線”。以什么樣的頻率進行相關測量,是這個設計中的難點。
計算機的速度和存儲限制帶來了嚴重的制約。
例如,大多數控制系統工程師通過以一個比較高的采樣速率觀察某個采樣時間的姿態和速率,從而確定系統當前在相平面的位置,來實現該控制器。實際上,這也是設計航天飛機時自動駕駛儀的實現方式。然而,計算機對登月艙的限制意味著這種實現方式將不能正常工作,因為沒有足夠的處理能力來支持快速的采樣速率。
手工編碼和計算
許多現在的軟件開發工程師可使用的商用軟件,在 1963 年并不存在。因此,必須發明出來這些程序,這些程序往往是工程師自己定義的工具,目的是減輕設計者的負擔。
我在 MIT IL 的第一個任務是開發用于選擇合適的反饋控制的邏輯。下圖中的流程圖所示代碼顯示了我用來開發這個邏輯的自定義程序。
代碼中的每個路徑都是手工計時,執行指令的數量以及每個分支的時序都基于每個指令的標稱周期進行計算。每個中斷任務的處理時間也都是手動計算。圖中的流程圖是用匯編語言編寫的實際計算機代碼的一部分,開發耗時一年多。
控制系統的設計是通過仿真程序進行開發和測試的,該程序在格魯曼用 Fortran 編寫,在麻省理工學院用被稱為 MAC 的語言編寫。在設計確定后,再編寫匯編語言代碼。然后,在模擬實際計算機的仿真中對該代碼進行測試。仿真使用實際的匯編語言代碼。
這個過程非常繁瑣:一次“計算機運行”耗時半天時間。我一般會在下午晚些時候提交一個計算(使用 IBM 卡),并在凌晨 3:00 獲得返回結果。我經常會在半夜起床,從酒店步行到麻省理工學院儀器實驗室去修正錯誤。仿真結果一般就在一疊 10 英寸厚的紙上,代碼執行每個步驟的計算結果都記錄在上面。
圖中代碼段如此復雜的一個原因是,可用于控制繞駕駛儀導向軸旋轉的噴嘴數量太多了(見下圖)。他們決定將自動駕駛儀控制的軸改為圖中所示的“噴射軸”。
這使得代碼行數大幅減少,并更容易在現有計算機上實現自動駕駛。如果沒有這種改進,自動駕駛儀就不可能在只有 2000 個字的存儲空間上實現。這一實例帶來的啟示是,當工程師有機會將正在設計的系統編寫到計算機上時,他們總可以通過修改設計而大幅優化代碼。
參與設計登月艙數字自動駕駛儀的設計是我工程師生涯中的一個亮點。
當尼爾·阿姆斯特朗走出登月艙,踏上月球表面時,為阿波羅計劃做出貢獻的每位工程師都倍感驕傲并獲得了成就感。我們開發了前所未有的技術,通過努力工作和對細節的極致關注,我們打造出了運行無暇的系統。
今天我們如何設計登月艙數字自動駕駛儀?
Richard Gran,在他設計的控制系統用于阿波羅 11 號登月任務的幾十年后,重新設計了登月艙數字自動駕駛儀。這次,他使用了 Simulink 系統模型,下圖展示了這個模型的樣子。
在1960年代,設計是手寫在紙上,手動進行數學計算,使用匯編語言進行手工編碼。而現在,航空航天的工程師們使用可執行的模型對低層代碼進行抽象,而不是采用紙上的設計,這在進行復雜系統設計時尤為重要。
上圖展示的是在 Simulink 模型里,用狀態圖實現的登月艙自動駕駛儀偏航控制率的一部分。從模型可以直接生成嵌入式代碼,這就建立了設計和代碼的直接聯系。
在登月艙自動駕駛儀 Simulink 模型上點擊 Play 將啟動仿真,在幾秒而不是幾小時內完成,這顯示了 1960 年代和現在的巨大不同:
計算機速度和能力的指數級提升,而計算機仿真也隨之擴大了應用范圍。
借助于強大的計算能力,工程師們即使在面對持續復雜的設計時,也能比以往仿真更多的應用場景。通過更多的仿真,可顯著降低對昂貴的硬件測試的需求。
仿真是重要的,但只有當對它提供的設計有深刻洞察的時候,才能發揮作用。不僅僅是仿真速度大幅提升,對結果分析的速度和易用性也大幅提升。
阿波羅時代,在仿真結束后,往往需要幾個小時來查看紙質文件上的結果。而現在,工程師們可以在仿真過程中,直接查看參數、繪制曲線和查看動畫效果,如下圖所示。執行測試用例、后處理以及報告生成,都被自動化了。
當工程師在分析數據結果的時候發現不期望的行為時,對設計進行更改可能是必要的。在阿波羅時代,往往需要數日執行更改、分析影響、重寫代碼并重新對設計進行仿真。
現在,使用基于模型設計的工程師,可以對模型的相應部分直接更改并立即進行仿真,查看這個更改對系統的影響。根據設計階段的不同,仿真能夠以模型在環(MIL)、軟件在環(SIL)以及硬件在環(HIL)的方式執行。無需手動追蹤,模型的依賴關系被自動檢查,配置管理工具持續跟蹤著需求、設計與測試用例的變更。
航天器設計一直是很困難的事情,當今的計算機技術和軟件的進步并沒有減少這種設計上的復雜性。但是,就像登月艙數字自動駕駛儀的這個設計示例所展示的那樣,計算機技術和軟件可以使設計更容易管理、測試更加高效、實現更加快速,并且為團隊提供相比于阿波羅時代更多的時間進行驗證和確認的工作。
“使用 MATLAB 和 Simulink 重新設計數字自動駕駛儀,讓我回想起了做初始設計時的努力與掙扎,更讓我感受到當今設計流程的優勢:
計算機性能指數級增長,基于模型的設計讓設計系統變得非常容易。
如今,設計流程的一個令人驚訝的特性,是高度集成的概念設計與計算,因為我可以快速的對想法進行概念設計并立即看到效果,我在一周的時間就可以重新構造整個數字自動駕駛儀。分析、仿真和測試被無縫的集成到一個流程里。
這在我看來,就是 MBD 的魅力所在?!?/p>
—— Richard Gran
-
計算機
+關注
關注
19文章
7532瀏覽量
88437 -
自動駕駛
+關注
關注
784文章
13922瀏覽量
166798
發布評論請先 登錄
相關推薦
評論