Hello, I have got a question about this part. When I checked the solution, all the PID values are set to 1, 1, and 0. And the result is static Mira. Then, I tried to change to 10, 10, 0. And the mira started to jitter (and move randomly a little bit). My question is how to set PID values for different robot? is it by trying one by one all the PID values until the robot became static?

From the Webots documentation:

The first coordinate of `controlPID`

field specifies the initial value of the *P* parameter, which is the *proportional gain* of the motor PID-controller. A high *P* results in a large response to a small error, and therefore a more sensitive system. Note that by setting *P* too high, the system can become unstable. With a small *P* , more simulation steps are needed to reach the target position, but the system is more stable.

The second coordinate of `controlPID`

field specifies the initial value of the *I* parameter, which is the *integral gain* of the motor PID-controller. The integral term of the PID controller is defined as the product of the error integral over time by *I* . This term accelerates the movement towards target position and eliminates the residual steady-state error which occurs with a pure proportional controller. However, since the integral term represents accumulated errors from the past, it can cause the present value to overshoot the target position.

The third coordinate `controlPID`

field specifies the initial value of the *D* parameter, which is the *derivative gain* of the motor PID-controller. The derivative term of the PID-controller is defined as the product of the error derivative with respect to time by *D* . This term predicts system behavior and thus improves settling time and stability of the system.

Thanks for the informative explanation!