Hi, I’m trying to calculate feedforward gains for a flywheel.
I ran my sysid routine, download on the data logger tool, put it into advantage scope, export it as wpilog from ascope, put it into sysid and I dragged the sys-id-test-state-Shooter into the data selector.
For the other parts, voltage, position, and velocity. I don’t see NT:/URCL whatsoever to drag NT:/URCL//MotorPositionRotations, NT:/URCL//MotorVelocityRPM, and NT:/URCL//AppliedOutputVoltage into the data selector
I run dataLogger and urcl at robotInit:
@Override
public void robotInit() {
DataLogManager.start();
URCL.start();
}
And here is how I create my test:
public Command sysIdQuasistaticForRight(SysIdRoutine.Direction direction) {
SysIdRoutine sysIdRoutine = new SysIdRoutine(
new SysIdRoutine.Config(),
new SysIdRoutine.Mechanism(
(voltage) -> right.setVoltage(voltage.in(Volts)),
null, // No log consumer, since data is recorded by URCL
this
)
);
// The methods below return Command objects
return sysIdRoutine.quasistatic(direction);
}
What am I doing wrong to make NT:URCL not appear? Thanks in advance.
We’re seeing similar issues as this post. We double checked and our versions are the same as you listed. What information can we provide to help solve our issue?
Found that initialization order/timing could cause this. Moving the initialization out of RobotContainer.java and moving it to early in robotInit in Robot.java resolved the issue.
Our initialization of the DataLogManager and URCL is in robotInit()
public void robotInit() {
DataLogManager.start();
URCL.start();
// Instantiate our RobotContainer. This will perform all our button bindings, and put our
// autonomous chooser on the dashboard.
m_robotContainer = new RobotContainer();
}
Are you talking about the initialization of our system identification routine? Currently, that is here:
public RobotContainer() {
// Configure the trigger bindings
configureBindings();
controller0.button(Constants.buttonList.x).toggleOnTrue(motorTestCMD);
// Create the SysId routine
SysIdRoutine sysIdRoutine = new SysIdRoutine(
new SysIdRoutine.Config(),
new SysIdRoutine.Mechanism(
(voltage) -> this.motorSubsystem.runVolts(voltage.in(Volts)),
null, // No log consumer, since data is recorded by URCL
this.motorSubsystem
)
);
I want to make sure I understand what initialization you are referring too.