Close
0%
0%

LibreServo

LibreServo is a project with the goal of easily converting any standard size servo into the smartest servo possible.

Similar projects worth following
In the past (more than 10 years ago), I bought more than 20 5990TG servomotors from Hitec to build my second biped robot. They were expensive, with good hardware but still as dumb as the cheapest servo.
Years have passed and I always had a thorn in my side. Why not instead of dumb servos with excellent mechanics modify them to have clever servos with excellent mechanics? And, since we are going to design something new... why not make it in such a way that they would be compatible with future servos that I may buy?
The idea is to design the electronics of the servomotor to turn any standard servo into the smartest one in the world.
Text extracted from: https://www.libreservo.com/en/articulo/libreservo-objectives

This project was born as a necessity of mine to build a biped robot with intelligent servos to be able to “feel the muscles” to walk more human like. In the past we had OpenServo, and I think this project inherits something from it, but OpenServo died many years ago and it didn't reach my expectations anyway (power, communications...), and the commercial alternatives are way too expensive (Dynamixel, Herkulex, Lynxmotion...).

DY-BOT
DY-BOT v2

It’s not hard to find servo motors with about 25-30 kg/cm of torque nowadays with quality ok, not great but ok for less than 20-25€ each although now everything has increase their price, and with that power from one of the well-known companies a smart servo costs more than 120-150€ easily, so we have room to play with. We can use cheap servo motors, just the hardware, with the coolest servo controller I can design for under 40€ everything.

5990TG disassembled
5990TG disassembled
Chinese servomotors I have bought
Chinese servomotors I have bought

My goal with LibreServo is to make any standard servo the “smartest” one in the market. The "gold standard" nowadays is Robotis-Dynamixel, LibreServo should be better than that, that’s my goal at least.
A few characteristics of LibreServo:

  • Compatible with standard servo motors (No need to change the bottom cover of them!)
  • Voltage: From 4.5V up to 18V (Recommended: 5-13V)
  • Communications: RS-485 half-duplex. Max Speed 9Mbps. Daisy chained. CRC-16
  • Amp: Up to 7A continuous (FDS8858CZ || VBA5311)
  • Micro-Controller: STM32F301k8 (cortex-M4@72MHz)
  • Position sensor: Magnetic encoder, 16 bits of resolution! 360 degrees (AEAT-8800). Using the servo motor potentiometer will be possible to lower the cost but will lost precision and some characteristics.
  • For the encoder I have designed 3D parts to substitute the potentiometer and used the same hole/space than the original.
  • LibreServo will generate their own curves (sine ramps, trapezoidal ramps, hermitian curves...)
  • Current sensor: +-15A ACS711
3D potentiometer-encoder adapter
3D potentiometer-encoder adapter

I have tried to use good hardware, better than the commercial ones, and then, in the software side, I will try to really shine against the competence, communication protocol, huge flexibility, different motor curves...

The project started 3 years ago, it has been progressing slowly because my lack of time but it will finish 100% sure even if it takes me 3 more years. I have been documenting my slow progress in the web/blog of LibreServo  (partially translated). I have finished the third version of LibreServo, with every component tested and selected. I have changed lots of components from the first designs and also the final form factor.

Old LibreServo v1
Old LibreServo v1
Old LibreServo v1
Old LibreServo v1
Newest LibreServo v2
Newest LibreServo v2
Newest LibreServo v2
Newest LibreServo v2
Just to understand better the final result
Just to understand better the final result

**There will be versions with only one connector on one side or the other.

The following video is from the second version of the PCB test.

Creative Commons License

  • 1 × STM32F301k8 Microcontroller
  • 1 × SIT3485EUA RS485
  • 1 × MPM3610 DC-DC
  • 1 × AP2112 Power Management ICs / Linear Voltage Regulators and LDOs @3V3
  • 2 × FAN3227/3 Mosfet Driver

View all 10 components

  • Motion curves

    Luis11/15/2021 at 22:49 0 comments

    A servo motor is a motor that maintains a given position, but how does it get to that position?

    A normal servomotor only receives the final position by PWM and always goes as fast as it can to that point. A smart servo motor, on the other hand, usually receives a command that tells it the end position and how fast it has to reach that position, at which point the smart servo motor starts to calculate the path to the end position. There are several ways to trace the route, those are the motion curves.

    LINEAR

    It is the most basic, the space is divided by the time you have and a constant velocity is calculated. The problem is that it proposes an almost infinite initial and final acceleration. This kick of acceleration causes great mechanical wear in motor and gears and strong vibrations by the accelerations.

    In the following picture it can be clearly seen, left axis corresponds to position and acceleration, while the right axis is velocity:

     Linear curve graph. Position, acceleration and velocity
    Linear curve graph. Position, acceleration and velocity

    TRAPEZOIDAL

    To reduce the acceleration kick, a profile with a constant maximum acceleration is created. This generates an initial acceleration ramp, a constant velocity section and a final deceleration section. This is the only motion curve with the above that manufacturers offer. The problem with it is that it still generates vibrations from abrupt changes in acceleration. It is smoother than the previous profile, but it still has vibrations.

    Trapezoidal curve graph. Position, acceleration and velocity
    Trapezoidal curve graph. Position, acceleration and velocity

    S-CURVE

    This motion curve is not offered by manufacturers, but is offered by LibreServo. This motion curve is intended to completely eliminate any acceleration kick. This motion curve is specific to make a clean acceleration transition without jumps as seen in the graphs.

    S-curve graph. Position, acceleration and velocity
    S-curve graph. Position, acceleration and velocity

    HERMITIC CURVE

    This motion curve is again unique to LibreServo. All other curves presuppose starting from a standstill and ending at a standstill, this is the only curve that allows to start and end the movement starting or ending at a given velocity. This is indispensable in situations where we want to end a movement or modify it in the middle of a run, for example, if we detect a possible fall, a possible error or some danger. In addition, it is perfect for passing through different marked points at different speeds, LibreServo will take care of executing the curve. This curve continues a movement, but not the acceleration it already had, so it can generate vibrations.

    In the following picture we see two different paths. In both we start from 0, go through 100, through -50 and back to zero, but in the first path the velocity at each point is always indicated to be zero, while in the second path at the intermediate points the velocity will be 4.

    Hermitic curve graph. Comparison of position and velocity
    Hermitic curve graph. Comparison of position and velocity

    Text extracted from: https://www.libreservo.com/en/articulo/motion-curves

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates