Trajectory Tracking Control of a Car-Like Robot
Completed - 2023 | C++ - ROS 1 - Simulation - Mobile Robot Trajectory Tracking
Final assignment of a course on Control of Mobile Robots.
- Simulated a carβlike robot with kinematic and dynamic bicycle model, using ROS and odeint C++ library.
- Designed and Implemented a PI trajectory tracking controller with feedback linearization, with C++, relying on Bode theory for controller tuning.
- Analyzed controller performance for different kinematic/dynamic models, using Python to read and plot ros bags.
- Maintained tracking error below 3% in x and y coordinates, over a trajectory with a 2βmeter amplitude.
Using the bicycle model, a car-like robot was simulated using ROS1 and a differential equation solver. Instead of using some classical tools like Gazebo or other physical simulators, the dynamic model (in the form of ordinary differential equations, from state space) has been implemented in π++ and simulated with the βodeintβ library. Both the Kinematic and Dynamic models have been analyzed and controlled.
Objective:
- Develop a ROS 1 workspace with multiple packages to simulate and control the robot.
- implement a feedback linearization controller and PI trajectory tracking, as ROS 1 node.
- Follow a 2-meter amplitude 8-shaped trajectory in the x-y plane, with a period of 2 seconds.
- Achieve the best possible tracking performance, by tuning the controller, both with the kinematic and the dynamic model.
- For dynamic model simulation, use ππ’ππππ«ππ§π ππ²π«π π¦π¨πππ₯π¬.
Reults:
- Initialized a structured ROS1 workspace
- model-based and iterative tuning procedure:
- perfect tracking with Kinematic model simulation, with wrrors in the x and y directions always below 0.06 meters.
- Simulated with linear tyre model, achieving trajectory racking ππ«π«π¨π« πππ₯π¨π° 0.1 π¦.
- Discovered the limitations of the feedback linearization, based on the kinematic model, it was impossible to achieve satisfactory performance for a more complex tyre model.
