Set servo position by hand on robotic arm

I have a series of dual shaft servos mounted in series in order to obtain a robotic arm/snake which is hanged in a vertical position as it is possible to see in the attached image.

I can correctly control each servo by using Arduino Mega and the ssc-32 servo board.

I would like to set the position of each servo by moving the whole structure by hand.

i.e. let's say the structure is in vertical position, then I use my hand to puch it at its center, then the structure should assume a C-shape position and should keep it until a apply a different pressure on it.

Is there any project like this?

I was thinking to use one IMU sensor for each servo in order to be able to detect when a servo is moving under the action of my hand, but it seems very complex.

Can you suggest me a solution, please?
I wasn't able to find anything on google.

Is it OK to move the servos by hand?

For most hobby servos that is just about possible when they are unpowered if you do it very slowly but it almost certainly puts a lot of strain on the tiny gears inside.

Unless your servos are designed for manual movement I thing you need to make some sort of "mimic" arm that can inform the Mega how to move the servos. One thought is to make an equivalent set of linkages with a potentiometer at each joint and let the Arduino read the pot values and move each servo accordingly.

...R

It is not possibile to move the servos by hand, they have metal gears and an output high torque.

I would like to detect when I use my hand to move the whole structure and move the servos accordingly by software.

For this reason, I was thinking to use an inertial sensor for each servo so I can detect small oscillations generated by my hands movements on each single servos.

I know that it is hard to explain :slight_smile:

marcusbarnet:
It is not possibile to move the servos by hand, they have metal gears and an output high torque.

I would like to detect when I use my hand to move the whole structure

I must be misunderstanding something.

If you can't move the servos by hand, how can you move the structure? - don't the servos prevent the links from bending?

There was a Thread on the Forum recently in which someone had a link to a YouTube video of a system with servos controlled by force sensors. Alas I did not bookmark it. IIRC in the video when the guy appeared to push on one servo-arm it would move and so would another servo. This worked because he had force sensors and he was actually pressing on the force sensor.

...R

Robin2:
I must be misunderstanding something.

If you can't move the servos by hand, how can you move the structure? - don't the servos prevent the links from bending?

The servo cannot move, but the whole structure can swing if someone push it softly by hand.

How can I find the video on youtube? can you remember the title or anything else that can help me to find it, please? I was thinking to use force sensors, but I think I will need also at least an inertial sensor because I would like to keep trace of the servo positions.

I used to repair a system that used multiple piezo mounted to a handle that would feel the 3D pressure placed upon the handle. The pressure would be converted to torques that blah, blah, blah. The gist of the idea is that it is possible to use piezo sensors to detect pressures to move thngies.

marcusbarnet:
How can I find the video on youtube? can you remember the title or anything else that can help me to find it, please?

If I could have I would have - sorry.

...R

marcusbarnet:
The servo cannot move, but the whole structure can swing if someone push it softly by hand.

Hey, now you are confusing yourself - and us in consequence - there! :astonished:

If the structure is not rigid, then it is nonsensical to suggest you can guide it by hand as it has no defined position.

A proper servo cannot be moved against its setting.

What you need to adjust the position of each servo, is a torque sensor - for each - which will detect the force applied; your algorithm then moves the servo to null that torque. But that is not the end of the story, as even in your situation, there is a gravity loading in the rest position which you need to take into account whilst in the "learn" mode. While you are supporting the arm, this will probably minimise, but when you let go it will appear as if you are moving it again, so you may need to have a learn "button" to push only while you make the adjustment and release to "set" it.

Sounds complex? Yep. :grinning:

I've been thinking some more about the YouTube video I mentioned. I remember now that the purpose of the demo was to show how four (I think) servos would all match the position of one of the others. In other words if you moved servo A then servos B, C and D would adopt the same position. AFAIK this was achieved by having a force sensor on each servo. I've spend a long ime searching YouTube but I have not been able to find it. I can't remember the key words that described the video.

...R

I wasn't going to let it beat me, and I found it

...R

Yep, that's pretty much what I was suggesting, albeit with the different purpose. :grinning:

Thank you for the video!! It has been very useful!

I was thinking to use load cells mounted on both faces of each servo in order to detect the pressure made by hand and move the servo motor accordingly.

The hall sensor solution is great, but I think it would be a little bit complex to implement on my robotic arm.