Skip to content

Commit 7d8cb98

Browse files
committed
Centralize DifferentialDrive hardware defaults
Move platform-specific wheel defaults into DifferentialDrive, fixes blockly implementation. defaults.py no longer imports sys.implementation or branches for NanoXRP; it always uses get_default_differential_drive(). DifferentialDrive.__init__ now accepts 0.0 sentinel values for wheel_diam and wheel_track and sets the real defaults (NanoXRP vs other) by inspecting implementation._machine. This removes duplicated platform logic from defaults.py and centralizes hardware-dependent defaults in the drive class.
1 parent a2cfbc4 commit 7d8cb98

2 files changed

Lines changed: 14 additions & 10 deletions

File tree

XRPLib/defaults.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from .webserver import Webserver
1111
from .buzzer import Buzzer
1212
from machine import Pin
13-
from sys import implementation
1413

1514
"""
1615
A simple file that constructs all of the default objects for the XRP robot
@@ -24,12 +23,7 @@
2423
motor_four = EncodedMotor.get_default_encoded_motor(index=4)
2524

2625
imu = IMU.get_default_imu()
27-
28-
if "NanoXRP" in implementation._machine:
29-
drivetrain = DifferentialDrive(left_motor, right_motor, imu, wheel_diam=3.46, wheel_track=7.8)
30-
else:
31-
drivetrain = DifferentialDrive.get_default_differential_drive()
32-
26+
drivetrain = DifferentialDrive.get_default_differential_drive()
3327
rangefinder = Rangefinder.get_default_rangefinder()
3428
reflectance = Reflectance.get_default_reflectance()
3529
servo_one = Servo.get_default_servo(index=1)

XRPLib/differential_drive.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def get_default_differential_drive(cls):
2727

2828
return cls._DEFAULT_DIFFERENTIAL_DRIVE_INSTANCE
2929

30-
def __init__(self, left_motor: EncodedMotor, right_motor: EncodedMotor, imu: IMU = None, wheel_diam:float = 6.0, wheel_track:float = 15.5):
30+
def __init__(self, left_motor: EncodedMotor, right_motor: EncodedMotor, imu: IMU = None, wheel_diam:float = 0.0, wheel_track:float = 0.0):
3131
"""
3232
A Differential Drive class designed for the XRP two-wheeled drive robot.
3333
@@ -48,8 +48,18 @@ def __init__(self, left_motor: EncodedMotor, right_motor: EncodedMotor, imu: IMU
4848
self.imu = imu
4949

5050
self.brake_at_zero_power = False
51-
self.wheel_diam = wheel_diam
52-
self.track_width = wheel_track
51+
52+
if (wheel_diam == 0.0):
53+
if "NanoXRP" in implementation._machine:
54+
self.wheel_diam = 3.46
55+
else:
56+
self.wheel_diam = 6.0
57+
58+
if (wheel_track == 0.0):
59+
if "NanoXRP" in implementation._machine:
60+
self.wheel_track = 7.8
61+
else:
62+
self.wheel_track = 15.5
5363

5464
self.heading_pid = None
5565
self.current_heading = None

0 commit comments

Comments
 (0)