Welcome! This repository contains an onboarding project designed to introduce you to the tools, workflows, and concepts used in the MAGICC Lab.
This is a fun, hands-on project that typically takes about 2 weeks to complete. It's designed for prospective students and volunteers who want to learn what we do in the MAGICC lab—no prior autopilot or robotics experience required!
Note
Time Estimate: Approximately 2 weeks if you spend 10 hours/week. This estimate assumes you have some coding experience (Python or C++) but are new to our lab's tools and workflows. If you have less time available each week, adjust your timeline accordingly. Don't rush—learning these concepts thoroughly is more important than speed!
By completing this project, you will:
- Gain hands-on experience with:
- ROS 2 – A robotics middleware framework used widely in research and industry
git– Version control for collaborative software development- Python or C++ – Your choice for implementing the controller
- Linux – The operating system environment used in robotics research
- (optional) Docker – Containerization for reproducible development environments
- Set up ROSflight – Install and configure an autopilot system and simulator on your computer
- Build a real controller – Write your own ROS 2 node to autonomously navigate a simulated quadrotor
- Have fun! – Solve a challenge, compete on the leaderboard, and gain practical skills
Note
What is ROSflight? ROSflight is an open-source autopilot built from scratch here in the MAGICC lab. Unlike many commercial autopilots, ROSflight is designed to be understandable and extensible, making it ideal for learning about drone control, estimation, and autopilot design.
In this project, you'll install ROSflight and its companion simulator, then write code to control a virtual quadrotor. This mirrors the workflow researchers use to develop and test new algorithms before flying real hardware.
Mr. Karl Maeser has unfortunately found himself stuck inside a chalk circle, and hasn't been able to find any BYU Creamery chocolate milk for days! He is located at the end of a hallway, unable to move.
Luckily, you happen to have a quadrotor that just happens to have a case of BYU Creamery chocolate milk already loaded up. Your assignment is to deliver the goods to Mr. Maeser as quick as you can. But watch out! Hit any walls and your quadrotor will crash (not shown)!
Design and implement a controller that:
- Autonomously navigates through the simulated hallway
- Avoids collisions with all walls
- Reaches Mr. Maeser's location efficiently
- A video link of your quadrotor completing the mission (screen recording, uploaded to YouTube or similar)
- The minimum distance to the walls and completion time from your run (automatically computed by this package)
- A link to your forked repository with your solution code
- Follow the project instructions to complete your project.
- After successfully getting Mr. Maeser his goods, submit your results to the leaderboard.
Ranked list of successful solutions. Solutions are ranked by
Higher scores are better! This means:
- Staying farther from walls (safer flight) increases your score
- Completing the mission faster also increases your score
- You need to balance speed and safety for the best ranking
| Rank | Name | Minimum distance from walls (m) | Best time (s) | GitHub | Video Link |
|---|---|---|---|---|---|
| 1 | Cosmo | 2.5 | 44.5 | repo | video |
