{"id":29153,"date":"2020-06-04T17:04:47","date_gmt":"2020-06-04T21:04:47","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=29153"},"modified":"2020-06-09T15:27:02","modified_gmt":"2020-06-09T19:27:02","slug":"software-engineering-within-spacex","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2020\/06\/04\/software-engineering-within-spacex\/","title":{"rendered":"Software Engineering Within SpaceX"},"content":{"rendered":"<p><a href=\"https:\/\/yasoob.me\/posts\/software_engineering_within_spacex_launch\/\">Yasoob Khalid<\/a> (via <a href=\"https:\/\/news.ycombinator.com\/item?id=23403800\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/yasoob.me\/posts\/software_engineering_within_spacex_launch\/\"><p>They talk about the tripple redundancy system and how SpaceX uses the Actor-Judge system. In short there are 3 dual core ARM processors running on custom board (<a href=\"https:\/\/news.ycombinator.com\/item?id=23369065\">according to elteto<\/a>). For each decision a &ldquo;flight string&rdquo; compares the result from each core on a single processor. If the output matches the command is sent to different controllers. There are 3 processors (with dual cores) so that means each controller\/sensor will get three different commands. The controllers then act as the judge and compare the three commands. If all three are in agreement, they carry out the operation. If even a single command is in disagreement, the controller carries out the command from the processor which had previously been sending the correct commands.<\/p><\/blockquote>\n\n<p>As <a href=\"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/358234.358246\">Alfred Spector and David Gifford<\/a> explain, the  Space Shuttle did something similar, only the judge wasn&rsquo;t a microprocessor:<\/p>\n<blockquote cite=\"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/358234.358246\"><p>For the aerosurface actuators, each of the four computers sends out an independent command on an independent bus. With no failures, the commands should be identical. The voting is done at the actuator using a hydraulic voting mechanism, called a force-fight voter. In it, there are four hydraulic ports called secondary ports, each commanded by one of the four GPCs. The secondary ports go into the primary ports, which are heavy-duty actuators that connect to what&rsquo;s called a &ldquo;summing bar,&rdquo; which is no more than a massive steel rod. If there are three good computers and one bad one, the three good commands physically out-muscle the fourth. This limits the control authority a little bit--we don&rsquo;t get the total force we&rsquo;d like to get, but there&rsquo;s still enough power to control the vehicle. If you have a large enough pressure differential for a large enough time, the port is hydraulically bypassed, which relieves the pressure in that one port. The remaining three ports then regain their full authority.<\/p><\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/03\/11\/safety-experts-weigh-in-on-the-boeing-737-max\/\">Safety Experts Weigh in on the Boeing 737 MAX<\/a><\/li>\n<\/ul>\n\n<p id=\"software-engineering-within-spacex-update-2020-06-09\">Update (2020-06-09): See also: <a href=\"https:\/\/www.reddit.com\/r\/spacex\/comments\/gxb7j1\/we_are_the_spacex_software_team_ask_us_anything\/ft6fngd\/\">Reddit AMA<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Yasoob Khalid (via Hacker News): They talk about the tripple redundancy system and how SpaceX uses the Actor-Judge system. In short there are 3 dual core ARM processors running on custom board (according to elteto). For each decision a &ldquo;flight string&rdquo; compares the result from each core on a single processor. If the output matches [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2020-06-04T21:04:49Z","apple_news_api_id":"4a05ec87-0fe2-4651-95f9-02232570716c","apple_news_api_modified_at":"2020-06-09T19:27:04Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAQ==","apple_news_api_share_url":"https:\/\/apple.news\/ASgXshw_iRlGV-QIjJXBxbA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[262,412,27,71,1400],"class_list":["post-29153","post","type-post","status-publish","format-standard","hentry","category-technology","tag-arm","tag-chromium","tag-craft","tag-programming","tag-spacex"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/29153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=29153"}],"version-history":[{"count":3,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/29153\/revisions"}],"predecessor-version":[{"id":29195,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/29153\/revisions\/29195"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=29153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=29153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=29153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}