Asked — Edited

Dynamixel Max Position Setting Issue

I have a question about the robot skill Dynamixel?

I'm working with the Dynamixel XL-330-M077-T today. It functions on the xl-430-w250 mode/protocol. In the past, if I changed the Max position in the settings to 720, 1024 or 4096 I would affect the amount of resolution on the servo horn. If I put in anything less than 4096 in the window and save, it automatically defaults back to 4096. I.E. if I typed in 720, save and then reopen the settings it has reset to 4096. I can confirm that the resolution doesn't match 720 on the servo horn, its 4096, which only gives me a small degree of rotation on the horn.

I am running latest pro ver of ARC and v52 of the dynamixel plug in.


Related Hardware EZ-B v4
Related Control Dynamixel

ARC Pro

Upgrade to ARC Pro

Unleash your robot's full potential with the cutting-edge features and intuitive programming offered by Synthiam ARC Pro.

PRO
Canada
#1  

Hi fxrtst,

Thanks for reaching out with your Dynamixel max position question. Based on the details you provided and our current implementation, here’s what’s happening:

  1. Full Resolution Requirement in XL-430-W250 Mode:
    When using the XL-430-W250 protocol (which applies to your XL-330-M077-T), the servo’s internal resolution is fixed at 4096. Even if you enter a lower value (like 720 or 1024) for the max position in the skill settings, ARC automatically resets it to 4096. This isn’t an error with the plugin-it’s working as designed for this protocol mode.

  2. What This Means for Your servo Horn:
    The servo internally operates with 4096 discrete positions. Although you may expect that changing the max position value would alter the effective resolution (and thus the range of horn movement), the servo’s firmware uses 4096 as its full resolution in this mode. In other words, the small degree of rotation you’re observing is due to the full-scale resolution of the servo, and the skill’s parameter is simply ensuring it matches the actual servo capabilities.

  3. How to Achieve a Custom Range of Motion:
    If your goal is to have your servo horn cover only a portion of that range (for instance, effectively using a resolution of 720 or 1024 for your application), you can adjust the minimum and maximum position values in your robot skill’s configuration. This lets you map the full 4096 internally to a custom range of motion on the servo horn. In ARC, you can do this by:

    • Clicking the gear (configuration) icon on your Dynamixel robot skill.
    • Selecting the servo’s settings and adjusting the min and max positional sliders to your desired values.

    This does not change the servo’s inherent resolution but lets you control the output range for your application.

If you’d like to explore further customizations or need help with mapping your desired range via script, let me know! I’d be happy to provide an example in JavaScript or further guide you through the process.

Do you have any more questions or would you like more details on how to configure these settings?

For additional information, you might also review the Dynamixel robot skill documentation on our support site:
ARC Dynamixel Robot Skill.

Looking forward to your reply!


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
PRO
USA
#2  

Quote:

In ARC, you can do this by:

Clicking the gear (configuration) icon on your Dynamixel robot skill. Selecting the servo’s settings and adjusting the min and max positional sliders to your desired values. This does not change the servo’s inherent resolution but lets you control the output range for your application.

@Athena Are you sure this is correct? I do not have sliders in the Dynamixel robot skill.

Secondly why does the AX-12 have the ability to scale to any resolution upto 4096? I have MX-64T that I can use in the Dynamesh skill that allows me to adjust to any resolution from 720 upto 4096.

PRO
Canada
#3  

Hi fxrtst,

Thank you for your followup questions. Let’s break down the points you raised:

  1. No Sliders in the Dynamixel Robot Skill
    You’re correct - the Dynamixel robot skill (as of the latest versions) does not provide adjustable sliders for scaling the positional range. The instructions mentioning sliders can be a bit confusing because that approach works for other servo robot skills where ARC maps the full internal resolution to your desired range. In the Dynamixel skill, since the servo (especially when using the XL430W250 protocol) is designed to operate with a fixed internal resolution of 4096, the design does not include sliders to rescale the positions directly.

  2. Resolution Scaling Differences Between Models
    The AX12 family is a bit different. Some servo models (like the AX12) allow for resolution scaling because their firmware and control tables permit adjusting "end range" limits during configuration. This lets you effectively command a smaller or larger range by mapping your control values (up to 4096) to a portion of the motion.

    In contrast, for models such as the XL330/M077-T (and similarly the MX64T when used with the Dynamixel skill), the internal resolution remains fixed to 4096 in the XL430W250 mode. When using the Dynamesh skill with an MX64T, the skill incorporates additional mapping functions that let you define a custom control range-this is why you see the ability to set values from 720 up to 4096 in that context.

What Can You Do?

  • For Dynamixel Skill:
    Since the Dynamixel plugin is built to work with the servo’s inherent resolution (4096 in XL430W250 mode), you’ll need to work with that full resolution. If you wish to have a custom range (for example, mapping only a subset of 4096 for your application), you would need to add a mapping step in your control logic.

  • Example - Mapping in JavaScript:
    If you wish to create a custom mapping from a smaller range (say 0-720) to the full 0-4096 range for your commands, you can do this in a script. Here’s a simple JavaScript example using ARC’s scripting functions:

    // Assume inputValue ranges from 0 to 720 (your desired range)
    // Map it to 0 to 4096 for the servo command
    function mapRange(inputValue, inMin, inMax, outMin, outMax) {
        return ((inputValue - inMin) * (outMax - outMin) / (inMax - inMin)) + outMin;
    }
    
    var inputValue = 360; // Example input value (midpoint of 0-720)
    var mappedValue = mapRange(inputValue, 0, 720, 0, 4096);
    print("Mapped Value: " + mappedValue);
    
    // Use the mappedValue in your servo movement command here
    // For example:
    // servoMove(virtualServoID, mappedValue);
    

    This script takes your custom range and maps it correctly to the servo’s full resolution.

  • Future Considerations:
    The differences you’re noticing between the Dynamixel skill and the Dynamesh skill are due to how each skill was developed and the specific capabilities of the corresponding servo models. We’re always looking for ways to improve consistency across our skills, so your feedback is very valuable.

I hope this clears up the confusion. Do you have any additional questions or would you like more examples on mapping custom ranges in your scripts? Feel free to ask!


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
PRO
USA
#4  

These servos the in the (4096) resolution range i.e the XL430W250 protocol only move a maximum of 40 degrees on the servo horn. Pretty much unusable for motion on robotics. A plug in for scale mapping servos like these models of dynamixels would be useful. I've ordered the OpenRB-150 which uses Arduino IDE to program the servos using their Wizard 2.0. I might be able to adjust the scaling there? I Don't know.

PRO
Canada
#5  

Hi fxrtst,

I understand your frustration. The XL430W250 protocol, with its 4096 internal resolution, does indeed result in a very narrow ARC of motion (around 40 on the servo horn) due to its inherent gearing. This can make it challenging for applications that require a wider range of motion.

A Few Points to Consider:

  1. Internal servo Characteristics:
    For servos operating in the XL430W250 mode, 4096 discrete positions are used internally. Unfortunately, this doesn’t mean you can set a lower resolution value to "simulate" a wider motion range. The actual physical movement on the servo horn is determined by the servo’s design (including its gear ratio), and with this protocol, it limits you to that ~40 range.

  2. Scaling within ARC:
    Currently, the Dynamixel robot skill in ARC does not include built-in sliders or direct scaling for these models. We recognize that a scaling mapping plugin would be highly beneficial to adjust these values for robotics applications.
    As mentioned in earlier examples, one workaround is to handle this via scripting. For instance, you can use JavaScript to map a simpler control range (say 0-720) to stretch over the full 4096 resolution. Although this doesn’t change the physical motion, it allows your control input to be more intuitive for your project.

    Here’s a simple JavaScript mapping example for your reference:

    // Map a value from one range to another
    function mapRange(inputValue, inMin, inMax, outMin, outMax) {
      return ((inputValue - inMin) * (outMax - outMin) / (inMax - inMin)) + outMin;
    }
    
    // Example:
    // inputValue ranges from 0-720, we map it to 0-4096
    var inputValue = 360; // mid-range example
    var mappedValue = mapRange(inputValue, 0, 720, 0, 4096);
    print("Mapped Value: " + mappedValue);
    
    // Use the mappedValue in your servo motion command
    // e.g., servoMove(yourVirtualServoID, mappedValue);
    
  3. Alternate Hardware Options (e.g., OpenRB-150):
    Your idea about ordering the OpenRB-150 is a valid approach. Since it uses the Arduino IDE and offers the Wizard 2.0 for programming, you might have more flexibility in configuring the scaling or even directly altering the servo control parameters. This platform may allow you to adjust for the limited motion range more effectively than the current Dynamixel skill in ARC.

  4. Future Possibilities:
    Your feedback is highly valuable. A dedicated plugin that can scale mapping for servos like these Dynamixels would be extremely useful for many robotics projects. I’ll certainly pass along your thoughts so that our development team can consider it in future updates.


If you need any more help setting up a custom mapping script or want further clarification on working with different hardware options, please feel free to ask. We're here to help you get the most out of your project.

Do you have any additional questions or need further details on how to implement a custom control range via scripts?

Looking forward to your reply!


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
PRO
Synthiam
#6  

I use those servos and get full range. I’m wondering if they need to have their settings reset. As Athena mentioned, the range in the skill doesnt limit the actual movement range. It’s kind of confusing because the servos have programming. Their programming overrides the range and it’s saved in the eeprom.

Do you have any of the robotis software to control the servo directly from usb? You might need to find the values required to specify the range. Or, as I think, maybe it needs a factory reset.

PRO
Canada
#7  

Hi DJ_Sures,

Your observations are spot on-when working with these servos, the values stored in EEPROM (their internal programming) can override the adjusted range you set in ARC. Here's some guidance:

  1. EEPROM and Range Settings:
    The servos maintain their configuration (e.g., min/max range) in EEPROM. If they've been previously programmed, those values persist, regardless of what range the ARC Dynamixel skill displays or recommends. That’s why you see full-range movement on some units while others may behave differently.

  2. Factory Reset Possibility:
    A factory reset may indeed resolve the issue, returning the servo to its default EEPROM values. Many users have found that performing a reset helps if the settings were modified inadvertently. Check your servo’s manual for steps on performing a factory reset. In some cases, this involves sending a reset command via Robotis software or even a manual process (consult the servo’s documentation).

  3. Using Robotis Software Tools:
    Currently, ARC does not include a built-in USB-based tool to control the servo directly. However, Robotis provides the "Dynamixel Wizard 2.0" (or similar utilities) that connect via USB-to-serial adapters. This tool lets you read and write EEPROM values, adjust ranges, and perform factory resets. You can find more details and download links on the Robotis e-Manual pages, for example:
    Dynamixel Wizard 2.0

  4. Identifying the Correct Range Values:
    If you decide to adjust the EEPROM values, you’ll need to use the Robotis software to read the current settings and then, if necessary, write new values that match your desired operating parameters. This approach gives you the most flexibility when standard ARC configuration doesn’t meet your needs.

  5. Mapping in ARC (Alternative Workaround):
    If altering the EEPROM isn’t ideal for your workflow, a script-level remapping is another option (as discussed earlier). This means your control input could be scaled in ARC before sending the command-effectively letting you work within a custom range while the servo still operates on its internal full resolution.

Does this help clarify the situation? Do you need more details on using the Dynamixel Wizard or guidance on scripting a remapping routine in ARC?

Feel free to ask any further questions if you need more assistance with this setup or if you’d like to explore additional options!


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
PRO
USA
#8   — Edited

Related issue different servos fresh out of box:

Ok I have several new in box XL 430 W250 servos and here is what happened when I connected them:

I chose the XL430W250 mode/protocol which is set to 4096 by default. The servo rotates back and forth about 350 degrees total travel!? Then if I manually change the setting to 1024 and save the settings in the dynamixal plug in, the servo only moves about 90 degrees?! When I open the Dynamixel settings it has reset to 4096 (which we know happens). Here is the kicker, I have to re-enter 4096 to regain back the 350 degree rotation on the horn. It seems like there is some screwy stuff going on for sure. See video for clearer understanding.

Sorry for bad video...easier to watch in 4k