Georgia Tech professor Jon Rogers recently completed what may be the world’s first GPU-enabled flight of an unmanned aircraft. Rogers and his team used a CUDA-on-ARM development board to guide the flight of a parafoil, as part of a successful mission, which took place on January 10, 2014.
Parafoils are a type of parachute commonly used to deliver food and other supplies to remote areas. Despite being more steerable than simpler round canopy designs, they often miss their targets due to wind gusts and turbulence. Rogers explains that using real-time Monte Carlo simulation on a GPU makes it possible to evaluate obstacle collision risk associated with potential trajectories given uncertainty in winds. “This results in a robust guidance algorithm in which risk due to uncertain winds can be evaluated in real-time, and control decisions made accordingly,” the professor notes.
The experiment employed a powered parafoil with a six-foot span. The team used a NVIDIA Quadro 1000M GPU, part of the SECO CARMA development board that includes the Quadro card integrated with a Tegra ARM processor, powered by a small battery.
In an email conversation with HPCwire, Rogers explained that “the GPU board is coupled with a custom-built sensor package to provide real-time updates to the commanded landing trajectory.”
“The first flight was an awesome experience – to equip a low-cost aircraft with such computing power is transformative from a guidance and control perspective,” Rogers shared. “Entirely new control tasks are enabled when this degree of computational throughput is available. We have been working for about a year to take our ideas from simulation to flight test, and it paid off.”
As part of a NVIDIA CUDA Spotlight interview conducted earlier this year, Rogers offered additional details about his work using GPUs for guidance and control of robotic systems. “The GPU is a tool that allows us to quantify uncertainty accurately in real-time for robotic devices,” he stated. “Previous robust control algorithms made linear, Gaussian approximations to ensure that control formulations could be executed in real-time. The problem is, these assumptions are usually not valid for many aerospace vehicles and lead to poor performance. GPUs allow us to propagate non-Gaussian uncertainty for nonlinear systems through Monte Carlo simulation, …an ’embarrassingly parallel’ process which yields 1-2 orders of magnitude runtime reduction when implemented on a GPU.”
To perform its guidance operations, the parafoil code needs to generate about 1.4 million random numbers (100,000 trajectories and 14 randomized variables) every time a Monte Carlo simulation is run, meaning every 2 seconds the vehicle is in flight. By using cuRAND (NVIDIA’s CUDA Random Number Generation library) it is possible to generate randomized initial conditions and wind values in each GPU thread, rather than transferring this data from the CPU. This removes a major bottleneck in the code.
Rogers will be speaking more about the project at the upcoming NVIDIA GPU Technology Conference on March 26, in San Jose, California.
“GPU’s are emerging as powerful new tools for uncertainty quantification through their ability to perform real-time Monte Carlo simulation as part of a closed-loop control system,” notes the session abstract. “By coupling GPU-based uncertainty propagation with optimal control laws, robotic vehicles can ‘hedge their bets’ in unknown environments and protect themselves from unexpected disturbances.”
Tip of the hat to Marc Hamilton’s blog post for first reporting on the successful flight.