File tree Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -842,7 +842,8 @@ void Arduino_AlvikCarrier::updateKinematics(){
842
842
kinematics->updatePose();
843
843
if (kinematics_movement!=MOVEMENT_DISABLED){
844
844
if (kinematics_movement==MOVEMENT_ROTATE){
845
- rotate_pid->update(kinematics->getTheta());
845
+ //rotate_pid->update(kinematics->getTheta());
846
+ rotate_pid->update(getYaw());
846
847
drive(0, round(rotate_pid->getControlOutput()/10.0)*10);
847
848
if (abs(rotate_pid->getError())<ROTATE_THRESHOLD){
848
849
kinematics_achieved=true;
@@ -929,7 +930,8 @@ void Arduino_AlvikCarrier::rotate(const float angle){
929
930
disableKinematicsMovement();
930
931
kinematics_achieved=false;
931
932
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));
933
935
kinematics_movement=MOVEMENT_ROTATE;
934
936
}
935
937
Original file line number Diff line number Diff line change @@ -153,6 +153,16 @@ class Kinematics{
153
153
}
154
154
*/
155
155
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
+
156
166
void updatePose(){
157
167
delta_theta=angular_velocity*control_period;
158
168
sin_theta = sin(theta);
You can’t perform that action at this time.
0 commit comments