I have a robot very similar to a train wagon, it has 4 actuated wheels controlled by 2 motors. The two wheels that are located on the same rail are controlled by the same motor.
On each wheel it's installed a proximity sensor that measure the distance from the wheel to the rail ( d_i). The goal of the controller is to keep those distances constant by adjusting the speed of the motors for different overall robot speeds.
To solve the problem I'm thinking to use a PI controller.
For instance, if the robot is requested to move at a speed equal to n*, I consider the speed of one motor fixed (n*) while the speed of the other motor changes depending on the PI controller correction (n* + ∆n).
The PI will have as:
- output: ∆n - speed correction
- input: error = |d-d_1| + |d-d_2| + |d-d_3| + |d-d_4|, where d* is the value of the reference distance (if all the wheels are in the right position the error is 0).
My doubts about the described approach regards to the definition of the error value, I'm not sure that the controller will be able to set the correct value of ∆n to minimize the skew angle. Should I use a different kind of Pi control (for instance Cascade) and not the simple one?