0
0
Drone Programmingprogramming~20 mins

Collision avoidance in swarms in Drone Programming - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Swarm Collision Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of simple collision avoidance logic
Consider a swarm of drones where each drone checks the distance to its neighbors and adjusts its velocity to avoid collisions. What is the output of the following code snippet simulating one drone's velocity adjustment?
Drone Programming
neighbors = [(2, 3), (5, 5), (1, 1)]
current_position = (3, 3)
velocity = [1, 1]

for nx, ny in neighbors:
    dx = current_position[0] - nx
    dy = current_position[1] - ny
    dist_sq = dx*dx + dy*dy
    if dist_sq < 5:
        velocity[0] += dx
        velocity[1] += dy

print(tuple(velocity))
A(3, 3)
B(1, 1)
C(0, 0)
D(2, 1)
Attempts:
2 left
💡 Hint
Check which neighbors are within the distance threshold and how velocity changes.
🧠 Conceptual
intermediate
1:30remaining
Key principle behind collision avoidance in swarms
What is the main principle that allows drones in a swarm to avoid collisions while moving together?
AEach drone moves randomly without considering others
BEach drone maintains a minimum distance from neighbors by adjusting velocity
CDrones stop moving when they detect others nearby
DDrones follow a fixed path ignoring neighbors
Attempts:
2 left
💡 Hint
Think about how drones keep safe space around themselves.
🔧 Debug
advanced
2:30remaining
Identify the error causing collision in swarm simulation
The following code is intended to prevent collisions by adjusting drone velocities. However, collisions still occur. What is the bug?
Drone Programming
def avoid_collision(position, neighbors):
    velocity = [0, 0]
    for nx, ny in neighbors:
        dx = position[0] - nx
        dy = position[1] - ny
        dist_sq = dx*dx + dy*dy
        if dist_sq < 4:
            velocity[0] -= dx
            velocity[1] -= dy
    return velocity

# Drone at (3,3) with neighbors
print(avoid_collision((3,3), [(2,3), (4,4), (3,5)]))
AThe velocity update should add dx and dy instead of subtracting
BThe distance threshold is too large causing false positives
CThe distance calculation uses wrong signs causing incorrect velocity adjustment
DThe function does not normalize the velocity vector
Attempts:
2 left
💡 Hint
Check how dx and dy are calculated and used to update velocity.
📝 Syntax
advanced
1:30remaining
Syntax error in collision avoidance velocity update
Which option contains the correct syntax for updating a drone's velocity to avoid neighbors within a threshold?
Drone Programming
neighbors = [(1,2), (3,4)]
position = (2,2)
velocity = [0,0]
for nx, ny in neighbors:
    dx = position[0] - nx
    dy = position[1] - ny
    dist_sq = dx*dx + dy*dy
    if dist_sq < 5
        velocity[0] += dx
        velocity[1] += dy
print(velocity)
AAdd colon after if condition: if dist_sq < 5:
BReplace parentheses with brackets in if condition: if [dist_sq < 5]:
CChange if to while: while dist_sq < 5:
DRemove indentation before velocity updates
Attempts:
2 left
💡 Hint
Check the syntax of the if statement.
🚀 Application
expert
3:00remaining
Calculate number of drones avoiding collision in a swarm
Given a swarm of 5 drones at positions [(0,0), (1,1), (3,3), (5,5), (1,0)], each drone avoids neighbors closer than distance 2 by adjusting velocity. How many drones will adjust their velocity in one update cycle?
A3
B4
C2
D5
Attempts:
2 left
💡 Hint
Check pairs of drones closer than distance 2 and count how many have at least one neighbor that close.