Tuning Guide
Because NODO relies on timed moves rather than dead-wheel odometry, your robot’s consistency depends heavily on tuning these values: kF (Feedforward) and Turn PD.
Choose your programming environment for instructions.
1. Tuning kF (Static Feedforward)
Why this: Foam tiles have a lot of static friction. kF instantly gives the amount of power to counter that friction.
- Too Low: The robot buzzes but struggles to move at low speeds.
- Too High: The robot jerks violently at the start of every move.
- Starting Value:
0.03
How to Apply kF
In Java, your kF value is the third argument passed into your drive constructor. You only need to set this once in your init() or runOpMode() method.
However, on the sample tele which you will use for test, we have put kF at the top for easy access.
Find this:
private static double kF = 0.03;
In Blocks, set kF with the setFeedforward block under NODO Init.

2. Tuning Turn PD (Proportional-Derivative)
What this is: A PD controller calculates how much power to send to the motors to reach a target angle without overshooting.
| Value | Meaning | Default |
|---|---|---|
kP | Proportional The further you are from the target, the more power it gives. Raise if turns are sluggish; lower if it aggressively overshoots. | 0.035 |
kD | Derivative Resists fast turning speeds to reduce overshoot and oscillation. Raise it slightly if the robot whips past the target; lower if robot agressively oscillates. | 0.002 |
maxPower | Max Power Limits maximum power given to motors while turning. | 0.8 |
The Tuning Process
-
In Quickstart Auton, remove the drive command, leaving
turnBy(-90).Robot should turn 90 degrees counter-clockwise.
- Play Tele.
- Watch robot carefully.
- Adjust
kPandkDuntil it reaches 90 degrees quickly and stops without wiggling. - To retest, you’ll need to restart the OpMode.
How to Apply Turn PD
This is already included in the Quickstart Auton
Use setTurnPD() on your drive object before starting your autonomous sequence.
// drive.setTurnPD(kP, kD, maxPower);
drive.setTurnPD(0.04, 0.0025, 0.4);
// You can also change the tolerance
// (how close is good enough for finishing)
drive.setTurnToleranceDegrees(3.0);
Use the dedicated Turn PD block to override the default values.
- Look in the NODO Init Blocks menu.
- Drag out the
setTurnPD(kP, kD, maxPower)block. - Snap three math number blocks to it.
- Set them to
0.04,0.0025, and0.4, respectively. - Place this in your initialization sequence, before running any
turnByblocks.
Troubleshooting
If your tuning doesn’t seem to be working, check these common issues:
- Robot spins the completely wrong way: Your Hub Orientation or Motor Directions may not be configured incorrectly.
- Robot never finishes the turn, and wobbles at the target: Your Turn Tolerance may be too strict. The robot may be trying to get within 1 degree but cannot consistently do so. Raise the tolerance (for example, to
3.5degrees).
Next Steps
Once your robot is tuned, you are ready to write complex autonomous paths!