Skip to content

Commit 3639aa8

Browse files
committed
Re-tune speed control
1 parent 65f70ae commit 3639aa8

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

XRPLib/encoded_motor.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ def __init__(self, motor: Motor, encoder: Encoder):
5959

6060
self.target_speed = None
6161
self.DEFAULT_SPEED_CONTROLLER = PID(
62-
kp=5,
63-
ki=0.25,
62+
kp=0.035,
63+
ki=0.03,
6464
kd=0,
6565
)
6666
self.speedController = self.DEFAULT_SPEED_CONTROLLER
@@ -110,7 +110,7 @@ def get_speed(self) -> float:
110110
:rtype: float
111111
"""
112112
# 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)
114114

115115
def set_speed(self, speed_rpm: float | None = None):
116116
"""
@@ -127,7 +127,7 @@ def set_speed(self, speed_rpm: float | None = None):
127127
# If the update timer is not running, start it at 50 Hz (20ms updates)
128128
self.updateTimer.init(period=20, callback=lambda t:self._update())
129129
# 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)
131131

132132
def set_speed_controller(self, new_controller: Controller):
133133
"""
@@ -142,7 +142,7 @@ def _update(self):
142142
"""
143143
Non-api method; used for updating motor efforts for speed control
144144
"""
145-
current_position = self.get_position_ticks()
145+
current_position = self.get_position()
146146
self.speed = current_position - self.prev_position
147147
if self.target_speed is not None:
148148
error = self.target_speed - self.speed

XRPLib/resetbot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77

88
# using the EncodedMotor since the default drivetrain uses the IMU and takes 3 seconds to init
99
for i in range(4):
10-
motor = EncodedMotor.get_default_encoded_motor(i)
10+
motor = EncodedMotor.get_default_encoded_motor(i+1)
1111
motor.set_effort(0)
1212
motor.reset_encoder_position()

0 commit comments

Comments
 (0)