  We develop and commercialize autonomous machines, such as logistic robots and
self-driving cars, around the globe. A critical challenge to our -- and any --
autonomous machine is accurate and efficient localization under resource
constraints, which has fueled specialized localization accelerators recently.
Prior acceleration efforts are point solutions in that they each specialize for
a specific localization algorithm. In real-world commercial deployments,
however, autonomous machines routinely operate under different environments and
no single localization algorithm fits all the environments. Simply stacking
together point solutions not only leads to cost and power budget overrun, but
also results in an overly complicated software stack.
  This paper demonstrates our new software-hardware co-designed framework for
autonomous machine localization, which adapts to different operating scenarios
by fusing fundamental algorithmic primitives. Through characterizing the
software framework, we identify ideal acceleration candidates that contribute
significantly to the end-to-end latency and/or latency variation. We show how
to co-design a hardware accelerator to systematically exploit the parallelisms,
locality, and common building blocks inherent in the localization framework. We
build, deploy, and evaluate an FPGA prototype on our next-generation
self-driving cars. To demonstrate the flexibility of our framework, we also
instantiate another FPGA prototype targeting drones, which represent mobile
autonomous machines. We achieve about 2x speedup and 4x energy reduction
compared to widely-deployed, optimized implementations on general-purpose
platforms.
