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
Companion Computer Integration with Raspberry Pi for Drone Control
📖 Scenario: You are building a simple program on a Raspberry Pi that acts as a companion computer for a drone. The Pi will read sensor data, decide if the drone should take action, and send commands accordingly.This project simulates reading sensor values, setting a threshold, filtering sensor data, and printing commands to control the drone.
🎯 Goal: Create a program that stores sensor readings, sets a threshold for action, filters sensor data above the threshold, and prints commands to the drone based on filtered data.
📋 What You'll Learn
Create a dictionary called sensor_data with exact sensor names and values
Create a variable called threshold with the exact value 50
Use a dictionary comprehension to create filtered_data with sensors having values above threshold
Print the filtered_data dictionary
💡 Why This Matters
🌍 Real World
Companion computers like Raspberry Pi help drones process data and make decisions independently from the main flight controller.
💼 Career
Understanding how to filter and process sensor data on companion computers is important for drone software developers and robotics engineers.
Progress0 / 4 steps
1
Create sensor data dictionary
Create a dictionary called sensor_data with these exact entries: 'altitude': 45, 'temperature': 55, 'battery': 80, 'speed': 30
Drone Programming
Hint
Use curly braces {} to create a dictionary with keys and values separated by colons.
2
Set threshold value
Create a variable called threshold and set it to the integer 50
Drone Programming
Hint
Just assign the number 50 to the variable threshold.
3
Filter sensor data above threshold
Use a dictionary comprehension to create a dictionary called filtered_data that includes only the sensors from sensor_data with values greater than threshold
Drone Programming
Hint
Use {key: value for key, value in dict.items() if condition} to filter dictionary entries.
4
Print filtered sensor data
Print the filtered_data dictionary to display sensors with values above the threshold
Drone Programming
Hint
Use print(filtered_data) to show the filtered dictionary.
Practice
(1/5)
1. What is the main role of a Raspberry Pi when used as a companion computer in drone programming?
easy
A. To add smart features and process data alongside the drone's flight controller
B. To replace the drone's flight controller completely
C. To act as a remote control for the drone
D. To charge the drone's batteries during flight
Solution
Step 1: Understand the companion computer concept
A companion computer like Raspberry Pi works alongside the drone's flight controller to add extra processing power and smart features.
Step 2: Identify the Raspberry Pi's role
It does not replace the flight controller but supports it by handling tasks like image processing or advanced navigation.
Final Answer:
To add smart features and process data alongside the drone's flight controller -> Option A
Quick Check:
Companion computer = extra smart features [OK]
Hint: Remember: companion computer supports, not replaces flight controller [OK]
Common Mistakes:
Thinking Raspberry Pi replaces the flight controller
Confusing companion computer with remote control
Assuming it charges the drone
2. Which of the following is the correct way to import the DroneKit library in a Python script running on a Raspberry Pi?
easy
A. import DroneKit
B. from dronekit import connect
C. import dronekit
D. import drone_kit
Solution
Step 1: Recall DroneKit import syntax
The DroneKit library is imported using 'from dronekit import connect' to access the connect function directly.
Step 2: Check case sensitivity and module name
Python is case sensitive; 'DroneKit' or 'drone_kit' are incorrect module names.
Final Answer:
from dronekit import connect -> Option B
Quick Check:
Correct import syntax = from dronekit import connect [OK]
Hint: Use exact lowercase 'dronekit' and import needed functions [OK]
Common Mistakes:
Using wrong capitalization in module name
Trying to import the whole module without specifying functions
Misspelling the library name
3. Given the following Python code snippet on a Raspberry Pi connecting to a drone via UDP:
from dronekit import connect
vehicle = connect('udp:127.0.0.1:14550', wait_ready=True)
print(vehicle.mode.name)
What will this code output if the drone is in GUIDED mode?
medium
A. guided
B. Mode GUIDED not found
C. GUIDED
D. SyntaxError
Solution
Step 1: Understand vehicle.mode.name output
The mode name property returns the mode as an uppercase string, e.g., 'GUIDED'.
Step 2: Check the print output for GUIDED mode
Since the drone is in GUIDED mode, the output will be 'GUIDED' in uppercase.
Final Answer:
GUIDED -> Option C
Quick Check:
vehicle.mode.name returns uppercase mode [OK]
Hint: DroneKit mode names print in uppercase strings [OK]
Common Mistakes:
Expecting lowercase mode names
Confusing attribute access syntax
Assuming code causes syntax error
4. You wrote this code on your Raspberry Pi to connect to a drone via serial port:
from dronekit import connect
vehicle = connect('/dev/ttyUSB0', baud=57600, wait_ready=True)
print(vehicle.battery.level)
But you get an error: TypeError: connect() got an unexpected keyword argument 'baud'. What is the fix?
medium
A. Change 'baud' to 'baudrate' in the connect() call
B. Remove 'wait_ready=True' from connect()
C. Use 'baud' but set it to 115200 instead
D. Change '/dev/ttyUSB0' to 'udp:127.0.0.1:14550'
Solution
Step 1: Identify the correct parameter name for baud rate
The connect() function expects 'baudrate' not 'baud' as the keyword argument for serial speed.
Step 2: Fix the parameter name in the code
Replace 'baud=57600' with 'baudrate=57600' to fix the TypeError.
Final Answer:
Change 'baud' to 'baudrate' in the connect() call -> Option A
Quick Check:
Correct parameter name = baudrate [OK]
Hint: Use 'baudrate' keyword, not 'baud' in connect() [OK]
Common Mistakes:
Using 'baud' instead of 'baudrate'
Changing connection type unnecessarily
Removing wait_ready without cause
5. You want your Raspberry Pi companion computer to monitor the drone's battery and land the drone automatically if battery level falls below 20%. Which code snippet correctly implements this logic using DroneKit?
hard
A. if vehicle.battery.level < 20:
vehicle.mode = vehicle.mode.LAND
B. if vehicle.battery.level < 20:
vehicle.mode = vehicle.mode.name('LAND')
C. if vehicle.battery.level < 20:
vehicle.mode = vehicle.mode('LAND')
D. if vehicle.battery.level < 20:
vehicle.mode = 'LAND'
Solution
Step 1: Understand how to set vehicle mode
To change the drone mode, assign a string like 'LAND' directly to vehicle.mode.
Step 2: Check the battery level condition
If battery level is below 20%, set vehicle.mode = 'LAND' to command landing.
Final Answer:
if vehicle.battery.level < 20:
vehicle.mode = 'LAND' -> Option D
Quick Check:
Set mode by assigning string name directly [OK]
Hint: Assign mode as string like 'LAND' to vehicle.mode [OK]