Douglas Hurley dan Bob Behnken dalam kapsul Endeavour
SpaceX sedang mengembangkan proyek dengan cepat ke beberapa arah. Tahap pertama roket Falcon 9, setelah meluncurkan muatan ke luar angkasa, kembali ke Bumi untuk digunakan kembali, serupa dengan pengujian prototipe Starship. Crew Dragon mengantarkan kru ke ISS, truk Dragon generasi kedua sedang dipersiapkan. Sekelompok satelit komunikasi Starlink menghasilkan lebih dari seratus megabit per detik untuk pengguna uji beta terbuka yang sebenarnya.
Semua proyek ini memerlukan otomatisasi tingkat tinggi, yang merupakan tanggung jawab tim pengembangan perangkat lunak. Pakar SpaceX membicarakannya dengan senang hati: tidak hanya penting untuk menarik pelamar untuk posisi terbuka, tetapi juga menarik bagi orang lain.
Kompleksitas ruang
Pada 14 Desember 1966, dalam uji peluncuran Soyuz tanpa awak, kapal 7K-OK No. 1 mendarat di landasan peluncuran: "korek api" di salah satu mesin tidak berfungsi. Otomatisasi menghentikan urutan peluncuran sebelum roket dapat terpisah dari permukaan landasan peluncuran. Personel mendekati roket untuk memeriksanya dan menilai kemungkinan peluncuran kembali. Sistem penyelamatan darurat (SAS) Soyuz tiba-tiba berbunyi. Mesin bubuknya dengan hati-hati membawa kapsul turun ke ketinggian 700 meter dan memberikannya kekuatan parasut, tetapi juga menyalakan cairan mudah terbakar yang tumpah dari sistem kontrol termal kompartemen instrumen, yang tetap ada di Bumi. Bagian atas roket menyala. Seperti kenang Chertok, ingatan akan bencana Nedelinmemaksa orang untuk meninggalkan landasan peluncuran sambil berlari. Satu orang meninggal.
Penjelasan tentang alasan aktivasi SAS pada roket stasioner dimulai bahkan sebelum landasan peluncuran dipadamkan. Selama penerbangan, roket secara konstan membandingkan penyimpangan sistem referensi inersia dari lintasan yang dihitung. Jika perbedaannya terlalu besar, maka SAS akan terpicu. Roket yang berdiri di landasan peluncuran masih bergerak: ia berputar dengan bumi, dan giroskop "terikat" ke bintang-bintang. Saat merancang sistem darurat, Bumi dianggap tidak bergerak. Dalam 27 menit , sekitar 8 derajat " berlari ", dan sinyal pengapian diterima pada 32 muatan piroteknik SAS.
"Bug" ini diabaikan bahkan tanpa kerumitan komputer modern. Semua sistem penting dari pesawat ruang angkasa mana pun sekarang dikendalikan oleh elektronik. Ini bahkan bukan " tanda hubung termahal dalam sejarah " dari penyelidikan Mariner 1 tahun 1962: dalam sistem modern, ruang untuk kesalahan berjumlah puluhan, ratusan ribu baris kode. Kegagalan perangkat lunak yang nyata menurunkan kualitas kerja atau bahkan menyebabkan hilangnya perangkat.
Tampaknya kematangan arah dan budaya pengembangan kedirgantaraan telah meniadakan kesalahan "kekanak-kanakan". Tapi bukan ini masalahnya. Hingga saat ini, roket meledak dengan kesalahan konversi variabel , penjelajah hang dengan inversi prioritas , dan probe orbitaljatuh karena nilai dalam sistem pengukuran yang salah . Bahkan Starliner, pesaing langsung Crew Dragon, tidak berhasil masuk ke ISS karena kualitas perangkat lunaknya.
SpaceX memposting video ini dengan kecintaan pada budaya trial and error
. Contoh SpaceX penasaran dengan latar belakang ini. Perusahaan yang relatif muda dengan pencapaian penting ini tidak akan terjadi tanpa perangkat lunak yang dengan cepat dikembangkan dan diuji oleh tim kecil.
Falcon pada x86
Bukan hanya keandalan kode yang menyebabkan masalah - ruang tidak aman bahkan untuk perangkat keras. Di Bumi, kita terlindungi dari radiasi oleh medan magnet dan atmosfer. Di luar angkasa, aliran partikel berenergi tinggi akan dengan mudah mengubah satu menjadi nol dalam sel memori, atau bahkan menonaktifkan komponen sama sekali. Mikroelektronika ruang angkasa setidaknya memerlukan sertifikasi khusus, dan terkadang menggunakan sirkuit mikro khusus, misalnya, teknologi semikonduktor silikon-on-safir .
SpaceX mengabaikan sikap mual terhadap peralatan luar angkasa. Sejak awal , perusahaan telah menonjol karena kecintaannya pada komponen yang relatif murah. Misalnya, pada tahun 2005, jurnalis melaporkan bahwa komputer dalam roket Falcon 1 berkomunikasi melalui kabel Ethernet biasa.
Seperti yang dikatakan para insinyur SpaceX ( 1 , 2 ) di konferensi GDC 2015, pada roket Falcon 9, tiga komputer inti ganda dari arsitektur x86 dipasang di setiap tahap. Di setiap komputer, di masing-masing dari dua inti, sistem operasi dengan perangkat lunak penerbangan berjalan secara independen satu sama lain. Roket itu juga berisi mikrokontroler PowerPC. Mereka mengontrol berbagai aktuator: motor, kemudi kisi, dan sebagainya.
Semua peralatan ini diintegrasikan ke dalam sistem hakim-aktor.
- Hampir semuanya diekspresikan dalam bentuk loop kontrol, yang tradisional untuk TAU: berkali-kali data kedua diterima dari sensor, keputusan dibuat pada mereka dan keadaan sistem yang lalu, komputer mengeluarkan sinyal ke perangkat.
- . . , .
- . , , . , .
- Falcon 9 .
Arsitektur ini menyederhanakan pengujian di Bumi dan memberikan tingkat ketahanan yang diperlukan terhadap radiasi. Tidak perlu sirkuit mikro khusus yang mahal, yang, terlebih lagi, mungkin memiliki arsitektur yang hanya dikenal oleh sejumlah kecil pengembang di pasar tenaga kerja.
Komputer kontrol diuji di atas apa yang disebut meja roket bangku, "roket di atas meja". "Otak" Falcon 9 diletakkan di atas permukaan datar dan terhubung saat mereka bekerja dalam roket sungguhan. Kemudian para ahli meluncurkan penerbangan simulasi penuh, memantau perilaku sistem, kinerjanya, dan kemungkinan kegagalan. Selama simulasi, salah satu komputer penerbangan dapat dimatikan untuk memahami bagaimana roket akan merespons hal ini.
Selain itu, seluruh sistem kontrol dapat divirtualisasikan oleh satu stasiun kerja, yang memungkinkan dilakukannya pengujian otomatis besar-besaran dan verifikasi kode untuk penerbangan hanya dalam satu hari.
Sistem triple-redundan serupa dipasang di pesawat ruang angkasa Dragon, seperti yang dikatakan di GDC 2015. Pada tanggapan tahun 2020, karyawan secara samar-samar mengisyaratkan bahwa pesawat ruang angkasa Crew Dragon dikendalikan oleh prosesor quad-core terpisah, sebanding dalam kekuatan pemrosesan dengan smartphone lima tahun lalu.
Secara umum, SpaceX tidak melaporkan model prosesor yang tepat. Mungkin pengontrol PowerPC tahan radiasi RAD750terbukti baik dalam penjelajah dan probe, dan prosesor x86 adalah solusi tertanam industri dengan pembangkit panas rendah dan kinerja sederhana.
Namun ruang tidak terlalu dibutuhkan. ISS sendiri dikendalikan oleh prosesor Intel 80386SX-20 dengan koprosesor matematika 80387. Bahkan pada saat peluncuran stasiun, itu adalah produk sepuluh tahun yang lalu.
Ke luar angkasa di browser
Pada 30 Mei, SpaceX meluncurkan manusia ke orbit untuk pertama kalinya. Akhirnya, opsi kedua untuk mengirim awak ke Stasiun Luar Angkasa Internasional muncul. Sejak 2011, satu-satunya solusi untuk ini adalah Soyuz Rusia.
Penonton siaran online memperhatikan betapa kapal Crew Dragon tampak lebih besar dari kapsul Soyuz tiga tempat duduk. Dengan volume internal yang sama, pesawat luar angkasa SpaceX memiliki diameter 4 meter dibandingkan dengan Union 2,2 meter. Awalnya, SpaceX mengiklankan pesawat luar angkasa itu sebagai pesawat dengan tujuh tempat duduk, tetapi NASA akan meluncurkan empat astronot pada Naga berawak.
Selain perbedaan fisik, yang paling mencolok adalah cara orang mengoperasikan kapalnya. "Soyuz" tidak menyimpang dari tradisi teknik kedirgantaraan: kru menekan sakelar dan tombol sakelar, dan papan sinyal menampilkan informasi. Cru Dragon melakukan segalanya dengan caranya sendiri. Untuk pesawat luar angkasa SpaceX yang futuristik, elemen utamanya adalah layar sentuh.
Layar Crew Dragon diberdayakan oleh mesin browser Chromium, yaitu antarmuka dibuat dalam HTML menggunakan komponen web, JavaScript, dan CSS. Mereka menulis perpustakaan reaktif mereka sendiri secara internal. Pengembangan antarmuka mengikuti metodologi Agile dengan bar cakupan yang tinggi dengan pengujian unit.
Tangkapan layar dari simulator dok browser.
Sebelum peluncuran berawak pertama, SpaceX dipublikasikansimulator berbasis browser Crew Dragon merapat ke ISS. Simulator dimulai sebagai hobi bagi dua pengembang perusahaan. Kemudian mereka memutuskan untuk menyelesaikannya dan menerbitkannya untuk umum.
Simulator tetap menjadi simulator: tidak ada hubungannya dengan kode yang sebenarnya. Meskipun kedua produk tersebut ditulis oleh tim yang sama, keduanya adalah proyek yang sangat berbeda.
Semua ini tidak berarti bahwa pesawat luar angkasa itu terbang dalam JavaScript. Chromium di kapal hanya digunakan sebagai alat rendering untuk elemen UI. Antarmuka perangkat lunak penerbangan memiliki semua redundansi yang diperlukan dan berada di luar layar, kata pejabat SpaceX. Backend ditulis dalam C / C ++.
Mesin browser biasa di pesawat luar angkasa adalah keputusan yang berani. Dalam tanggapannya, karyawan SpaceX meyakinkanbahwa terlepas dari tumpukan teknologi, standar pengembangannya sama, prinsip penulisan perangkat lunak yang andal dan efisien tidak berubah, dan untuk memahami kemungkinan kesalahan, pengujian dilakukan dalam berbagai kondisi. Jika terjadi penolakan, ada pemberitahuan dan prosedur yang sesuai. Akhirnya, ratusan jam pelatihan astronot tentang simulator penerbangan di Bumi ditambahkan ke pengujian.
Untuk berjaga-jaga, tombol fisik terletak di bawah layar sentuh. Mereka dirancang untuk situasi kritis seperti kebakaran di kokpit kapal. Ada juga tombol fisik "mulai" dan "batalkan" untuk sebagian besar operasi yang dapat dipanggil dari tampilan. NASA telah mengembangkan persyaratan khusus untuk layar itu sendiri, dan solusi SpaceX cocok dengan mereka .
Karyawan SpaceX juga menjelaskanbagaimana mereka sampai pada solusi yang tampaknya tidak konvensional untuk industri dirgantara. Proyek ini dimulai sebagai prototipe untuk memamerkan desain sampel untuk NASA. Kemudian prototipe berhasil diluncurkan pada perangkat keras penerbangan nyata. Para pengembang menyukai fungsi-fungsi modern yang hadir di mesin browser, dan ada cukup banyak pengembang untuk itu di pasaran.
Diagram menunjukkan bagaimana kode JavaScript diisolasi dari sistem kontrol utama teleskop James Webb.
Selain pengalaman SpaceX, tidak ada yang keterlaluan dalam memilih JavaScript untuk bidang luar angkasa. Dalam kasus Teleskop Luar Angkasa James Webb, kode JS akan berjalan langsung di kendaraan. Ini tidak akan secara langsung mengontrol, misalnya, motor, itu hanya akan memanggil program lain.
Mengapa tidak ada suara di luar angkasa?
Karena roket terbang di Linux.
Perangkat lunak Falcon 9 diperbarui secara berkala. Hampir setiap peluncuran roket terbang dengan kode yang sedikit diperbarui. Meskipun pembaruan sangat sering terjadi, "basis" untuk setiap peluncuran khusus tidak diadaptasi secara khusus. Ini dilakukan oleh departemen SpaceX lainnya, yang membuat penyesuaian sendiri pada konfigurasi penerbangan: mereka mengatur variabel angin pada hari peluncuran, mengubah batas toleransi kesalahan, dan sebagainya.
Crew Dragon dikendalikan oleh sistem operasi Linux dengan patch PREEMPT_RT untuk operasi real-time. SpaceX tidak menggunakanbeberapa distribusi pihak ketiga standar. Perusahaan telah membangun kernelnya sendiri dan utilitas terkait. Selama tahun-tahun pengembangan, kernel hampir tidak pernah dimodifikasi. Hanya ada sedikit perubahan dan beberapa driver khusus untuk bekerja dengan perangkat keras.
Di antara proyek-proyek sumber terbuka yang digunakan adalah Das U-Boot sistem operasi loader , yang BuildRoot sistem distribusi membangun , perpustakaan C ++ standar, dan Musl C library . Tetapi secara umum, SpaceX tidak menggunakan begitu banyak perangkat lunak yang ditulis di luar perusahaan dan hanya memilih proyek sumber terbuka dengan kualitas setinggi mungkin.
Di SpaceX, tes ditulis dengan Python, diuji di LabVIEW, dan mereka terbangdi C ++. Saat menulis dalam C ++, mereka menggunakan teknik bahasa berorientasi objek, meskipun mereka lebih suka membuat semuanya sesederhana mungkin.
SpaceX pada level kode memberikan kemungkinan operasi normal dengan hilangnya mesin penopang atau shunting dengan algoritma kompensasi. Mesin negara berisi semua jenis keadaan darurat. Misalnya, negara mesin kapal "Naga" meletakkan transisi otonom dari dekat ke stasiun untuk peduli jika ada beberapa kegagalan.
SpaceX mengatakan tidak ada "AI" di Dragon (mungkin berarti algoritme jaringan saraf), meskipun beberapa jenis visi mesin digunakan untuk navigasi. Pengembang menjelaskanItu tidak menutup kemungkinan penggunaan program pembelajaran mesin di masa mendatang.
Starlink
Proyek Internet Satelit Starlink bahkan lebih banyak lagi komputer. Dalam setiap peluncuran, roket Falcon 9 meluncurkan 60 satelit ke orbit, yang memuat lebih dari 4.000 komputer Linux. SpaceX telah menempatkan puluhan ribu node Linux dan lebih dari seribu mikrokontroler ke orbit rendah Bumi.
Animasi tersebut menunjukkan bagaimana panel surya satelit
digunakan Enam bulan lalu, Starlink menghasilkan sekitar 5 TB telemetri per hari, dan konstelasi semakin besar. Jumlah satelit bertambah, dan pekerjaan sedang dilakukan untuk mengurangi jumlah data yang dikirim. Untuk mengurangi jumlah data yang disimpan di papan dan dikirim ke Earth, beberapa masalah didiagnosis di perangkat itu sendiri.
Setiap satelit Starlink didukung oleh motor efek Hall. Karena itu, satelit mengambil posisi yang diinginkan dalam gerombolan dan menghindari tabrakan dengan puing-puing ruang angkasa. Tetapi manuver ini masih harus dilakukan dengan benar, dan departemen komando konstelasi satelit terbesar sangat kecil.
Oleh karena itu, para programmer dibuat bingungbagaimana menghindari tabrakan dan mengontrol posisi satelit secara otomatis. Dalam sistem yang dikembangkan, satelit ditanya jendela mana yang akan dimasuki - dan mereka pergi ke sana secara mandiri. Selain itu, beberapa kali dalam sehari satelit menerima data dari Bumi saat mendekati objek lain di orbit. Kemudian satelit secara mandiri menghitung manuver yang diperlukan dan menjauh dari puing-puing luar angkasa.
Duplikasi sistem internal dalam kasus satelit Starlink hanya dilakukan sampai batas tertentu. Karena jumlah total rekan, regu tidak akan menyadari kehilangan seorang prajurit. Jika satu node gagal, pengguna di Earth akan terhubung ke satelit lain yang terlihat di langit.
Selama pengembangan dan pengujian, setiap satelit armada Starlink tidak dianggap sebagai satelit terpisah, tetapi sebagai server di pusat data. Beberapa tugas penting: manajemen, pembaruan perangkat lunak, daya, dan keamanan. Tes terpisah ditulis untuk aplikasi ini. Banyak fitur lain yang memungkinkan pendekatan yang lebih fleksibel, mirip dengan pengembangan layanan web. Oleh karena itu, tim menerapkan uji coba ke sejumlah kecil satelit dan membandingkan bagaimana perilakunya dibandingkan dengan sisa konstelasi. Lebih lanjut, jika masalah muncul, perangkat lunak diperbaiki atau dikembalikan ke versi sebelumnya.
Proses pengujian ini diperlukan untuk memperbaiki sistem dengan cepat. Pengembang SpaceX mengklaim bahwa sering kali mungkin untuk menemukan dan memperbaiki kegagalan yang tidak mungkin diprediksi di Bumi.
Satelit Starlink membocorkan data pengguna melaluinya, dan peretasan komputer mengancam untuk disadap. SpaceX telah menyediakan untuk ini dan menambahkan enkripsi ujung ke ujung. Selain itu, setiap komponen - satelit, gateway, dan terminal pengguna - hanya mengeksekusi kode yang ditandatangani, sehingga penyerang tidak mendaftar di sistem untuk waktu yang lama.
Pengembangan budaya
Sebagian besar insinyur perangkat lunak SpaceX bekerja di Seattle, Washington, dan Hawthorne, California, dan beberapa dari kantor di Texas.
Tim Pengembangan Perangkat Lunak SpaceX, 2013 Industri
kedirgantaraan tradisional kewalahan oleh kecepatan pengembangan dan ukuran divisi SpaceX. Seperti pada 2019 ( podcast , tandai 44:00), kepala perangkat lunak Angkatan Udara AS, Nicholas Chillan, mengatakan bahwa di mana lembaga pemerintah membutuhkan setidaknya 2.500 programmer, SpaceX mempekerjakan 50. Pada saat yang sama, tim pengembangan menulis perangkat lunak untuk sembilan mesin yang berbeda dan memeriksa kode dalam 24 jam.
SpaceX mencoba menarik pengembang dari industri game. Di GDC 2015, perwakilan perusahaan mengatakan bahwa mereka yang memiliki gelar ilmu komputer tidak memiliki keterampilan manajemen memori. Tanpa diduga, kecepatan kerja dan metode pengoptimalan pengembang game cocok untuk ruang. Sebagai Elon Musk mengatakan , dibandingkan dengan MMO, docking dua kapal sederhana SD.
Sebagai bagian dari AMA di Reddit pada tahun 2013, karyawan berbicara tentang struktur departemen pengembangan perangkat lunak.
- 7 35 . : Falcon 9, Grasshopper Dragon. , , . .
- SpaceX. β - . , , , . , SpaceX . β - : C#, MVC4, EF, SQL; Javascript, Knockout, Handlebars, LESS; REST API, Β«super sexyΒ».
- 2013 9 , . , . .
- . . β .
Perusahaan terus-menerus mempekerjakan pengembang dan insinyur, dan tidak setiap posisi membutuhkan pendidikan khusus. Ada yang banyak aksen berbeda di kantor SpaceX , termasuk dari ruang dari bekas Uni Soviet. Perusahaan tidak hanya dapat mempekerjakan pemegang paspor Amerika, meskipun ada batasan pada rezim kontrol ekspor untuk teknologi militer . Untuk dipekerjakan, orang asing akan membutuhkan izin tinggal - kartu hijau AS. Butuh beberapa tahun untuk mendapatkannya dari awal. Jika sudah ada yang "hijau", maka pertanyaannya hanya pada kemampuan menunjukkan tingkat kualifikasi pada saat wawancara.
CEO dan CTO SpaceX Elon Musk dikenal karena ketidaksukaannya pada 40 jam kerja setiap minggu. Dia telah berulang kali menyatakanyang bekerja 80-120 jam seminggu. Apa itu pop, begitu juga paroki. Keluhan umum tentang Glassdoor tentang SpaceX adalah keseimbangan kehidupan dan pekerjaan yang buruk. Dalam testimoni anonim, karyawan dan trainee berbicara tentang kelelahan yang sering terjadi dan shift 12 jam yang telah menjadi norma .