The beginning of my experience with Imagry’s project was from an open-source project called (OSCC) provided by PolySync. The project prototypes the intervention of the Kia Soul 2017’s brake, steering, and throttle systems. OSCC didn’t provide steering angle control, instead, it helped in providing the torque command to the steering. And because the higher level of the system needs to command the steering’s position, I started to build the steering system’s first controller version. To build a model-based controller, I used the system identification toolbox in Matlab to identify the steering model based on Hammerstein Wiener model. This model was identified while the car at zero longitudinal velocity. The input to the steering system was the torque command signal and the output was the steering angle that is read by a steering angle sensor, which had a sampling time of 10ms and used the CAN bus to push the angle reading. 10ms was slow for such a servo system, and thus, the first version of the steering model wasn’t aware of the system’s fast dynamics. This resulted in an outside of the unit circle zero; or a non-minimum phase system.
I coded the software in C++ multithreaded application and implemented it on NI CompactRIO 9035. I was also involved in building the model predictive controller that took into consideration the car’s dynamics, the car Yaw-rate, street lanes, and other obstacles which were read from the cameras’ fusion, to generate the desired position which is fed to the SAC lower level controller. Fig. 1 shows the a demo video of the participance of Imagry in CES 2018. Fig. 2 shows the second version of the controller while Fig. 3 shows the first version of the controller.
Fig. 1: A demo video for the participance of Imagry in CES 2018