Using Jaguar() instead of RobotDrive()

I was wondering if there’s any difference using just RobotDrive(1,2,3,4) (what we currently do) and making Jaguar(1) for motor then use that instead.

Thisis how our code is right now.

Your feedback’s are appreciated. Let me know if there’s anything better I could do (in the whole project).

Jaguar is used to control individual Jaguars. Robot Drive uses the Jaguar class to make a basic drive system to get you started.

well if you used 4 separate Jaguar objects the only difference is having to make the driving methods yourself, or making an alternative setup for driving the Jaguars, with RobotDrive the methods are already there.

I make the 4 Jaguar objects and then use those for the robot Drive as shown.


Jaguar leftFront = new Jaguar(3);
Jaguar leftBack = new Jaguar(4);
Jaguar rightFront = new Jaguar(1);
Jaguar rightBack = new Jaguar(2);
RobotDrive robotDrive = new RobotDrive(leftFront, leftBack, rightFront, rightBack);

This way if I needed to I could set Jaguars individually and get the individual speeds for the dashboard and stuff as well as use the RobotDrive for handling mass changes and regular driving.

Code for a DriveTrain I wrote for testing:


package edu.wpi.first.wpilibj.test;


import edu.wpi.first.wpilibj.Jaguar;
import edu.wpi.first.wpilibj.RobotDrive;

/**
 *
 * @author Gus Michel
 */
public class DriveTrain {
    private int LEFT_FRONT_JAG_PORT = 1;
    private int LEFT_BACK_JAG_PORT = 2;
    private int RIGHT_FRONT_JAG_PORT = 3;
    private int RIGHT_BACK_JAG_PORT = 4;
    private static DriveTrain instance = null;
    private Jaguar leftFront;
    private Jaguar leftBack;
    private Jaguar rightFront;
    private Jaguar rightBack;
    private RobotDrive robotDrive;
    
    private DriveTrain() {
        leftFront = new Jaguar(LEFT_FRONT_JAG_PORT);
        leftBack = new Jaguar(LEFT_BACK_JAG_PORT);
        rightFront = new Jaguar(RIGHT_FRONT_JAG_PORT);
        rightBack = new Jaguar(RIGHT_BACK_JAG_PORT);
        robotDrive = new RobotDrive(leftFront, leftBack, rightFront, rightBack);
    }
    
    public static DriveTrain getInstance() {
        if(instance == null) {
            instance = new DriveTrain();
        }
        return instance;
    }
    
    public void drive(double throttle, double turn) {
        robotDrive.drive(throttle, turn);
    }
    
    public void arcadeDrive(double throttle, double turn) {
        robotDrive.arcadeDrive(throttle, turn);
    }
    
    public void tankDrive(double left, double right) {
        robotDrive.tankDrive(left, right);
    }
    
    public double getLeftFrontSpeed() {
        return leftFront.getSpeed();
    }
    
    public double getLeftBackSpeed() {
        return leftBack.getSpeed();
    }
    
    public double getRightFrontSpeed() {
        return rightFront.getSpeed();
    }
    
    public double getRightBackSpeed() {
        return rightBack.getSpeed();
    }
    
    public void stop() {
        robotDrive.drive(0,0);
    }
}