想象一下为一个三轮足球机器人编程。您将使用哪种类型的控制器来旋转它?P?PID?
该控制器的目标是使机器人以规定的角度(0度)站立,并在用手或其他机器人旋转时使其转回原位。
我为机器人使用步进电机,而不是伺服器,因此需要在软件中实现!
我已经写了一个样本P型控制器,并且运行相当好。但我想尽可能改善它。代码如下:
void spinSpeed(int devidedValue, int addedValue, int correction) {
if(degree<correction && degree>-correction) {
motorSpeed = 0;
} else {
if(degree > 0) {
motorSpeed = ((degree)/(devidedValue) + (addedValue));
} else {
motorSpeed = ((degree)/(devidedValue) - (addedValue));
}
}
}
correction
是一个范围,其中机器人没有运动。
degree
是从指南针返回的-127到128之间的数字。
motorSpeed
是应用于PWM的0到255之间的数字。
degree
?生成新值时,都会运行此例程。