Feeling Force Through A Servo

Using force sensors it’s possible to chain a series of servo motors together so they not only move as one, but can detect and simulate the force that another feels. Which means if you built up a tele-presence robot with a servo-driven robotic arm, using the local control arm you could feel exactly what it feels like on the other side!

[Wolf Tronix] saw our post last week on Series Elastic Actuators, and shared what he was working on in the comments. As one tipster pointed out — it deserves its own feature!

He’s been designing his own Real Time Motion Control System and Mini Servo board, or RTMCS2 for short and shown off a short video of it in action. By adding a force feedback sensor to each servo, not only do they copy each other, but if you put a load on one, you’ll feel it on the others!

And for a more thorough explanation, he shows it off in more detail here:

Black magic! Seriously though, [Wolf Tronix] works with animatronics and has some really cool projects. You should check out his site!

44 thoughts on “Feeling Force Through A Servo

  1. this is absolutely awesome and very useful, i am going to have to try one of these as haptic feedback for rc planes.
    i bet one could easily interface these with frsky controllers due to the modular wiring.

  2. For those wondering how it works:
    The virtual spring is F=kx, where k is the spring constant, and x is the displacement from center.

    Force from all the servo sensors are summed together and subtracted from the virtual spring force.

    Then the micro solves F=ma, for acceleration (a), where F is the total system force, m is the system mass.

    Acceleration is integrated to get velocity, and velocity is integrated to get position.

    The position is then converted to the standard 1-2ms servo pulse.

    The velocity term is also used to calculate a damping force, which also gets summed.

    Also, the third article link should point to the RTMCS2:
    It currently points to the first version RTMCS which is 10+ years old. ;)

    Thanks for posting,

    1. That’s a nice idea: have some form of load-cell attached (like the spring/magnet combo here) to a motor-controller motion rig and simply stop the rig from moving until a certain level of force is seen. As long as the motor/slide arrangement can handle the back-driven forces then you could program it to any amount of ‘virtual weight’.

  3. Yes! I’ve been waiting for this information for a little while now! This is pretty darn awesome, I love how you’ve implemented the force sensors.

    I do see that the rubber mounted servo has a little bit of hysteresis to it.

    The current in the motor itself is actually representative of torque, I wonder if this same effect could be achieved by measuring motor current and using that as your force signal. I’ll have to break out a servo and give it a try.

    1. Hysteresis is always a problem with force sensors. It can be mapped and removed in software, (hysteresis will be proportional to peak force).

      You can use the current thru the motor, but it will never be as sensitive as a force sensor at the end effector.

      Imagine back driving an unpowered servo, the force this takes would be the minimum you could sense with the motor current.

      Hope that helps,

      1. Oh I don’t have to imagine, I have a servo in my paw right now. :p

        I only brought it up because it could be a cheaper, if cruder, method of force sensing for certain applications.

        For doing it right though I suppose there really is no better way than to watch displacement on a spring element.

        I might just give the current feedback method a try though, who knows, it might be useful somewhere.

        Thanks for the reply, I like what you do and hope to see more!

  4. Impressive results! I think this would be a perfect application for a 3D printed servo mount. You could integrate a flexure into the structure and center it’s flex axis on the servo output shaft. (and integrate a mounting for the hall-sensor PCB)

    1. Yup… But I would need to make/buy a 3D printer. ;)

      One interesting thing I noticed when using the case as the sensor.

      If you crank the sensor gain up. The force sensor will pick up the torque from the rotational inertia of the servo motor changing directions.

      This can cause the system to self oscillate.

  5. Not only awesome as a project, but also uniformly the most positive I’ve seen HaD be for a while.

    Really, really cool! I’m going to nab some of these sensors next time I do a digikey run.

    Also, wolf: some of the video links on your site appear dead (bottom of this page: http://www.wolftronix.com/tail/index.html ). I have a friend who’s super in to tails, but the archive.org link is pretty slow: http://web.archive.org/web/20060228223941/http://www.wolftronix.com/videos/PA010005.MOV Any chance there’s a youtube version or something a bit faster I can send him?

        1. Answered further up in the comments – Ebay search “1/16 x 1/32 neodymium magnets”. I have some, they’re inexpensive and have come in handy for a multitude of purposes, and recommend having them around whether you intend to build strain gauges or not. My favorite use, epoxy them to one end of PCB standoffs, and you have boards that snap onto any ferrous surface. I never considered they could be used for DIY strain gauges too, until seeing [Wolf]’s project.

  6. Hi there, i am a bit confused when you put the hall sensor align in a fix position with the magnet (as i understand, force measurement can only occur whenever the resistance being affected by the magnetic flux change) and how the motor is able to move along the load by doing so. I would be very appreciated if you can enlighten me, thank you.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.