I’ve bought dozens of Hitec HSR 5995TG servos to build several kid-size humanoid robots(KHRs). It’s lucky that I’ve done it with that great digital servos. You can see the photos of my robots at devhr.com/hhitrl/PKHR.html But I also came across a problem. When I turn on the power of my KHRs, the servos move to the initialized position with their highest speed. So, you see, that is very bad. BTW, I use my own servo controller. My controller uses ATMEL ATmega16. I guess that the problem is I don’t know the position of the servos right after their power-on.
I also bought a RoboNova-I. The servos in this robot move very slowly when power on. So I think that the Hitec controller can must get the positions of the servos before it sends signals(pulse width) to them.
So please help me. I want to know how to get the feedback(positions of the servos) of the Hitec digital servos, especially HSR 5995TG. And also what the meaning is of the feedback:-) May be, all kinds of the Hitec digital servos use the same feedback method.
Your link appears broken when clicked on because of the period at the end of your sentence.
Those bipeds look exceptionally nice, especially the first one!
I’m afraid you’ve been subjected to a very cruel piece of bad advertisement.
It’s been proven and twice proven that the feedback of the HS5995TG servos does not work.
How can a large corporation manage to mass produce their best servo with such an obvious flaw?
Good question.
If you’re not willing to buy servos (currently, the only ones are the Robonova servos) that do have a functioning position feedback, there’s a few ways to adapt what you have:
An expensive but precise option would be to use quadre encoders on each servo.
There’s two more options that I know will work with analog servos, but
I’m not sure if they’ll work with digital (can someone chime in here?):
Placing a resistor on the internal pot and reading to voltage drop across it with an ADC.
andylippitt’s done this in the past with his analog servos and achieved a rough estimate of where the servos actually are.
The second option that I’m not sure will apply would be Open Servos: www.openservo.com
What was the methodology used to prove the feedback flaw? Placing a resistor on the internal pot and measuring the resistance sounds suspect in itself as a test.
Ahh, no, that’s just a method for getting somewhat reliable position and current consumption feedback from analog servos.
The 5995TG servos are supposed to be capable of bidirectional communication, wherin the servos would periodically relay the position that they get from their internal pots.
I’m not sure what methods were used to prove this, but if I remember correctly, even Hitec has admitted that it doesn’t work.
It’s really a piece of bad news for me. In fact, I’ve been planning to use 5995TG in my product. So, if I cannot get feedback from those servos, it’s really impossible for me to use them now.
I’v thought about the openservo project. But nobady can promise the quality of the modified servos. So, you see, as I will use them in my commercial product, I must make sure that the servos are stable.
What about HS 5955TG? Can we get feedback from 5955?
Here, I’ve got a new idea. But I do not know if it is feasible. Maybe, I can use Hitec digital servo programmer(e.g. HFP-10) to set the initializing position of the servos. So then, right after the power-on of the servos, as my controller already know the position of each servo, I can let them move to my specified positions slowly. But I never have a Hitec digital servo programmer. I don’t know whether the programmer has this kind of function.
Thanks very much for your help. I’m in a hurry to get to know some solution to my problem, or I can’t complete my product
I’m not sure what the importance of servo feedback would play in the real world. Software wise, you know where you sent the servo. If it isn’t at that position, then you have had some failure or underdesign issue which probably can’t be fixed on the fly.
It’s important for me. Or the servos will move to the specified position in their highest speed when I send the fisrt signals. Then, my robot will fall down
It has been stated by Hitec, that even though the 5995 says it does position feedback on the box, it does not work. I have tested it using the HMI Protocol, and can confirm this !
There is some speculation that Hitec may put the 8498 code into the 5995, but it is not clear if this would be an upgrade. Both servos use the AtMega8, though the interface varies slightly. We have been waiting months for Hitec to release the serial programming kit for the 8498.
The position feedback does work on the HSR8498 servo used on the RoboNova, as I describe here: web.ukonline.co.uk/r.ibbotson/files.htm.
Also the 8498 motors can be turned off until properly positioned. Even these servos do not yet do all they were advertised to do (current feedback, daisychain).
The HFP-10 does program the 5995. Therefore you might program the endpoints or use the failsafe, though I am not sure what advantage this would give over you sending initial positions from the controller.
The HFP10 uses a serial protocol to talk with the servo which is also described in the files above. This serial protocol is also capable of reading the position of the servo. The problem is that the serial mode is entered during a power on sequence, so you have to able to control the power to the servo.
As what you asked, the valuable thing to me was to move the servos to the specified positions very slowly when they power on. Now, when I send my first signals to my servos, they rotate very quickly! My robots always fall down when I turn them on.
If I have not made myself clear, please let me know
I was under the impression that digital servos did not move until you started sending them valid pwm frames?
It sounds like you just need a way to control power on the servo, a p-fet or other high side switch would do, and then to be able to set the signal line to the servo to either normal pwm frames or some hardware capable of bit banging the protocol deciphered by mr ribbotson.
Thinking about the way some servo controllers operate, you may need to ramp up power to the servo motors on startup to minimize abrupt movement. If you have no control over the the initial position sent to the servos from the controler on startup, this may be the only solution. If you do have control over the initial position signal, then you may need to “park” the robot prior to shutdown, then send the initial control signals for this parked position first, then slowly move from there.
I do exactly this with my biped, and it works very well.
As long as the biped’s servos are close to where they’ll be directed to, all that you’ll see is a very quick twitch, since they won’t have to travel far.
I recommend that this “parked” position be easy to manually prepare and fairly intuitive.
Also, there should be no initial strain on the servos, if possible, so the biped should be able to hold this postion whether or not power is on.
I park mine flat on it’s back with it’s limbs fully extended downwards, and it’s feet flat on the ground.
This seemed the most intuitive way to do it, to me.
Though I’m not really sure if this way is proper for my product, I’ll try it first I guess the key problem to this solution is to “park” my robot accurately in my specified position.