Skip to content

Commit 1dae7ec

Browse files
committed
mod: rot control on yaw TEST
1 parent 2419a35 commit 1dae7ec

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/Arduino_AlvikCarrier.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,8 @@ void Arduino_AlvikCarrier::updateKinematics(){
842842
kinematics->updatePose();
843843
if (kinematics_movement!=MOVEMENT_DISABLED){
844844
if (kinematics_movement==MOVEMENT_ROTATE){
845-
rotate_pid->update(kinematics->getTheta());
845+
//rotate_pid->update(kinematics->getTheta());
846+
rotate_pid->update(getYaw());
846847
drive(0, round(rotate_pid->getControlOutput()/10.0)*10);
847848
if (abs(rotate_pid->getError())<ROTATE_THRESHOLD){
848849
kinematics_achieved=true;
@@ -929,7 +930,8 @@ void Arduino_AlvikCarrier::rotate(const float angle){
929930
disableKinematicsMovement();
930931
kinematics_achieved=false;
931932
rotate_pid->reset();
932-
rotate_pid->setReference(kinematics->getTheta()+angle);
933+
//rotate_pid->setReference(kinematics->getTheta()+angle);
934+
rotate_pid->setReference(kinematics->normalizeAngle(getYaw() + angle));
933935
kinematics_movement=MOVEMENT_ROTATE;
934936
}
935937

src/robotics/kinematics.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,16 @@ class Kinematics{
153153
}
154154
*/
155155

156+
float normalizeAngle(float angle) {
157+
angle = angle - 360.0f * floor(angle / 360.0f);
158+
159+
if (angle < 0) {
160+
angle += 360.0f;
161+
}
162+
163+
return angle;
164+
}
165+
156166
void updatePose(){
157167
delta_theta=angular_velocity*control_period;
158168
sin_theta = sin(theta);

0 commit comments

Comments
 (0)