Deep Space อัพ Patch ยาน Ingenuity ก่อนขึ้นบิน 19 เมษายนหลัง ปัญหาทางด้านซอฟต์แวร์
อัพ Patch ยาน Ingenuity ก่อนขึ้นบิน 19 เมษายนหลัง ปัญหาทางด้านซอฟต์แวร์

Chottiwatt Jittprasong in Computer Science

อัพ Patch ยาน Ingenuity ก่อนขึ้นบิน 19 เมษายนหลัง ปัญหาทางด้านซอฟต์แวร์

April 18, 2021

เมื่อวันที่ 18 เมษายน 2021 NASA ได้กำหนดวันขึ้นบินของ Ingenuity ครั้งแรกเป็นวันที่ 19 เมษายน 2021 ก่อนเวลา 17:00 น. (GMT +7) หลังการ Update Software บนยานเสร็จสิ้น โดย JPL จะถ่ายทอดสดการขึ้นบินผ่านทาง Platform ต่าง ๆ เช่น Facebook และ YouTube โดยก่อนหน้านี้ Ingenuity มีกำหนดการขึ้นบินในวันที่ 11 เมษายน 2021 ตามตารางการทดสอบระบบต่าง ๆ ของ Ingenuity ตั้งแต่ปลดยานออกจาก Perseverance เช่น การทดสอบระบบคอมพิวเตอร์การบิน การทดสอบหมุนใบพัด การทดสอบหมุนใบพัดที่ความเร็วสูง และอื่น ๆ

อ่านบทความเกี่ยวกับการขึ้นบินของ Ingenuity ได้ที่นี่ – สรุปขั้นตอนการเตรียมเฮลิคอปเตอร์ Ingenuity ขึ้นบินครั้งแรกบนดาวอังคาร

Ingenuity หลังปลดที่ล็อกใบพัดออกในวันที่ 7 เมษายน 2021 (SOL 47) ภาพจากยาน Perseverance – ที่มา NASA/JPL-Caltech

อย่างไรก็ตาม วิศวกรของยานจำเป็นต้องเลื่อนการบินจริงออกไปเนื่องจาก ในวันที่ 9 เมษายน 2021 ระหว่างการทดสอบหมุนใบพัดด้วยความเร็วสูง (High-speed spin-up test) นั้นประสบปัญหาด้านซอฟต์แวร์ที่ทำให้ Ingenuity ไม่สามารถขึ้นบินได้ โดยการทดสอบนี้เป็นการทดสอบหมุนใบพัดของ Ingenuity ด้วยกำลังสูงสุดไปที่ 2,537 RPM เพื่อจำลองการเตรียมขึ้นบินด้วยการเปลี่ยนจาก Pre-flight mode ไปเป็น Flight mode ซึ่งเป็นโหมดที่จะอนุญาตให้ Flight Computer ของ Ingenuity นำเครื่องขึ้นจากผิวดินได้ อย่างไรก็ตาม Flight Computer ของ Ingenuity ถูกขัดจังหวะด้วยสิ่งที่เรียกว่า “Watchdog timer”

Mars Helicopter Ingenuity blades rotating
การทดสอบหมุนมอเตอร์ขับเคลื่อนใบพัดของ Ingenuity – ที่มา NASA/JPL-Caltech

Watchdog Timer คืออะไร

Watchdog timer เป็นส่วนแยกของ Microcontroller ใน Ingenuity ที่มีไว้เพื่อป้องกัน Error, Bug หรือ Glitch ในซอฟต์แวร์หรือ Parameters ของ Flight Computer ที่อาจทำให้ระบบค้างหรือแฮงค์ได้นั่นเอง กล่าวก็คือมันเป็นเสมือนชิปที่ช่วยคอยตรวจสอบตลอดเวลาว่า Flight Computer ยังทำงานปกติอยู่นั่นเอง คล้ายกับสุนัขเฝ้าบ้านเช็กว่าบ้านยังปลอดภัยอยู่ (Failsafe)

เหตุผลที่ต้องมีระบบแบบนี้เพราะว่าหากมีเหตุการณ์ใด ๆ ที่ทำให้ Flight Computer เกิด Unhandled Error หรือก็คือ Error ที่ตัว Computer เองไม่สามารถแก้ไขหรือรับมือได้จนทำให้ระบบล่มขึ้นมา วิศวกรซึ่งอยู่บนโลกจะไม่สามารถทำอะไรได้เลยเพราะการสื่อสารกับ Ingenuity อย่างน้อยต้องใช้เวลากว่า 10 นาที และการแก้ไขซอฟต์แวร์ใด ๆ ก็ยิ่งจะใช้เวลามากกว่านั้น เนื่องจากการสื่อสารกับ Ingenuity จะต้องผ่าน Communication Relay หลายขั้นตอน เช่น จาก DSN ไปยัง Mars Orbiter ไปยัง Perseverance แล้วค่อยถึง Ingenuity

ดังนั้นหากเกิด Error ที่ทำให้ Flight Computer ค้างหรือ Reboot ระหว่างที่ Ingenuity กำลังบินอยู่ย่อมไม่เป็นเรื่องดีแน่ ๆ นั่นเอง เพราะการสื่อสารกับ Ingenuity โดยตรงมีจำกัด Ingenuity จะต้องพึงมันสมองของมันเองนั่นก็คือ Flight Computer และถ้ามันเจ๊ง ก็เตรียมบอกลาเฮลิคอปเตอร์ลำแรกบนดาวอังคารได้เลย

ส่วนประกอบของ Ingenuity – ที่มา NASA/JPL-Caltech

Watchdog Timer ทำงานโดยการเป็น Timer หรือตัวจับเวลาที่จะมีเวลาที่ตั้งไว้โดยเฉพาะ จากนั้นตัว Timer ก็จะนับไปเรื่อย ๆ จนกว่าจะถึงเวลาที่ตั้งไว้ หาก Watchdog Timer นับถึงเวลาที่ตั้งไว้ มันจะส่งคำสั่ง Watchdog Timer Expiration บังคับให้คอมพิวเตอร์ Reboot หรือ Reset ดังนั้นตัวคอมพิวเตอร์ที่ทำงานคู่กับ Watchdog Timer จะมีหน้าที่ส่งสัญญาณไป Reset Watchdog Timer ให้เริ่มนับใหม่ในช่วงระยะเวลาหนึ่งเพื่อไม่ให้ Watchdog Timer นับไปถึงเวลาที่มันตั้งไว้จนเกิด Watchdog Timer Expiration เรียกขั้นตอนนี้ว่า “Kick”

หลักการทำงานเบื้องต้นของ Watchdog Timer – ที่มา WikiCommons

หาก Computer เกิด Error ที่ทำให้ตัวมันเองค้าง มันก็จะไม่สามารถส่งคำสั่ง Kick เพื่อไป Restart ตัว Watchdog Timer ได้ทำให้ Watchdog Timer นับจนถึงเวลาที่มันกำหนดจึงส่งคำสั่ง Watchdog Timer Expiration ไปรีเซต Computer ขึ้นมาใหม่นั่นเอง วิธีนี่เป็น Failsafe ที่ป้องกันไม่ให้ Computer ค้างหรือแฮงค์แบบตลอดกาลนั่นเอง และยังสามารถนำมาใช้ในการตรวจสอบว่า Computer ยังสามารถรับมือกับงานที่มันถูกให้สั่งให้ทำได้อยู่นั่นเอง เพราะ Computer อาจถูกสั่งให้ทำงานเยอะเกินไปจนมันไม่สามารถแบ่ง Process มาส่งคำสั่ง Kick ไป Reset Watchdog Timer ได้นั่นเอง

หากจะเปรียบเทียบให้เห็นภาพง่าย ๆ ก็คือ สมมุติว่าเรามีสุนัขตัวหนึ่งเฝ้าบ้านอยู่ (Watchdog Timer) สุนัขตัวนี้จะนั่งเฝ้าอยู่หน้าบ้านโดยทุก ๆ 60 นาทีหากเจ้าของ (Computer) ของมันไม่ออกมาหามัน (Kick Command) มันจะเห่า (Watchdog Timer Expiration) เพื่อให้เจ้าของออกมา (Computer Reset)

ระบบหลักการเดียวกันถูกใส่เข้าไปใน Ingenuity เพื่อคอยตรวจสอบว่า Flight Computer ของ Ingenuity ยังทำงานตามปกตินั่นเอง

แล้วทำไม Ingenuity จึงถูกเลื่อน

ระหว่างการทดสอบหมุนใบพัดที่ความเร็วสูงและเปลี่ยนโหมดการบินจาก Pre-flight ไปยัง Flight mode นั้น Flight Computer ของ Ingenuity ได้รับคำสั่ง Watchdog Timer Expiration จาก Watchdog Timer ทำให้ Flight Computer ของ Ingenuity ถูก Reset และไม่สามารถเปลี่ยนจาก Pre-flight Mode ไปยัง Flight Mode ได้นั่นเอง โดยทาง NASA เองไม่ได้ระบุว่าเหตุใด Watchdog Timer ของ Ingenuity Flight Computer จึงส่งคำสั่งดังกล่าวออกมา

แต่ก็มีหลายคำอธิบายที่เป็นไปได้อย่างเช่น Processing Load ของ Flight Computer ระหว่างการเปลี่ยนจาก Pre-flight mode ไปเป็น Flight mode ของ Ingenuity อาจกิน Processing Schedule ของ Computer ไปจนหมดทำให้ Flight Computer ไม่สามารถส่งคำสั่ง Kick ไปยัง Watchdog Timer ได้ทันเวลาในหนึ่ง Cycle ตัว Watchdog Timer จึงจัดการ Reset Flight Computer ซะเลย แต่ JPL ก็ได้บอกว่าได้ลองทดสอบบนโลกก่อนหน้านี้แล้วแต่ทุกอย่างโอเค

Ingenuity บนพื้นผิวของดาวอังคารในวันที่ 16 เมษายน 2021 ระหว่างที่ทีมวิศวกรกำลังดำเนินการ Update Software ให้กับ Flight Computer ของมัน ภาพจากกล้อง Mastcam-Z ของ Perseverance – ที่มา NASA/JPL-Caltech

อย่างไรก็ตามก็อาจเป็นไปได้ว่าบนดาวอังคารมี Parameters ที่ไม่เหมือนบนโลก โดยเฉพาะค่าต่าง ๆ ที่เซนเซอร์ของ Ingenuity จะสามารถวัดได้ ซึ่งค่าพวก (โดยเฉพาะอย่างยิ่ง หากโปรแกรมไม่ได้ถูกเขียนมาให้รับมือ) นี้อาจทำให้เกิด Interrupt ใน Flight Computer จนนำไปสู่การ Reset ของ Flight Computer โดย Watchdog Timer ได้

นำไปสู่อีกสมมติฐานหนึ่งก็คือ รังสีบนดาวอังคารอาจทำให้ Watchdog Timer เพี้ยนแล้วส่งคำสั่ง Reset ไปทั้ง ๆ ที่ Flight Computer อาจจะยังทำงานได้ตามปกติก็ได้เช่นกัน

สุดท้ายแล้ว NASA ก็ได้บอกว่า JPL ได้เจอต้นเหตุของปัญหาดังกล่าวแล้วและกำลังดำเนินการ Update Software ให้กับ Ingenuity เพื่อแก้ปัญหาดังกล่าวอยู่ ซึ่งการ Update Software ของ Computer ใด ๆ ที่อยู่นอกอวกาศก็จะต้องทำอย่างระมัดระวังและรอบคอบเช่นกัน เพราะเราจะให้เอเลี่ยนไปจิ้มปุ่ม Reset บนตัวยานไม่ได้ Software ของยานอวกาศทุก ๆ ลำจึงมีระบบ Fail-safe ต่าง ๆ ที่เกิดมาเพื่อ Redundancy เพื่อป้องกันไม่ให้ Computer ของยานเป็น “Brick” ซึ่งเป็นศัพท์ที่ใช้ใน Computer อย่างเช่นในโทรศัพท์ หากเราไปทำอะไรกับ Software แปลก ๆ โดยเฉพาะที่ฐานของ Software Stack อย่าง OS มันก็อาจเจ๊งแบบซ่อมไม่ได้ (ด้วยตัวเอง) ทำให้มันกลายเป็นเหมือนก้อนอิฐโง่ ๆ ได้นั่นเอง

ภาพของยาน Ingenuity จาก Mastcam-Z ของ Perseverance – ที่มา NASA/JPL-Caltech

อย่างไรก็ตาม Brick กับอุปกรณ์บนโลกยังสามารถซ่อมได้อยู่ แต่อย่างที่ได้บอกไปว่าหาก Computer บนยานอวกาศมัน Brick ขึ้นมามันก็จะกลายเป็นก้อนอิฐโง่ ๆ อย่างแท้จริง เพราะเราไม่มีเบอร์โทรไปหาเอเลี่ยนแล้วไปบอกมันว่าเห้ยนาย ไป Restart Computer Ingenuity ให้หน่อยดิ

ยิ่งไปกว่านั้นที่การ Update Software มันนานเนื่องจาก Software ของ Ingenuity มันถูกเขียนมาเมื่อ 2 ปีที่แล้วและมันก็อยู่แบบนั้นมา 2 ปีแล้วตั้งแต่เดินทางจากโลกไปดาวอังคาร โปรแกรมเมอร์ทุกคนคงรู้ดีว่าการงัดโค้ดที่เขียนเมื่อเดือนก่อนมาแก้ว่ายากแล้ว นี่โค้ดเมื่อ 2 ปีก่อนแถมเป็นโค้ดยานอวกาศที่ยาวโคตร ๆ เรียกได้ว่า Software Engineer ของ Ingenuity จะต้องมานั่งระลึกชาติว่าเขียนอะไรลงไปกันเลยทีเดียว และการ Implement นั่นก็จะยิ่งยุ่งยากเพราะ Software ที่เขียนใหม่ก็จะต้องผ่านการทดสอบกับยานจำลองบนโลกก่อนที่จะถูกส่งไป Ingenuity อีกนั่นเอง และขั้นตอนการส่งก็จะใช้เวลาเช่นกัน ด้วยธรรมชาติของการส่งข้อมูลผ่าน Deep Space Network ซึ่งต้องผ่าน Relay หลายขั้นตอนกว่าจะไปถึง Ingenuity

ในวันที่ 19 เมษายน 2021 Ingenuity ขึ้นบินบนดาวอังคารเป็นครั้งแรกสำเร็จ

เรียบเรียงโดย ทีมงาน SPACETH.CO

อ้างอิง

NASA to Attempt First Controlled Flight on Mars As Soon As Monday

Working the Challenge: Two Paths to First Flight on Mars

Work Progresses Toward Ingenuity’s First Flight on Mars





MORE