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