Simple and Super Simple Modes (Copter)
Executive Summary
Simple and Super Simple are not distinct flight modes but rather Coordinate Transforms applied to the pilot's Roll and Pitch inputs. They change the "Frame of Reference" for the sticks.
Theory & Concepts
1. Relative Reference Frames
In physics, everything is relative to your "Frame of Reference."
- Body Frame: "Forward" is where the nose points.
- Earth Frame: "Forward" is North.
- Pilot Frame (Simple): "Forward" is the way the drone was pointing when you armed it.
- Why this helps: It removes the "Inverted Controls" problem. If the drone is flying towards you, "Right" on the stick still moves the drone to your right, even though the drone is rolling to its left.
2. Simple Mode (Rotation)
Locks the control frame to the heading at takeoff (or arming). "Forward" on the stick always flies away from the pilot (assuming the pilot is standing behind the drone at takeoff), regardless of which way the drone's nose is pointing.
3. Super Simple Mode (Vector)
Locks the control frame to the vector between Home and the Vehicle. "Pull Back" on the stick always brings the drone towards Home.
Hardware Dependency Matrix
These modes rely entirely on the heading estimation.
| Sensor | Requirement | Code Implementation Notes |
|---|---|---|
| Compass | CRITICAL | Accurate heading is required to perform the rotation of the stick inputs. If the compass is wrong, the "Simple" controls will be skewed (e.g., Forward flies diagonal). |
| GPS | CRITICAL (Super Simple) | Super Simple requires knowing the vehicle's position relative to Home. Without a 3D Lock, it behaves like standard Simple mode. |
Control Architecture (Engineer's View)
The logic acts as a "Input Shaper" that runs before the Flight Mode logic.
- Simple Mode (Rotation):
- Reference:
simple_cos_yaw,simple_sin_yaw(Stored heading at arming). - Operation: The code rotates the Pilot's Roll/Pitch vector by the difference between the Current Heading and the Reference Heading.
- Effect: If you yaw the drone 90 degrees right, the controller effectively yaw-rotates your stick input 90 degrees left to compensate.
- Code Path:
Copter::update_simple_mode().
- Reference:
- Super Simple Mode (Vector):
- Reference: Home Position.
- Operation: It calculates the bearing from Home to the Vehicle.
- Logic: It treats that bearing as "Forward".
- Smart Zone: If the vehicle flies within 10m of home, Super Simple automatically disables to prevent rapid control reversal (the "singularity" at the origin).
Pilot Interaction
- Activation: These are typically assigned to checkboxes on the Flight Mode switch setup (Channel 5) or separate auxiliary switches (Ch7/Ch8).
- Reset: The "Simple" reference heading can be reset in flight by toggling the switch or re-arming.
- Disorientation: While intended for beginners, these modes can be dangerous if the compass fails or if the pilot physically moves from their original takeoff position.
Failsafe Logic
- GPS Loss: Super Simple mode degrades to Simple Mode logic (using the last known bearing or simple heading).
- Compass Variance: If the EKF declares a Compass Variance error, Simple Mode may become unpredictable.
Key Parameters
| Parameter | Default | Description |
|---|---|---|
SUPER_SIMPLE |
0 | Can be used to force Super Simple behavior if SIMPLE mode is engaged. |
SIMPLE_MODE |
0 | (Bitmask) Used to enable Simple mode on specific flight mode switch positions. |
Source Code Reference
- Transformation Logic:
Copter::update_simple_mode()