Go to Post so, i want the clue now, okay? is it bad that i am more interested in this years game than i am in taking my finals next week? - jwfoss [more]
Home
Go Back   Chief Delphi > Technical > Programming > Java
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 20-01-2017, 20:36
samrmur samrmur is offline
Registered User
FRC #3756 (Ramferno)
Team Role: Mentor
 
Join Date: Feb 2016
Rookie Year: 2016
Location: London, Ontario
Posts: 4
samrmur is an unknown quantity at this point
Robot Trigger Drive

I've been looking around for posts but I haven't found much on the subject, just thought I could possibly help those who may have the same idea. This class extends upon the official RobotDrive class in the FRC library. It adds a method which will allow the axes of two triggers (Example: Xbox Controller Triggers) for separate forward and reverse drive. This method of driving can often be seen in video games such as Forza 5 so it may (BIG MAYBE) help drivers who are familiar with this kind of drive. Uses a lot of code already available in the RobotDrive class.

Code:
import edu.wpi.first.wpilibj.GenericHID;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.SpeedController;

// Start of RobotDriveXbox
public class RobotTriggerDrive extends RobotDrive {
	  /**
	   * Constructor for RobotDrive with 2 motors specified with channel numbers. Set up parameters for
	   * a two wheel drive system where the left and right motor pwm channels are specified in the call.
	   * This call assumes Talons for controlling the motors. (Taken from official RobotDrive class)
	   * @param leftMotorChannel is an integer that represents the PWM channel number of the left motor
	   * @param rightMotorChannel is an integer that represents the PWM channel number of the left motor
	   */
	  public RobotTriggerDrive(final int leftMotorChannel, final int rightMotorChannel) {
		  super(leftMotorChannel, rightMotorChannel);
	  } // End of constructor
	
	
	/**
	 * Constructor for RobotDrive with 2 motors specified as SpeedController objects. The
	 * SpeedController version of the constructor enables programs to use the RobotDrive classes with
	 * subclasses of the SpeedController objects, for example, versions with ramping or reshaping of
	 * the curve to suit motor bias or dead-band elimination. (Taken from official RobotDrive class)
	 * @param leftMotor is a SpeedController Object which controls the speed of the left motor of the robot
	 * @param rightMotor is a SpeedController Object which controls the speed of the right motor of the robot
	 */
	public RobotTriggerDrive(SpeedController leftMotor, SpeedController rightMotor) {
		super(leftMotor, rightMotor);
	} // End of constructor
	
	/**
	 * Constructor for RobotDrive with 4 motors specified with channel numbers. Set up parameters for
	 * a four wheel drive system where all four motor pwm channels are specified in the call. This
	 * call assumes Talons for controlling the motors. (Taken from official RobotDrive class)
 	 * @param frontLeftMotor is an integer that represents the channel number of the front left motor
	 * @param rearLeftMotor is an integer that represents the channel number of the back left motor
	 * @param frontRightMotor is an integer that represents the channel number of the front right motor
	 * @param rearRightMotor is an integer that represents the channel number of the back right motor
	 */
	public RobotTriggerDrive(final int frontLeftMotor, final int rearLeftMotor, final int frontRightMotor, final int rearRightMotor) {
		super(frontLeftMotor, rearLeftMotor, frontRightMotor, rearRightMotor);
	} // End of constructor
	
	/**
	 * Constructor for RobotDrive with 4 motors specified as SpeedController objects. Speed controller
	 * input version of RobotDrive (Taken from official RobotDrive class)
	 * @param frontLeftMotor is a SpeedController Object which controls the speed of the front left motor of the robot
	 * @param rearLeftMotor is a SpeedController Object which controls the speed of the back left motor of the robot
	 * @param frontRightMotor is a SpeedController Object which controls the speed of the front right motor of the robot
	 * @param rearRightMotor is a SpeedController Object which controls the speed of the back right motor of the robot
	 */
	 public RobotTriggerDrive(SpeedController frontLeftMotor, SpeedController rearLeftMotor, SpeedController frontRightMotor, SpeedController rearRightMotor) {
		 super(frontLeftMotor, rearLeftMotor, frontRightMotor, rearRightMotor);
	 } // End of constructor 
	 
	/**
	 * Implements an arcadeDrive method with trigger drive functionality 
	 * @param moveStick is a Human Interface Device being used to control the robot forwards & backwards
	 * @param forwardsTrigger is the trigger axis being used to control the forward movement of the robot
	 * @param backwardsTrigger is the trigger axis being used to control the backward movement of the robot
	 * @param rotateAxis is the axis being used to control the left & right movements of the robot
	 */
	public void arcadeDrive(GenericHID moveStick, final int forwardsTrigger, final int backwardsTrigger, final int rotateAxis) {
		// Moves robot using both trigger axes
		double moveValue = moveStick.getRawAxis(forwardsTrigger) - moveStick.getRawAxis(backwardsTrigger);
		
		// Rotates robot left and right on a single axis
		double rotateValue = moveStick.getRawAxis(rotateAxis);
		
		// Drives robot at provided move and rotate values
		arcadeDrive(moveValue, rotateValue, true);
	} // End of method
} // End of class

Last edited by samrmur : 20-01-2017 at 20:42.
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 13:22.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi