VingVing Robot LogoVingVing Robot

Documentation v0.0.3

VingVing Robot Docs

Tuning Setup

Prepare your robot for tuning and verify basic functionality

Before You Start

  • VingVing Robot installed - Library added to your project
  • RobotConfig created - Motor names and directions configured
  • FTC Dashboard set up - For visualization (recommended)
  • Fully charged battery - Consistent power for accurate measurements
  • Open space - At least 6x6 feet for testing

Copy the Tuning OpMode

VingVing Robot includes a comprehensive Tuning OpMode with all necessary tools. Copy it to your TeamCode:

Tuning.java
package org.firstinspires.ftc.teamcode;

import com.vingvingrobot.follower.Follower;
import com.vingvingrobot.telemetry.SelectableOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;

@TeleOp(name = "Tuning", group = "VingVingRobot")
public class Tuning extends SelectableOpMode {
    public static Follower follower;

    public Tuning() {
        super("Select a Tuning OpMode", s -> {
            s.folder("Localization", l -> {
                l.add("Localization Test", LocalizationTest::new);
                l.add("Forward Tuner", ForwardTuner::new);
                l.add("Lateral Tuner", LateralTuner::new);
                l.add("Turn Tuner", TurnTuner::new);
            });
            s.folder("Automatic", a -> {
                a.add("Forward Velocity Tuner", ForwardVelocityTuner::new);
                a.add("Lateral Velocity Tuner", LateralVelocityTuner::new);
                a.add("Forward Zero Power Acceleration", ForwardZPATuner::new);
                a.add("Lateral Zero Power Acceleration", LateralZPATuner::new);
            });
            s.folder("Manual", p -> {
                p.add("Translational Tuner", TranslationalTuner::new);
                p.add("Heading Tuner", HeadingTuner::new);
                p.add("Drive Tuner", DriveTuner::new);
                p.add("Centripetal Tuner", CentripetalTuner::new);
            });
            s.folder("Tests", t -> {
                t.add("Line", Line::new);
                t.add("Triangle", Triangle::new);
                t.add("Circle", Circle::new);
            });
        });
    }

    @Override
    public void onSelect() {
        if (follower == null) {
            follower = RobotConfig.createFollower(hardwareMap);
        }
        follower.setStartingPose(new Pose());
        Drawing.init();
    }
}

// Add individual tuning OpModes below...
// See the full example in Quickstart-master/TeamCode

📁 Full Tuning.java Example: Find the complete implementation inQuickstart-master/TeamCode/.../vingVingRobot/Tuning.java

Recommended Tuning Order

Follow this sequence for best results:

1

Localization Test

Verify that your localizer is tracking position correctly. Push the robot manually and check that coordinates update properly on dashboard.

Localization Guide →
2

Automatic Velocity Tuning

Run Forward and Lateral Velocity Tuners to measure your robot's maximum speeds. Then run Zero-Power Acceleration Tuners to measure natural deceleration.

Automatic Tuning →
3

PID Tuning

Tune Translational, Heading, Drive, and Centripetal PID controllers. Start with default values and adjust based on robot behavior.

PID Tuning →
4

Testing

Run Line, Triangle, and Circle tests to verify your tuning. The robot should follow paths smoothly and accurately.

Testing Guide →

Common Setup Issues

Robot moves in wrong direction

Check motor directions in RobotConfig:

  • If robot goes backward when it should go forward, reverse all motor directions
  • If robot turns left when it should turn right, swap left/right motor directions
  • Test each motor individually to verify correct wiring
Position tracking is incorrect

Localizer configuration issues:

  • Verify encoder directions match physical installation
  • Check ticks-to-inches multipliers with manual tuning
  • Ensure IMU (if used) is properly calibrated
  • Confirm odometry pod offsets are measured correctly
Dashboard not showing robot

Dashboard visualization troubleshooting:

  • Make sure Drawing.init() is called before using dashboard
  • Verify Drawing.sendPacket() is called in your loop
  • Check that you're connected to correct IP address
  • Ensure FTC Dashboard dependency is installed

Ready to Tune!

Your robot is set up and ready for tuning. Start with localization testing.

Start Localization Testing →