Accidental Piston Retraction

whenever we disable our robot a piston retracts. Do you think this is a problem in the code or an electrical problem? Any suggestions?

What solenoid valve are you using to control the pneumatic cylinder? If it’s a “single solenoid”, it will automatically disengage when the signal to extend is removed. All signals are removed when the robot is disabled.

To keep from having this happen, you need to use a “dual solenoid” which requires two control signals, one to extend the cylinder and one to retract it. That way it won’t change state when the robot is disabled.

Thanks, it is a single solenoid. We just weren’t sure if it was supposed to or not

Yup. Normal operation, and an excellent case for using a double-action solenoid to improve safety.

It is ALSO a good case for a center-off, or tristate valve, where it can extend, retract, or stop. When voltage is removed (ie. robot disabled), the valve defaults to STOP. Unfortunately, the GDC has outlawed them in Q&A for a reason I can’t make sense of.

It only improves safety if there’s something dangerous about disengaging the cylinder. In our 2007 robot, we intentionally designed a system to use a single solenoid so that a tetra holder would release when the robot was disabled. Disabling the robot was a regular feature of that game. This year, we’ll probably have pneumatic brakes on a subsystem to hold it in place when we’re not actively driving it, and since we can’t actively drive it when the robot is disabled, a single solenoid makes sense for that application too.

We always use dual solenoids when we don’t want something changing unexpectedly. Often that’s a safety issue, but sometimes it’s just because activating a mechanism at the wrong time could earn us a penalty.