During the start of my third semester at university, I decided to start working on control systems. Not much work had been done on the control system at our Research Group AGV. Moreover, there was a need to design and implement proper controls for the Mahindra e2o car. My previous experience was only on differential drive-based robots and this was a completely new project for me. An Ackermann based self-driving car needs to have proper longitudinal velocity control as well as proper lateral controls(steering control. Since the drive-by-wire control was already achieved for the Mahindra e2o car, we could directly test and tune the different algorithms on the car after verifying them in a simulation environment.
The Mahindra e2o car is based on the ROS environment. Thus we decided to select a simulator such that not much changes had to be done to the codebase to run it on the simulator as well as the real vehicle. The ROS based Gazebo was a good simulator which also dealt with most of the car dynamics. The OSRF foundation had already developed an environment and car model to test in it. The simulation world and the vehicle have been shown in the above pictures.
The longitudinal controls deal with the control of gas and brake pedal to achieve the desired velocity state. The most straightforward controller, a Proportional-Integral-Derivate(PID) controller, was first implemented in the simulation environment. The tuning part was a bit difficult, but with experience, I got a hold of it. After successfully testing and tuning on the gazebo simulator, we tested it on the Mahindra e2o car. The controller was tested for around a maximum of 30 Km/hr on the simulator and around 20Km/hr on the Mahindra car. We also tried implementing various adaptive PID controllers which gave better results as compared to a normal PID controller and were also more robust.
Testing of Pure-pursuit on Lane-shift course, Stanley on Sinusoidal path at 30 Km/Hr
Lateral controls were the major part of the project. Our objective of this project was to survey and implement various path tracking algorithms for precise tracking of the path generated by the planner. We provided a comparative study of all the path-tracking algorithms implemented. For the benchmarking of the algorithms, all the methods were tested on four different paths, namely- straight path, constant curvature path, sinusoidal path and a lane shift path. Moreover, on each of the tracks, the algorithm was tested for four different velocities ranging between 10 Km/hr and 30 Km/hr. Following algorithms were implemented and compared-
- Pure Pursuit
- Stanley Method
- PID controller
- Linear Quadratic Regulator (LQR)
- Model Predictive Control (MPC)
The performance of each method was also compared after testing and tuning them on the Mahindra e2o car. The video below shows one of the test run on the vehicle at about 15Km/hr on a Sinusoidal path.
Testing of pure-pursuit on Sinusoidal path at 15Km/hr