Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,34 @@ nav:
- Optional parts: mechanical/optional_cad_parts/README.md
- Software:
- Software on GitHub: https://github.com/nasa-jpl/osr-rover-code
- Systems Engineering:
- Overview: systems_engineering/README.md
- Operational Analysis:
- Overview: systems_engineering/01_operational_analysis/README.md
- Stakeholders: systems_engineering/01_operational_analysis/stakeholders.md
- Operational Entities: systems_engineering/01_operational_analysis/operational_entities.md
- Operational Activities: systems_engineering/01_operational_analysis/operational_activities.md
- Operational Capabilities: systems_engineering/01_operational_analysis/operational_capabilities.md
- System Analysis:
- Overview: systems_engineering/02_system_analysis/README.md
- System Functions: systems_engineering/02_system_analysis/system_functions.md
- Capabilities: systems_engineering/02_system_analysis/capabilities.md
- Missions: systems_engineering/02_system_analysis/missions.md
- Interfaces: systems_engineering/02_system_analysis/interfaces.md
- Logical Architecture:
- Overview: systems_engineering/03_logical_architecture/README.md
- Logical Components: systems_engineering/03_logical_architecture/logical_components.md
- Logical Functions: systems_engineering/03_logical_architecture/logical_functions.md
- Interfaces: systems_engineering/03_logical_architecture/interfaces.md
- Physical Architecture:
- Overview: systems_engineering/04_physical_architecture/README.md
- Physical Components: systems_engineering/04_physical_architecture/physical_components.md
- Physical Functions: systems_engineering/04_physical_architecture/physical_functions.md
- Interfaces: systems_engineering/04_physical_architecture/interfaces.md
- EPBS Architecture:
- Overview: systems_engineering/05_epbs/README.md
- Configuration Items: systems_engineering/05_epbs/configuration_items.md
- Capella Model: systems_engineering/MBSE_workspace/README.md
- OSR@JPL: https://jplopensourcerover.com/

plugins:
Expand Down
51 changes: 51 additions & 0 deletions systems_engineering/01_operational_analysis/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Operational Analysis (OA)

**Arcadia Layer 1 of 5**

The Operational Analysis answers the question: **WHY does the system exist?** It describes the operational context — who the stakeholders are, what activities they need performed, and how entities interact — without yet committing to any system solution.

## Purpose

The OA captures the needs of the world that the OSR must satisfy. It is completely solution-agnostic: there is no rover here, only the operational problem to be solved.

## Documents

| Document | Contents |
|---|---|
| [Stakeholders](stakeholders.md) | All parties with a stake in the rover's operation |
| [Operational Entities](operational_entities.md) | Actors and external systems in the operational environment |
| [Operational Activities](operational_activities.md) | Activities that must be performed to meet stakeholder needs |
| [Operational Capabilities](operational_capabilities.md) | High-level capabilities the operation must provide |

## Operational Context Summary

The JPL Open Source Rover exists to serve the **STEM education and maker community** by providing a credible, buildable analog of Mars exploration rovers. The operational environment includes:

- **Educators and students** who build, program, and operate the rover
- **The terrain** the rover traverses (indoor floors, outdoor surfaces, moderate obstacles)
- **Compute and control infrastructure** (laptop, gamepad, wireless link)
- **External power** (battery, charger)

The rover is expected to be **assembled by non-specialists** from commercially available parts, **operated remotely** via a ground station, and **extended** with custom sensors or payloads.

## Operational Architecture Block (OAB) Summary

```
┌──────────────────────────────────────────────────────┐
│ Operational Environment │
│ │
│ [Operator] ──control──► [OSR System] │
│ │ │ │
│ │◄──telemetry────────────┤ │
│ │ │
│ [Builder] ──assembly──► [OSR Hardware] │
│ │
│ [Developer] ──software──► [OSR Software Stack] │
│ │
│ [Terrain] ◄──traversal── [OSR Mobility] │
└──────────────────────────────────────────────────────┘
```

## Traceability

Operational Activities in this layer are realized by **System Functions** in the [System Analysis](../02_system_analysis/README.md).
151 changes: 151 additions & 0 deletions systems_engineering/01_operational_analysis/operational_activities.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
# Operational Activities

**OA Layer — Operational Activity Register**

Operational Activities (OActs) describe **what must be done** in the operational world — independent of how the system does it. Each activity is owned by an Operational Entity and may exchange data or artifacts with other activities.

## Activity Hierarchy

```
Root Operational Activity (OAct-00)
├── OAct-01 Conduct Rover Mission
│ ├── OAct-01.1 Plan Traverse Route
│ ├── OAct-01.2 Command Rover Motion
│ ├── OAct-01.3 Monitor Rover State
│ ├── OAct-01.4 Respond to Hazard
│ └── OAct-01.5 Collect Sensor Data
├── OAct-02 Maintain Rover
│ ├── OAct-02.1 Charge Battery
│ ├── OAct-02.2 Inspect and Repair Hardware
│ └── OAct-02.3 Update Software
├── OAct-03 Build Rover
│ ├── OAct-03.1 Source Components
│ ├── OAct-03.2 Assemble Mechanical Structure
│ ├── OAct-03.3 Install Electrical System
│ └── OAct-03.4 Install and Configure Software
└── OAct-04 Extend Rover Capability
├── OAct-04.1 Design Payload or Modification
├── OAct-04.2 Integrate Payload
└── OAct-04.3 Develop Custom Software
```

## Activity Descriptions

### OAct-01 — Conduct Rover Mission

The core operational scenario: a human operator directs the rover through a terrain environment to accomplish a task (traverse, exploration, demonstration, data collection).

#### OAct-01.1 — Plan Traverse Route
- **Owner:** Ground Operator
- **Inputs:** Terrain knowledge, mission objectives
- **Outputs:** Planned waypoints, go/no-go decision
- **Description:** Operator assesses terrain ahead of the rover and determines a path to traverse, avoiding obstacles that exceed the rover's mobility limits.

#### OAct-01.2 — Command Rover Motion
- **Owner:** Ground Operator → Ground Station → OSR System
- **Inputs:** Operator intent (gamepad axes/buttons)
- **Outputs:** Motion commands (velocity, steering angle)
- **Description:** Operator translates intended motion into commands. Ground station encodes and transmits these. The rover executes the commanded motion.

#### OAct-01.3 — Monitor Rover State
- **Owner:** Ground Operator
- **Inputs:** Telemetry from rover (battery voltage, motor currents, wheel speeds, IMU orientation)
- **Outputs:** Situational awareness, fault recognition
- **Description:** Operator continuously monitors rover health and position during the mission, watching for faults, battery depletion, or mechanical issues.

#### OAct-01.4 — Respond to Hazard
- **Owner:** Ground Operator
- **Inputs:** Hazard detection (visual inspection or telemetry anomaly)
- **Outputs:** Corrective commands (stop, reverse, new route)
- **Description:** When the operator detects a hazard (stuck wheel, tip risk, low battery), they take corrective action to protect the rover.

#### OAct-01.5 — Collect Sensor Data
- **Owner:** Ground Operator / Developer
- **Inputs:** Camera stream, optional payload sensor outputs
- **Outputs:** Recorded images, data logs
- **Description:** Operator captures data from onboard sensors during the traverse.

---

### OAct-02 — Maintain Rover

#### OAct-02.1 — Charge Battery
- **Owner:** Builder / Operator
- **Inputs:** Depleted battery pack
- **Outputs:** Charged battery, restored operational capacity
- **Description:** Remove or connect battery to charger; monitor charging state.

#### OAct-02.2 — Inspect and Repair Hardware
- **Owner:** Builder
- **Inputs:** Mechanical fault observation
- **Outputs:** Repaired assembly, replaced components
- **Description:** Inspect joints, fasteners, wheels, and wiring after operation; replace worn or damaged parts.

#### OAct-02.3 — Update Software
- **Owner:** Developer
- **Inputs:** New software version or bug fix
- **Outputs:** Updated rover firmware/software
- **Description:** Developer connects to the rover's onboard computer and deploys updated software packages.

---

### OAct-03 — Build Rover

#### OAct-03.1 — Source Components
- **Owner:** Builder
- **Inputs:** Parts list, budget
- **Outputs:** Procured parts kit
- **Description:** Builder orders mechanical hardware, electronics, motors, and compute components from suppliers.

#### OAct-03.2 — Assemble Mechanical Structure
- **Owner:** Builder
- **Inputs:** Procured parts, assembly instructions
- **Outputs:** Assembled chassis with rocker-bogie suspension and wheels
- **Description:** Builder follows step-by-step instructions to assemble the frame, rocker-bogie linkage, corner steering assemblies, and six wheel modules.

#### OAct-03.3 — Install Electrical System
- **Owner:** Builder
- **Inputs:** Electronics kit, wiring diagrams
- **Outputs:** Wired and powered electrical system
- **Description:** Builder installs PCB, motors, motor drivers, and power distribution; performs wiring per schematic.

#### OAct-03.4 — Install and Configure Software
- **Owner:** Developer / Builder
- **Inputs:** Software repository, Raspberry Pi
- **Outputs:** Operational rover with running software
- **Description:** Flash OS, clone software repo, configure network and ROS environment, test communication with ground station.

---

### OAct-04 — Extend Rover Capability

#### OAct-04.1 — Design Payload or Modification
- **Owner:** Developer / Engineer Contributor
- **Inputs:** Extension requirements, rover interface specs
- **Outputs:** Payload design (mechanical + electrical + software)

#### OAct-04.2 — Integrate Payload
- **Owner:** Builder
- **Inputs:** Payload hardware, rover mounting points
- **Outputs:** Rover with integrated payload

#### OAct-04.3 — Develop Custom Software
- **Owner:** Developer
- **Inputs:** Payload data interface, ROS APIs
- **Outputs:** Custom ROS nodes, behaviors, or autonomy modules

## Operational Scenario: Nominal Mission

```
Operator powers on rover
└──► Rover boots, establishes wireless link
Operator verifies link via Ground Station
└──► Telemetry stream confirmed
Operator commands forward motion
└──► Rover traverses 2 m over flat surface
Operator commands left turn
└──► Rover pivots 45°
Operator detects low battery warning
└──► Operator commands stop and returns rover to start
Operator disconnects power and charges battery
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Operational Capabilities

**OA Layer — Operational Capability Register**

Operational Capabilities describe **high-level abilities** the operational environment must provide, independent of how they are achieved. They are the coarsest-grained expression of what the OSR program must enable.

## Capability Register

| ID | Capability | Description |
|---|---|---|
| OC-01 | **Terrain Mobility** | The ability to traverse a variety of surface types including flat floors, carpet, gravel, and moderate inclines |
| OC-02 | **Remote Control** | The ability for a human operator to command rover motion from a safe distance via wireless link |
| OC-03 | **State Monitoring** | The ability to observe rover health, position, and sensor data in real time at the ground station |
| OC-04 | **Safe Operation** | The ability to detect and respond to hazardous conditions (e.g., tip risk, low battery, motor fault) |
| OC-05 | **Build and Assembly** | The ability for a non-specialist to assemble the rover from available commercial parts |
| OC-06 | **Software Programmability** | The ability for a developer to write, deploy, and modify rover software |
| OC-07 | **Payload Integration** | The ability to attach optional sensors, cameras, or actuators and integrate them into the rover data stream |
| OC-08 | **Educational Fidelity** | The ability to serve as a credible analog of Mars rovers for STEM education |

## Capability Scenario Matrix

Each capability is exercised in one or more operational scenarios:

| Scenario | OC-01 | OC-02 | OC-03 | OC-04 | OC-05 | OC-06 | OC-07 | OC-08 |
|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| Nominal terrain traverse | ● | ● | ● | ● | | | | ● |
| Hazard avoidance | ● | ● | ● | ● | | | | |
| Initial build and test | | | ● | | ● | ● | | |
| Payload demonstration | ● | ● | ● | | | ● | ● | ● |
| Software development/debug | | | ● | | | ● | | |
| Classroom demonstration | ● | ● | ● | ● | | | | ● |

## Traceability to System Capabilities

Operational Capabilities are refined into **System Capabilities** in the [System Analysis](../02_system_analysis/capabilities.md) layer:

| OC ID | Realized by System Capability |
|---|---|
| OC-01 | SC-01 Six-Wheel Drive Mobility, SC-02 Rocker-Bogie Passive Suspension |
| OC-02 | SC-03 Wireless Command Reception, SC-04 Motor Control Execution |
| OC-03 | SC-05 Telemetry Reporting |
| OC-04 | SC-06 Fault Detection and Safe Stop |
| OC-05 | SC-07 Modular Assembly Architecture |
| OC-06 | SC-08 Programmable Onboard Computer |
| OC-07 | SC-09 Payload Interface |
| OC-08 | SC-01, SC-02 (rocker-bogie is the key fidelity element) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Operational Entities

**OA Layer — Operational Entity Register**

Operational Entities (OEs) are the actors and external systems that participate in the operational environment. They interact with each other and with the OSR system through **operational interactions**.

## Entity Register

| ID | Entity | Type | Description |
|---|---|---|---|
| OE-01 | **Ground Operator** | Human Actor | Person controlling the rover via ground station |
| OE-02 | **Ground Station** | External System | Laptop/computer running operator control software |
| OE-03 | **Wireless Link** | External System | Wi-Fi or other RF link between ground station and rover |
| OE-04 | **OSR System** | System-of-Interest | The rover itself (treated as a black box at this layer) |
| OE-05 | **Terrain** | Environment | The surface the rover traverses — floors, gravel, obstacles |
| OE-06 | **Power Source** | External System | Battery pack supplying electrical energy to the rover |
| OE-07 | **Builder** | Human Actor | Person assembling the rover from parts |
| OE-08 | **Parts Suppliers** | External System | Vendors supplying mechanical, electrical, and electronic components |
| OE-09 | **Developer** | Human Actor | Person writing or modifying rover software |
| OE-10 | **Payload / Sensor** | External System | Optional extensions (cameras, arms, science instruments) |

## Operational Interactions

### Primary Control Loop

```
[Ground Operator]
│ issues motion commands (gamepad input)
[Ground Station]
│ encodes commands (ROS messages / serial packets)
[Wireless Link]
│ transmits over Wi-Fi
[OSR System]
│ executes motion
[Terrain] ◄── rover exerts forces
│ rover state (odometry, attitude)
[OSR System]
│ telemetry data
[Wireless Link] → [Ground Station] → [Ground Operator]
```

### Power Loop

```
[Power Source] ──DC power──► [OSR System]
[OSR System] ──discharge status──► [Ground Operator]
```

### Build Loop

```
[Builder] ──assembly work──► [OSR System]
[Parts Suppliers] ──components──► [Builder]
[Developer] ──software install──► [OSR System]
```

### Payload Extension Loop

```
[Payload / Sensor] ──data──► [OSR System]
[OSR System] ──power + comms──► [Payload / Sensor]
[OSR System] ──sensor telemetry──► [Ground Station]
```

## Entity Roles

| Entity | Provides | Receives |
|---|---|---|
| OE-01 Ground Operator | Control intent | Rover telemetry, camera video |
| OE-02 Ground Station | Encoded commands | Telemetry, video stream |
| OE-03 Wireless Link | Bidirectional data channel | Commands (downlink), telemetry (uplink) |
| OE-04 OSR System | Motion, sensor data | Commands, power |
| OE-05 Terrain | Reaction forces, obstacles | Rover wheel forces |
| OE-06 Power Source | Electrical energy | — |
| OE-07 Builder | Assembled hardware | Parts, documentation |
| OE-08 Parts Suppliers | Components | Purchase orders |
| OE-09 Developer | Software | Hardware platform |
| OE-10 Payload / Sensor | Sensor data | Power, communication interface |
Loading