Hey everyone,
I'm having issues with my quadrupeds servos shaking under it's own weight but stabilizes with additional load.
I don't have any other servos at the moment to check if it's just the cheap servo internals
Servo: 25kg-GX3225MG Servo
Power Source:
I've tried 7.4V 20C and 11.1V 80C LiPo, into a Buck Converter down to 7.0V
Each leg (3 Servos) has capacitors: 1000uF, 1uF, 0.1uF.
If I remove all caps nothing changes.
Nothing unusual with the PWM signal or Servo power on oscilloscope. (I think, new to that tool)
ESP32 is powered by USB for testing, not being powered by the LiPo.
Only thing I notice is that the current reading for servo power (bank of 3 servos, 1 leg) fluctuates when it shakes, but when I apply additional load current stabilizes.
I'm at a loss how to address this, any insight would be appreciated.
ESP32 is powered by USB for testing, not being powered by the LiPo.
Just wondering if you have one of those cheap Servo Testers handy to substitute for the ESP32? Most of those use an analog signal that shouldn't cause any jitter.
You seem to have the power supply situation under control, so I was thinking it's possible that the ESP32 is to blame. A cheap tester would help test that theory.
😎
Bill
"Never trust a computer you can’t throw out a window." — Steve Wozniak
I see there are a few suggestions on the internet regarding jittering servos.
One solution for the Arduino given,
setup(){
TIMSKO=0 // turn off the T/C 0 interrupts
Let us know if you solve it.
Thank you for the replies,
Just wondering if you have one of those cheap Servo Testers handy
I do not, but I will just as fast a Amazon can deliver it haha, I'll try that out for sure.
One solution for the Arduino given,
setup(){
TIMSKO=0 // turn off the T/C 0 interrupts
I just tried to apply a similar solution but with the ESP32, but wasn't able to come up with anything.
Does it shake when the fore limbs are removed
Yes, I can put it in a position where it's forearms fold up and it just sits on its elbows and it still has shaking issues.
By that I mean they're set to an angle that's not a full "natural" division
What do you mean by full natural division?
There are certain postures where it is more likely to stabilize and not shake under its own weight, however it's a bit hit and miss. More often than not it will shake
I was kind of thinking along the same lines as you, I'm wondering if even just one of the servos is having an issue holding position it will oscillate and that will sort of cause a chain reaction where multiple servos are trying to compensate.
I think I'm going to deconstruct everything and test each servos ability test it leg by leg.
Also, ordered in 3 different servos to swap out one leg and see if that changes anything.
Does it shake when the fore limbs are removed, i.e., same position, on its knees only?
I'm suspecting the knee servos are "chattering" in the position you have them before the load. By that I mean they're set to an angle that's not a full "natural" division. I think the servo is struggling to maintain that posture. When the load is added, the shaking will naturally damp down.
Try to change the posture position of only the knee servos, by 1 or 2 degrees. The posture should still be stable but if the shaking stops, I think that's the cause.
Hi @krooger,
I have never tried to build a device like yours, but I am wondering if one or more servos are oscillating. This might be due to the type of problems you and Bill (@dronebot-workshop) have discussed, involving poor power quality and bad ESP drive waveforms, but maybe there is another reason to consider.
---------
A motor servo of this general type includes a classic feedback loop that tries to match the output from a position sensor with the reference voltage from the driving ESP. The feedback loop will be hidden in the servo electronics, but might include just a proportional control, or a PID control or ??? I have no idea which.
However, in a 'professional design' situation, each of these control elements usually have controls to 'tune' the response, to maintain the closest match between the sensor output and the reference voltage, over all expected load conditions, etc., without oscillating. Of course, when buying a cheap, off-the-shelf servo, most or all of this complexity is hidden, so that the resulting behaviour is predetermined at the factory.
However, depending upon a mix of both the control settings and the mechanical inertia associated with the motor shaft, etc., it is possible to be in the position that a small mismatch might cause the feedback loop to momentarily increase the motor power by too much, which overcorrects for the initial mismatch and replaces it with similar or worst mismatch in the opposite direction. This then reverses the situation and as a result, the servo oscillates about the position requested by the reference.
This problem is typically illustrated with a single servo, but in your case, the oscillation may involve more than one of the leg servos, since when one leg moves, the loading and exact position of all the legs will change slightly, so it is feasible the oscillation involves more than one servo. I think it is to be expected that changing the load on the servos would affect the oscillation, especially if the load is a human finger, which will also tend to damp any overshoot behaviour, and reduce the interaction between the legs.
--------
I am sorry that I cannot offer any quick fixes. It would be interesting to try adding a fixed weight to the quadruped body, but I have no idea if it will help. Equally, some friction or damping to its joints, being careful not to overload the servo motors.
Also, what happens if one or more legs are position 'fixed' (to keep the quadruped relatively balanced and level), with the associated servo unpowered? Do/does the remaining powered servo(s) still oscillate?
I don't know if it is possible to 'surgically' modify the servo, be that mechanically, electrically or ??, to adjust its characteristics. Perhaps, a Google search for modifying servo behaviour will reveal more ideas?
------------
Sorry, this is just a ramble, and might be a distraction, if the problem is something else. Please share anything you discover.
Best wishes, Dave
I just took another look at the picture of the bot from your intro post. (Nice design BTW. Very clean.) You have shoulder joints, so they control much of the horizontal stability. I'd focus on those servos. I can't be sure from the video, but I had the impression that all 4 feet weren't in firm contact with the floor. So, it may be a "3-legged stool" issue.
Well after a bit of individual servo testing I think I just bought poor quality servos.
Pressing my finger against the horn causes 7/12 of them to shake, and 1 of them actually just died.
Whereas the 3 replacement servos that came in are rock solid under the same conditions.
This will be an expensive mistake me thinks.
Hi @krooger,
Sorry to hear that you appear to have bought a batch of unstable servos, but good to hear that you have found some more reliable ones to replace them.
There maybe one or more readers who would appreciate any advice you can give as to which ones are best avoided and which ones seem more reliable. Although the present market is making lots of items available at low price, it is also something of a lottery whether they actually work properly. Many items are fine, but there are also some rogues.
In addition, when your quadruped is working without the shakes, please share your experience, as it may inspire others.
Best wishes, Dave
Help me to understand something here.
I'm having difficulty matching the empirical evidence of pressing the horn with the nature of the shaking you describe.
We have a 75g metal gear servo. Heavy enough to cause inertia. The shaft is controlled by a set of reduction gears and a circuit. The oscillations you described are due to a feedback loop trying to position the shaft at a position the servo gears cannot match exactly; so, it constantly tries to adjust the shaft. This sets up a small vibration due to inertia.
If this is true, then the servo would vibrate if just laid on the benchtop and set to the position. An average servo will vibrate most of the time while a well-made servo will vibrate less often.
But pressing the horn (shaft) down kills the servo? AFAIK, it's expected that the shaft can be pressed down. This would cause the shaft to become "frozen" and the feedback circuit to increase the power rotate the shaft to maintain position. A proper circuit should cut out when this happens if a threshold is reached. For example, a spinning wheel that hits a wall or the falls on the axle.
I'm trying to understand if the vibration is normal or not. To me, the evidence does indicate poor quality servos. But won't even a better-quality servo vibrate?
Help me to understand something here.
Well I have limited experience with servos but I can speculate that the servos that are shaking might have issues with their control system feed back. I imagine these cheaper hobby servos just use a potentiometer attached to the gear chain.
The only odd thing I did notice about them was that when they would shake the current would fluctuate wildly, like anywhere from 50mA to 600mA. Then if I apply more pressure they stabilize and have a constant current reading. Not sure what would cause that but it would seems to account for the shake, as if it were turning on and off really fast.
I don't think well built servos would shake even an unnoticeable amount, their current should just increase proportionally to the force applied and hold position.
That being said I'll need to acquire a new full set of servos and rebuild my bot to ensure there are no shaking issues. If the shake persists then I'll have a real headache. I'll update when I get some results.
That being said I'll need to acquire a new full set of servos and rebuild my bot to ensure there are no shaking issues. If the shake persists then I'll have a real headache. I'll update when I get some results.
The penny pincher in me screams at the thought of this.
And I'd be concerned that the result would be tied to a specific set of servos.
But I don't have an alternate solution.
Hi @tfmccarthy,
I think the possibility of a servo vibrating is 'normal', but whether a particular servo will vibrate depends upon its control loop characteristics, as well as the mechanical circumstances (e.g. nature of the load, etc.)
I do not think that a servo correctly optimised for a particular application, should appreciably vibrate in that application.
---------
As well as the obvious possibility that a 'cheap' servo has cut generally corners in the design, components and manufacturing stages to cut costs, the more general problem is that the characteristics of the control system need to be matched to the specific case.
-----------
An optimal servo will accurately follow any changes to the control input, introducing the minimum time delay, minimum overshoot, minimum long term error between the control request value and resulting position, and so on. However, this 'optimal' control system would be determined for a specific load, etc. If the nature of the load changes, the control system may also need to be changed.
-----------------
I suspect the 'better quality' small commercial servos for RC models are optimised for what is considered a typical load, which might be controlling the flight surfaces of a wing. (I have no idea if this load is considered typical - it is just a plausible suggestion for this discussion.)
Whether such a servo would also perform well in the leg of a quadruped, I don't know, but I wouldn't be surprised if it struggled.
In a 'benign' situation, it might appear to work reasonably well, but a close examination of its performance might suggest it is slow, and/or inaccurate. Hence, the servo performance can be sub-optimal, but whether it is a 'good enough' is an assessment for the user.
In a 'hostile' situation, as suggested in this thread, it may oscillate, or it might draw more power than it can handle whilst attempting, but continually failing, to move to the position commanded by the control input, resulting in overheating and maybe permanent device failure.
----------------
A quick Google discovered this paper to describe the typical characteristics of a control system.
https://www.eecs.umich.edu/courses/eecs373.w05/lecture/control.html
You may find some of the graphs helpful, but (unfortunately), the curves only show the resultant servo output ... you need to read the accompanying text, and hence imagine the control input signal, which is unhelpful, but not difficult with a little patience.
Perhaps someone else can suggest an alternative read?
Best wishes, Dave
Thanks for the link. The article brings back memories
Q: Does the servo current change with changing load? Or is it constant until the stalling torque is reached?
(I may have an idea.)
Hi @tfmccarthy,
I do not claim any special expertise with servos, but I hope the following thoughts and understanding are correct.
The task of the control system is to continuously match the 'position' specified by the incoming control signal with the actual position of the shaft. Simplistically, this implies two 'types' of load, each of which will demand an appropriate current flow to achieve the servo's task, as and when required:
- When the control reference changes, implying a move to a new position (angle), a force will be required to overcome friction, etc. to move to the new position, which implies some additional electrical current flow to produce sufficient 'extra' torque to move to the new position, whilst the move is taking place.
- In many cases, there will be external imposing forces, which in the absence of a matching opposing force from the servo, would cause the motor spindle to rotate. In the example of the quadruped, one such force would be due to gravity on the mass of the main body, on the 'knee' joint. To hold it in a stationary 'bent knee' position, requires sufficient current to produce a torque matching the torque due to gravity. (This example presumes that the unpowered knee joint can rotate freely, so that the bending torque on the 'knee' is much greater than the total intrinsic resisting forces, such as those due to friction and static magnetic forces exerted in the motor due to permanent magnetism.)
Clearly, if an extra load is imposed on the servo, such as a downward force being applied to the body of the quadruped, which would increase the force on the 'knee' joints, then the current in those servos must increase to match the increased force on the joint.
Does that match with your expectations and ideas?
Best wishes, Dave