I believe you’ll want to end up passing
output + feedforward to
driveSubsystem.setOutput, where feedforward is calculated based on setpoint * kF (or, for a more rigorous approach, calculated from a frc-characterization model).
How exactly you structure this depends on your programming style. Hopefully someone more familiar with good code architecture can recommend specifics, as I’m not too familiar with command-based programming and OO style in general. The docs suggest handling the feedforward and feedback (PID) controllers separately:
Moreover, feedforward is a separate feature entirely from feedback, and thus has no reason to be handled in the same controller object, as this violates separation of concerns.