Log in

View Full Version : Can't read joystick values in Java


nubie
17-02-2012, 17:15
Our team is trying to implement a simple mecanum drive in Java, but whenever we try to set a motor speed based on a joystick value, the motor simply does nothing. No error is thrown, but it does not spin.

We are extending the SimpleRobot class. We are initializing the joysticks with:


private Joystick leftStick;

public RobotTemplate() {
leftStick = new Joystick(1);


and then later on...


drivetrain.tankDrive(leftStick, rightStick);

//or

leftMotor.set(leftStick.getX());


We just switched from C++ to Java and we were able to use the joysticks fine in our C++ program, so we don't think it's a control system issue.

Any help would be greatly appreciated! Thanks.

compboy07
17-02-2012, 17:23
The getX() method is for the kinectStick. Use getRawAxis(int axis) or getAxis(Joystick.AxisType.kX);

nubie
17-02-2012, 17:51
Thank you for your fast reply. I tried switching to using the getRawAxis method, but it still does the same thing. I try:


// I also try 1-6 instead of 0
leftMotor.set(leftDriveStick.getRawAxis(0));


When I put in 3, the motor drives at full speed, but for everything else it does not drive at all. In either case, I can't control them with the joysticks. Am I missing something else?

compboy07
17-02-2012, 19:10
Try two things: firstly, output your values using the LCD display class; it helps a ton. Also, try the getAxis, as it has an enum instead of the index. Instead of some arbitrary number as an argument, it uses Joystick.AxisType.kX

nubie
18-02-2012, 13:11
I managed to find the default code project that was missing from the libraries on a different thread, and when I ran that, it worked. I still do not know what the root issue is but maybe I will be able to determine it in the future.

Thank you for your help.

jesusrambo
18-02-2012, 18:14
The getX() method is for the kinectStick.

No, getX() is inherited in both Joystick and kinectStick from GenericHID.

Look in the libraries at Joystick.java and you'll find


/**
* Get the X value of the joystick.
* This depends on the mapping of the joystick connected to the current port.
*
* @param hand Unused
* @return The X value of the joystick.
*/
public double getX(Hand hand) {
return getRawAxis(m_axes[AxisType.kX.value]);
}

/**
* Get the Y value of the joystick.
* This depends on the mapping of the joystick connected to the current port.
*
* @param hand Unused
* @return The Y value of the joystick.
*/
public double getY(Hand hand) {
return getRawAxis(m_axes[AxisType.kY.value]);
}


TL;DR getX() works for joysticks, not just kinectSticks.