Optimization Problem และเทคโนโลยีเบื้องหลังการลงจอดของ Falcon 9

(ชมคลิปพัฒนาการของ Falcon 9 ก่อนอ่าน)

ณ ตอนนี้ จรวด Falcon 9 ของ SpaceX นับว่าเป็นจรวดหนึ่งเดียวในโลกที่สามารถพาตัวเองกลับมาลงจอดและนำกลับมาใช้ใหม่ได้ ตามทฤษฏีแล้ว Falcon 9 จะใช้เวลาในการตรวจสอบความเสียหาย เติมน้ำมัน เติมออกซิเจนเหลว และสามารถขึ้นบินต่อทันทีได้ภายในเวลา 24 ชั่วโมง หากเป็นเช่นนี้จริงราคาของการส่งของขึ้นสู่อวกาศจะถูกลงมาก ครั้งหนึ่ง Elon Musk เคยเปรียบเทียบเทคโนโลยีจรวดปัจจุบันว่าเป็นเหมือนการซื้อเครืองบิน Boeing 747 มาเพื่อบินจากนิวยอร์คไปลอนดอนเพียงครั้งเดียวและนำเครื่องบินนั้นไปทิ้ง

** บทความนี้มีการใช้ศัพท์ทางคณิตศาสตร์ และ Computer Science ซึ่งผู้เขียนไม่ชำนาญถึงขั้นอธิบายรายละเอียดลงลึก หากท่านใดสามารถนิยามหรือขยายความเพิ่มเติมได้ ผู้เขียนอยากให้แชร์ความรู้กันที่คอมเม้นด้านล่างได้ เพื่อประโยชน์แก่ผู้สนใจ

Falcon 9 First Stage lands on LZ-1

สาเหตุของการทิ้งจรวดหลังจากการใช้งานนั้น ดูเหมือนว่าจะมาจากทั้งเรื่องของความปลอดภัย การจัดการความเสี่ยง และการดูแลบำรุงรักษา แต่จริง ๆ แล้วปัญหามันติดอยู่ที่ขั้นตอนการนำมันกลับมาต่างหาก จรวดเกือบทุกรุ่นที่เรามี ณ ตอนนี้ เมื่อใช้งานแล้วมันจะถูกปล่อยให้เผาไหม้ในชั้นบรรยากาศ ความร้อนและการเสียดสีที่รุนแรงจะฉีกพวกมันเป็นชิ้น ๆ แม้จะมีบางส่วนตกกลับมายังโลก ก็มีการออกแบบให้มันตกลงมาในที่ที่ไม่มีคนอยู่ เช่นกลางทะเล หรือในทะเลทราย - ที่ราบที่ไม่มีคนอยู่อาศัย (ซึ่งอาจจะไม่ใช่วิธีการที่จีนใช้เท่าไหร่ เพราะครั้งหนึ่ง เคยมีชายผู้โชคร้ายโดนเครื่องยนต์จรวดขนาดเมตรกว่าตกทะลุหลังคาบ้าน)

ครั้งหนึ่ง NASA เคยพยายามแก้ปัญหานี้ด้วย Space Shuttle หรือกระสวยอวกาศ พวกมันถูกออกแบบมาให้สามารถใช้งานซ้ำได้สองส่วนคือ ตัวลำที่ลักษณะคล้ายเครื่องบิน (orbitor) และแท่งจรวดบูสเตอร์ ในส่วนของจรวดบูสเตอร์ หลังจากที่เชิ้อเพลิงหมดมันจะถูกสลัดออก และกางร่มชูชีพลงในมหาสมุทรแอตแลนติก เป็นภาระให้เรือสองลำของ NASA ที่ชื่อ Liberty Star และ Freedom Star ต้องทำการขับไปเก็บกู้ จากนั้นนำมาล้างทำความสะอาด เนื่องจากการทิ้งจรวดลงในน้ำทะเลนั้นทำให้น้ำทะเลเข้าไปในตัวจรวดสร้างความเสียหายบางส่วน แม้ว่าจรวดนั้นจะเป็นเพียงจรวดเชื้อเพลิงแข็งที่หลักการทำงานไม่ได้ต่างจากบั้งไฟ (การซ่อมแซมจรวดเชื้อเพลิงเหลวจากน้ำทะเลนั้น ยากกว่านี้หลายร้อยเท่า เนื่องจากโครงสร้างซับซ้อนกว่ามาก) ส่วนลำตัวของ Space Shuttle ที่เรียกว่า Orbitor นั้นถูกออกแบบมาให้เหมือนกับเครื่องบิน แม้พวกมันจะถูกเรียกว่าอิฐบินได้มากกว่า พวกมันลงจอดด้วยความเร็วกว่าเครื่องบินทั่วไปหลายเท่า ทำให้มันต้องใช้รันเวย์ที่ยาวมาก ๆ ที่สำคัญคือ มันไม่มีเครื่องยนต์สำหรับใช้ในการลงจอด ทุกอย่างจะต้องถูกกคำนวณมาให้แม่นยำที่สุด มันจะใช้การเอียงซ้ายขวาเพื่อถูไปไปกับชั้นบรรยากาศในการลดความเร็ว ก่อนที่จะลง

STS_135_Launch

ด้วยจรวด Falcon 9 ที่กลับมาด้วยความเร็วสูง ความสามารถในการลงจอดของมันและการคำนวณทางคณิตศาสตร์ จะเปรียบเทียบได้กับการลงจอดของยานอวกาศต่าง ๆ เช่น การส่งยานไปลงดาวอังคาร ต่างกันตรงที่ Falcon 9 มีมวลเยอะกว่ามาก แถม Center of mass ของมัน ยังขึ้นอยู่กับเชื้อเพลิงในถังว่าเหลือมากน้อยแค่ไหน ซึ่งมีความเสียงสูงมาก และต้องเจอกับข้อท้าทายดังนี้

(ช่างภาพถ่ายติด Falcon 9 ด้วยความบังเอิญ)

ในตอนที่เข้าสู่ชั้นบรรยากาศมันต้องผ่านอุณหภูมิที่สูงเทียบเท่ากับบนพื้นผิวของดวงอาทิตย์ แรง Drag มหาศาลจากชั้นบรรยากาศ ซึ่ง Falcon 9 ต้องเจอกับแรงที่มากกว่าแรง g ของโลกถึง 6 เท่า Falcon 9 ต้องเจอกับลมความเร็วสูงมากและไม่สามารถควบคุมได้ บางครั้งพัดแรงกว่า 100 ไมล์ต่อชั่วโมง
เนื่องจากในตอนเข้าสู่ชั้นบรรยากาศ การสื่อสารกับภาคพื้นดินนั้นแทบจะเป็นไปไม่ได้เลย เนื่องจากสถานะพลาสม่าที่เกิดระหว่างจรวดเข้าสู่ชั้นบรรยากาศ

ในการเข้าสู่ชั้นบรรยากาศและการลงจอดนั้น อาจจะเป็นส่วนที่ยากที่สุดก็ว่าได้ เพราะก่อนหน้านี้ต้องมีการ จุดเครื่องยนต์หรือที่เรียกว่าการ Burn อยู่หลายครั้งด้วยกัน สำหรับการ burn นั้นจะใช้การจุดเครื่องด้วยสาร triethylaluminium และ triethylborane ที่เมื่อสัมผัสกับอากาศจะทำให้เกิดประกายไฟ และจุดเครื่องยนต์ (เนื่องจาก Falcon 9 นำสารจุดดังกล่าวติดขึ้นไปด้วย ทำให้ Falcon 9 สามารถจุดเครื่องยนต์ได้ โดยไม่ต้องใช้การจุดจากภายนอก เหมือนจรวด Soyuz ของรัสเซีย ซึ่งไม่สามาถ re-ignigtion ได้)

การทำงานของระบบการนำ Falcon 9 กลับจะเริ่มตั้งแต่ตอนที่ Second Stage แยกตัวออกจาก First Stage ซึ่งในตอนนั้น Falcon 9 First Stage จะทำการ flip ตัวกลับ ซึ่งในตอนนี้จะมีขั้นตอนที่สำคัญ แต่อาจจะไม่จำเป็นสำหรับทุก flight ที่เรียกว่าการทำ Boostback Burn

Boostback Burn

เป็นการจุดเครื่องยนต์ครั้งที่สองหลังจาก MECO หรือ main engine cut-off ในตอนนี้จะเกิดขึ้นหลังจากที่ Falcon 9 flip ตัว อย่างไรก็ตามขั้นตอนนี้จะเกิดขึ้นหรือไม่เกิดขึ้นก็ได้ขึ้นอยู่กับรูปแบบของภารกิจ - ในการกลับมาลงจอดที่ Landing Zone 1 ที่เรียกว่าการทำ RTLS (Return to Launch Site) จะต้องมีการทำ Boostback Burn ทุกครั้ง และจะยาวนานกว่าครั้งอื่นด้วย เนื่องจากต้องลดอัตราเร็วในแกน X ซึ่งทำให้จรวดวิ่งห่างออกไปทางมหาสมุทร แปซิฟิก จรวดจะใช้ช่วงที่อัตราเร็วในแนวแกน Y ค่อย ๆ เพิ่มขึ้น เป็นตัวถ่วงเวลาให้จุดตกค่อย ๆ ถอย มาจนถึง บริเวณ Landing Zone 1

การทำ Boostback Burn จะง่ายกว่านี้มากหากเป็นการลงจอดบนโดรนลอยน้ำ Automonous Spaceport Drone Ship (ASDS) ซึ่งเราจะทำการ burn เพียงเล็กน้อยเพื่อลดอัตราเร็วของจรวดให้จุดตกอยู่ตรงกลับบริเวณที่ ASDS รออยู่ หรืออาจจะไม่ต้องทำการ burn เลยก็ได้

Entry Burn

หลังจากการทำ boostback burn เรียบร้อยแล้ว เครื่องยนต์จะดับลง และปล่อย Falcon 9 เดินทางตามวิถีที่ออกแบบไว้ เมื่อ Falcon 9 เริ่มสัมผัสกับชั้นบรรยากาศ เครื่องยนต์จะถูกจุดขึ้นอีกครั้งและเป่าไล่พวกอนุภาคจากชั้นบรรยากาศไม่ให้อัดกลับเข้าไปในเครื่องยนต์ของ Falcon 9 ในช่วงนี้ Grid Fins จะถูกกางออกเรียบร้อยแล้ว และทำการปรับทิศทางช่วยไปด้วย

เมื่อ Landing Burn สำเร็จ Falcon 9 จะผ่านชั้นบรรยากาศที่ความหนาแน่นสูงขึ้นเรื่อย ๆ Grid Fins จะทำงานด้วยการใช้ช่องระหว่าง Fins นั้นให้อากาศไหลผ่านและตัว Fins จะหมุนปรับทิศทางการตกของ Falcon 9

Landing Burn

ขั้นตอนสุดท้ายคือการทำ Landing Burn เพื่อลงจอด Falcon 9 จะจุดเครื่องยนต์อีกครั้งและเป็นครั้งสุดท้ายเพื่อลงจอดซึ่งจะเกิดขึ้นเพียงไม่กี่วินาทีตอนลงจอด

Falcon 9 first stage lands on LZ-1

ความแม่นยำของการลงจอด Falcon 9 นั้นจะต้องอยู่ที่ 99% หรือแทบจะไม่มีข้อผิดพลาดเลย ความแม่นยำนั้นสำหรับการลงจอดบน DroneShip จะต้องอยู่ในระยะ 10 เมตร และการลงจอดที่ Landing Zone 1 จะต้องไม่เกินกว่า 30 เมตร อย่างไรก็ตามการลงจอดทุกครั้งของ Falcon 9 ช่วงหลัง ๆ จัดว่าแม่นยำในระดับลงตรงกลางอักษร X พอดี นั่นหมายถึง Dead Center

การออกแบบซอฟต์แวร์

เรารู้กันมาว่าคอมพิวเตอร์บน Falcon 9 นั้นใช้ระบบปฏิบัติการ UNIX และรันบน CPU สถาปัตยกรรม Power PC ทีม FS หรือ Flight Software ของ SpaceX เลือกใช้ CVXGEN - Code Generation for Convex Optimization ซึ่งเป็นซอฟแวร์ Automatic Code Generator ที่มันจะเขียนโค้ดขึ้นมาเอง (ใช้ภาษา C/C++) ในการเขียนโปรแกรมปกติเราอาจจะคุ้นชินกับการเขียนเชิง OOP หรือ Object แต่สำหรับในการเชื่อมต่อกับอุปกรณ์ต่าง ๆ ที่ล้วนแล้วแต่ก็มี Microcontroller เป็นของตัวเองนั้น SpaceX ใช้การเขียนโปรแกรมแบบ Actor model ซึ่งจะเน้นการส่งข้อความหากันมากกว่า

การเขียนโปรแกรมจะใช้การออกแบบสิ่งต่าง ๆ เป็น Actor (แทนที่จะเป็น Object) แล้วใช้มันส่งข้อความหากันระหว่าง Actor แต่ละตัว ซึ่งมันก็คือบอกให้ทำ Function (method) แต่ละอัน (ซึ่งก็จะอยู่ที่อุปกรณ์แยกย่อยแต่ละตัว เช่น Grid Fins, Thrust-vector-control servo) แน่นอนว่าการทำแบบนี้ ต้องเป็นแบบ Non-blocking I/O ด้วย (เพื่อการตัดสินใจที่รวดเร็วและไม่ให้เกิดข้อผิดพลาดของ Falcon 9)

ย้อนกลับมาที่ CVXGEN หรือ Code generator นั้น ก็มี interface กับหลายภาษาเช่น C ก็ได้ Matlab ก็ได้ ซึ่งมันจะ generate code ออกมาแบบสด ๆ ตาม การ optimization problem ด้วย Model Predictive Control นั่นหมายความว่า Falcon 9 ใช้การแก้ปัญหาในเชิงคณิตศาสตร์ มากกว่าการทำตามอัลกอริทึม เพื่อเพิ่มขีดจำกัดในการตัดสินใจในทุก scenarios

จากภาพเราจะเห็นว่าเส้นสีดำคือแนวการเคลื่อนที่จริงของ Falcon 9 และเส้นสีต่าง ๆ ที่เป็นขอบจะแสดงถึงความน่าจะเป็นในตำแหน่งของจรวด ซึ่งเป็นความน่าจะเป็นที่มากที่สุดที่เป็นไปได้ จะสังเกตว่าในช่วงเริ่ม Launch นั้น จะต้องแม่นยำที่สุดอยู่ 3 ช่วง คือช่วง Launch ขึ้นไป (แน่นอนว่าต้องแม่งยำอยู่แล้ว เพราะเรากำหนดจุดเอง) จากนั้นความเป็นไปได้ของตำแหน่งในการอยู่ของ Falcon 9 จะกว้างขึ้น ตั้งแต่เริ่มปล่อยขึ้นไปจนถึงการทำ Boostback Burn แต่พอทำ Entry Burn หรือการกลับสู่ชั้นบรรยากาศนั้น ความเป็นไปได้จะแคบลง เนื่องจากเป็นจุดที่ sensitive ที่สุด หากลงแรงไป Falcon 9 จะถูกฉีกออกเป็นชิ้น ๆ และหากลงเบาไป Falcon 9 จะกระเด็นออกจากชั้นบรรยากาศ ขึ้นไปอยู่ที่วงโคจรสูงขึ้นไป หลังจากที่กลับเข้าชั้นบรรยากาศนั้น ความเป็นไปได้จะกลับมากว้างขึ้นอีกครั้งเนื่องจากลม และสภาพอากาศที่แทบจะควบคุมไม่ได้เลย แต่สุดท้าย Falcon 9 จะต้องกลับมาลงจอดอย่างแม่นยำ ความเป็นไปได้จะแคบอยู่ที่ 30 เมตรเท่านั้น แนวคิดเรื่องความแม่นยำแบบนี้ถูกนำมาใช้ร่วมกับ Control theory เพื่อช่วยให้ Falcon 9 สามารถคิดเองได้อย่างฉลาด

G-FOLD

การทำ optimization problem ของ SpaceX มีแนวคิดพัฒนาต่อมาจาก G-FOLD Guidance for Fuel-Optimal Large Diverts ซึ่งเป็นอัลกอริทึมในการลงจอดที่ JPL California Institute of Technology พัฒนาขึ้นมาใช้ในการส่งยานไปลงจอดบนดาวอังคาร ซึ่ง SpaceX ได้นำมาปรับใช้และทดสอบในช่วง 3-4 ปีที่ผ่านมา โดย G-FOLD จะทำการหาความเหมาะสมระหว่างระยะทาง จุดลงจอด และเชื้อเพลิงที่เหลือ

SpaceX มีการนำอัลกอริทึมนี้มาใช้งานครั้งแรกกับ Grasshopper ซึ่งใช้ทดสอบเทคโนโลยีการทำ divertions ครั้งแรก และผลออกมาเป็นที่น่าพอใจ SpaceX จึงได้นำไปใช้กับ Falcon 9 R ตัวต้นแบบในเวลาต่อมา เพื่อจำลองให้เหมือนจริงที่สุด และนำมาลองใช้กับการ entry จริง ด้วยการบังคับ Falcon 9 ค่อย ๆ ทำการ softlanding ลงในมหาสมุทร

G-FOLD Algorithm และ SpaceX Falcon 9 Algorithm นั้นน่านำมาเปรียบเทียบกับ อัลกอริทึมที่ใช้ในการลงจอดบนดวงจันทร์ของภารกิจ Apollo ซึ่งมีข้อผิดพลาดเพราะเมื่อกลับไปศึกษาแล้ว เราพบว่าอัลกอริทึมของ Apollo นั้นใช้เชื้อเพลิงสิ้นเปลืองเกินความจำเป็น และขาดความสามารถในการประเมินความน่าจะเป็นต่าง ๆ (Uses a minimal predetermined number of arithmetic operations)

Navigation

เมื่อ Falcon 9 สามารถคิดเองได้แล้ว ที่มาของเหตุที่มันใช้ตัดสินใจก็ต้องมาจากเซ็นเซอร์ต่าง ๆ ซึ่งในที่นี้ไม่มีปัญหาเพราะว่ามันติดอยู่กับ Falcon 9 สิ่งเดียวที่น่าจะยากที่สุดคือ GPS ซึ่งเป็นหน้าที่ของทีม GNC - Guidance Navigation Control

ก่อนอื่นเราต้องเข้าใจประเภทของการระบุตำแหน่งด้วย GPS ซึ่งมี 2 แบบคือ

Absolute GPS - การหาตำแหน่งของจุดเดี่ยว (เช่น Falcon 9 หรือ DroneShip) เมื่อสามารถรับสัญญาณจากดาวเทียม 4 ดวง (หรือมากกว่า) ก็สามารถบอกพิกัดตำแหน่งได้ในทันที ความแม่นยำจะอยู่ในระยะประมาณ 10 - 25 เมตร

Relative GPS - หรือ Differential Positioning เป็นการหาตำแหน่งร่วมกันของ Falcon 9 และ DroneShip (ในกรณีของ DroneShip จะรู้ตำแหน่งของตัวเองจาก Absolute GPS) แล้วทั่งคู่ต้องทำการเปรียบเทียบข้อมูลจากดาวเทียมกลุ่มเดียวกัน ชุดเดียวกัน เพื่อให้ได้ตำแหน่งที่แม่นยำที่สุดสำหรับ Falcon 9 ตามทฤษฏีแล้วจะแม่นยำในระดับ 1 เมตร

การลงจอดที่ LZ-1 นั้นแน่นอนว่าสามารถใช้ความสามารถของ Relative GPS ได้อย่างเต็มที่เพราะ Cape Ceneveral ไม่ได้ลอยไปไหน แต่สำหรับการลงจอดบน DroneShip นั้นหากตั้งใจฟัง Live WebCast เราจะได้ยินเจ้าหน้าที่ Landing Operator ให้สัญญาณ “Recovery vessel has AOS” โดย AOS ย่อมาจาก Acquisition Of Signal หมายความว่า มีการพูดคุยกันระหว่าง Falcon 9 กับ DroneShip เรียบร้อยแล้ว ทำให้เรารู้ว่า Falcon 9 นั้นตามนำแหน่ง Relative GPS ไปยัง Droneship ซึ่งอยู่ที่ Abslute GPS ซึ่งจะควบคุมตัวเองไม่ให้ลอยไปไหนด้วยเครื่องยนต์บนเรือ 4 ตัว

via GIPHY

อีกปัญหาของการลงจอดบน DroneShip คือ เราไม่สามารถวัดตำแหน่งความสูงของ DroneShip ได้อย่างแม่นยำด้วย GPS เนื่องจากระดับน้ำทะเล และคลื่นลมที่ไม่สามารถควบคุมได้ (แม้การลงจอดบน DroneShip จะไม่มีทางเกิดขึ้น เพราะ SpaceX กำหนดว่าในการลงจอดบน DroneShip จะต้องทำให้สภาพคลื่นลมสงบ) คลื่นก็เป็นอีกตัวสำคัญที่ทำให้ Droneship นั้นขยับขึ้นลง แม้ว่า Falcon 9 จะสามารถลงจอดได้อย่างนุ่มนวลด้วยเครื่องยนต์ แต่หากคลื่นยกตัว DroneShip ขึ้นมากระแทกกับขาตั้งของ Falcon 9 นั้นก็ทำให้เกิดความเสียหายได้เหมือนกัน เหมือนกับที่เราเห็น Falcon 9 ในภารกิจส่งดาวเทียม Thaicom 8 ขาเอนไปข้างนึงเนื่องจาก DroneShip กระแทกขึ้นไปใส่ขาลงจอดของ Falcon 9 แต่โชคดีที่ Falcon 9 และ DroneShip มีเซ็นเซอร์แบบ inertial navigation system พร้อมอุปกรณ์ต่าง ๆ ทั้ง motion sensors และ gyroscope มาช่วยในส่วนนี้

THAICOM 8 first-stage landing

การนำ Falcon 9 มาลงจอดนับว่าเป็นเรื่องที่ยากไม่แพ้กับการส่งยานไปลงจอดอย่างแม่นยำบนดาวอังคาร แต่ก็ไม่เกินขีดความสามารถของมนุษย์ ตอนนี้ SpaceX มีแผนที่จะนำจรวดที่ผ่านการใช้งานแล้วมาใช้งานในภารกิจ SES-10 บริษัทดาวเทียมของประเทศลักเซมเบิร์ก ที่สนิทกับ SpaceX มาก ๆ และเป็นหนึ่งในลูกค้าเก่าแก่ของ SpaceX ที่ประกอบด้วย SES, Thaicom และ Asiasat

นับตั้งแต่วันแรกที่ Glasshopper ลำแรกบินขึ้น พวกเขาใช้เวลาไม่ถึง 4 ปีในการพัฒนาระบบการขนส่งอวกาศที่ล้ำหน้าที่สุดในโลก

ข้อมูลเรื่องซอฟแวร์จาก The Bridge - MIT โดย Lars Blackmore วิศวกร SpaecX

กดไลค์เพจเพื่อติดตามบทความใหม่ ๆ และเรื่องราวน่าสนใจในวงการ วิทยาศาสตร์ อวกาศ และเทคโนโลยี