For the purpose of fully extending and retracting a pneumatic cylinder, a single solenoid will work fine, even without a spring return cylinder. What is the purpose of a double solenoid? It takes up double the slots in the PCM/PH.
I think they are safer generally because pneumatically actuated mechanisms can stay at either position when the robot disables. But there are the disadvantages you list, cost, more slots, etc.
If you want the mechanism to stay in the current position when the robot is disabled or loses power.
Most of the time you don’t need double solenoids in FRC but there are some applications where they’re nice to have. I usually like to put them on the intake because it’s really annoying to hit disable to fix something and have the intake retract.
Idk why but for the longest time, I thought double solenoid allows you to be in the middle of the stroke, not just both ends. Welp, I guess that’s what happens when you haven’t touched pneumatics since 2019
Keeping things in the same position they were in when control power is lost (end of match, broken wire, etc.)
Exhaust or pressure center 3-position valves can be used to give an actuator a third free-floating state. These can be combined with a rod lock/brake to obtain “analog” cylinder control.
(Not FRC legal in 2022) Closed center 3 position valves can be used for “analog” cylinder control (not legal due to the R18 “vent plug must vent all pressure” rule).
I’ve happened across double solenoid valves that would do something like block all ports when both internal solenoids are actuated. No idea what they’re called or even the application really; there seem to be a near-countless variety every time I go to buy them from non-frc suppliers.