Skip to content

Commit 756a9d4

Browse files
committed
pbio/observer: Reduce base feedback gain.
This improves behavior at low speeds.
1 parent 044f29e commit 756a9d4

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

lib/pbio/src/motor/servo_settings.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -249,15 +249,15 @@ pbio_error_t pbio_servo_load_settings(pbio_control_settings_t *ctl, pbio_observe
249249
ctl->acceleration = DEG_TO_MDEG(8000);
250250
ctl->pid_kp = 3000;
251251
ctl->pid_kd = 30;
252-
obs->feedback_gain_low = 90;
252+
obs->feedback_gain_low = 45;
253253
break;
254254
case PBIO_IODEV_TYPE_ID_EV3_LARGE_MOTOR:
255255
*model = &model_ev3_l;
256256
ctl->speed_max = DEG_TO_MDEG(1600);
257257
ctl->acceleration = DEG_TO_MDEG(3200);
258258
ctl->pid_kp = 15000;
259259
ctl->pid_kd = 250;
260-
obs->feedback_gain_low = 80;
260+
obs->feedback_gain_low = 40;
261261
break;
262262
#endif // PBIO_CONFIG_SERVO_EV3_NXT
263263
#if PBIO_CONFIG_SERVO_PUP
@@ -267,7 +267,7 @@ pbio_error_t pbio_servo_load_settings(pbio_control_settings_t *ctl, pbio_observe
267267
ctl->acceleration = DEG_TO_MDEG(2000);
268268
ctl->pid_kp = 13500;
269269
ctl->pid_kd = 1350;
270-
obs->feedback_gain_low = 133;
270+
obs->feedback_gain_low = 66;
271271
break;
272272
#if PBIO_CONFIG_SERVO_PUP_MOVE_HUB
273273
case PBIO_IODEV_TYPE_ID_MOVE_HUB_MOTOR:
@@ -276,7 +276,7 @@ pbio_error_t pbio_servo_load_settings(pbio_control_settings_t *ctl, pbio_observe
276276
ctl->acceleration = DEG_TO_MDEG(5000);
277277
ctl->pid_kp = 15000;
278278
ctl->pid_kd = 500;
279-
obs->feedback_gain_low = 94;
279+
obs->feedback_gain_low = 47;
280280
break;
281281
#endif // PBIO_CONFIG_SERVO_PUP_MOVE_HUB
282282
case PBIO_IODEV_TYPE_ID_TECHNIC_L_MOTOR:
@@ -285,23 +285,23 @@ pbio_error_t pbio_servo_load_settings(pbio_control_settings_t *ctl, pbio_observe
285285
ctl->acceleration = DEG_TO_MDEG(2000);
286286
ctl->pid_kp = 17500;
287287
ctl->pid_kd = 2500;
288-
obs->feedback_gain_low = 51;
288+
obs->feedback_gain_low = 26;
289289
break;
290290
case PBIO_IODEV_TYPE_ID_TECHNIC_XL_MOTOR:
291291
*model = &model_technic_xl;
292292
ctl->speed_max = DEG_TO_MDEG(1525);
293293
ctl->acceleration = DEG_TO_MDEG(2500);
294294
ctl->pid_kp = 17500;
295295
ctl->pid_kd = 2500;
296-
obs->feedback_gain_low = 77;
296+
obs->feedback_gain_low = 38;
297297
break;
298298
case PBIO_IODEV_TYPE_ID_SPIKE_S_MOTOR:
299299
*model = &model_technic_s_angular;
300300
ctl->speed_max = DEG_TO_MDEG(620);
301301
ctl->acceleration = DEG_TO_MDEG(2000);
302302
ctl->pid_kp = 7500;
303303
ctl->pid_kd = 1000;
304-
obs->feedback_gain_low = 48;
304+
obs->feedback_gain_low = 24;
305305
break;
306306
case PBIO_IODEV_TYPE_ID_TECHNIC_L_ANGULAR_MOTOR:
307307
case PBIO_IODEV_TYPE_ID_SPIKE_L_MOTOR:
@@ -310,7 +310,7 @@ pbio_error_t pbio_servo_load_settings(pbio_control_settings_t *ctl, pbio_observe
310310
ctl->acceleration = DEG_TO_MDEG(1500);
311311
ctl->pid_kp = 35000;
312312
ctl->pid_kd = 6000;
313-
obs->feedback_gain_low = 64;
313+
obs->feedback_gain_low = 32;
314314
break;
315315
case PBIO_IODEV_TYPE_ID_TECHNIC_M_ANGULAR_MOTOR:
316316
case PBIO_IODEV_TYPE_ID_SPIKE_M_MOTOR:
@@ -319,7 +319,7 @@ pbio_error_t pbio_servo_load_settings(pbio_control_settings_t *ctl, pbio_observe
319319
ctl->acceleration = DEG_TO_MDEG(2000);
320320
ctl->pid_kp = 15000;
321321
ctl->pid_kd = 1800;
322-
obs->feedback_gain_low = 90;
322+
obs->feedback_gain_low = 45;
323323
break;
324324
#endif // PBIO_CONFIG_SERVO_PUP
325325
default:
@@ -331,8 +331,8 @@ pbio_error_t pbio_servo_load_settings(pbio_control_settings_t *ctl, pbio_observe
331331
obs->stall_time = ctl->stall_time;
332332
obs->feedback_voltage_stall_ratio = 75;
333333
obs->feedback_voltage_negligible = 5 * pbio_observer_torque_to_voltage(*model, (*model)->torque_friction / 2);
334-
obs->feedback_gain_high = obs->feedback_gain_low * 3;
335-
obs->feedback_gain_threshold = DEG_TO_MDEG(10);
334+
obs->feedback_gain_high = obs->feedback_gain_low * 6;
335+
obs->feedback_gain_threshold = DEG_TO_MDEG(8);
336336
obs->coulomb_friction_speed_cutoff = 500;
337337

338338
// The default speed is not used for servos currently (an explicit speed

0 commit comments

Comments
 (0)