View Full Version : Xbox Controller with mecanum drive
VrewDaive
26-01-2016, 14:34
Hello, I'm a first year FRC programmer and was curious on how to use the Xbox 360 controller as both joysticks for the myDrive.mecanumDrive_Polar(moveStick.getY(),moveSt ick.getX() , rotateStick.getTwist()); I don't know how to designate the certain sticks of the controller to either moveStick or Rotate stick and also am confused on how to assign them in the declaration myDrive = new RobotDrive(0,1,2,3);
moveStick = new Joystick(1);
rotateStick = new Joystick(2);
Any help appreciated; Ive already looked over the other chief delphi post over this subject but am still lost. Thanks!!
getY() and getX() are intended for flightstick not xbox controllers
i think the code you want is
robotDrive.mecanumDrive_Cartesian(joystick.getRawA xis(whateverYourXAxisIs), joystick.getRawAxis(whateverYourYAxisIs), joystick.getRawAxis(whateverYourRotateAxisIs), whateverYourGyroValueIs)
TimTheGreat
26-01-2016, 22:45
The buttons on the controller follow this mapping
1: A
2: B
3: X
4: Y
5: Left Bumper
6: Right Bumper
7: Back
8: Start
9: Left Joystick
10: Right Joystick
The axis on the controller follow this mapping
(all output is between -1 and 1)
1: Left Stick X Axis
-Left:Negative ; Right: Positive
2: Left Stick Y Axis
-Up: Negative ; Down: Positive
3: Triggers
-Left: Positive ; Right: Negative
4: Right Stick X Axis
-Left: Negative ; Right: Positive
5: Right Stick Y Axis
-Up: Negative ; Down: Positive
6: Directional Pad (Not recommended, buggy)
taken from http://www.chiefdelphi.com/forums/showpost.php?p=1003245&postcount=8
VrewDaive
27-01-2016, 14:02
so would something like this work as expected?
*/ RobotDrive myDrive;
Joystick moveStick;
Gyro gyro;
public void robotInit() {
Talon TalLF = new Talon(0);
Talon TalLR = new Talon(1);
Talon TalRF = new Talon(2);
Talon TalRR = new Talon(3);
myDrive = new RobotDrive(TalLF,TalLR,TalRF,TalRR);
moveStick = new Joystick(1);
}
/**
* This function is called periodically during autonomous
*/
public void autonomousPeriodic() {
}
/**
* This function is called periodically during operator control
*/
public void teleopPeriodic() {
//while(!isAutonomous() && isEnabled())
//{
//myDrive.mecanumDrive_Polar(moveStick.getRawAxis(1) ,moveStick.getRawAxis(2) , moveStick.getRawAxis(4));
myDrive.mecanumDrive_Cartesian(moveStick.getRawAxi s(1), moveStick.getRawAxis(2), moveStick.getRawAxis(5), gyro.getAngle());
Timer.delay(0.01);
//}
}
TimTheGreat
27-01-2016, 19:00
so would something like this work as expected?
myDrive.mecanumDrive_Cartesian(moveStick.getRawAxi s(1), moveStick.getRawAxis(2), moveStick.getRawAxis(5), gyro.getAngle());
//}
}
Yeah that should work.
Also, are you meaning to do field-oriented drive (pushing up on the left joystick makes the robot move away from you, no matter which way it's pointing)?
honestly at this point no. I just want the drive to work correctly, Do we have the gyro assigned correctly?
RobotDrive myDrive, catcherDrive;
Joystick moveStick;
Gyro gyro;
myDrive.mecanumDrive_Cartesian(moveStick.getRawAxi s(1), moveStick.getRawAxis(1), moveStick.getRawAxis(1), gyro.getAngle());
VrewDaive
28-01-2016, 09:48
that was me.... on a different account
TimTheGreat
28-01-2016, 17:09
honestly at this point no. I just want the drive to work correctly, Do we have the gyro assigned correctly?
RobotDrive myDrive, catcherDrive;
Joystick moveStick;
Gyro gyro;
myDrive.mecanumDrive_Cartesian(moveStick.getRawAxi s(1), moveStick.getRawAxis(1), moveStick.getRawAxis(1), gyro.getAngle());
Well you don't create it, at least in the code you show here. If you don't want field-oriented get rid of the gyro.getAngle() in the mecanumDrive constructor and replace with 0.
vBulletin® v3.6.4, Copyright ©2000-2017, Jelsoft Enterprises Ltd.