Bird
Raised Fist0
Drone Programmingprogramming~6 mins

Color-based tracking in Drone Programming - Full Explanation

Choose your learning style10 modes available
Introduction
Imagine trying to follow a friend wearing a bright red jacket in a crowded park. Color-based tracking helps drones do something similar by focusing on specific colors to find and follow objects.
Explanation
Color Detection
The drone's camera captures images and looks for pixels that match a chosen color range. This process filters out everything except the colors of interest, making it easier to spot the target object.
Color detection isolates the target by filtering the image based on color.
Color Space Conversion
Images are often converted from the usual red-green-blue (RGB) colors to another system like HSV (hue, saturation, value). This makes it easier to define and detect colors under different lighting conditions.
Changing color spaces helps the drone recognize colors more reliably.
Thresholding
The drone sets limits to decide which pixels belong to the target color. Pixels within this range are kept, while others are ignored, creating a simple black-and-white mask highlighting the object.
Thresholding creates a clear mask to separate the target color from the background.
Object Localization
After isolating the color, the drone finds where the colored object is in the image. It calculates the position and size to understand where the object is and how far it might be.
Localization tells the drone where the colored object is in its view.
Tracking Movement
By continuously detecting the color and position frame by frame, the drone can follow the moving object smoothly. This helps the drone adjust its flight to keep the object in sight.
Tracking uses color detection over time to follow moving objects.
Real World Analogy

Imagine playing a game of tag where you only chase people wearing a bright yellow hat. You ignore everyone else and focus only on that color to find your target quickly.

Color Detection → Spotting the yellow hats among all the people in the park
Color Space Conversion → Noticing the yellow hats even if the sunlight changes how they look
Thresholding → Deciding exactly which shades of yellow count as a hat to chase
Object Localization → Knowing where the person with the yellow hat is standing
Tracking Movement → Following the person as they move around the park
Diagram
Diagram
┌───────────────┐
│ Camera Image  │
└──────┬────────┘
       │ Color Detection
       ▼
┌───────────────┐
│ Color Space   │
│ Conversion    │
└──────┬────────┘
       │ Thresholding
       ▼
┌───────────────┐
│ Color Mask    │
└──────┬────────┘
       │ Object Localization
       ▼
┌───────────────┐
│ Object Position│
└──────┬────────┘
       │ Tracking Movement
       ▼
┌───────────────┐
│ Drone Follows │
│ the Object    │
└───────────────┘
This diagram shows the step-by-step process from capturing an image to the drone following the colored object.
Key Facts
Color Space → A way to represent colors numerically, such as RGB or HSV.
Thresholding → Selecting pixels within a specific color range to isolate the target.
Mask → A black-and-white image highlighting areas of interest based on color.
Localization → Finding the position of the target object within the image.
Tracking → Following the movement of the target over time using continuous detection.
Common Confusions
Color-based tracking works perfectly in all lighting conditions.
Color-based tracking works perfectly in all lighting conditions. Lighting changes can affect color appearance; using color spaces like HSV helps, but tracking may still struggle in very bright or dark environments.
The drone tracks the object by shape or size automatically.
The drone tracks the object by shape or size automatically. Color-based tracking focuses mainly on color; shape and size are secondary and may require additional methods.
Summary
Color-based tracking helps drones find and follow objects by focusing on their color.
The process involves changing color spaces, filtering colors, and locating the object in the camera view.
Tracking means repeating this detection over time to follow the object's movement.

Practice

(1/5)
1. What is the main purpose of color-based tracking in drone programming?
easy
A. To make the drone follow an object by detecting its color
B. To control the drone's altitude using GPS
C. To improve the drone's battery life
D. To send commands to the drone via remote control

Solution

  1. Step 1: Understand color-based tracking concept

    Color-based tracking means the drone uses color detection to follow an object.
  2. Step 2: Identify the main goal

    The goal is to detect and follow an object by its color, not altitude or battery.
  3. Final Answer:

    To make the drone follow an object by detecting its color -> Option A
  4. Quick Check:

    Color-based tracking = follow object by color [OK]
Hint: Focus on color detection as the tracking method [OK]
Common Mistakes:
  • Confusing color tracking with GPS control
  • Thinking it manages battery or remote commands
  • Mixing color tracking with altitude control
2. Which of the following code snippets correctly initializes a color filter for red in a drone's tracking system?
easy
A. red_filter = {'lower': (0, 255, 255), 'upper': (10, 100, 100)}
B. red_filter = {'lower': [100, 0, 0], 'upper': [255, 10, 10]}
C. red_filter = {'low': (0, 100, 100), 'high': (10, 255, 255)}
D. red_filter = {'lower': (0, 100, 100), 'upper': (10, 255, 255)}

Solution

  1. Step 1: Check correct keys for filter dictionary

    The keys should be 'lower' and 'upper' to define color range.
  2. Step 2: Verify value types and ranges

    Values must be tuples with HSV ranges; red_filter = {'lower': (0, 100, 100), 'upper': (10, 255, 255)} uses correct keys and tuples.
  3. Final Answer:

    red_filter = {'lower': (0, 100, 100), 'upper': (10, 255, 255)} -> Option D
  4. Quick Check:

    Correct keys and tuple values = red_filter = {'lower': (0, 100, 100), 'upper': (10, 255, 255)} [OK]
Hint: Look for 'lower' and 'upper' keys with tuple HSV values [OK]
Common Mistakes:
  • Using wrong dictionary keys like 'low' or 'high'
  • Using lists instead of tuples for HSV values
  • Swapping lower and upper HSV ranges
3. Given the following code snippet for detecting a blue object, what will be printed if the detected object's center is at (150, 200)?
blue_filter = {'lower': (100, 150, 0), 'upper': (140, 255, 255)}
object_center = (150, 200)
if 100 <= object_center[0] <= 140:
    print('Blue object detected at', object_center)
else:
    print('No blue object detected')
medium
A. Blue object detected at (150, 200)
B. SyntaxError
C. No blue object detected
D. RuntimeError

Solution

  1. Step 1: Check the condition on x-coordinate

    Condition checks if 100 <= 150 <= 140, which is false because 150 > 140.
  2. Step 2: Determine which print executes

    Since condition is false, else block runs printing 'No blue object detected'.
  3. Final Answer:

    No blue object detected -> Option C
  4. Quick Check:

    150 not in 100-140 range = No detection [OK]
Hint: Check numeric range conditions carefully [OK]
Common Mistakes:
  • Assuming 150 is within 100 to 140 range
  • Confusing syntax errors with logic errors
  • Ignoring else block output
4. The following code is intended to detect a green object and print its position, but it raises an error. What is the error and how to fix it?
green_filter = {'lower': (40, 50, 50), 'upper': (80, 255, 255)}
object_center = None
if green_filter['lower'][0] <= object_center[0] <= green_filter['upper'][0]:
    print('Green object at', object_center)
else:
    print('No green object detected')
medium
A. SyntaxError due to incorrect dictionary keys; fix keys to 'low' and 'high'
B. TypeError because object_center is None; fix by assigning a tuple to object_center
C. IndexError because green_filter keys are missing; add keys
D. No error; code runs correctly

Solution

  1. Step 1: Identify the error cause

    object_center is None, so accessing object_center[0] causes TypeError.
  2. Step 2: Fix the error

    Assign a tuple like (x, y) to object_center before using it in condition.
  3. Final Answer:

    TypeError because object_center is None; fix by assigning a tuple to object_center -> Option B
  4. Quick Check:

    None used as index causes TypeError [OK]
Hint: Check variable types before indexing [OK]
Common Mistakes:
  • Ignoring NoneType indexing error
  • Changing dictionary keys incorrectly
  • Assuming code runs without error
5. You want the drone to follow a yellow object but only if its detected center's y-coordinate is above 100. Which code snippet correctly implements this condition using color-based tracking?
yellow_filter = {'lower': (20, 100, 100), 'upper': (30, 255, 255)}
object_center = (120, 150)

# Choose the correct condition to check
hard
A. if yellow_filter['lower'][0] <= object_center[0] <= yellow_filter['upper'][0] and object_center[1] > 100: print('Following yellow object')
B. if yellow_filter['lower'][1] <= object_center[1] <= yellow_filter['upper'][1] and object_center[0] > 100: print('Following yellow object')
C. if yellow_filter['lower'][0] <= object_center[1] <= yellow_filter['upper'][0] and object_center[0] > 100: print('Following yellow object')
D. if yellow_filter['lower'][1] <= object_center[0] <= yellow_filter['upper'][1] and object_center[1] > 100: print('Following yellow object')

Solution

  1. Step 1: Understand HSV and coordinate roles

    yellow_filter keys 'lower' and 'upper' define hue range at index 0; object_center[0] is x, object_center[1] is y.
  2. Step 2: Check condition for hue and y-coordinate

    Hue check uses object_center[0] between lower and upper hue; y-coordinate must be > 100.
  3. Final Answer:

    if yellow_filter['lower'][0] <= object_center[0] <= yellow_filter['upper'][0] and object_center[1] > 100: print('Following yellow object') -> Option A
  4. Quick Check:

    Hue range on x and y > 100 condition = if yellow_filter['lower'][0] <= object_center[0] <= yellow_filter['upper'][0] and object_center[1] > 100: print('Following yellow object') [OK]
Hint: Match hue with x, check y > 100 separately [OK]
Common Mistakes:
  • Mixing x and y coordinates in conditions
  • Using wrong indices for hue or saturation
  • Checking y-coordinate against hue range
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