I think the answer is quite clear. Let's say when Mission Control decides to let Perseverence move forward for 3 seconds with a speed of 10 (whatever..) What syntax would this command have?

Im wondering because on my hobby projects I send commands to my small robots which look like:

SetSpeed(10, 3)

So basically Command Name + Args in parentheses. Then this is parsed, the command name was mapped to a specific function and my algorithm puts each argument seperated by comma into a list which is passed to the function.

Do SpaceX or NASA use such Strings as well? Or do they replace strings with byte codes, so each command has a specific number.


Most remotely controlled spacecraft and rovers do not use text-based commands. Instead, each command has a unique identifier, a command-specific data structure that contains data specific to that command, and data (e.g. checksums) that confirm the command and data are valid. All of the data are binary rather than text-based.

The Mars rovers use a sequenced set of commanded waypoints, possibly with speed limits. Commanding velocity rather than a waypoint is a no-no; another name for using commanded velocity falls under the category of "dead reckoning". Relying on dead reckoning for any extended period of time means that the vehicle will soon be dead.

Some of the waypoints have automated transitions to the next command, in which case the vehicle immediately starts processing the next command after it "thinks" it has reached the commanded waypoint. Some waypoints involve transitions to other commands, such as "drill here" (but again in binary rather than in text). Some waypoints are also hold points, points at which the rover needs to stop until given authority to proceed (ATP) to the next command from Mission Control.


For shuttle which used a MIL-STD-1553 bus system for its flight critical functions, a command consisted of some header information (mostly used for validation), the address of the bus terminal unit, card, and channel on the 1553 bus to which the command was to be sent, and a mask to set the desired bits.

The commands were made up of one or more 48 bit words.

Source: sadly, personal notes

  • 1
    $\begingroup$ I'm not a fan of MIL-STD 1553, or of ARINC 653. Neither is SpaceX, which doesn't use either. That said, Perseverance's avionics, command & data handling, data bus, and software systems are all legacy-based, which means it probably does use MIL-STD 1553 and ARINC 653 (and also various CCSDS standards). $\endgroup$ – David Hammen Apr 28 at 15:18
  • $\begingroup$ @DavidHammen yes, MSL used 1553 buses, so presumably Mars 2020 does too. techbriefs.com/component/content/article/tb/pub/techbriefs/… All the vehicles I worked with (B52, shuttle, and ISS) used them, so I know little about any other schemes. $\endgroup$ – Organic Marble Apr 28 at 15:28
  • 1
    $\begingroup$ More recent vehicles (e.g. Orion, Gateway) use Time-Triggered Ethernet (TTE). This is a standard, but every implementation I know of is proprietary (and expensive). The key advantage of TTE is that so long as the bus is not overwhelmed by too much time-critical traffic, that delivery of that time critical traffic is guaranteed to occur, and to occur in time-order. $\endgroup$ – David Hammen Apr 28 at 16:40
  • 6
    $\begingroup$ As far as I know, SpaceX simply uses IP datagrams and TCP packets. There's no guarantee of time order or even delivery of IP datagrams, and there's no guarantee of timeliness of TCP packets. Too many lost or out-of-order IP datagrams triggers FDIR, as do too many late TCP packets. The key advantage of TCP/IP is that there are lots and lots of video game developers, VOIP developers, and other modern internet-based developers have all learned to deal with those problems, and SpaceX has hired lots of people who are very familiar with those issues. $\endgroup$ – David Hammen Apr 28 at 16:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.