Would love some feedback on this automated bench press spotter project

My friends and I are avid lifters and had this idea of making an automated bench press spotter for someone bench pressing alone. We want to essentially build a mechanism that detects when the user needs help and then helps them.
Essentially we want to have two arms, one on either side of the user, that are each attached to a vertical shaft. These arms will be stationary until it is detected the user needs help and they will then be raised.

We are very inexperienced with arduinos and electronics but are very interested and very willing to learn as much as we can with the help of all of you.
We would like some input from you guys about how we would be able to detect when the user needs help lifting the bar. We were thinking about rigging up a laser tripwire that would be at the peak of the bar's motion. Once the barbell cross the tripwire on its way down, the user would have a certain amount of time to bring the bar back up to the top. If her or she does not reach the top in the period of time, then an electric hoist would be operated and the arms would be raised for assistance. This is currently our only idea, what do you guys think?

Im an avid lifter myself, and I personally wouldn't substitue an actual person for a machine. Machines do malfunction and tend to break down, so leaving my life in the clamps of a machine, don't sit too well for me.

You can try to make it if you want, but I would put it through extensive testing first, and have a backup just in case.

Sounds like there's a lot of scope for getting hurt - I'd have multiply redundant detectors, each detecting different properties.

Safety stands should always be your fail-safe, but if you have those in place, I believe the project has some merit. I too run into this issue as well as I tend to lift alone often, but am always concerned about pushing to failure due to not having a spotter.

So, with safety aside (again, use safety stands when working alone!) There would likely be multiple systems needed. First, I would start with an accelerometer. Similar to how it is used in a hard drive - sense a sudden vertical acceleration which would indicate that the bar was falling. You could also use this system to determine if a lift has stalled (user doesn't have the strength to re-rack the bar.)

A last thought would be that a typical sign that the lifter is losing control is when one side begins to drop more than the other. An accelerometer would also help with this. I believe an accelerometer would also help with determining normal forces as well, but I am not sure of the algorithms involved in that. That might also help with providing assistance to only the side that needs it which leaves the majority of the effort to the lifter which is what a spotter should do.

Finally some rough thoughts would be to measure the weight of the bar and determine the normal force required to keep it stationary. A force in excess of the normal force would be required to lift it and a force less than would be needed to lower it. But how would we determine the exact amount of force required to "help" versus take over? You would need to have something attached to the bar that would convert effort to work. Something like converting the movement to torque and measuring that. Perhaps simply measuring a stall in the lift is all that is needed here and to provide a proprtional force and check again to see if lifting has started again, if not, provide more force, etc... essentialy a PID loop.

A very ambitious and most likely complex project. First rule must be followed, 'do no harm'.

Lefty

Retroplayer

We thought of creating a variable force depending on how much effort the user was putting in but we didn't really know how to apply a variable force without having something constantly being attached to the bar. The goal is to still provide the user free range of motion, hence why we are using the arms that raise when the user needs help.

How would you apply a variable force like what you speak of without having something touching the bar at all times?

I'm sure there are more clever ways, but the way that immediately comes to mind is to sense a stall in movement. When it senses a stall, it would apply a small amount of force. If the stall is still present in some time after that, it applies more force, etc... Essentially, this is a PID loop focusing on the I term. The longer the error exists (stalled) the more proportional the force. And when the bar starts moving again, it begins applying less force.

A completely mechanical type of system that DIY bodybuilders have used is actually just using counterweights. Not enough weight to actually lift the bar, but enough to 'help' if needed. They arrange the pulleys in a slip configuration with some lag. As long as they have control of the movement and keep it moving, the counterweight does practically nothing. But if they stall, the weight of the bar brings the counterweight into the loop.

BTW, here's another solution already available. I will see if I can find a link to the garage gym system with the counterweights I had come across before.

http://www.shermworks.com/xanim.html

There's already a solution available..
Check http://juggernaut.asgon.net/

WOW. That was what our projhect was going to look like using the kinect and everything to detect when the person needs help. the only difference is using we are using linear actuators to raise the arms instead of a cable system. i wish i found this when we started the project