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