This paper introduces flüela driverless: the first autonomous racecar to win a Formula Student Driverless competition. In this competition, among other challenges, an autonomous racecar is tasked to complete 10 laps of a previously unknown racetrack as fast as possible and using only onboard sensing and computing. The key components of flüela's design are its modular redundant sub-systems that allow robust performance despite challenging perceptual conditions or partial system failures. The paper presents the integration of key components of our autonomous racecar, i.e., system design, EKF-based state estimation, LiDAR-based perception, and particle filter-based SLAM. We perform an extensive experimental evaluation on real-world data, demonstrating the system's effectiveness by outperforming the next-best ranking team by almost half the time required to finish a lap. The autonomous racecar reaches lateral and longitudinal accelerations comparable to those achieved by experienced human drivers.READ FULL TEXT VIEW PDF
On August 13th 2017, flüela driverless became the first car to ever win the Formula Student Driverless (FSD) competition. The competition requires the car to race fully autonomously and consists of 4 dynamic and 4 static disciplines . The dynamic disciplines test the system’s reliability under general race conditions and at high lateral and longitudinal speeds. The static disciplines evaluate the system’s design under aspects of software, hardware, costs, and business. While flüela driverless performed well in all categories, we this paper focuses on software and hardware designs.
The hardware platform for the project is flüela, an electric 4WD car with a full aerodynamic package, high wheel torque, and a lightweight design developed by AMZ111http://www.amzracing.ch/ for Formula Student Electric 2015. The sensor outfit for autonomous operation and the software system are developed from scratch.
In our autonomous design, system reliability under high performance operation is chosen as the main design goals, since the FSD regulations allow no human intervention.
This paper presents the state estimation, LiDAR SLAM, and localization systems that were integrated in flüela. The autonomous system perceives its surroundings using a 3D LiDAR and a self-developed visual-inertial stereo camera system. Furthermore, a velocity sensor and an Inertial Navigation System (INS) combining an IMU and a GPS were added for state estimation. All the information is processed online by two computing units running Robot Operating System (ROS) and a real-time capable Electronic Control Unit (ECU). Figure 2 shows an overview of the hardware-software setup.
In order to reach flüela’s full potential when racing autonomously, the track must be known at least ahead. At high speeds, this requires a perception horizon that exceeds the sensors’ range. The car must thus drive carefully to discover and map the track. This mode will later be referred to as SLAM Mode. Once the map is known, the car can drive in Localization Mode which can exploit the advantage of planning on the previously mapped race-track.
The contributions of this paper are:
A complete pipeline from perception to state estimation with on-board sensors and computation only, capable of driving an autonomous racecar close to a human driver’s performance.
Extensive experimental evaluation and demonstration in real-world racing scenarios.
The remainder of this paper is structured as follows. Section II introduces state-of-the-art work on autonomous racing, Section III describes the theoretical development for this project and Section IV the implementation details. We present our experimental results in Section V, and conclude in Section VI.
Autonomous racing is an emerging field within autonomous driving. In the last years, a few self-racing vehicles have been developed, both in academic and in the industrial research. The first known autonomous vehicle competition was the DARPA Grand Challenge,  which motivated the development of several autonomous cars in a two year period. These cars had to compete in a desert environment and drive through a way-point corridor given shortly before the race. In this sense, it is similar to FSD since a short period for mapping is allowed just before the race. They however differ in that the FSD track is asphalt, the vehicles are designed for racing and reached over and accelerations.
Other autonomous racecars were developed afterwards , but their main goal was vehicle dynamic control and not SLAM and state estimation. In addition, several scaled racecars were developed  but they focus on control and have an external localization system. Others were developed with on-board sensors only  but the main focus also lied on control.
Finally, a look to the industry should not be forgotten, where an Audi RS7 and a Nio EP9 broke the speed record for autonomous cars in 2014 and 2017 respectively. Devbot from roborace also featured the first wheel to wheel autonomous race (2017).
In this section an insight is given in the full setup of the state estimation system, including the LiDAR/camera based mapping & localization system. First a high level system overview is presented.
The system architecture has been designed for reliability and performance. Reliability was given largest priority as the competition only grants one run, regardless of adverse weather conditions or software glitches.
The car is fitted with an Inertial Navigation System, an optical Ground Speed Sensor (GSS), a LiDAR and a self-developed visual-inertial stereo camera system. Furthermore, individual wheel speeds are determined by reading out each wheel encoder. Consumer-grade GPS is used (no differential GPS or RTK) as an absolute position sensor. Cones that mark the race-track are detected by both LiDAR and camera to create redundancy in the perception pipelines.
The chosen computing system consists of a high performance slave and an industrial master computer. The slave computer is dedicated to vision-based perception and the master computer runs all other software packages. Since vision-based perception is redundant with LiDAR, this solution ensures high reliability without limiting performance. The last important factor for reliable operation is the self-developed computing housing, presented in Sec. IV-B.
The designed software system runs on Ubuntu 14 LTS within the ROS Indigo framework. The distributed nature of ROS simplifies the integration of the slave computer. Chrony is used to synchronize the clocks of both computers over Ethernet.
Finally, a real-time capable ECU runs the low level controllers and low level state machine of the car. The torque vectoring and traction controllers developed for the original car are used to distribute individual torques to all 4 wheels at. Their target is the desired throttle calculated on the master computer. The car relies on regenerative braking encoded as a negative throttle input during normal operation and the mechanical brakes are only used for emergency stops. Lastly, the ECU forwards the desired steering angle from the master computer to the internal controller of the steering actuator after a simple integrity check.
State estimation is an essential part of any mobile robotic application as it enables the robust operation of other system components. Several sensors are fused to estimate the pose and velocity of the ground vehicle. To take advantage of redundancy in state estimation, the contribution of each sensor input to the overall estimated state has to be quantified in function of the sensor’s accuracy and previous state knowledge. The Extended Kalman Filter (EKF) is the state-of-the-art estimator for fast, mildly non-linear systems. For systems with white zero-mean additive gaussian noise corrupting the sensors and the process model, it is a good approximation of the optimal solution.
The process model used is driven by the accelerometer as proposed in . The vehicle body frame is chosen to coincide with the IMU frame. A constant velocity model is used with the accelerometer as a pseudo input to the system. Due to the application constraints, it is known that the vehicle will remain on the ground and not be substantially tilted. This assumption simplifies the state to a 2D state with only 6 elements. The state vector is defined as:
where and are respectively the position and heading of the car (IMU) expressed in world reference frame. and are respectively the linear and angular velocities of the car expressed in body reference frame. The process model is defined as:
where is the linear acceleration measured by the IMU, is the 2D rotation matrix between the vehicle body frame and the world reference frame, and
are i.i.d white noise distributed as, .
The vehicle is equipped with multiple sensors (see Sec. I) which can be decomposed on the quantities being measured: position (), heading (), velocity (), and yaw rate (). inline,color=green!40inline,color=green!40todo: inline,color=green!40Renaud: I am not sure about this. It basically says that a position sensor is . answ: I don’t understand inline,color=green!40inline,color=green!40todo: inline,color=green!40Renaud: I am surprised that the reviewers did not comment about this. Variable usually refer to measurements.. not the sensors. I would propose the following: The vehicle is equipped with multiple sensors (see Sec. I) which are differentiated based on the quantity being measured: position (), heading (), velocity (), and yaw rate (). This is not perfect but at least it is not wrong. (miv) is it better now? For instance, the GPS can be seen as a position sensor and the localization described in (Sec. III-D) as a position and a heading sensor. For this to hold, it is assumed that the noises of the decomposed measurements are uncorrelated. The measurements are introduced as
where are the different measurement models, is the position of the sensor in body frame and is the sensor heading in body frame. are gaussian i.i.d. noises that corrupt the sensor measurements.
In order to determine for which states the system is observable, the observability matrix of the non-linear system must be analyzed. It can be constructed using the Lie derivatives of the sensor model presented in III-B2. They are defined recursively as
The Observability matrix is defined as
By performing a rank-test on , it can be determined whether the system is weakly locally observable (in case of full column rank, ) or not observable. This analysis yields three scenarios:
The state is observable if there is at least one position and one heading sensor.
The state is not observable if there is no position sensor.
The state is observable except at stand-still if there is a position sensor but no heading sensor.
In the current setup, there always is a position sensor (GPS) but no heading sensor until the map is known and localization output is fed to state estimation, which means scenario 3) in SLAM Mode and 1) Localization Mode. To overcome the fact that the heading cannot be estimated at stand-still if the map is not known, a Frozen Pose Update (FPU) is implemented. It differs from the Zero-velocity update (ZUPT) since it assumes a constant pose instead of zero velocities. As long as zero-motion is detected, a virtual measurement is added that simulates a position and heading sensor with the value of the frozen pose. This prevents the system from drifting even if the process model is biased or there is noise in the velocity sensors. In this application, the whole pose is frozen instead of only the heading as it is more important for the pose estimate to not drift at stand still than to drift towards the actual position.
The EKF approach can only take into account measurements from the current state which is a problem with delayed measurements.
A trivial solution is to keep a buffer of previous state distributions and measurements, and at every iteration the state is propagated forward and corrected with all the newer measurements up to the current time.
Although this approach is simple, consistently delayed measurements considerably increase the computational time of the filter. For other methods addressing discrete Kalman filters with delays, see .
We propose an approximate approach (see Fig. 3) where the EKF is calculated up to the most delayed measurement. A steady-state approximation of the EKF (SSKF) is then executed, taking into account all measurements newer than the most delayed one to keep a high-rate updated estimate for the control system. The SSKF is a simplified version of the EKF, where the covariance is assumed to be constant (or slowly varying) for the interval from the most delayed measurement to the current time. The measurement model is assumed to be close to linear and the measurement noise and process noise are assumed to be stationary for this interval. This leads to a constant Kalman gain, avoiding the matrix inversion step. There is also no need to calculate the covariance in this interval. This approach provides a trade-off for systems with delayed measurements that balances the accuracy of the EKF and runtime of SSKF.
Sensor faults are a major factor undermining the robustness of state estimation systems. We therefore use a probabilistic outlier detection method that works with any sensor. The idea was first presented by Brumback and Srinath and later used by Hausman et al. . This approach makes use of the innovation covariance calculated in the EKF. This allows one to assess the likelihood of a measurement belonging to innovation distribution. This approach intrinsically accounts for the uncertainty of the state and the sensor noise model:
where and are the residual (or innovation) and its covariance. and are the measurement and its covariance. and are the estimated state and its covariance. is the measurement model and is its linearization around .
If the Chi-Squared () test fails, the measurement is considered an outlier. It fails when Eq. 8 does not hold:
whereand is the threshold to reject an outlier of the sensor in the test.
In this paper, the outlier detection is extended to health estimation and diagnosis based on the same idea as the outlier detector (the normalized sum of squares of the residuals). This normalized sum is scaled to reach 1 when it is considered an outlier and saturated to 1.
where , and are the last diagnosis, last residual and last innovation matrix of the sensor respectively. is the weight of sensor in the weighted sum that determines the overall diagnosis of the system (). is the number of sensors. where 0 means that every sensor is an outlier and 1 means that every sensor is perfectly predicted. The weights are introduced to represent the impact of every sensor on the overall health diagnosis of the system.
3D LiDARs are used for detecting cones that mark the race track because of their robustness against variations in illumination. The model used is a Velodyne VLP 16 Puck. Left and right cones are colored blue and yellow respectively. Colors cannot be distinguished from the LiDAR point cloud at an acceptable range, therefore no color information is used. The cone locations are extracted using the pipeline depicted in Figure 4. The motion distortion is removed from the point cloud by using a velocity estimate provided by the state estimation module. The ground is then removed based on a local flatness assumption. Removal is performed by dividing the scan in segments, as seen in Fig. 5, . Every point that is lower than the lowest point in its segment plus a threshold is removed. Two of these revolutions are accumulated and passed on to the cone detector.
The first step in detecting cones in the ground-free point clouds is Euclidean clustering. The clusters are then classified as cones depending on their size. In an additional filtering step, clusters are rejected using their distance to the LiDAR and the contained points within the cluster. Cones may not always appear in every scan because of pitching motions and distant cones can fall in between two Velodyne rays. Since multiple LiDAR scans are not fused, this is solved with a second clustering stage. The centroids of the clusters are exported to a new point cloud and the last 10 of these point clouds are stored in a rolling buffer. The combined content of this buffer is processed again with Euclidean clustering. The number of points in the resulting second stage clusters show how often the cone was observed in the last 10 scans. Cones observed twice or more are passed on to the last step.
False positive cones may be detected in areas with uneven terrain or tracks surrounded with high grass. These do not affect the path planning module as they mostly appear outside the track boundaries. However, the computation time of subsequent modules of our system scales with the number of detected cones. A Nearest Neighbour filter is applied to the observed cones to filter out areas with concentration of clusters that are higher than the expected concentration of cones.
The maximum range of the perception sensors limits the length of the vehicles path planning horizon. This problem can be overcome by mapping the track and localizing the vehicle within it. As previously mentioned, the track is only marked with cones. The Simultaneous Localization and Mapping (SLAM) module is designed to accept input from either the LiDAR or camera processing pipeline which ensures safe operation in case of single sensor failure. The track is again assumed to be flat. Only cones are considered as landmarks and other potential features are rejected. There are two distinct phases, corresponding to the previously introduced in Sec. I, SLAM and Localization Mode. First, the SLAM phase in which the module builds a 2D landmark map of the race track and second, the localization phase where the map is fixed and used to estimate the vehicle pose. The switch from SLAM to localization is performed after a loop closure of the mapped race track is detected. In the following sections, a detailed description of both phases is given.
The cone observations provided by one of the perception pipelines (camera or LiDAR) are used as landmark inputs. Descriptors cannot be used to aid in data association since the cones are only distinguishable by color (the LiDAR cannot detect the color reliably), geometrically identical and all placed on similar looking asphalt. For this reason, we choose to use FastSLAM , a Rao-Blackwellized particle filter based SLAM method. Its ability to handle data association on a per particle basis makes it more robust than a SLAM approach that only considers one association hypothesis per time step (e.g., EKF-SLAM). The method also requires a odometry input. The full state estimation pose estimate (see Sec. III-B) is used while mapping which includes normal GPS. Note that the SLAM pose is not an input to the state estimation, so no information loops are induced.
The map is parameterized as a collection of landmarks. The location of each landmark is estimated using a 2 dimensional EKF (, ). Additionally, we record each landmark’s observation count and missed observation count within perception range.
In the particle filter, every particle with index is a combined sample of the vehicle pose and the map at time .
The particle filter is updated every time a new set of landmark observations becomes available. First, the particles poses are propagated using an odometry motion model [13, pp. 132-139], assuming zero mean uncorrelated Gaussian noise on translation and rotation respectively.
Then, observations are associated to existing landmarks in the map. This is done separately for each particle with the maximum likelihood principle. We define a likelihood function that expresses the likelihood of an observation coming from a landmark .
Observations are assigned to known landmarks in an iterative manner. Mutual exclusion is enforced by using a queue mechanism. If a more likely observation-to-landmark association is found, the previous associated observation is put back into the queue for reconsideration. If an observation cannot be associated with a likelihood of more than the threshold , a new landmark will be initialized for that observation.
With the now known data association for every particle, the EKF for each landmark is updated. Lastly, the weight of each particle is calculated. The observation likelihoods are incorporated in this weight and the number of new landmarks . A penalty is added for landmarks that were not observed, but are in the sensor’s field of view.
The weights are then normalized.
Resampling of the particle filter is not done at every time step. To determine if resampling is necessary the effective sample size is calculated. Only if this drops below the particles are resampled using the systematic resampling method .
The particle filter based SLAM method has no explicit loop closure detection. To detect the closing of the race track a simple finite state machine method is used. All particles include a loop closure state, which can take three states Initialized, TravelledAway and ReturnedHome. Particles start in the Initialized state and, when they move outside a 10m radius from their starting position, are transitioned to the TravelledAway state. The ReturnedHome state is triggered by coming back within a 5m radius of the starting position, with a heading not deviating more than an angle from the starting heading. When all particles reached the ReturnedHome
state and the standard deviation of the pose estimated by all particles drops below 0.1m a closure is assumed. The system then switches to the localization phase.
When the switch is made from mapping to localization the map of the highest weight particle is selected. First the landmarks in this map are pruned. This is done by removing the ones that have an observation ratio lower than 30%. Then the track boundaries are determined by linking the landmarks together. The track middle line is isolated from a Voronoi diagram constructed with the track boundaries.
The highest weight particle is now copied to all other particles. The landmark EKF update is disabled, this fixes the map, and the odometry input is switched from full state estimation to an integration of the velocity/wheel sensor and the gyroscope (without GPS). The estimate for the position and heading are extracted from the particle filter by taking the weighted average of all particles. This is fed to the state estimation module for further processing.
Without a driver, fluela can accelerate from in under and corner with up to . This power unfortunately also translates into potential danger. A safety system has thus been devised that guarantees robustness in case of a single mode failure and remains fail-safe in case of combined failures. The system combines safety mechanisms on all levels, from hardware up to the individual software modules.
Starting with hardware, the car has been extended with an Emergency Brake System (EBS) which brakes by default. It can only be released when the HV safety circuit is closed and additionally requires a continuous OK signal from the ECU. One level higher, the real-time ECU listens for errors on the car’s CAN network, monitors the heartbeat of the autonomous master computer and the state of the Remote Emergency System (RES). If the RES is pressed, the car fully engages the brakes within , resulting in a deceleration of at least until standstill. With these specifications, a system malfunction at in a corner would result in the car travelling up to out of track. This is assuming the safety operator pressed the RES within . Eliminating the human reaction time would bring this distance down to .
The autonomous master computer therefore runs a High Level Safety System (HLS), which monitors the heartbeats of each autonomous software module package. The heartbeats carry sequence IDs to detect package loss, time stamps for latency estimation, module load information and a health indicator. The HLS additionally tracks the system resource usage of each module.
On each iteration of the HLS, an anomaly detection algorithm classifies each subsystem as dead or alive. A decision tree then checks if every autonomous function is still covered by at least one package. The car would for example only keep driving in case of a LiDAR pipeline failure if the vision pipeline is still running. The second step is a calculation of the overall system health based on the individual package healths and system resource usage. When driving inLocalization mode, the top speed is scaled according to the system health. If it falls below a threshold, the car is judged unstable and stopped. If both the decision tree and health threshold deem the car safe to drive, the HLS sends a heartbeat to the ECU and the process repeats.
At the highest level, certain software packages are also allowed to directly trigger the EBS. This would for example happen if the LiDAR detected a large obstacle directly in front of the car whilst racing.
To ensure code quality while keeping the validation process efficient, special attention was paid to the testing methodology and tools.
Git was used to efficiently code as a team and keep an integral record of the entire project history. A three-stage branching model was used to develop and validate functional components. For each new major feature, a Git branch was forked from master into the Development stage. Once the new code was written and ready, it was scheduled for testing by moving it to a branch of the Validation stage corresponding to the test type and date. After the code had been tested and proven to be stable, it was merged back into the Stable stage’s only branch: master.
A Jenkins build server was used to ensure continuous quality control and reveal integration errors early on. Every commit to the aforementioned Git repository was built in a clean workspace to reveal potential errors such as undeclared or clashing dependencies.
Gazebo was used in combination with a dynamic model written in python to simulate new features. If new code passed this test, it was ready to be validated on the car. The simulation also proved to be a useful tool for preliminary controller tuning.
Testing the autonomous system generated a considerable amount of data from different sources. A custom web browser based tool has been developed to efficiently manage all data through one interface. The information was structured as experiments with report annotation fields and nested test runs. Each test run contains a link to the source code (Git commit hash) that was run and the data (rosbag) it generated.
A custom rqt plugin was designed to simplify Telemetry and Diagnostics. When launched in Telemetry mode the GUI would automatically connect the user’s laptop to the car, provide a menu to launch and abort autonomous missions, and provide lightweight visuals to illustrate the car state. The GUI’s Diagnostics mode allowed hybrid simulation and playback of rosbags. The user could for instance use this to check if a change to path planning had no ill effects on control by replaying all topics excluding the planning and control packages, which would be rerun.
A custom housing has been developed to safely embed the computing system in the car. It had to resist light debris and water sprayed up by the left front wheel. Additionally, it had to cool down electronics with a power rating of 170W and shield off EMI from the 480V 3 phase inverters running at 23KHz. These requirements were met with a hermetic, shielded and damped aluminum enclosure. Custom heat spreaders were used to channel the CPU heat from both computers to the walls by conduction. The air inside the box was cooled using 4 wall mounted forced convection heat exchangers. Passive heat sinks mounted on the outside of the box allowed the system to run at full power in steady state when driving at least 5 m/s. At last, the computing housing is mounted to the chassis with shock absorbing thermoplastic elastomer mounts to protect it against vibrations.
flüela was tested numerous times to guarantee robustness. It was tested on 8 different locations, on different closed racing tracks ranging from 100 to 500 meters. It was tested under heavy rain for several hours, including FSD, as well as under strong sun over . Throughout the testing season flüela reached over and lateral acceleration outperforming amateur drivers in some disciplines.
In this section, we present a performance evaluation based on filed experiments. A video of some experiments can be found at: https://youtu.be/NpLNJ5kC_G0 and a dateset used for some experiments is available at: https://github.com/AMZ-Driverless/fsd-resources#amz_driverless_2017
For the state estimation of the system four parts are evaluated and discussed: accuracy, robustness to outliers, self-diagnosis and delay compensation,.
In order to validate the sensor fusion set up, the position estimate is compared to a ground truth provided by sub-mm precision Leica TotalStation 15i. When compared to ground truth the Root Mean Square Error (RMSE) of the estimated position is . See Fig. 6. Note, that the TotalStation sometimes loses the target due to the high speed angular motion required to follow it. These locations are therefore not included in the evaluation.
The outlier rejection method detailed in Sec. III-B5 was developed to handle the different sensor faults which occurred during the testing phase. The first case of error (Fig. 7) is a velocity sensor which occasionally returns spikes when driving over reflecting surfaces such as water or some road markings. The test could reject these cases without exception. The other case presented is the wheel odometry sensor. Due to the high accelerations of the car, one wheel is often blocked when braking and turning at the same time. This can be seen in Fig. 8. The test is also used to reject this measurement in these scenarios. It has to be noted that, if wheel odometry is the only velocity source, and if the wheels are constantly blocked due to high accelerations, even with the test the velocity estimate deteriorates.
The self-diagnosis results are presented in Fig. 9 where 1 represents a perfect health and 0 all measurements being outliers. It can be seen that for the same track, the laps reaching and have a lower health diagnostic. This matches the fact that the medium speed laps have a RMSE when compared to ground truth and an average health diagnostic of whereas the fast laps have RMSE and average health diagnostic. This implies that the presented diagnosis method can provide an ad-hock qualitative estimate of the absolute error, without any ground truth information.
In our experiments, the presented approximate delay compensation method is 5 times faster than the EKF intuitive compensation (Fig. 10). This varies depending on the most delayed measurement which in our case was from to (4 to 6 EKF iterations).
The map built in real-time during the FSD competition can be seen in Fig. 11. The position estimated by the SLAM module is plotted within this map. Linking of the cones to form the boundaries is all done on-board and no manual changes were done to this map other than rotation and scaling for illustration purposes. With this data the particle filter was run at 5Hz using 500 particles with LiDAR cone observations as input. Wheel sensors combined with gyro integration was used as odometry input. The integrated gyro drifted almost over the 10 plotted laps, while our localization on the loop-closed map performed robustly throughout. Note, that during the competition it rained heavily, yet our mapping and localization approach performed robustly under these conditions.
On an Intel Core i7 7700HQ running at 2.8 GHz the filter update step takes in average 7ms during the mapping phase with a maximum of 29ms. During the localization phase the average computation time is 11ms with a maximum of 28ms. The computation time for the update step of the filter scales linearly with the amount of landmarks. This explains why the average time needed for the mapping phase is lower than for the localization phase.
As the update rate of 5Hz is too low for the control loops, the localization pose is fused with data from the other sensors at a higher rate, an example of this can be seen in Fig. 6.
This paper presents the state estimation and system integration for an autonomous race car. It is capable of mapping a race track marked with cones using a landmark based SLAM system. Cones are detected with a 3D LiDAR using a two-stage clustering pipeline. The localization output of the SLAM system is used as a virtual position and heading sensor. Together with an INS and velocity sensor, it feeds an EKF based state estimator. Careful vehicle testing revealed the need to extend the state estimator with an outlier rejection and self-diagnosis system. The experiments show that the vehicle can race on unknown race tracks at competitive speeds, even when measurements are distorted due to adverse weather conditions. This perception and state estimation system shows potential to enable future autonomous race car generations to drive at lateral and longitudinal tire limits.
The authors would like to thank the entire AMZ driverless team for their hard work and passion, as well as all sponsors for their financial and technical support. Furthermore we would like to thank the EU projects TRADR project No. FP7-ICT-609763, and European Union’s Horizon 2020 research and innovation programme under grant agreement No 644227 (Flourish) and 688652 (UP-Drive) and from the Swiss State Secretariat for Education, Research and Innovation (SERI) under contract number 15.0029. and 15.0284 for their support.