(Free Code!) FRC 3525's "Swap Drive"

Hi everyone!! Just making a post to give you guys the ability to use a copy of my team’s “Swap Drive” code. I’ve attached the VIs (which you can just copy into your robot project whenever) and am going to be providing the documentation in this post, as well as in a file that will come with the download.

So, here goes.

First Off: What is “Swap Drive”?
Swap drive is a small bit of code that provides you with the ability to swap between tank drive and arcade drive at any point in the match. My team has found this very helpful as it provides ease of driving straight when not at top speed from arcade drive, and having the maneuverability of tank drive, at a moment’s notice.

Documentation
Using SwapDrive.vi is surprisingly simple. Just as there is with any vi, you place it into your code, plug in all of the inputs, and then let it run. The inputs are as follows:

  1. RobotDriveRefNum - the refnum for your robot drive.
  2. Lock Changes Boolean - MUST BE CONSTANT. Decide whether or not it will be a button swap or a hold-to-use.
  3. Change Mode Boolean - The button input that controls changing drive modes.
  4. Arcade X Axis - The X axis of the arcade joystick.
  5. Arcade Y Axis - The Y axis of the arcade joystick.
  6. Tank Left Axis - The axis to use for the left side in tank drive.
  7. Tank Right Axis - The axis to use for the right side in tank drive.
  8. Error in

There are also the following outputs, to be used as you see fit.

  1. RobotDriveRefNum Out - The same refnum that you plug in.
  2. Current Drive Mode - The current drive mode the robot is in (we use this to show the drive mode on the dashboard)
  3. Motor Values - The motor values returned by the tank/arcade drives.
  4. Error out

Code is explained inside of the VI. I can’t guarantee anything will work if changes are made.

All inputs are required, outputs are yours to do with as you please. If you have any further questions, feel free to post them here, PM me on the forums, or email me at [my username]@gmail.com

Update [3/31/14]: I tested the code on the robot simulator that is provided with LabVIEW and modified the SwapDrive.vi to work properly. The currently attached file is the latest version. If you have a version downloaded before 3/31 it will not function correctly.

SwapDrive.vi (64.2 KB)


SwapDrive.vi (64.2 KB)

I’m sorry I don’t really understand the difference between Tank and Arcade style do mind explaining?

Tank drive is when the robot is controlled using two joysticks, one for each side. Arcade drive is when it is a single joystick that controls both sides.

I really like the idea of having the swap drive, in fact one of the first programs we wrote was to switch between the 2 modes. We ended up just leaving it in tank drive the whole time, but it can be nice to have both options.

Teams that use octacanum drive have to use this type of code as well, right? I would think that they would need to switch between tank and holonomic, but this is more applicable to teams that don’t have such a complicated drivetrain.

Good job!