Log in

View Full Version : Disable Robot in Code


Mikey Richards
16-06-2016, 23:10
Our team is trying to add a button to our joystick that disables the robot. Right now we are using java's System.exit(0), but this also loses the robot code. Is there a way to disable the robot, but not lose robot code.

cgmv123
16-06-2016, 23:23
Pseudo(ish)code:

boolean disabled = false;
if (button pressed)
disabled = !disabled;
if (disabled)
all motors set at 0
else
normal code executes


This needs to go in the main control loop.

otherguy
17-06-2016, 08:15
If you're using a command based project the above code may be difficult to integrate.

Instead you could just stop the scheduler from running (preventing your commands from executing) by calling Scheduler.getInstance().disable();

When you want to enable the scheduler again call Scheduler.getInstance().enable();

Note that depending on how you output values to your motor controllers, they could latch on the last command they received before you pressed the button. Test your code out with the robot on blocks and with a mechanism that can't stall out and break itself before you use it for anything safety related.

Note that the robot is still "enabled" so it's possible for things to move of they are commanded to do so (if you have code that sets outputs that's not run within a command).

Sent from my LGLS751 using Tapatalk

FrankJ
17-06-2016, 09:44
Put something on the DS that sends a [enter] keyboard command when the button is pressed? We tested this at one time on our teeshirt cannon. We haven't actually implemented it yet though.

euhlmann
17-06-2016, 13:23
Edit: DriverStation has a function called InDisabled(boolean)

Try calling that with true; it might work.

---

You can override isDisabled() in your robot class like this:


public boolean isDisabled() {
return super.isDisabled() || myDisableFlag;
}


This should work whether you extend RobotBase or IterativeRobot

Two things:
- The Driver Station won't recognize that you are disabled when you set the flag
- You'll need to make sure to clear the flag yourself when you want to enable again