  PiDrone is a quadrotor platform created to accompany an introductory robotics
course. Students build an autonomous flying robot from scratch and learn to
program it through assignments and projects. Existing educational robots do not
have significant autonomous capabilities, such as high-level planning and
mapping. We present a hardware and software framework for an autonomous aerial
robot, in which all software for autonomy can run onboard the drone,
implemented in Python. We present an Unscented Kalman Filter (UKF) for accurate
state estimation. Next, we present an implementation of Monte Carlo (MC)
Localization and FastSLAM for Simultaneous Localization and Mapping (SLAM). The
performance of UKF, localization, and SLAM is tested and compared to ground
truth, provided by a motion-capture system. Our evaluation demonstrates that
our autonomous educational framework runs quickly and accurately on a Raspberry
Pi in Python, making it ideal for use in educational settings.
