In OPTIMA, one of the objectives is to develop the industrial use cases and the libraries using the programming environments of the OPTIMA framework so as to take full advantage of the underlying novel HPC system. The 4 industrial use cases from 3 distinct different application areas are:
- Robotics Simulations
- MESHFREE: particle-based computational fluid dynamics
- Underground analysis using Finite Element Methods (FEM)
- SAILFISH-CFD: Lattice-Boltzmann particle-based computational fluid dynamics
In this post, we will explain the application of Robotics Simulations.
Cyberbotics Ltd. (CYB) develops an open source robot simulation software named Webots. This software is used to develop intelligent robotics appliances in simulation before transferring the results to real robotics systems (see Figure below).
Robotics appliances require an increasing level of autonomy and hence well-trained Artificial Intelligence (AI) systems, including sensor processing, image recognition, learning abilities, etc. Training and calibrating such AI systems involve running a large number of simulations. These simulations include the generation of simulated sensor data, the actuators dynamics, and the environment dynamics, in order to close the control loop. The same robotics simulation scenarios may be run millions of times together with Machine Learning algorithms (for example evolutionary algorithms) to train intelligent robot controllers.
Such simulations are heavily used for example in the automotive industry to simulate autonomous cars and train intelligent controllers to react to unexpected events. It is also used to validate existing intelligent controllers on a wide range of simulation generated scenarios. Simulations are also heavily used for example to optimize the traffic of a large number of heterogeneous trucks in surface mines.
The simulation process is itself compute intensive: the rigid body physics and various sensors and actuators simulations typically run on multiple CPU cores while the sensor rendering (cameras, lidars, range-finders, etc.) runs on GPUs. Very often, several thousands of simulation instances are running in parallel on compute clusters and are combined together by an evolutionary algorithm that gathers results and setups the next evolutionary iterations. The Artificial Intelligence (AI) of the simulated robotics systems is also usually implemented using computer intensive algorithms, involving sensor data processing, image processing, deep learning, neural networks, and other compute intensive algorithms.
Webots currently rely on standard multi-threading libraries (OpenMP) to spread the compute load across multiple CPU cores. It also makes use of custom python scripts to deploy a series of simulations into compute clusters, schedule them, run them, synchronize them, and gather the results.
Finally, Webots relies on several machine learning libraries to implement intelligent robot controllers, including deep learning, such as Tensor Flow, CUDA, Torch, Keras, Theano, OpenCV, etc. running on CPU and GPU.
Deep learning is increasingly popular in robotics simulations for a number of standard robotics applications, including Self-Localization and Mapping (SLAM) which can rely on Lidar measurements or camera images (e.g., visual SLAM), visual object recognition used for example in visual grasping or classification, various machine learning tasks relying on artificial neural network implementations, etc.
Several parts of the Webots simulator were selected within the OPTIMA project, so as to be ported and optimized for the OPTIMA FPGA-based HPC systems.
The first implementation of Webots on HPC systems aims at accelerating a deep learning-based simulation featuring an autonomous car. Running on CPU, the speed of the simulation is strongly slowed down by the large number of operations required by the robot controller for the inference calculation. The deployment of the neural network part on FPGAs allows to accelerate the execution of the simulation.