Self racing cars
Posted: 16 Sep 2016 | 11:34
Recently EPCC's Alan Gray and I attended a workshop at Donington Park held by Roborace. For those who've not heard of Roborace, it's a project to build and race autonomous cars, along the lines of Formula 1 but without any drivers or human control of the cars. Actually, it's more like Formula E but without drivers, as the plan is for the cars to be electric.
The workshop was to showcase Roborace's first set of development cars, called DevBots, that it has recently constructed to test its hardware and software. We were attending because Alan saw a presentation on Roborace at the GTC conference, where it was revealed that the NVidia Drive PX 2 platform is going to be used as the computing resource for the AI controlling the cars. The aspect that interested Alan was that Roborace is software focussed.
The aim of Roborace is to provide a hardware platform (the cars) that is the same for all the teams competing in the race, with the only difference allowed between the cars being the software they run that provides the autonomous functionality. Those with the best software win the race, which is appealing for an organisation like EPCC as we don't have the expertise in motor engineering to be able to compete in the racing, but we do, potentially, have the experience in parallel computing and machine learning to contribute to such a software driven racing team.
However, until last week the details about Roborace, the cars, and the software setup, were minimal. The workshop introduced the DevBot car, which is essentially the same hardware platform that will be used for the actual race cars but without the final bodywork. DevBot is designed to let Roborace tune the sensor placement and software setup to enable it to build the production race cars in the near future.
The DevBots have a wide range of sensors on them: radar, camera, lidar, and ultrasonics. They also have accurate GPS receivers, but the plan is not to use these for the autonomous driving as they can't yet provide high enough accuracy to make racing decisions.
Roborace plans to provide a two-tier computing system, with a low-level vehicle control and collision avoidance system that cannot be modified by racing teams, and then a high-level computing platform for machine learning and AI software to run on. This higher level platform will be able to access sensor data, process it, and then provide suggestions to the low-level control hardware about the next move the car should make.
The plan is that these suggestions from the AI will be sent in batches to the low-level control system, which will then decide whether to act on them, or to continue with its basic operation, depending on whether they are deemed to be safe or not. Indeed, Roborace is not looking for crashes in these races, Roborace will own all the cars in the series, with teams only renting them, so it's not in its interest for the cars to be damaged during a race. Furthermore, as I can imagine one of the goals for this race series is to showcase the capabilities and safety of autonomous driving, having large crashes between the autonomous cars would not be desirable.
As developing a fully autonomous vehicle requires a large amount of effort and software expertise, something that traditional Formula 1 or Formula E teams probably don't currently have much experience of, Roborace plans to provide a basic autonomous implementation, again based on the NVidia drive tools, which teams can then take and improve.I think the plan is that over time teams may want to implement their own systems completely, or significantly change the functionality, but at least they will have a starting point for development.
Furthermore, you can imagine that this type of functionality would improve over time, with new autonomous components (ie better processing of sensor data, better decision algorithms, better racing strategies, etc) being added or improved as the race series progresses.
The Challenges of simulation
Roborace is also working on a simulation environment to allow teams, or even wider groups, to test their autonomous driving implementations without having to use the cars themselves. This is still in its early stages of development and I can imagine this is going to be very hard to implement accurately. After all, a full simulation environment would need to be able to accurately generate input sensor signals based on the positions of all the cars in the simulated race. Implementing lidar, radar, or camera input signals based on simulated race environments, is a real challenge.
On top of this, if you wanted to really do proper simulations, you'd need to take into account things like weather conditions and what impact this would have on the cars, the way cars interact with each other, such as the air flow from all the cars in the race and the impact that this air flow would have on the performance of each of the simulated cars. This is a massive challenge as it would require high-fidelity CFD simulations to get accurate turbulence and flow data, something we know from our HPC/computational simulation work is very computationally challenging.
Another challenge I can see that Roborace will have to overcome is the interplay between the low-level control system, its crash-avoidance functionality, and the higher-level autonomous functionality. To successfully race against other cars, race drivers currently put themselves in positions where if the car in front braked suddenly, or another car undertook an unexpected manoeuvre, then they would be to close to take evasive action without crashing.
If the underlying control system is too conservative then it seems unlikely that the algorithms in charge of the autonomous racing are going to be able to compete successfully. Overtaking just won't happen. On the other hand, if the control system isn't protective enough it is possible that all the cars would crash at the first corner of the race. The balance between protection and racing freedom is going to be a hard one to get right.
However, part of the initial plan for Roborace is to add new features to their race series, things like time-trial or performance events, where only one car is on the track at any one time, and the autonomous functionality can be demonstrated. This would allow competitions between teams without having to tackle the hard problem of having cars interacting in the race. Teams will be able to work on the autonomous driving, improving racing line, handling, cornering, and suchlike without having to focus on avoiding, or overtaking, other cars.
These races will have some extra components, compared to current race series, such as performance or trick events. Imagine having a set of manoeuvres a car has to execute whilst doing a lap: donuts, drifting and so on. This would let autonomous driving developments be showcased whilst Roborace and others worked on the hard problem of having multiple autonomous cars racing against each other at the same time.
However, despite all the challenges I think there is real potential for Roborace to both be a successful racing series, and to significantly push forward autonomous driving functionality. If EPCC can be part of that it would be amazing, we're still waiting to see what the team/collaborations are going to look like, and we will be following it with interest.
The link below leads to a video I filmed of the DevBot driving itself at Donington Park.