Log in

View Full Version : Using robotdrive in 2 commands


fireXtract
05-03-2014, 17:16
I am using one Subsystem that has methods for driving based on encoders and driving based on double input. I have been doing some scrounging and borrowed some code from various places.
the subsystem looks like this

DriveTrain (http://pastebin.com/MuiKhujt)

the commands used are DriveWithJoystick and DriveToDistance
DriveToDistance (http://pastebin.com/aWP49wuC) (this one doesnt do anything i commented out the autodrive part)

DriveWithJoysticks (http://pastebin.com/FzqhbjSG)
Im stumped because when i deploy my code to the robot it gives a null pointer exception at the lines that reference the mechanum part
[cRIO] java.lang.NullPointerException
[cRIO] at us.mn.k12.fairmont.robotics.subsystems.DriveTrain. driveMechanum_Cartesian(DriveTrain.java:37)
[cRIO] at us.mn.k12.fairmont.robotics.commands.DriveWithJoys ticks.execute(DriveWithJoysticks.java:25)
Anything else needed to solve the problem i can put into a pastebin but i dont know how to get around using the drive in 2 places.

irvingc
05-03-2014, 18:20
Using one subsystem in multiple commands is the correct usage pattern - there's no need to get around it.

The problem is that in your DriveTrain constructor, you declare and instantiate a local RobotDrive object instead of initializing the member variable. The quickest fix is just to remove the data type, i.e. change:
RobotDrive drive = new RobotDrive(RobotMap.frontLeftMotor, RobotMap.rearLeftMotor, RobotMap.frontRightMotor, RobotMap.rearRightMotor);
to
drive = new RobotDrive(RobotMap.frontLeftMotor, RobotMap.rearLeftMotor, RobotMap.frontRightMotor, RobotMap.rearRightMotor);

[ edit ]
And the same change should be applied to the enc variable.

fireXtract
06-03-2014, 09:47
Thank you very much! I will be testing it shortly.