Trajectory DifferentialDrive… Output not updated often enough

Hi!

I’m trying to use trajectory but I keep receiving this warning “DifferentialDrive… Output not updated often enough”.

My Trajectory command code:

How I used the trajectory builder:
public class GalacticA extends SequentialCommandGroup {

  public GalacticA(TrajectoryBuilder trajectoryBuilder) {
    super.addCommands(
      trajectoryBuilder.buildTrajectory("galacticA_0"),
      trajectoryBuilder.buildTrajectory("galacticA_1")
    );
  }

RobotContainer:

public Command getAutonomousCommand() {
    this.trajectoryBuilder = new TrajectoryBuilder(this.drivetrain);

    return new GalacticA(this.trajectoryBuilder);
}

I saw this thread Bug or misunderstanding in Trajectory tutorial and Ramsete example? and they said that it was fix by using the “drive.feed()”, but we’re also using this line of code and it’s still not working.

public void tankDriveVolts(double rightVolts, double leftVolts) {
     this.motorsLeft.setVoltage(leftVolts);
     this.motorsRight.setVoltage(-(rightVolts));
     this.drive.feed();
}

Does anyone have any idea of what could it be?

Your sides are inverted: the RamseteCommand lambda outputs as (left, right) and your tankDriveVolts is the opposite. Same goes for the DifferentialDrive object. Take it as a rule - everywhere that has right and left it’ll always be (left, right).

This likely shouldn’t be the cause for the output not updated warning, but it’s a problem anyways.
About the warning itself- are you getting loop overrun warnings?

2 Likes

Oh, thanks for the tip!

I don’t think I saw any “loop overrun” warning when running the autonomous mode… but what if that was the problem? I’m not in robotics right now, so I can’t say that with 100% sure

Is the command running at all? Is there anything set to the motors?

Yes, the command runs. I’m using pathweaver to generate a trajectory. I guess the only moment that something is that to the motors is when calling the tankDriveVolts method

Unfortunately my reproduction of the error was fixed when using .feed().

I suspect this problem is related to the other problem. Building and redeploying the “same” code should not change things and that it does is extremely worrying to me.

Do you only get the “output not updated enough” when running two trajectories or does it happen for a single? Does it only happen when things are strangely not working or does it happen while working too?

1 Like

The problem seems to be with the path weaver. The trajectory generate with it takes a while to start running, so I receive this warning. But when it’s running, I don’t receive any errors

Lets get terminology straight. PathWeaver is just the utility that creates a .wpilib.json file. I don’t see any way that could be causing an issue with code.

PathWeaver generates code when you hit the “build button”. Are you talking about something in code?

I suspect the issue is not with the desktop application Path Weaver. My experience is that the delay is caused when reading and parsing the trajectory file (on the robot), longer trajectories generated from Path Weaver will cause a longer delay when parsing, but I expect that is as far as the correlation goes.

If your robot is not commanding your motor controllers to any value (including 0), WPI motor controller classes will trigger the motor safety and output the DifferentialDrive… Output not updated often enough error.

I’m sorry, I was not really clear… What I mean is that when I use the trajectory example of the ramsete tutorial it works, the robot moves right away, I dont receive errors… But when I tried to use a path generate in pathweaver (a really simple one), even though the path works, it takes I while to run it and I receive the warnings

The trajectory load process should only take a few ms. When you say it takes a while how long are we talking, roughly? Seconds, milliseconds, minutes?

I think it takes at least 5s to the robot start moving

We observe the same.
We moved the file reading code to the construtor and the delay vanished.

2 Likes

It worked. Thanks

That is much longer than I expected. I will say that we also load beforehand here is an example

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.