เมื่อวันที่ 19 เมษายนที่ผ่านมา เฮลิคอปเตอร์ Ingenuity ได้บินขึ้นสู่ท้องฟ้าจากพื้นผิวของดาวอังคารครั้งแรก ซึ่งนับเป็นอากาศยานลำแรกของมนุษย์ที่ได้ขึ้นบินบนดวงดาวดวงอื่นนอกจากโลก และจะเป็นจุดเริ่มต้นที่สำคัญอย่างมากในการพัฒนาอากาศยานประเภทต่าง ๆ ไปยังดาวดาวดาวอื่นเช่นนี้
นอกจากตัวฮาร์ดแวร์ที่ถูกสร้างขึ้นอย่างพิถีพิถันด้วยฝีมือของเจ้าหน้าที่จาก JPL หลายพันชีวิต อีกส่วนประกอบที่ขาดไปไม่ได้เลยก็คือตัวซอฟต์แวร์ที่ทำการควบคุมให้เฮลิคอปเตอร์ลำนี้สามารถบินขึ้นได้อย่างแม่นยำและปลอดภัย (ไม่ระเบิดหรือตกไปซะก่อน) ที่น่าสนใจก็คือ ตัวซอฟต์แวร์ของ Ingenuity นี้ถูกพัฒนาขึ้นจากโค้ด open-source ของ NASA (และ JPL) ชื่อ F’ (หรือ F Prime) ซึ่งเป็นความพยายามของ JPL เองที่จะพัฒนา Framework ในการควบคุม Spaceflight ที่สามารถนำมาใช้ประโยชน์ซ้ำได้ (จากที่ปกติโปรแกรมของ Spaceflight จะถูกเขียนขึ้นมาเพื่อใช้กับเที่ยวบินเพียงเที่ยวบินเดียวเท่านั้น)
ว่าด้วย F’
คุณ Timothy Canham ซึ่งเป็น Operations Lead ของโปรเจกต์ Ingenuity ได้ให้สัมภาษณ์ไว้ในบล็อคของ Github ไว้ โดยมีใจความว่า เหตุผลหลักที่โค้ดของ Spaceflight ก่อนสามารถใช้งานได้แบบงานต่อนานคือการที่คนเขียนออกแบบโค้ดออกมาเป็นแบบก้อนใหญ่ ๆ ที่มีความเจาะจงกับตัวอุปกรณ์ที่ใช้บนยาน (เช่นกล้องแต่ละยี่ห้อก็จะมีวิธีการควบคุมที่แตกต่างกันออกไป)
นั่นทำให้การเขียนโค้ดของ F’ มีลักษณะเป็นโมดูลเล็ก ๆ ที่สามารถนำมาประกอบกันได้ในแบบต่าง ๆ มากกว่าการจะเป็นโค้ดก้อนใหญ่ก้อนเดียว ซึ่งการออกแบบแบบนี้ทำให้เมื่อถ้าในภารกิจหน้า ๆ เกิด Objective ใหม่ ๆ ที่ไม่เคยเขียนตัวควบคุมไว้ในโมดูลเก่า การพัฒนาโค้ดที่จะใช้งานก็จะสามารถทำได้ง่ายขึ้นจากการเพียงแค่สร้างโมดูลใหม่ไปประกอบกับก้อนเก่า แทนที่จะแก้ก้อนใหญ่ ๆ ทั้งก้อน
- open-source คือชุดข้อมูล (ส่วนใหญ่จะหมายถึงโค้ด) ที่เปิดให้เป็นสาธารณะ ซึ่งอาจให้ผู้อื่นทำการแก้ไข พัฒนาต่อยอด หรือนำไปใช้งานได้
- GIthub เป็น Hosting Service สำหรับเก็บโค้ดต่าง ๆ ที่โครงสร้างถูกวางมาจากระบบ Version Control เพื่อทำให้สามารถจัดการกับเวอร์ชั่นของโค้ดได้ง่าย เช่นย้อนกลับไปเป็นเวอร์ชั่นเก่า หรือประกอบโค้ดจากหลาย ๆ ส่วน และพัฒนาโปรแกรมร่วมกับคนอื่นได้ง่ายขึ้น) ชื่อ Git – อาจจะลองจินตนาการว่าเป็น Google Drive ที่ออกแบบไว้ใช้สำหรับเก็บโค้ดโดยเฉพาะ และเป็นเว็บที่ NASA ใช้เก็บโค้ดของ F’
อย่างไรก็ตาม คุณ Canham ก็ได้เสริมว่า JPL ไม่ได้ตั้งเป้าหมายที่จะทำให้ F’ เป็นเหมือนโค้ดสำเร็จรูปที่นำไปใช้ได้ทันที แต่เป็นเหมือนตัว Starter-kit หรือ Framework สำหรับการพัฒนาในขั้นสูงต่อ ๆ ไปมากกว่า เนื่องจากลักษณะของโค้ดที่ถูกเขียนขึ้นใน F’ มีลักษณะเป็นโค้ดระดับรากฐาน เช่นสำหรับการติดต่อกับโมดูลต่าง ๆ แต่เมื่อมี task ที่เฉพาะเจาะจงกับยานหรืออุปกรณ์ที่แตกต่างกันแต่ละตัว ก็จำเป็นที่จะต้องมีการเขียนโค้ดเพิ่มเติม on top ของ F’ ที่เป็นเหมือน Starter-kit นั่นเอง
จากบทสัมภาษณ์ของ JPL แท้จริงแล้วโปรเจกต์ F’ ในตอนแรกเริ่มถูกสร้างขึ้นมาเพื่อใช้เป็น internal-use เท่านั้น ไม่ได้มีแผนที่จะเปิด open-source ตั้งแต่แรก แต่หลังจากที่พัฒนามันมาได้สักระยะ ทางทีมก็ค้นพบว่ามันไม่ได้มีประโยชน์เพียงแค่สำหรับการทำโปรเจกต์ในอนาคตของทีมเท่านั้น แต่ตัวโค้ดนี้สามารถนำไปประยุกต์ใช้สำหรับอุปกรณ์สำหรับงานด้านอวกาศอื่น ๆ อย่างเช่น CubeSat ได้อีก ซึ่งก็ทำให้หน่วยงานอื่น ๆ สนใจมาใช้โค้ดชุดนี้ด้วย
ทีม JPL จึงตัดสินใจปรับปรุง และเปิดโค้ดของ F’ เป็น open-source ในปี 2017 เพื่อให้หน่วยงานอื่น ๆ สามารถนำไปใช้ได้ง่ายขึ้น โดยไม่ต้องดำเนินการติดต่อผ่านทีม JPL ไปซะทุกครั้ง โดย F’ ได้ถูกปล่อยออกมาภายใต้ License ชื่อ Apache 2.0 ที่มีเนื้อหาสำคัญคือ สามารถนำไปใช้กับ: การใช้งานเชิงธุรกิจ การใช้งานส่วนตัว การดัดแปลง การแจกจ่าย (Distribution) แต่มีข้อจำกัดในด้านการใช้งานเครื่องหมายการค้า (Trademark) และไม่รับรองความเสียหายที่อาจเกิดขึ้นจากการใช้งาน
ว่าด้วย Ingenuity
แม้ F’ จะดูเหมือนเป็นพระเอกของงานนี้ แต่หากกล่าวถึงมันเพียงอย่างเดียวก็คงจะขาดอีกหลากหลายประเด็นที่น่าสนใจเกี่ยวกับงานวิศวกรรมของ Ingenuity นี้ ย้อนกลับไปก่อนบทสัมภาษณ์ของ Github คุณ Canham เคยได้ให้บทสัมภาษณ์ที่น่าสนใจไว้กับ IEEE Spectrum อีกชิ้นหนึ่ง
ซอฟต์แวร์ของ Ingenuity (รวมถึง framwork F’) ถูกรันบนระบบปฏิบัติการ Linux บนชิป Snapdragon 801 ชิปสถาปัตยกรรม ARM ที่ 2.2Ghz จาก Qualcomm ที่ปล่อยออกมาเมื่อปี 2014 (ถึงจะไม่ได้เป็นชิปใหม่ล่าสุด แต่ก็เพียงพอกับความต้องการของวิศวกร NASA ในการทดสอบ Ingenuity แล้ว อย่าง Perseverance ก็ยังรันบนชิป PowerPC เมื่อ 20 ปีก่อนอยู่ เนื่องจากถึงแม้จะไม่เร็วมาก แต่ก็ทำงานตามความต้องการได้ และทนในระดับที่วิศวกรมั่นใจได้ว่าไม่น่าพังง่าย ๆ หน้างานบนดาวอังคาร) บล็อคของ Github ยังได้ระบุว่า ถึงแม้ซอฟต์แวร์ของ Ingenuity ส่วนใหญ่จะถูกสร้างขึ้นด้วย C++ บน F’ แต่ Python เป็นภาษาที่มีบทบาทอย่างมากในการสร้าง Ecosystem ของโปรเจกต์ตั้งแต่ของส่วน Ground Control การทำ Flight Modeling ไปจนถึงการประมวลผลข้อมูล
ซึ่งทาง JPL ก็ได้ให้ รายชื่อของ open-source ที่ถูกใช้ในการพัฒนาโปรเจกต์ Ingenuity กับ Github ไว้ โดยมีจำนวนรวมเกือบ 70 ชิ้นด้วยกัน ที่น่าสนใจนำมาพูดถึงเช่น Linux ที่ถูกใช้เป็น OS ของตัวยาน cpython หรือภาษา Python ซึ่งก็มีการดึง library ยอดฮิตของ Python อย่าง NumPy SciPy SciMath MathPlotLib มาใช้ด้วย OpenCV โค้ดสำหรับทำงานด้าน Computer Vision, Flask ที่เป็น Framework สำหรับการสร้าง Web Application, Elasticsearch, Curl รวมถึง Frontend Framework อย่าง Vue และ Bootstrap ที่คาดว่าไว้ใช้สำหรับสร้าง Web Application ให้ Ground ควบคุมตัวยานอีกทีหนึ่ง
ทั้งนี้ทาง Github ก็ได้ให้ Badge ติดไว้ที่หน้าโปรไฟล์ของ User ที่มีส่วนร่วมในการ Contribute ให้กับ open-source ตามลิสต์ดังกล่าวอีกด้วย
โครงการ The ReadME ได้ระบุไว้ว่า เราต้องการที่จะสร้างความมั่นใจว่า [ผู้ร่วมพัฒนาโค้ดที่ใช้ใน Ingenuity] ทุกคนจะถูกจดจำไว้ถึงการมีส่วนร่วมกับความสำเร็จที่น่าอัศจรรย์ของมนุษย์ครั้งนี้
สุดท้ายแล้ว คุณ Canham ได้กล่าวเอาไว้ในบทสัมภาษณ์ของ IEEE Spectrum ว่า มันเป็นชัยชนะของ open-source เพราะว่าเรากำลังบิน [Ingenuity] ด้วยระบบปฏิบัติการณ์และซอฟต์แวร์ที่เป็น open-source และอะไหล่ที่สามารถซื้อได้จากร้านค้าทั่วไปถ้าคุณต้องการจะสร้างยานเองบ้างเองในสักวัน นี่เป็นสิ่งใหม่ของ JPL เพราะพวกเขาค่อนข้างชอบอะไรที่ปลอดภัยมาก ๆ และได้รับการทดสอบแล้ว แต่อย่างไรก็ตามทุกคนก็ตื่นเต้นกันมากกับการสร้างมัน [Ingenuity ด้วยวิธีการนี้] ขึ้นมา
นับว่าเป็นแนวทางที่น่าสนใจมากของ JPL และ NASA ดังที่คุณ Canham ได้กล่าวเอาไว้ถึงการเปิด open-source framework ที่ใช้ในการพัฒนาอวกาศและการใช้อะไหล่ที่หาได้ทั่วไป มันทำให้ผู้คนสามารถเข้าถึงเทคโนโลยีอวกาศได้มากยิ่งขึ้นกว่าเดิม และเป็นไปได้สูงว่าเราจะเห็นงานอวกาศที่เกิดขึ้นจากภาคเอกชนรวมำปถึงประชาชนทั่วไปมากยิ่งขึ้นกว่าเดิม ซึ่งก็เป็นการปูทางที่นำไปสู่การ Democratize อวกาศในอนาคตได้อย่างดีเยี่ยมวิธีหนึ่ง
เรียบเรียงโดย ทีมงาน Spaceth.co