float MotorController::limitSpeed(){
if(!initialized_){
return -1.0;
}
float surplus; //Iゲイン自動整合用の余剰制御量を算出
surplus = speed_ - max_speed_;
// speed_ を範囲内に調整
if(speed_ > max_speed_){
speed_ = max_speed_;
//Serial.println("更新+: " + String(speed_));
return surplus;
}else if(speed_ < -max_speed_) {
speed_ = -max_speed_;
//Serial.println("更新-: " + String(speed_));
return surplus;
} else {
return 0.0;
}
}
surplus = speed_ - max_speed_;
正回転時はsurplusは記述の通りの計算となるが、逆回転時、
speed < 0となるため、
surplus = speed_ + max_speed_;
とならなければならない