Skip to content

Commit 44135d5

Browse files
Made studicalib reflective.
Signed-off-by: thenetworkgrinch <thenetworkgrinch@users.noreply.github.com>
1 parent 0b8500a commit 44135d5

File tree

5 files changed

+49
-26
lines changed

5 files changed

+49
-26
lines changed

vendordep/yagsl.json

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,6 @@
4747
"offlineFileName": "Phoenix5-replay-5.36.0.json",
4848
"onlineUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-replay-frc2026-latest.json"
4949
},
50-
{
51-
"uuid": "963ef341-8abd-4981-a969-c8ae3f592e82",
52-
"errorMessage": "Studica Lib is required!",
53-
"offlineFileName": "StudicaLib.json",
54-
"onlineUrl": "https://dev.studica.com/maven/release/2026/json/StudicaLib-2026.0.0.json"
55-
},
56-
{
57-
"uuid": "cb311d09-36e9-4143-a032-55bb2b94443b",
58-
"errorMessage": "Studica is required!",
59-
"offlineFileName": "Studica.json",
60-
"onlineUrl": "https://dev.studica.com/maven/release/2026/json/Studica-2026.0.0.json"
61-
},
6250
{
6351
"uuid": "60b2694b-9e6e-4026-81ee-6f167946f4b0",
6452
"errorMessage": "ThriftyLib is required!",

yagsl/java/swervelib/imu/NavXSwerve.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,28 @@ public NavXSwerve(NavXComType port)
6060
}
6161
}
6262

63+
/**
64+
* Constructor for the NavX({@link AHRS}) swerve.
65+
*
66+
* @param port Serial Port to connect to.
67+
*/
68+
public NavXSwerve(String port)
69+
{
70+
navXError = new Alert("IMU", "Error instantiating NavX.", AlertType.kError);
71+
try
72+
{
73+
/* Communicate w/navX-MXP via the MXP SPI Bus. */
74+
/* Alternatively: I2C.Port.kMXP, SerialPort.Port.kMXP or SerialPort.Port.kUSB */
75+
/* See http://navx-mxp.kauailabs.com/guidance/selecting-an-interface/ for details. */
76+
imu = new AHRS(NavXComType.valueOf(port));
77+
factoryDefault();
78+
} catch (RuntimeException ex)
79+
{
80+
navXError.setText("Error instantiating NavX: " + ex.getMessage());
81+
navXError.set(true);
82+
}
83+
}
84+
6385
@Override
6486
public void close()
6587
{

yagsl/java/swervelib/parser/SwerveDriveConfiguration.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import swervelib.simulation.ironmaple.simulation.drivesims.COTS;
77
import swervelib.simulation.ironmaple.simulation.drivesims.GyroSimulation;
88
import swervelib.SwerveModule;
9-
//import swervelib.imu.NavXSwerve;
109
import swervelib.imu.Pigeon2Swerve;
1110
import swervelib.imu.SwerveIMU;
1211
import swervelib.math.SwerveMath;
@@ -156,10 +155,6 @@ public Supplier<GyroSimulation> getGyroSim()
156155
{
157156
return COTS.ofPigeon2();
158157
}
159-
// else if (imu instanceof NavXSwerve)
160-
// {
161-
// return COTS.ofNav2X();
162-
// }
163158
return COTS.ofGenericGyro();
164159
}
165160

yagsl/java/swervelib/parser/deserializer/ReflectionsManager.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public enum VENDOR
2727
/**
2828
* StudicaLib
2929
*/
30-
STUDICA
30+
STUDICA,
31+
STUDICA2
3132
}
3233

3334
/**
@@ -68,6 +69,11 @@ public static boolean checkIfVendorLibExists(VENDOR vendor)
6869
library = Class.forName("com.studica.frc.AHRS");
6970
break;
7071
}
72+
case STUDICA2 ->
73+
{
74+
library = Class.forName("com.studica.frc.Navx");
75+
break;
76+
}
7177
default ->
7278
{
7379
return false;

yagsl/java/swervelib/parser/json/DeviceJson.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import static swervelib.telemetry.SwerveDriveTelemetry.serialCommsIssueWarning;
66

77
import com.ctre.phoenix.motorcontrol.FeedbackDevice;
8-
import com.studica.frc.AHRS.NavXComType;
98

109
import edu.wpi.first.math.system.plant.DCMotor;
1110
import edu.wpi.first.wpilibj.DriverStation;
@@ -23,8 +22,6 @@
2322
import swervelib.imu.ADXRS450Swerve;
2423
import swervelib.imu.AnalogGyroSwerve;
2524
import swervelib.imu.CanandgyroSwerve;
26-
import swervelib.imu.NavX3Swerve;
27-
import swervelib.imu.NavXSwerve;
2825
import swervelib.imu.Pigeon2Swerve;
2926
import swervelib.imu.PigeonSwerve;
3027
import swervelib.imu.PigeonViaTalonSRXSwerve;
@@ -158,25 +155,40 @@ public SwerveIMU createIMU()
158155
return new CanandgyroSwerve(id);
159156
case "navx":
160157
case "navx_spi":
161-
return new NavXSwerve(NavXComType.kMXP_SPI);
158+
return ReflectionsManager.<SwerveIMU>create(VENDOR.STUDICA,
159+
"swervelib.imu.NavXSwerve",
160+
new Class[]{String.class},
161+
new Object[]{"kMXP_SPI"});
162162
case "navx3":
163-
return new NavX3Swerve(id);
163+
return ReflectionsManager.<SwerveIMU>create(VENDOR.STUDICA2,
164+
"swervelib.imu.NavX3Swerve",
165+
new Class[]{Integer.class},
166+
new Object[]{id});
164167
case "navx_i2c":
165168
DriverStation.reportWarning(
166169
"WARNING: There exists an I2C lockup issue on the roboRIO that could occur, more information here: " +
167170
"\nhttps://docs.wpilib.org/en/stable/docs/yearly-overview/known-issues" +
168171
".html#onboard-i2c-causing-system-lockups",
169172
false);
170173
i2cLockupWarning.set(true);
171-
return new NavXSwerve(NavXComType.kI2C);
174+
return ReflectionsManager.<SwerveIMU>create(VENDOR.STUDICA,
175+
"swervelib.imu.NavXSwerve",
176+
new Class[]{String.class},
177+
new Object[]{"kI2C"});
172178
case "navx_usb":
173179
DriverStation.reportWarning("WARNING: There is issues when using USB camera's and the NavX like this!\n" +
174180
"https://pdocs.kauailabs.com/navx-mxp/guidance/selecting-an-interface/", false);
175181
serialCommsIssueWarning.set(true);
176-
return new NavXSwerve(NavXComType.kUSB1);
182+
return ReflectionsManager.<SwerveIMU>create(VENDOR.STUDICA,
183+
"swervelib.imu.NavXSwerve",
184+
new Class[]{String.class},
185+
new Object[]{"kUSB1"});
177186
case "navx_mxp_serial":
178187
serialCommsIssueWarning.set(true);
179-
return new NavXSwerve(NavXComType.kMXP_UART);
188+
return ReflectionsManager.<SwerveIMU>create(VENDOR.STUDICA,
189+
"swervelib.imu.NavXSwerve",
190+
new Class[]{String.class},
191+
new Object[]{"kMXP_UART"});
180192
case "pigeon":
181193
return new PigeonSwerve(id);
182194
case "pigeon_via_talonsrx":

0 commit comments

Comments
 (0)