Domain Randomization & Synthetic Data Generation for AUAVs
Reducing Perceptual Uncertainty of Sim2Real Navigation
ROLE: AI & Robotics Software Engineer
SKILLS UTILIZED: 3D Environment Design & Development, UE Material and Shader Design, Networking, Sensor Simulation, Data Collection, Data Processing, Data Analysis, Coding (C++, Python)
SOFTWARE: Unreal Engine, ROS 2, Substance Painter & Designer, Maya, TensorFlow, DJI SDK
Navigation for autonomous UAVS (unmanned aerial vehicles) is a complex problem and physical field testing of associated tasks introduces a great deal of risk. Furthermore, task performance exhibited in traditional virtual simulations often does not directly transfer to the physical world. This results in additional system modifications being needed, which greatly increase development complexity and time-to-deployment.
In order to address this issue, a virtual UAV simulator (using Unreal Engine) was built around the machine learning technique of domain randomization. The simulation, tailored to autonomous UAV navigation, randomizes environmental components such as lighting, materials, and object pose on each new lap of a racing circuit. As the virtual UAV collects data it is being saved into a dedicated directory, so that the images may be used for training a computer vision (CV) model such as a CNN. The CNN is to be used for detecting racing gates and calculating state, so that appropriate navigation commands may be sent.
This randomization technique increases the object detection model's robustness. Variation in the training data's environmental materials and lighting enable the model to adapt and reliably navigate when faced with this uncertainty.