Bird
Raised Fist0
Drone Programmingprogramming~20 mins

Flight modes (Stabilize, AltHold, Loiter, Auto) in Drone Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Flight Mode Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Stabilize mode control loop
Consider a drone programmed to run a control loop in Stabilize mode. The code snippet below simulates one iteration of the control loop adjusting pitch and roll based on pilot input. What is the output of the print statement?
Drone Programming
pilot_input = {'pitch': 5, 'roll': -3}
stabilize_output = {axis: val * 0.8 for axis, val in pilot_input.items()}
print(stabilize_output)
A{'pitch': 4.0, 'roll': -2.4}
B{'pitch': 5, 'roll': -3}
CSyntaxError
D{'pitch': 6.25, 'roll': -3.75}
Attempts:
2 left
💡 Hint
Think about how each input value is multiplied by 0.8.
❓ Predict Output
intermediate
2:00remaining
Altitude hold mode altitude update
In AltHold mode, the drone tries to maintain a target altitude. Given the code below, what will be the value of current_altitude after running?
Drone Programming
target_altitude = 100
current_altitude = 95
altitude_error = target_altitude - current_altitude
correction = altitude_error * 0.5
current_altitude += correction
print(round(current_altitude))
A97
B97.5
C100
D95
Attempts:
2 left
💡 Hint
Calculate the error and then the correction applied.
❓ Predict Output
advanced
2:00remaining
Loiter mode GPS position update
A drone in Loiter mode holds position using GPS. The code below simulates a small GPS drift and correction. What is the final position printed?
Drone Programming
position = {'lat': 40.0, 'lon': -74.0}
gps_drift = {'lat': 0.0001, 'lon': -0.0001}
correction_factor = 0.9
position['lat'] += gps_drift['lat'] * correction_factor
position['lon'] += gps_drift['lon'] * correction_factor
print({k: round(v, 5) for k, v in position.items()})
A{'lat': 40.0001, 'lon': -74.0001}
B{'lat': 40.00009, 'lon': -74.00009}
C{'lat': 40.00009, 'lon': -74.0001}
D{'lat': 40.0001, 'lon': -74.00009}
Attempts:
2 left
💡 Hint
Multiply the drift by the correction factor before adding.
❓ Predict Output
advanced
2:00remaining
Auto mode mission waypoint count
In Auto mode, the drone follows a list of waypoints. Given the code below, how many waypoints will the drone attempt to visit?
Drone Programming
mission_waypoints = [(40.0, -74.0), (40.1, -74.1), (40.2, -74.2), (40.3, -74.3)]
visited = [True, False, True, False]
remaining = [wp for wp, v in zip(mission_waypoints, visited) if not v]
print(len(remaining))
A1
B3
C2
D4
Attempts:
2 left
💡 Hint
Count waypoints not yet visited.
🧠 Conceptual
expert
2:00remaining
Flight mode behavior comparison
Which flight mode will maintain the drone's position using GPS and automatically correct for wind drift without pilot input?
AStabilize mode
BAltHold mode
CAuto mode
DLoiter mode
Attempts:
2 left
💡 Hint
Think about which mode holds position automatically using GPS.

Practice

(1/5)
1. Which flight mode allows the pilot to manually control the drone's attitude and throttle without automatic stabilization?
easy
A. Auto mode
B. Stabilize mode
C. Loiter mode
D. AltHold mode

Solution

  1. Step 1: Understand Stabilize mode function

    Stabilize mode lets the pilot control the drone manually, with basic stabilization but no automatic altitude hold.
  2. Step 2: Compare with other modes

    AltHold holds altitude automatically, Loiter holds position, and Auto runs pre-programmed missions.
  3. Final Answer:

    Stabilize mode -> Option B
  4. Quick Check:

    Manual control = Stabilize mode [OK]
Hint: Manual flying without altitude hold is Stabilize mode [OK]
Common Mistakes:
  • Confusing AltHold with Stabilize
  • Thinking Loiter allows manual control
  • Assuming Auto mode is manual
2. Which of the following is the correct way to set the drone to AltHold mode in code?
easy
A. set_mode('Loiter')
B. set_mode('Auto')
C. set_mode('AltHold')
D. set_mode('Stabilize')

Solution

  1. Step 1: Identify the function to set mode

    The function set_mode() is used to change the drone's flight mode by passing the mode name as a string.
  2. Step 2: Match the mode name for altitude hold

    To hold altitude automatically, the mode name must be 'AltHold'.
  3. Final Answer:

    set_mode('AltHold') -> Option C
  4. Quick Check:

    Altitude hold mode = 'AltHold' string [OK]
Hint: Use exact mode name string 'AltHold' in set_mode() [OK]
Common Mistakes:
  • Using wrong mode string like 'Auto' or 'Loiter'
  • Misspelling mode names
  • Passing mode as variable instead of string
3. What will be the output of this code snippet?
mode = 'Loiter'
if mode == 'Stabilize':
    print('Manual control active')
elif mode == 'AltHold':
    print('Altitude hold active')
elif mode == 'Loiter':
    print('Position hold active')
else:
    print('Automatic mission active')
medium
A. Position hold active
B. Altitude hold active
C. Manual control active
D. Automatic mission active

Solution

  1. Step 1: Check the value of mode variable

    The variable mode is set to 'Loiter'.
  2. Step 2: Follow the if-elif conditions

    The code checks if mode equals 'Stabilize' or 'AltHold' first, which it does not. Then it checks if mode equals 'Loiter', which is true, so it prints 'Position hold active'.
  3. Final Answer:

    Position hold active -> Option A
  4. Quick Check:

    mode == 'Loiter' prints 'Position hold active' [OK]
Hint: Match variable value with if-elif conditions carefully [OK]
Common Mistakes:
  • Choosing first if condition without checking value
  • Confusing Loiter with Auto mode output
  • Ignoring else block
4. Identify the error in this code snippet that tries to switch to Auto mode:
def switch_mode(mode):
    if mode = 'Auto':
        print('Auto mode activated')
    else:
        print('Other mode')
medium
A. SyntaxError: '=' used instead of '==' in if condition
B. RuntimeError: mode variable undefined
C. Logical error: should use '!=' instead of '='
D. No error, code runs fine

Solution

  1. Step 1: Check the if condition syntax

    The condition uses a single '=' which is assignment, not comparison. This causes a syntax error in Python.
  2. Step 2: Correct the condition to use '==' for comparison

    Changing '=' to '==' fixes the syntax and allows proper comparison.
  3. Final Answer:

    SyntaxError: '=' used instead of '==' in if condition -> Option A
  4. Quick Check:

    Use '==' for comparisons, '=' is assignment [OK]
Hint: Use '==' in if conditions, '=' is for assignment [OK]
Common Mistakes:
  • Using '=' instead of '==' in conditions
  • Confusing assignment with comparison
  • Ignoring syntax errors
5. You want the drone to automatically fly a mission but keep altitude stable if GPS signal is lost. Which mode combination should your program switch between?
hard
A. Stabilize mode for mission, switch to Auto if GPS lost
B. Loiter mode for mission, switch to Stabilize if GPS lost
C. AltHold mode for mission, switch to Loiter if GPS lost
D. Auto mode for mission, switch to AltHold if GPS lost

Solution

  1. Step 1: Understand mission and GPS loss handling

    Auto mode runs the mission automatically. If GPS is lost, the drone cannot continue Auto mode safely.
  2. Step 2: Choose AltHold to maintain altitude during GPS loss

    AltHold keeps altitude stable without GPS, preventing sudden drops.
  3. Final Answer:

    Auto mode for mission, switch to AltHold if GPS lost -> Option D
  4. Quick Check:

    Auto + AltHold for GPS loss safety [OK]
Hint: Auto for mission, AltHold to keep altitude if GPS fails [OK]
Common Mistakes:
  • Using Stabilize during GPS loss risking altitude drop
  • Confusing Loiter with mission mode
  • Not switching modes on GPS loss
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard