# How a rover lands on Mars

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv0kq0c0001ijv06y07khgs0
> It describes who does what, in what order, and with which technology. Read the plain-language sections first; the JSON at the end is the exact, complete data.

## Summary

- 16 steps across 2 layers
- Persona: Mission control
- Technology / systems: The spacecraft, The rover

## How to read this file

- A process is made of **layers**. The main layer is the top level; any step of kind `subprocess` opens a detail layer with its own lanes and steps.
- **Lanes** are either persona (people/roles) or technology (systems). Each step belongs to one lane; `using` lists tools a person uses for that step.
- Step kinds: `start`, `task`, `decision` (its arrows carry the answer as a label), `subprocess`, `end`.

## How a rover lands on Mars

Lanes:
- Mission control: person / role (id `team`)
- The spacecraft: technology / system (id `probe`)
- The rover: technology / system (id `rover`)

Steps, in the order they run:

1. **Launch when Earth and Mars line up** [start; Mission control; id `m1`]
   - then About seven months of cruise
2. **About seven months of cruise** [task; The spacecraft; id `m2`]
   - then Correct the course along the way
3. **Correct the course along the way** [task; The spacecraft; id `m3`]
   - then Hit the Martian atmosphere at about 20,000 km/h
4. **Hit the Martian atmosphere at about 20,000 km/h** [task; The spacecraft; id `m4`]
   - then The "seven minutes of terror"
5. **The "seven minutes of terror"** [subprocess; The spacecraft; id `m5`], opens the detail layer "Entry, descent and landing"
   - then The signal delay can be up to 20 minutes each way, so it must land itself
6. **The signal delay can be up to 20 minutes each way, so it must land itself** [task; Mission control; id `m6`]
   - then Did every step work?
7. **Did every step work?** [decision; The spacecraft; id `m7`]
   - if "Yes" go to Safe on the surface; if "No" go to The mission is lost
8. **Safe on the surface** [task; The rover; id `m8`]
   - then Drive, drill and collect samples
9. **Drive, drill and collect samples** [end; The rover; id `m9`]
10. **The mission is lost** [end; Mission control; id `m7a`]

```mermaid
flowchart LR
  subgraph l_team["Mission control"]
    n_m1(["Launch when Earth and Mars line up"])
    n_m6["The signal delay can be up to 20 minutes each way, so it must land itself"]
    n_m7a(["The mission is lost"])
  end
  subgraph l_probe["The spacecraft"]
    n_m2["About seven months of cruise"]
    n_m3["Correct the course along the way"]
    n_m4["Hit the Martian atmosphere at about 20,000 km/h"]
    n_m5[["The 'seven minutes of terror'"]]
    n_m7{"Did every step work?"}
  end
  subgraph l_rover["The rover"]
    n_m8["Safe on the surface"]
    n_m9(["Drive, drill and collect samples"])
  end
  n_m1 --> n_m2
  n_m2 --> n_m3
  n_m3 --> n_m4
  n_m4 --> n_m5
  n_m5 --> n_m6
  n_m6 --> n_m7
  n_m7 -->|"Yes"| n_m8
  n_m7 -->|"No"| n_m7a
  n_m8 --> n_m9
```

### Entry, descent and landing (detail of step "The "seven minutes of terror"")

Lanes:
- The spacecraft: technology / system (id `probe`)

Steps, in the order they run:

1. **The heat shield burns away most of the speed** [start; The spacecraft; id `s1`]
   - then A giant parachute opens
2. **A giant parachute opens** [task; The spacecraft; id `s2`]
   - then Drop the heat shield; radar finds the ground
3. **Drop the heat shield; radar finds the ground** [task; The spacecraft; id `s3`]
   - then Rockets slow the descent
4. **Rockets slow the descent** [task; The spacecraft; id `s4`]
   - then A sky crane lowers the rover on cables
5. **A sky crane lowers the rover on cables** [task; The spacecraft; id `s5`]
   - then Cut the cables and fly away
6. **Cut the cables and fly away** [end; The spacecraft; id `s6`]

```mermaid
flowchart LR
  subgraph l_probe["The spacecraft"]
    n_s1(["The heat shield burns away most of the speed"])
    n_s2["A giant parachute opens"]
    n_s3["Drop the heat shield; radar finds the ground"]
    n_s4["Rockets slow the descent"]
    n_s5["A sky crane lowers the rover on cables"]
    n_s6(["Cut the cables and fly away"])
  end
  n_s1 --> n_s2
  n_s2 --> n_s3
  n_s3 --> n_s4
  n_s4 --> n_s5
  n_s5 --> n_s6
```

## Full data (JSON)

```json
{
  "title": "How a rover lands on Mars",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "team",
          "name": "Mission control",
          "type": "person"
        },
        {
          "id": "probe",
          "name": "The spacecraft",
          "type": "system"
        },
        {
          "id": "rover",
          "name": "The rover",
          "type": "system"
        }
      ],
      "steps": [
        {
          "id": "m1",
          "kind": "start",
          "lane": "team",
          "next": [
            {
              "to": "m2"
            }
          ],
          "uses": [],
          "label": "Launch when Earth and Mars line up"
        },
        {
          "id": "m2",
          "kind": "task",
          "lane": "probe",
          "next": [
            {
              "to": "m3"
            }
          ],
          "uses": [],
          "label": "About seven months of cruise"
        },
        {
          "id": "m3",
          "kind": "task",
          "lane": "probe",
          "next": [
            {
              "to": "m4"
            }
          ],
          "uses": [],
          "label": "Correct the course along the way"
        },
        {
          "id": "m4",
          "kind": "task",
          "lane": "probe",
          "next": [
            {
              "to": "m5"
            }
          ],
          "uses": [],
          "label": "Hit the Martian atmosphere at about 20,000 km/h"
        },
        {
          "id": "m5",
          "kind": "subprocess",
          "lane": "probe",
          "next": [
            {
              "to": "m6"
            }
          ],
          "uses": [],
          "child": "m_seven",
          "label": "The \"seven minutes of terror\""
        },
        {
          "id": "m6",
          "kind": "task",
          "lane": "team",
          "next": [
            {
              "to": "m7"
            }
          ],
          "uses": [],
          "label": "The signal delay can be up to 20 minutes each way, so it must land itself"
        },
        {
          "id": "m7",
          "kind": "decision",
          "lane": "probe",
          "next": [
            {
              "to": "m8",
              "label": "Yes"
            },
            {
              "to": "m7a",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Did every step work?"
        },
        {
          "id": "m7a",
          "kind": "end",
          "lane": "team",
          "next": [],
          "uses": [],
          "label": "The mission is lost"
        },
        {
          "id": "m8",
          "kind": "task",
          "lane": "rover",
          "next": [
            {
              "to": "m9"
            }
          ],
          "uses": [],
          "label": "Safe on the surface"
        },
        {
          "id": "m9",
          "kind": "end",
          "lane": "rover",
          "next": [],
          "uses": [],
          "label": "Drive, drill and collect samples"
        }
      ],
      "title": "How a rover lands on Mars",
      "parent": null
    },
    "m_seven": {
      "id": "m_seven",
      "lanes": [
        {
          "id": "probe",
          "name": "The spacecraft",
          "type": "system"
        }
      ],
      "steps": [
        {
          "id": "s1",
          "kind": "start",
          "lane": "probe",
          "next": [
            {
              "to": "s2"
            }
          ],
          "uses": [],
          "label": "The heat shield burns away most of the speed"
        },
        {
          "id": "s2",
          "kind": "task",
          "lane": "probe",
          "next": [
            {
              "to": "s3"
            }
          ],
          "uses": [],
          "label": "A giant parachute opens"
        },
        {
          "id": "s3",
          "kind": "task",
          "lane": "probe",
          "next": [
            {
              "to": "s4"
            }
          ],
          "uses": [],
          "label": "Drop the heat shield; radar finds the ground"
        },
        {
          "id": "s4",
          "kind": "task",
          "lane": "probe",
          "next": [
            {
              "to": "s5"
            }
          ],
          "uses": [],
          "label": "Rockets slow the descent"
        },
        {
          "id": "s5",
          "kind": "task",
          "lane": "probe",
          "next": [
            {
              "to": "s6"
            }
          ],
          "uses": [],
          "label": "A sky crane lowers the rover on cables"
        },
        {
          "id": "s6",
          "kind": "end",
          "lane": "probe",
          "next": [],
          "uses": [],
          "label": "Cut the cables and fly away"
        }
      ],
      "title": "Entry, descent and landing",
      "parent": {
        "map": "m_root",
        "step": "m5"
      }
    }
  }
}
```
