  Building domain-specific accelerators for autonomous unmanned aerial vehicles
(UAVs) is challenging due to a lack of systematic methodology for designing
onboard compute. Balancing a computing system for a UAV requires considering
both the cyber (e.g., sensor rate, compute performance) and physical (e.g.,
payload weight) characteristics that affect overall performance. Iterating over
the many component choices results in a combinatorial explosion of the number
of possible combinations: from 10s of thousands to billions, depending on
implementation details. Manually selecting combinations of these components is
tedious and expensive. To navigate the {cyber-physical design space}
efficiently, we introduce \emph{AutoPilot}, a framework that automates
full-system UAV co-design. AutoPilot uses Bayesian optimization to navigate a
large design space and automatically select a combination of autonomy algorithm
and hardware accelerator while considering the cross-product effect of other
cyber and physical UAV components. We show that the AutoPilot methodology
consistently outperforms general-purpose hardware selections like Xavier NX and
Jetson TX2, as well as dedicated hardware accelerators built for autonomous
UAVs, across a range of representative scenarios (three different UAV types and
three deployment environments). Designs generated by AutoPilot increase the
number of missions on average by up to 2.25x, 1.62x, and 1.43x for nano, micro,
and mini-UAVs respectively over baselines. Our work demonstrates the need for
holistic full-UAV co-design to achieve maximum overall UAV performance and the
need for automated flows to simplify the design process for autonomous
cyber-physical systems.
