For our LilacAutonomous we used a OneWheelDirectDrivetrain and pass it a single motor for our latchArm. We used a DeadReckonTask with a path to run that motor, but it never hits the target, because isBusy() is always true (Current position was showing as 0 and encoder target as a greater number, it was always less than the target so never hit - see attached picture).
We edited isBusy() in DrivetrainBaseImpl.java to try to figure out what was wrong. We determined that getCurrentPosition() stayed at the value 0 and was not updating. Turned out it was a problem with a bad encoder wire! So, always check if the issue may be related to encoder hardware!!!
Craig said If the current position is not updating that indicates an electrical problem. Your encoder cable isn't hooked up or the encoder on that motor is not working. That's not a software problem.
If you are using the gamepad to select your robot start position on the field and based on that info, set a DeadReckonPath specific to your field position, you have to remember to always do myDeadReckonPath.stop() before doing the myDeadReckonPath.addSegment(...). Otherwise, you will keep adding segments to the path. So, if you call the function twice, each call will add additional segments to your path, which is NOT what you want. The stop() clears the segments that are on your myDeadReckonPath, so you only add the segments that you want.