Duckietown
.
Software Infrastructure for Autonomous Robotics
. Breandan Considine, Maxime Chevalier-Boisvert, Florian Golemo, Liam Paull
. Mila, Universit´
e de Montr´
eal
Software Infrastructure: Overview
Applied robotics presents a number of unique challenges in education and
practice, spanning a broad set of technical and theoretical disciplines. [1]
These concepts are difficult to learn in a classroom setting, and can be
disconnected from their practical application on modern robotics platforms.
Researchers often need to rebuild or re-implement prior work for new
platforms and environments. These difficulties present significant obstacles
to reproducibility and comparison of software for robotics research.
Duckietown [2] is a low-cost hardware platform for robotics development
deployed in many university and industrial robotics laboratories worldwide.
We propose a software extension to the Duckietown platform for robotics
education and machine learning research, leveraging best practices in
software engineering and systems architecture. Our platform offers
deployable solutions and advice for similar projects in robotics and ML.
Simulator: Gym-Duckietown [3]
Gym-Duckietown is an OpenGL based simulator written in pure Python.
Provides an OpenAI Gym [4] compatible API for training, validation and
testing of autonomous vehicles with a number of useful features:
Offers a GPU-accelerated rendering pipeline for rapid training of deep learning models
Supports Domain Randomization [5] for improved generalization and transfer learning
Provides several baseline implementations for reinforcement learning algorithms
Developer Tools: Hatchery
Hatchery is a CLion-based IDE for ROS development written in pure Kotlin.
Supports for C/C++ and Python with roscpp and rospy client libraries.
Syntax comprehension, auto-completion and static analysis in common ROS filetypes
ROS toolchain and build support, simplified project creation and refactoring
Assistance for remote deployment and debugging, with ROS and RQT specific libraries
Enables rapid prototyping in a self-contained, integrated development
environment for ROS development. Minimal user configuration required.
Simulator integration and ROS 2 support is currently a work in progress.
Learn more details at https://github.com/duckietown/hatchery
Container Stack: ROS and Machine Learning
Choose one of two available frameworks: Robot Operating System (ROS)
for classical robotics or PyTorch for machine learning implementations.
Docker offers several of benefits for robotics development, including:
Portability: Containers are cross-platform and OCI-compatible runtime environments
Reproducibility: Images are self-contained, binary-reproducible deployment artifacts
Usability: Images can be easily built, deployed, and run on a variety of platforms
Flexibility: Highly configurable, network-ready, and modular runtime environments
System Architecture
Applications are evaluated using the QEMU emulator running on x86, then
tested on an ARM-based SoC for hardware-in-the-loop validation.
Successful models are deployed to the physical Duckietown platform for
evaluation. Collected logs are serialized and hosted on Amazon S3.
Docker containers are used for testing and deployment. Changes to the
platform are automatically rebuilt using a continuous integration pipeline.
References
Jacopo Tani, Liam Paull, Maria T Zuber, Daniela Rus, Jonathan How, John Leonard, et al.
Duckietown: an innovative way to teach autonomy.
In International Conference EduRobotics 2016, pages 104–121. Springer, 2016.
Liam Paull, Jacopo Tani, Heejin Ahn, Javier Alonso-Mora, Luca Carlone, Michal Cap,
Yu Fan Chen, Changhyun Choi, Jeff Dusek, Yajun Fang, et al.
Duckietown: an open, inexpensive, flexible platform for autonomy education and research.
In Robotics and Automation (ICRA), 2017 IEEE International Conference on. IEEE, 2017.
Maxime Chevalier-Boisvert, Florian Golemo, Yanjun Cao, Bhairav Mehta, and Liam Paull.
Duckietown environments for OpenAI Gym.
https://github.com/duckietown/gym-duckietown, 2018.
Greg Brockman, Vicki Cheung, Ludwig Pettersson, Jonas Schneider, John Schulman, et al.
OpenAI Gym, 2016.
Joshua Tobin, Rachel Fong, Alex Ray, Jonas Schneider, et al.
Domain randomization for transferring deep neural networks from simulation to real world.
CoRR, abs/1703.06907, 2017.
Mila, Universit´
e de Montr´
eal {breandan.considine, maximechevalierb, fgolemo}@gmail.com,
[email protected]