2020. 6. 16. 22:24ㆍSPACECHILD
핫하고 핫한 스페이스X(SpaceX)
스페이스X의 소프트웨어 팀이 지난 6월 7일, reddit에서 AMA(Ask Me Anything)을 진행했습니다.
이 팀은 지난 미국 땅에서 미국의 로켓으로 미국의 우주인을 ISS로 보내는 Crew Demo-2 미션에 사용된, 터치스크린 소프트웨어와 이제는 화물 뿐만 아니라 사람도 우주로 보내는 우주선, Dragon의 소프트웨어를 개발한 팀입니다.
-
Jeff Dexter - I run Flight Software and Cybersecurity at SpaceX
-
Josh Sulkin - I am the software design lead for Crew Dragon
-
Wendy Shimata - I manage the Dragon software team and worked fault tolerance and safety on Dragon
-
John Dietrick - I lead the software development effort for Demo-2
-
Sofian Hnaide - I worked on the Crew Displays software for Demo-2
-
Matt Monson - I used to work on Dragon, and now lead Starlink software
SpaceX가 사용하고 있는 운영체제와 프로그래밍 언어는 뭘까?
아래는 레딧의 질의응답 일부를 편집한 것입니다.
Q. What is the most used programming language for developing the F9 and Dragon software? Is it C or C++?
(팔콘9 로켓이나 우주선 Dragon 소프트웨어에서 제일 많이 쓰인 프로그래밍 언어는 뭔가? C나 C++ 인가??)
A. All of the application-level autonomous software is written in C++. We generally use object oriented programming techniques from C++, although we like to keep things as simple as possible. We do use open source libraries, primarily the standard C++ library, plus some others. However, we limit our use of open source libraries to only extremely high quality ones, and often will opt to develop our own libraries when it is feasible so that we can control the code quality ourselves.
(어플리케이션 레벨의 모든 자율 소프트웨어는 C++로 짰다. 일반적으로 C++의 객체지향 프로그래밍 방식으로 프로그래밍을 하는데, 최대한 심플하게 만들려고 한다. 우리는 오픈소스 라이브러리도 쓰는데, 주로 스탠다드 C++ 라이브러리를 쓰고 다른 것도 좀 쓴다. 하지만, 최상급 퀄리티의 오픈소스만을 사용하고 가능할 때는 우리 자체 라이브러리를 개발하려고 한다. 그렇게 우리 코드 퀄리티를 우리 스스로 관리한다.)
* SpaceX의 지상관제 시스템에는 일부 Windows와 LabView의 시각화 툴도 사용하는 것으로 알려졌었는데, 현재도 사용하고 있는지는 모르겠습니다.
Q. How do you perform error detection and correction during flight?
(비행 중에 에러 디텍션이나 수정은 어떻게 하는지?)
A. In terms of error handling, there are a lot of different facets to that. Radiation induced errors in computers are handled by having multiple redundant computers and voting on their outputs. Errors in sensors are handled by having multiple different sensors. Errors in data transmission are handled by using error-detecting or error-correcting codes attached to payloads.
(우주방사선 때문에 일어나는 컴퓨터 에러들은 다수의 여분 컴퓨터의 값과 비교해서 보정한다. 센서에러는 다수의 다른 센서들로 보정한다. 데이터 전송 에러는 페이로드에 탑재된 에러 디텍팅, 에러 보정 코드로 처리한다.)
* 고에너지 입자가 우주선의 프로세서나 메모리를 건드리면 'Bit Flip'이라는 현상이 일어납니다. 0101010101 이던 것이 11010101 과 같이 바뀌는 현상입니다. 2017년 쯤, 전임 SpaceX 디렉터 John Muratore 는 Dragon이 각각 따로 작동하는 3개의 비행 컴퓨터(flight computer)(dual core x86 processor)를 탑재하고 있고, 각각 계산한 결과값을 비교해서 틀린 계산이 있으면 재계산하는 방식을 사용한다고 말한 바 있습니다.
Q. If you were to delete the entire codebase, how much time do you estimate it would take to reimplement everything from scratch (having the current team and the accumulated know-how)?
(모든 코드를 다 지웠다고 치면, 모든 코드를 원상복구 시키는데 얼마나 시간이 걸릴 것으로 예상하나?) (ㄷ ㄷ ㄷ ㄷ ㄷ )
A. I'm not sure how long it would take us to re-write the code base from scratch.
(몰라 임마...)
오늘의 결론
SpaceX의 팔콘 Falcon 로켓과 우주선 드래곤 Dragon의 운영체제는 Linux, 비행프로그램은 C++
Crew Dragon 내부의 우주비행사용 터치스크린 화면 프로그래밍은 크로미움(Chromium) + 자바스크립트(JavaScript)
오늘의 결론2 : Penguin(Linux) can fly :D
(같이 더 보기)
2020년에 SpaceX 소프트웨어팀이 진행했던 레딧 AMA
https://www.reddit.com/r/spacex/comments/gxb7j1/we_are_the_spacex_software_team_ask_us_anything/
2013년에 SpaceX 소프트웨어팀이 진행했던 레딧 AMA
https://www.reddit.com/r/IAmA/comments/1853ap/we_are_spacex_software_engineers_we_launch/
https://www.zdnet.com/article/from-earth-to-orbit-with-linux-and-spacex/
'SPACECHILD' 카테고리의 다른 글
느긋한 우주여행을 제안한다, 우주스타트업 Space Perspective (0) | 2020.06.19 |
---|---|
켄코아에어로스페이스가 스페이스X와 거래가 있다고? 사실일까. (0) | 2020.06.17 |
갈팡질팡 버진 갤럭틱 홀딩스(Virgin Galactic Holdings)의 주가. 그리고 근본적 의문점. (0) | 2020.06.15 |
SpaceX, 기상 문제로 Demo-2 미션 중단하던 장면(T-00:16:54) (0) | 2020.05.28 |