Bird
Raised Fist0
Drone Programmingprogramming~10 mins

ArUco marker landing in Drone Programming - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - ArUco marker landing
Start Drone
↓
Search for ArUco Marker
↓
Marker Detected?
No→Keep Searching
Yes↓
Calculate Marker Position
↓
Adjust Drone Position
↓
Is Drone Aligned?
No→Adjust Position Again
Yes↓
Descend Slowly
↓
Landing Complete
↓
Stop Drone
The drone starts, searches for the ArUco marker, detects it, calculates its position, aligns itself, descends, and lands.
Execution Sample
Drone Programming
while not landed:
    detect_marker()
    if marker_found:
        position = get_marker_position()
        align_to_marker(position)
        if aligned:
            descend()
            if on_ground:
                landed = True
This code makes the drone detect the ArUco marker, align to it, and descend until it lands.
Execution Table
StepActionMarker Found?Position CalculatedAligned?Descend?Landed?
1Start drone and searchNoN/ANoNoNo
2Search againNoN/ANoNoNo
3Marker detectedYesCalculate position (x=2,y=3)NoNoNo
4Align to markerYesPosition (2,3)YesNoNo
5DescendYesPosition (2,3)YesYesNo
6Check if on groundYesPosition (2,3)YesYesYes
7Landing completeYesPosition (2,3)YesNoYes
💡 Drone lands when it is aligned and on the ground, setting landed to True.
Variable Tracker
VariableStartAfter Step 3After Step 4After Step 5After Step 6Final
marker_foundFalseTrueTrueTrueTrueTrue
positionNone(2,3)(2,3)(2,3)(2,3)(2,3)
alignedFalseFalseTrueTrueTrueTrue
descendFalseFalseFalseTrueTrueFalse
landedFalseFalseFalseFalseTrueTrue
Key Moments - 3 Insights
Why does the drone keep searching even after starting?
Because marker_found is False at first (see step 1 and 2 in execution_table), so the drone continues searching until it detects the marker.
What happens if the drone is not aligned after detecting the marker?
The drone will keep adjusting its position and will not descend until aligned is True (see step 3 and 4).
When does the drone stop descending and consider landing complete?
When the drone is aligned and on_ground becomes True (step 6), it sets landed to True and stops descending.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step does the drone first detect the marker?
AStep 1
BStep 5
CStep 3
DStep 7
💡 Hint
Check the 'Marker Found?' column in execution_table rows.
According to variable_tracker, what is the value of 'aligned' after Step 4?
ATrue
BNone
CFalse
DNot set
💡 Hint
Look at the 'aligned' row under 'After Step 4' in variable_tracker.
If the drone never aligns, what will happen to the 'descend' variable in execution_table?
AIt will become True anyway
BIt will stay False
CIt will toggle between True and False
DIt will cause an error
💡 Hint
Refer to the 'Aligned?' and 'Descend?' columns in execution_table rows 3 and 4.
Concept Snapshot
ArUco marker landing process:
1. Start drone and search for marker.
2. Detect marker and calculate position.
3. Align drone to marker position.
4. Descend only when aligned.
5. Land when on ground and aligned.
6. Stop drone after landing.
Full Transcript
This visual execution shows how a drone uses an ArUco marker to land. The drone starts by searching for the marker. If the marker is not found, it keeps searching. Once detected, it calculates the marker's position and aligns itself. The drone only descends when aligned. When it reaches the ground, it sets landed to True and stops. Variables like marker_found, position, aligned, descend, and landed change step-by-step to guide the drone's behavior.

Practice

(1/5)
1. What is the main purpose of using an ArUco marker in drone landing?
easy
A. To help the drone locate a precise landing spot using camera vision
B. To increase the drone's flying speed
C. To improve the drone's battery life
D. To enable the drone to fly higher

Solution

  1. Step 1: Understand ArUco marker function

    ArUco markers are visual tags that drones detect with cameras to find exact positions.
  2. Step 2: Connect marker use to landing

    The drone uses the marker to center itself and land precisely where the marker is placed.
  3. Final Answer:

    To help the drone locate a precise landing spot using camera vision -> Option A
  4. Quick Check:

    ArUco marker = precise landing spot [OK]
Hint: ArUco markers guide landing, not speed or battery [OK]
Common Mistakes:
  • Thinking ArUco markers affect speed
  • Confusing marker use with battery improvement
  • Assuming marker helps flying altitude
2. Which of the following is the correct Python syntax to detect an ArUco marker using OpenCV?
easy
A. corners, ids, rejected = cv2.aruco.detectMarkers(image, dictionary)
B. corners, ids = cv2.aruco.detectMarkers(image dictionary)
C. corners, ids, rejected = cv2.detectMarkers(image, dictionary)
D. corners, ids, rejected = cv2.aruco.detectMarker(image, dictionary)

Solution

  1. Step 1: Recall OpenCV ArUco detection syntax

    The correct function is cv2.aruco.detectMarkers with parameters (image, dictionary).
  2. Step 2: Check returned values

    It returns corners, ids, and rejected candidates, so three outputs are expected.
  3. Final Answer:

    corners, ids, rejected = cv2.aruco.detectMarkers(image, dictionary) -> Option A
  4. Quick Check:

    Correct function and outputs = corners, ids, rejected = cv2.aruco.detectMarkers(image, dictionary) [OK]
Hint: Remember detectMarkers returns three values with cv2.aruco [OK]
Common Mistakes:
  • Missing comma between arguments
  • Using wrong function name detectMarker
  • Not unpacking all three return values
3. Given this code snippet for ArUco marker detection, what will be printed if no markers are found?
corners, ids, rejected = cv2.aruco.detectMarkers(frame, dictionary)
if ids is None:
    print("No markers detected")
else:
    print(f"Detected {len(ids)} markers")
medium
A. Detected 0 markers
B. No markers detected
C. Error: ids is undefined
D. Detected None markers

Solution

  1. Step 1: Understand detectMarkers output when no markers found

    When no markers are detected, ids is None, not an empty list.
  2. Step 2: Follow the if condition

    The code checks if ids is None, then prints "No markers detected".
  3. Final Answer:

    No markers detected -> Option B
  4. Quick Check:

    ids is None means no markers [OK]
Hint: ids is None means no markers, not empty list [OK]
Common Mistakes:
  • Assuming ids is empty list when no markers
  • Expecting length of None causes error
  • Printing zero markers instead of message
4. This code snippet is intended to center the drone over the detected ArUco marker. What is the bug?
corners, ids, _ = cv2.aruco.detectMarkers(frame, dictionary)
if ids is not None:
    cX = int(corners[0][0][0][0])
    cY = int(corners[0][0][0][1])
    move_drone_to(cX, cY)
else:
    print("Marker not found")
medium
A. Using move_drone_to with wrong parameters
B. Missing check if corners is empty
C. Incorrect indexing of corners to get center point
D. No bug, code works correctly

Solution

  1. Step 1: Analyze corners indexing

    corners[0][0] is a list of marker corner points; [0][0] accesses first corner point, not center.
  2. Step 2: Identify correct center calculation

    Center should be average of all four corners, not just first point.
  3. Final Answer:

    Incorrect indexing of corners to get center point -> Option C
  4. Quick Check:

    Center = average corners, not first corner [OK]
Hint: Center is average of corners, not first corner point [OK]
Common Mistakes:
  • Using first corner as center
  • Not averaging corner points
  • Ignoring possibility of empty corners
5. You want the drone to land on an ArUco marker by centering it and then descending. Which sequence of steps in code best achieves this?
hard
A. Detect marker -> Descend quickly -> Calculate center -> Move drone to center
B. Descend slowly -> Detect marker -> Move drone randomly -> Confirm landing
C. Move drone randomly -> Detect marker -> Descend quickly -> Confirm landing
D. Detect marker -> Calculate center -> Move drone to center -> Descend slowly -> Confirm landing

Solution

  1. Step 1: Understand safe landing sequence

    First detect the marker and find its center to position the drone accurately.
  2. Step 2: Move drone to center and descend carefully

    After centering, descend slowly to avoid missing the marker or crashing.
  3. Final Answer:

    Detect marker -> Calculate center -> Move drone to center -> Descend slowly -> Confirm landing -> Option D
  4. Quick Check:

    Correct landing sequence = Detect marker -> Calculate center -> Move drone to center -> Descend slowly -> Confirm landing [OK]
Hint: Center first, then descend slowly for safe landing [OK]
Common Mistakes:
  • Descending before centering marker
  • Moving drone randomly without marker detection
  • Descending too fast risking crash
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