Page 1 of 3 123 LastLast
Results 1 to 10 of 24

Thread: Dynamixel servo- 'Deadzone'

  1. #1

    Dynamixel servo- 'Deadzone'

    Hi all,

    I wanted to know the reason for having a 'dead zone' in dynamixel servos when running in Joint mode. In RX-64, there is a 60 deg deadzone and in MX-64, I understand there is no deadzone but it cannot move beyond 360 deg i.e., multiple turns.

    Could someone explain to me why this is so? Is it anything to do with the mechanical configuration of the servos? Is there any way other than switching to Wheel mode?

    Thanks!

  2. #2
    Join Date
    Sep 2010
    Location
    ಠ_ಠ
    Posts
    2,317
    Images
    27
    Rep Power
    283

    Re: Dynamixel servo- 'Deadzone'

    The AX/RX/DX/EX series servos use a mechanically adjusted potentiometer as the position encoder. It has, at best, a valid range of only ~330 degrees with significant variability in error based on wear and manufacturing tolerances, and additional error is introduced by the ATmega88 ADC.

    The MX series servos use a non-contact magnetic encoder with a 12-bit internal ADC that provides position data to the STM32 in the servo over SPI/I2C, and the STM32 firmware performs the factory calibration to achieve a consistent and reliable 360 degree sensing. There is no multi-turn partly because the magnetic encoder provides absolute position instead of incremental position, so when it rotates from 200 degrees to 300 degrees in a single sample period, there is no way to tell if the servo horn traveled 100 degrees, 260 degrees, 460 degrees, 820 degrees, etc. The Dynamixel Pro have both the magnetic encoder and a quadrature encoder that enable a reasonably accurate reference position to be determined at servo power-on and use the quadrature encoder thereafter to determine the position of the horn far better than the 12-bit precision of the magnetic encoder.
    Please pardon the pedantry... and the profanity... and the convoluted speech pattern...
    "You have failed me, Brain!"
    [git][mech][hack]
    gives free advice only on public threads

  3. #3

    Re: Dynamixel servo- 'Deadzone'

    Thanks for the prompt reply.

    I have one more question related to this. This might be a very silly one:
    Why is a quadrature encoder not used in other dynamixels? Is it too expensive? or bulky?
    Also why is an incremental encoder not used?
    Last edited by vinjk; 05-20-2014 at 02:10 AM.

  4. #4
    Join Date
    Sep 2010
    Location
    ಠ_ಠ
    Posts
    2,317
    Images
    27
    Rep Power
    283

    Re: Dynamixel servo- 'Deadzone'

    Most robot joints do not use even the full 300 degrees available in the AX/RX/EX servos, and none but the wrist or neck might mechanically permit multiple turns. Adding in the quadrature encoder is a pointless expense for the vast majority of designs that utilize dynamixels. An absolute position encoder is used because accurate position control is far more important than speed control in a joint, and an incremental encoder can only determine relative motion.
    Please pardon the pedantry... and the profanity... and the convoluted speech pattern...
    "You have failed me, Brain!"
    [git][mech][hack]
    gives free advice only on public threads

  5. #5

    Re: Dynamixel servo- 'Deadzone'

    Thank you for your reply!

  6. #6
    Join Date
    Apr 2014
    Location
    State College, PA, US
    Posts
    104
    Rep Power
    26

    Re: Dynamixel servo- 'Deadzone'

    Quote Originally Posted by tician View Post
    Most robot joints do not use even the full 300 degrees available in the AX/RX/EX servos, and none but the wrist or neck might mechanically permit multiple turns. Adding in the quadrature encoder is a pointless expense for the vast majority of designs that utilize dynamixels. An absolute position encoder is used because accurate position control is far more important than speed control in a joint, and an incremental encoder can only determine relative motion.
    As I understand it, each servo contains a small microcontroller. If it isn't already filled with code and data, it should be a simple matter to add a routine to check the position at short enough intervals to keep track of the number of turns. Of course, the protocol would need to be extended to get access to that number, and to reset it.

    I agree that it wouldn't be worth it if there wasn't the excess capacity.
    -
    A little learning is a dangerous thing.

  7. #7
    Join Date
    Sep 2010
    Location
    ಠ_ಠ
    Posts
    2,317
    Images
    27
    Rep Power
    283

    Re: Dynamixel servo- 'Deadzone'

    No change to the protocol would be needed. Just need to add another address to the servo's control table like they did for the motor current measurement of the MX-64/106, or just use the 16-bit position address with a larger valid range ( [0,8192) for [0,720] vs [0,4096) for [0,360] ). Because MX series have a full 360 degrees of sensing, they could possibly have multi-turn capabilities with a firmware upgrade. The magnetic encoder used in the MX has a 2.61kHz (slow mode) and 10.42kHz (fast mode) sample rate, so it should be able to track the horn with at least 64 samples per revolution up to 2441/9766 RPM.

    One big issue is how, and how fast, the STM32 firmware's control algorithm grabs data from the sensor, and how it utilizes those data points internally (how many sequential points does it average together to reduce various sensor errors). A quadrature encoder enables much better tracking of the horn at high speed with only two additional digital pins.
    Another issue is that the plain dynamixel gear train is backdrivable, so its position cannot be recorded and reused at next power-on to know which turn it was on. The firmware would either require the user to manually update the position address at power-on before permitting torque to be enabled or it would require the user to move/reset the horn to a know position at power-on. That last one could be achieved by directing the user to rotate the joint through its entire range of motion to let the firmware determine all that itself. A continuous rotation (infinite turn) joint, like the wrist of a PR2 with its internal slip-ring for power and data to the gripper, would be easy enough implement since there are no mechanical limits that would require knowing what turn it was on at start-up.
    Please pardon the pedantry... and the profanity... and the convoluted speech pattern...
    "You have failed me, Brain!"
    [git][mech][hack]
    gives free advice only on public threads

  8. #8

    Re: Dynamixel servo- 'Deadzone'

    I don't think there is any problem with knowing whether you're turning 1 degree or 359 degrees -- the MX samples at >= 120 Hz, and the horn speed makes it take several seconds to complete one single revolution.
    Instead, my guess about the reason you can't easily go from 4095 to 1 the short way, is that they simply didn't implement a way to do that in the software.
    I kind-of like the idea that, if you set a goal position with the 4096 bit set, it goes "the short way." So, if I'm at 1, and I go to 8191, I really go the short way around to 4095. The bit would have to be captured on write, and stripped from the "actual goal position" registers, but that should be doable.

  9. #9

    Re: Dynamixel servo- 'Deadzone'

    Even I think it's just a matter updating the firmware. I was just curious as to why they've haven't done it. May be for humanoid robots mutli-turn is not really a requirement.

  10. #10
    Join Date
    Dec 2012
    Location
    Los Angeles, CA
    Posts
    860
    Images
    25
    Rep Power
    93

    Re: Dynamixel servo- 'Deadzone'

    Would only be useful on maybe the last servo. Anything in the chain and you'd be ripping cables out after one turn or so depending on slack....

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. 18 Dynamixel Ax-12A with ArbotiX/Arduino - How to connect the dynamixel?
    By Snuuq in forum Arbotix, Microcontrollers, Arduino
    Replies: 20
    Last Post: 02-14-2014, 12:29 PM
  2. Does Dynamixel servo AX-12 or RX-64 have motor lock mode?
    By bonmot in forum Humanoids, Walkers & Crawlers
    Replies: 6
    Last Post: 03-25-2011, 11:56 PM
  3. Interesting Hack servo v3.00 - Get full PID position and speed control from your hobby servo
    By Antonb in forum Mechanics / Construction
    Replies: 20
    Last Post: 06-27-2010, 11:24 AM
  4. Replies: 11
    Last Post: 02-26-2010, 11:57 AM
  5. Replies: 5
    Last Post: 09-23-2009, 11:46 AM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •