Bird
Raised Fist0
Drone Programmingprogramming~20 mins

Waypoint mission creation in Drone Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Waypoint Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of waypoint list creation
What is the output of this code that creates a list of waypoints with latitude and longitude?
Drone Programming
waypoints = []
for i in range(3):
    waypoint = {'lat': 40.0 + i*0.01, 'lon': -74.0 - i*0.01}
    waypoints.append(waypoint)
print(waypoints)
A[{'lat': 40.0, 'lon': -74.0}, {'lat': 40.01, 'lon': -74.01}, {'lat': 40.01, 'lon': -74.01}]
B[{'lat': 40.0, 'lon': -74.0}, {'lat': 40.0, 'lon': -74.0}, {'lat': 40.0, 'lon': -74.0}]
C[{'lat': 40.0, 'lon': -74.0}, {'lat': 40.01, 'lon': -74.0}, {'lat': 40.02, 'lon': -74.0}]
D[{'lat': 40.0, 'lon': -74.0}, {'lat': 40.01, 'lon': -74.01}, {'lat': 40.02, 'lon': -74.02}]
Attempts:
2 left
💡 Hint
Look at how latitude and longitude change with each loop iteration.
🧠 Conceptual
intermediate
1:30remaining
Understanding waypoint altitude setting
In a waypoint mission, why is it important to set the altitude for each waypoint?
ATo ensure the drone flies at the correct height avoiding obstacles and maintaining safety.
BTo make the drone fly faster between waypoints.
CTo reduce the battery consumption by flying lower always.
DTo change the drone's camera angle automatically.
Attempts:
2 left
💡 Hint
Think about what altitude controls in drone flight.
🔧 Debug
advanced
2:30remaining
Identify the error in waypoint mission code
What error will this code produce when creating waypoints for a mission?
Drone Programming
waypoints = [{'lat': 40.0, 'lon': -74.0}, {'lat': 40.01, 'lon': -74.01}]
for wp in waypoints:
    wp['alt'] = 100
    wp = {'lat': 41.0, 'lon': -75.0, 'alt': 150}
print(waypoints)
ATypeError because dictionary assignment is invalid inside loop
BNo error; output is [{'lat': 40.0, 'lon': -74.0, 'alt': 100}, {'lat': 40.01, 'lon': -74.01, 'alt': 100}]
CNo error; output is [{'lat': 41.0, 'lon': -75.0, 'alt': 150}, {'lat': 41.0, 'lon': -75.0, 'alt': 150}]
DNo error; output is [{'lat': 40.0, 'lon': -74.0}, {'lat': 40.01, 'lon': -74.01}]
Attempts:
2 left
💡 Hint
Consider what happens when you assign a new dictionary to the loop variable.
📝 Syntax
advanced
1:30remaining
Syntax error in waypoint mission dictionary comprehension
Which option correctly creates a dictionary of waypoints with keys as indices and values as lat-lon tuples?
Drone Programming
waypoints = {i: (40.0 + i*0.01, -74.0 - i*0.01) for i in range(3)}
A{i: (40.0 + i*0.01, -74.0 - i*0.01) for i in range(3)}
B{i: (40.0 + i*0.01, -74.0 - i*0.01) if i < 3 for i in range(3)}
C{i: (40.0 + i*0.01, -74.0 - i*0.01) for i in range(3):}
D{i: (40.0 + i*0.01, -74.0 - i*0.01) for i range(3)}
Attempts:
2 left
💡 Hint
Check the correct syntax for dictionary comprehensions in Python.
🚀 Application
expert
3:00remaining
Calculate total mission distance from waypoints
Given a list of waypoints with latitude and longitude, which code correctly calculates the total straight-line distance (in degrees) between consecutive waypoints?
Drone Programming
waypoints = [{'lat': 40.0, 'lon': -74.0}, {'lat': 40.01, 'lon': -74.01}, {'lat': 40.02, 'lon': -74.02}]
total_distance = 0
for i in range(len(waypoints)-1):
    wp1 = waypoints[i]
    wp2 = waypoints[i+1]
    dist = ((wp2['lat'] - wp1['lat'])**2 + (wp2['lon'] - wp1['lon'])**2)**0.5
    total_distance += dist
print(round(total_distance, 5))
A0.01
B0.02
C0.02828
D0.04
Attempts:
2 left
💡 Hint
Use the Pythagorean theorem to find distance between points.

Practice

(1/5)
1. What is the main purpose of creating a waypoint mission for a drone?
easy
A. To make the drone fly automatically through specific GPS points
B. To manually control the drone with a remote
C. To charge the drone's battery faster
D. To change the drone's camera settings

Solution

  1. Step 1: Understand waypoint missions

    Waypoint missions are designed to let drones fly automatically through set GPS points without manual control.
  2. Step 2: Compare options

    Only To make the drone fly automatically through specific GPS points describes automatic flight through GPS points, which matches the purpose of waypoint missions.
  3. Final Answer:

    To make the drone fly automatically through specific GPS points -> Option A
  4. Quick Check:

    Waypoint mission = automatic GPS flight [OK]
Hint: Waypoint missions automate flight through GPS points [OK]
Common Mistakes:
  • Confusing manual control with automatic missions
  • Thinking waypoint missions change camera or battery
  • Assuming speed control is the main purpose
2. Which of the following is the correct way to add a waypoint with latitude, longitude, and altitude in a drone mission code snippet?
easy
A. waypoint_add(100, 34.05, -118.25)
B. add_waypoint(altitude=100, lat=34.05, long=-118.25)
C. addWaypoint(34.05, -118.25)
D. add_waypoint(latitude=34.05, longitude=-118.25, altitude=100)

Solution

  1. Step 1: Identify correct parameter names and order

    The standard is to specify latitude, longitude, and altitude clearly, usually with named parameters or in order.
  2. Step 2: Check each option

    add_waypoint(latitude=34.05, longitude=-118.25, altitude=100) uses clear parameter names and correct order. Others have wrong names, missing altitude, or wrong order.
  3. Final Answer:

    add_waypoint(latitude=34.05, longitude=-118.25, altitude=100) -> Option D
  4. Quick Check:

    Correct parameter names and order = add_waypoint(latitude=34.05, longitude=-118.25, altitude=100) [OK]
Hint: Use clear latitude, longitude, altitude parameters [OK]
Common Mistakes:
  • Using wrong parameter names like lat or long instead of latitude/longitude
  • Omitting altitude
  • Wrong function name or missing parameters
3. Given the following code snippet for a waypoint mission:
mission = []
mission.append({'lat': 40.0, 'lon': -74.0, 'alt': 50})
mission.append({'lat': 40.1, 'lon': -74.1, 'alt': 60})
speed = 10
print(len(mission), mission[1]['alt'], speed)
What will be the output?
medium
A. 2 60 10
B. 2 50 10
C. 1 60 10
D. 2 60 0

Solution

  1. Step 1: Count waypoints in mission list

    Two waypoints are appended, so len(mission) is 2.
  2. Step 2: Access altitude of second waypoint and speed

    mission[1]['alt'] is 60, and speed is set to 10.
  3. Final Answer:

    2 60 10 -> Option A
  4. Quick Check:

    Waypoints=2, altitude=60, speed=10 [OK]
Hint: Count list items and check dictionary keys carefully [OK]
Common Mistakes:
  • Confusing index 0 and 1 for second waypoint
  • Mixing altitude values
  • Ignoring speed variable
4. Identify the error in this waypoint mission code snippet:
mission = []
mission.add({'latitude': 35.0, 'longitude': -120.0, 'altitude': 80})
speed = 15
print(len(mission))
medium
A. Incorrect variable name 'speed'
B. Using 'add' method instead of 'append' for list
C. Missing altitude value in waypoint dictionary
D. Print statement syntax error

Solution

  1. Step 1: Check list method usage

    Python lists use 'append' to add items, not 'add'. Using 'add' causes an error.
  2. Step 2: Verify other parts

    Altitude is present, variable names are correct, and print syntax is valid.
  3. Final Answer:

    Using 'add' method instead of 'append' for list -> Option B
  4. Quick Check:

    List method must be append, not add [OK]
Hint: Use append() to add items to a list [OK]
Common Mistakes:
  • Using set methods like add() on lists
  • Forgetting to include altitude
  • Typos in variable names
5. You want to create a waypoint mission where the drone flies through three points with these coordinates and altitudes using dictionary keys 'latitude', 'longitude', 'altitude': 1) (34.0, -117.0, 100m) 2) (34.1, -117.1, 120m) 3) (34.2, -117.2, 110m) You also want the drone to fly at 8 m/s between points. Which code snippet correctly creates this mission and sets the speed?
hard
A. mission = [{'lat':34.0, 'lon':-117.0, 'alt':100}, {'lat':34.1, 'lon':-117.1, 'alt':120}, {'lat':34.2, 'lon':-117.2, 'alt':110}] speed = 8
B. mission = [] mission.add({'lat':34.0, 'lon':-117.0, 'alt':100}) mission.add({'lat':34.1, 'lon':-117.1, 'alt':120}) mission.add({'lat':34.2, 'lon':-117.2, 'alt':110}) speed = 8
C. mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8
D. mission = [{'lat':34.0, 'lon':-117.0}, {'lat':34.1, 'lon':-117.1}, {'lat':34.2, 'lon':-117.2}] speed = 8

Solution

  1. Step 1: Check waypoint creation with correct keys

    mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8 uses 'latitude', 'longitude', and 'altitude' keys consistently, matching the given data.
  2. Step 2: Verify method to add waypoints and speed setting

    mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8 uses append() correctly to add waypoints and sets speed to 8 m/s as required.
  3. Step 3: Eliminate incorrect options

    mission = [{'lat':34.0, 'lon':-117.0, 'alt':100}, {'lat':34.1, 'lon':-117.1, 'alt':120}, {'lat':34.2, 'lon':-117.2, 'alt':110}] speed = 8 uses different keys ('lat', 'lon', 'alt') which are inconsistent with required keys. mission = [] mission.add({'lat':34.0, 'lon':-117.0, 'alt':100}) mission.add({'lat':34.1, 'lon':-117.1, 'alt':120}) mission.add({'lat':34.2, 'lon':-117.2, 'alt':110}) speed = 8 uses 'add' which is invalid for lists. mission = [{'lat':34.0, 'lon':-117.0}, {'lat':34.1, 'lon':-117.1}, {'lat':34.2, 'lon':-117.2}] speed = 8 misses altitude values.
  4. Final Answer:

    mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8 -> Option C
  5. Quick Check:

    Correct keys + append() + speed = mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8 [OK]
Hint: Use append() with full keys and set speed separately [OK]
Common Mistakes:
  • Using add() instead of append()
  • Missing altitude in waypoints
  • Mixing key names inconsistently