@@ -59,8 +59,8 @@ def __init__(self, motor: Motor, encoder: Encoder):
59
59
60
60
self .target_speed = None
61
61
self .DEFAULT_SPEED_CONTROLLER = PID (
62
- kp = 5 ,
63
- ki = 0.25 ,
62
+ kp = 0.035 ,
63
+ ki = 0.03 ,
64
64
kd = 0 ,
65
65
)
66
66
self .speedController = self .DEFAULT_SPEED_CONTROLLER
@@ -110,7 +110,7 @@ def get_speed(self) -> float:
110
110
:rtype: float
111
111
"""
112
112
# Convert from ticks per 20ms to rpm (60 sec/min, 50 Hz)
113
- return self .speed * (60 * 50 )/ self . _encoder . ticks_per_rev
113
+ return self .speed * (60 * 50 )
114
114
115
115
def set_speed (self , speed_rpm : float | None = None ):
116
116
"""
@@ -127,7 +127,7 @@ def set_speed(self, speed_rpm: float | None = None):
127
127
# If the update timer is not running, start it at 50 Hz (20ms updates)
128
128
self .updateTimer .init (period = 20 , callback = lambda t :self ._update ())
129
129
# Convert from rev per min to ticks per 20ms (60 sec/min, 50 Hz)
130
- self .target_speed = speed_rpm * self . _encoder . ticks_per_rev / (60 * 50 )
130
+ self .target_speed = speed_rpm / (60 * 50 )
131
131
132
132
def set_speed_controller (self , new_controller : Controller ):
133
133
"""
@@ -142,7 +142,7 @@ def _update(self):
142
142
"""
143
143
Non-api method; used for updating motor efforts for speed control
144
144
"""
145
- current_position = self .get_position_ticks ()
145
+ current_position = self .get_position ()
146
146
self .speed = current_position - self .prev_position
147
147
if self .target_speed is not None :
148
148
error = self .target_speed - self .speed
0 commit comments