This page (revision-25) was last changed on 2021-11-08 09:09 by Murray Altheim

This page was created on 2019-12-22 08:01 by Murray Altheim

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
25 2021-11-08 09:09 8 KB Murray Altheim to previous
24 2021-06-24 22:52 8 KB Murray Altheim to previous | to last
23 2021-01-23 22:25 8 KB Murray Altheim to previous | to last
22 2020-09-27 01:11 8 KB Murray Altheim to previous | to last
21 2020-09-27 01:11 8 KB Murray Altheim to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 changed one line
It's surprisingly difficult to drive a wheeled robot in a straight line. No two motors are exactly the same, and there may also be differences in the floor surface. If we want a robot to follow a more complicated trajectory or to have some indication of where it has traveled, we need to be able to measure the distance each motor has traveled, that is, how many times the left and right wheels have rotated. This is called __[odometry]__.
It's surprisingly difficult to drive a wheeled robot in a straight line. No two motors have exactly the same performance, and there may also be differences in the floor surface. If we want a robot to follow a more complicated trajectory or to have some indication of where it has traveled, we need to be able to measure the distance each motor has traveled, that is, how many times the left and right wheels have rotated. This is called __[odometry]__.
At line 3 changed one line
But besides the distance traveled, we also want to control the motors in such as way that the robot's movements are both accurate and smoothly executed. That means that regardless of whether the robot is traveling in a straight line, a gradual curve, or turning around, we want to set the left and right motors to operate at a specified speed and maintain that speed.
Besides the distance traveled, we also want to control the motors in such as way that the robot's movements are both accurate and smoothly executed. This means that regardless of whether the robot is traveling in a straight line, a gradual curve, or turning around, we want to set the left and right motors to operate at a specified speed and be able to accurately maintain that speed.
At line 5 changed one line
Additionally, we want to gradually change the motor speeds rather than make very sudden changes. This reduces the wear and tear on the motor and gear train, and the robot's movements also appear smoother. This is called slewing the speed: we set a slew rate, which is the maximum speed at which the speed of the motors are permitted to change.
Additionally, we want to gradually change the motor speed rather than make very sudden changes. This reduces the wear and tear on the motor and gear train, and the robot's movements also appear smoother. This is called __slewing__ the speed. We set a __slew rate__, which is the maximum speed at which the speed of the motor is permitted to change. You can also think of this as a maximum acceleration rate.
At line 7 changed one line
We can measure the speed of the motors themselves using the motor encoders, then use that to determine the difference between the intended and actual motor speeds.
To do all this we can measure the speed of the motors themselves using the [motor encoders], then use that to determine the difference between the intended and actual motor speeds.
At line 9 added one line
It turns out that we can find such a fancy motor controller in the field of [Control Engineering|https://en.wikipedia.org/wiki/Control_engineering]; it's called a __PID Controller__.
At line 11 added one line
At line 14 changed one line
A PID Controller uses two numbers, the __Set Point__ (SP), the target value of the system, and the __Process Variable__ (PV), the current measured output value of the system. If the SP and the PV are equal the output from the algorithm is zero and no change is necessary. If there is a difference that is considered the controller's ''error''.
A PID Controller uses two numbers, the __Set Point__ (SP) or ''target value'' of the system, and the __Process Variable__ (PV), the ''output value'' providing the feedback from the system. When the SP and the PV are equal the output from the algorithm is zero and no change is necessary. When there is a difference between SP and PV we consider that the controller's ''error''. Our aim is to reduce that error to zero.