Extend Angle type usage
This commit is contained in:
parent
00f40fea98
commit
4b362fffa8
@ -9,7 +9,7 @@ class AbsoluteEncoder {
|
|||||||
public:
|
public:
|
||||||
AbsoluteEncoder() {}
|
AbsoluteEncoder() {}
|
||||||
|
|
||||||
virtual float GetActualAngle() = 0;
|
virtual Angle GetActualAngle() = 0;
|
||||||
virtual float GetActualVelocity() = 0;
|
virtual float GetActualVelocity() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ ServoMotor::ServoMotor()
|
|||||||
this->hasTargetAngle = false;
|
this->hasTargetAngle = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServoMotor::SetTargetAngle(float angle) {
|
void ServoMotor::SetTargetAngle(Angle angle) {
|
||||||
angle = Float::Clamp(angle, minAngle, maxAngle);
|
angle = Float::Clamp(angle, minAngle, maxAngle);
|
||||||
|
|
||||||
if (maxVelocity == 0.0F || hasTargetAngle == false) {
|
if (maxVelocity == 0.0F || hasTargetAngle == false) {
|
||||||
@ -23,7 +23,7 @@ void ServoMotor::SetTargetAngle(float angle) {
|
|||||||
this->hasTargetAngle = true;
|
this->hasTargetAngle = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
float ServoMotor::GetTargetAngle() {
|
Angle ServoMotor::GetTargetAngle() {
|
||||||
return this->targetAngle;
|
return this->targetAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,9 +76,9 @@ void ServoMotor::Update(unsigned long currentTimeMs) {
|
|||||||
SetAngle(targetAngle);
|
SetAngle(targetAngle);
|
||||||
} else {
|
} else {
|
||||||
if (deltaAngle < 0)
|
if (deltaAngle < 0)
|
||||||
limitedTargetAngle -= angleStep;
|
limitedTargetAngle = limitedTargetAngle - angleStep;
|
||||||
else
|
else
|
||||||
limitedTargetAngle += angleStep;
|
limitedTargetAngle = limitedTargetAngle + angleStep;
|
||||||
}
|
}
|
||||||
SetAngle(limitedTargetAngle);
|
SetAngle(limitedTargetAngle);
|
||||||
|
|
||||||
|
14
ServoMotor.h
14
ServoMotor.h
@ -10,14 +10,14 @@ public:
|
|||||||
ServoMotor();
|
ServoMotor();
|
||||||
|
|
||||||
Vector3 rotationAxis = Vector3::up;
|
Vector3 rotationAxis = Vector3::up;
|
||||||
float minAngle = -90.0F;
|
Angle minAngle = -90.0F;
|
||||||
float maxAngle = 90.0F;
|
Angle maxAngle = 90.0F;
|
||||||
|
|
||||||
enum ControlMode { Position, Velocity };
|
enum ControlMode { Position, Velocity };
|
||||||
ControlMode controlMode = ControlMode::Position;
|
ControlMode controlMode = ControlMode::Position;
|
||||||
|
|
||||||
virtual void SetTargetAngle(float angle);
|
virtual void SetTargetAngle(Angle angle);
|
||||||
virtual float GetTargetAngle();
|
virtual Angle GetTargetAngle();
|
||||||
|
|
||||||
virtual void SetMaximumVelocity(float maxVelocity);
|
virtual void SetMaximumVelocity(float maxVelocity);
|
||||||
|
|
||||||
@ -28,16 +28,16 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool hasTargetAngle = false;
|
bool hasTargetAngle = false;
|
||||||
float targetAngle = 0.0F;
|
Angle targetAngle = 0.0F;
|
||||||
|
|
||||||
float maxVelocity = 0.0F;
|
float maxVelocity = 0.0F;
|
||||||
|
|
||||||
float targetVelocity = 0.0F;
|
float targetVelocity = 0.0F;
|
||||||
float limitedTargetAngle = 0.0F;
|
Angle limitedTargetAngle = 0.0F;
|
||||||
|
|
||||||
float lastUpdateTimeMs = 0.0F;
|
float lastUpdateTimeMs = 0.0F;
|
||||||
|
|
||||||
virtual void SetAngle(float angle) = 0;
|
virtual void SetAngle(Angle angle) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace RoboidContol
|
} // namespace RoboidContol
|
||||||
|
Loading…
x
Reference in New Issue
Block a user