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