The DifferentialMotorControl application (DMC) should provide a feature to automatically calibrate the several PID parameters. An according interface (service and shell command) is already in place.
The automatic calibration procedure is planned to work like this;
- Simplify all controllers to P-controllers by setting all other gains to 0.
- Set the P-gains for the two motor controllers to low values.
- Deactivate the steering controller by setting even the P-gain to 0.
- Ignore any incoming target velocity requrests during calibration.
- Calibration of the motor controllers
- Iteratively increase the P-gains of the two motor controllers until they oscillate but try to make the robot move straight.
- Repeat the following sequence
- move forwards
- move backwards
- As soon as those critical gains are found, adapt all other gains using Ziegler-Nichols method.
- Calibration of the steering controller
- Set the P-gain of the steering controller to a low value.
- Iteratively increase the P-gain of the steering controller until it oscillates.
3 Repeat the following sequence
- turn left
- turn right
- As soon as the critical gain is found, adapt all other gains using Ziegler-Nichols method.