Bird
Raised Fist0
Drone Programmingprogramming~20 mins

Popular flight controllers (ArduPilot, PX4, Betaflight) in Drone Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Flight Controller Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of ArduPilot mode selection code
What is the output of this Python code simulating ArduPilot flight mode selection?
Drone Programming
modes = {0: 'Stabilize', 1: 'AltHold', 2: 'Loiter', 3: 'Auto'}
selected_mode = 2
print(f"Selected mode: {modes[selected_mode]}")
AKeyError
BSelected mode: Auto
CSelected mode: AltHold
DSelected mode: Loiter
Attempts:
2 left
💡 Hint
Look up the value for key 2 in the dictionary.
🧠 Conceptual
intermediate
1:30remaining
Understanding PX4 parameter update behavior
In PX4 flight controller, which statement best describes how parameters are updated during flight?
AParameters can be updated live and take effect immediately without reboot.
BParameters require a full reboot of the flight controller to take effect.
CParameters update only after landing and disarming the drone.
DParameters cannot be changed once the flight controller boots up.
Attempts:
2 left
💡 Hint
PX4 supports dynamic parameter updates.
❓ Predict Output
advanced
2:00remaining
Betaflight PID tuning output
What is the output of this Python snippet simulating Betaflight PID tuning adjustments?
Drone Programming
pid = {'P': 40, 'I': 30, 'D': 23}
pid['P'] += 5
pid['I'] -= 10
print(pid)
A{'P': 45, 'I': 30, 'D': 23}
B{'P': 45, 'I': 20, 'D': 23}
CTypeError
D{'P': 40, 'I': 20, 'D': 23}
Attempts:
2 left
💡 Hint
Check how the dictionary values change after the increments and decrements.
🔧 Debug
advanced
1:30remaining
Identify error in PX4 parameter code
What error does this Python code produce when simulating PX4 parameter access?
Drone Programming
params = {'SYS_AUTOSTART': 1001, 'COM_RC_IN_MODE': 1}
print(params['SYS_BAUDRATE'])
AKeyError
BSyntaxError
CTypeError
DNo error, prints 1001
Attempts:
2 left
💡 Hint
Check if the key 'SYS_BAUDRATE' exists in the dictionary.
🚀 Application
expert
2:30remaining
Calculate total flight time from ArduPilot battery data
Given this Python code simulating battery voltage readings from ArduPilot, what is the total flight time in minutes?
Drone Programming
voltages = [12.6, 12.4, 12.1, 11.8, 11.5]
interval_seconds = 60
flight_time = (len(voltages) - 1) * interval_seconds / 60
print(flight_time)
A6.0
B5.0
C4.0
DError
Attempts:
2 left
💡 Hint
The total time spans (number of readings - 1) intervals. Multiply by interval and convert seconds to minutes.

Practice

(1/5)
1. Which flight controller is mainly designed for racing drones?
easy
A. PX4
B. ArduPilot
C. Betaflight
D. Mission Planner

Solution

  1. Step 1: Understand flight controller purposes

    Betaflight is known for its focus on fast, agile racing drones.
  2. Step 2: Compare with other controllers

    ArduPilot and PX4 support many drone types, not just racing.
  3. Final Answer:

    Betaflight -> Option C
  4. Quick Check:

    Racing drones use Betaflight [OK]
Hint: Betaflight = racing drones, ArduPilot/PX4 = versatile [OK]
Common Mistakes:
  • Confusing ArduPilot as racing-only
  • Thinking PX4 is only for racing
  • Selecting Mission Planner (it's a software, not a controller)
2. Which of the following is the correct way to start the PX4 flight controller using the command line?
easy
A. start px4
B. px4 start
C. px4.launch
D. launch px4

Solution

  1. Step 1: Recall PX4 command syntax

    The PX4 flight controller is started with the command px4 start.
  2. Step 2: Check other options

    Options like start px4, px4.launch, and launch px4 are incorrect commands.
  3. Final Answer:

    px4 start -> Option B
  4. Quick Check:

    PX4 starts with 'px4 start' command [OK]
Hint: PX4 command line starts with 'px4 start' [OK]
Common Mistakes:
  • Reversing command order
  • Using '.launch' as a command
  • Confusing with graphical launch commands
3. Given this ArduPilot code snippet, what will be the output?
mode = 'AUTO'
if mode == 'AUTO':
    print('Autonomous flight enabled')
else:
    print('Manual control active')
medium
A. Autonomous flight enabled
B. Manual control active
C. SyntaxError
D. No output

Solution

  1. Step 1: Check the value of mode variable

    The variable mode is set to the string 'AUTO'.
  2. Step 2: Evaluate the if condition

    The condition mode == 'AUTO' is true, so the first print statement runs.
  3. Final Answer:

    Autonomous flight enabled -> Option A
  4. Quick Check:

    mode == 'AUTO' triggers autonomous message [OK]
Hint: Check if condition matches variable value exactly [OK]
Common Mistakes:
  • Assuming else runs when mode is 'AUTO'
  • Confusing string case sensitivity
  • Expecting syntax error from simple if
4. Identify the error in this Betaflight configuration snippet:
def set_pid(p, i, d):
    pid = {'P': p, 'I': i, 'D': d}
    return pid

config = set_pid(40, 30)
print(config)
medium
A. Missing one argument in set_pid call
B. Incorrect dictionary keys
C. Syntax error in function definition
D. Print statement missing parentheses

Solution

  1. Step 1: Check function parameters and call

    The function set_pid requires 3 arguments: p, i, d.
  2. Step 2: Compare with function call

    The call set_pid(40, 30) provides only 2 arguments, missing the third.
  3. Final Answer:

    Missing one argument in set_pid call -> Option A
  4. Quick Check:

    Function needs 3 args but only 2 given [OK]
Hint: Count function args and call parameters carefully [OK]
Common Mistakes:
  • Assuming default values exist
  • Thinking dictionary keys are wrong
  • Ignoring Python 3 print syntax
5. You want to program a PX4 drone to switch between manual and autonomous modes based on a variable mode. Which code snippet correctly implements this logic?
hard
A. if mode != 'MANUAL' control_manual() else control_auto()
B. if mode = 'MANUAL': control_manual() else: control_auto()
C. switch(mode) { case 'MANUAL': control_manual(); break; default: control_auto(); }
D. if mode == 'MANUAL': control_manual() else: control_auto()

Solution

  1. Step 1: Check correct Python syntax for condition

    The correct code uses if mode == 'MANUAL': which is correct for equality check in Python.
  2. Step 2: Verify function calls and else block

    The correct code calls control_manual() if true, else control_auto(), matching the logic.
  3. Final Answer:

    if mode == 'MANUAL': control_manual() else: control_auto() -> Option D
  4. Quick Check:

    Python uses '==' for comparison, correct if-else structure [OK]
Hint: Use '==' for comparison, not '=' in conditions [OK]
Common Mistakes:
  • Using '=' instead of '==' in if condition
  • Using switch-case syntax in Python
  • Missing colons or indentation in if-else
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