Watson Text To Speech icon Watson Text To Speech Human-like audio via IBM Watson Text-to-Speech: multi-language, selectable voices for accessibility and automated interactions. IBM Cloud required. Try it →
Asked
Resolved Resolved by Athena!

Servo Ramping Options In ARC

I use the Auto Position robot skill. What is the best way in ARC to ramp a hobby servo up to speed and ramp it down to a stop? I vaguely remember a servo ramping feature being added to ARC some time ago.

For clarity, I'm talking about a standard hobby servo connected through an EZ-B (or possibly directly to the PC-I haven't decided yet). Should ramping be handled by a Robot Skill, by EZ-B firmware/hardware settings, or by ARC scripting (JavaScript/Python)? If there is a built-in servo ramp feature, which robot skill or ARC control exposes it and where can I find the setting or documentation?



Related Hardware (view all EZB hardware)
EZ-B V4 by EZ-Robot
EZ-B v4/2 robot controller: dual Cortex ARM, Wi-Fi, audio/video, 24 servo/digital ports, I2C/UART, camera and Synthiam ARC control for custom robots
Wi-Fi / USB
Servos 24
Camera
Audio
UART 3
I2C
ADC 8
Digital 24

Related Robot Skills (view all robot skills)
Servo Speed by Synthiam
Adjust servo/PWM speed (0-20) between two positions to quickly experiment and tune motion; select board/port; settings aren't saved.
Create servo frames and actions to animate gaits and gestures with automatic motion planning, software ramping, movement panel, import/export

ARC Pro

Upgrade to ARC Pro

Stay at the forefront of robot programming innovation with ARC Pro, ensuring your robot is always equipped with the latest advancements.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Yes - ARC does have servo ramping, but the best approach depends on what kind of servo you mean and how you’re controlling it.

Short answer

For a standard hobby PWM servo on an EZ-B v4, the most practical built-in options are:

  • Auto Position use Steps, Delay, and optionally SW Ramping
  • Servo Speed skill useful for experimenting with speed behavior
  • JavaScript/Python best if you want custom acceleration/deceleration logic

For a basic hobby servo, the EZ-B/ARC is usually not doing a true hardware "acceleration profile" like a smart servo would. Instead, ARC typically moves the servo in small increments over time, which creates the ramp effect.


Best option for hobby servos

1) Auto Position

If you’re already using Auto Position, this is usually the best place to do it.

In Auto Position:

  • Steps controls how many increments are used between poses
  • Delay controls how fast those increments are sent
  • SW Ramping adds a soft start and soft stop behavior

You’ll find those settings inside the Action configuration for each transition.

How to access it

  1. Open the Auto Position skill
  2. Click Configuration
  3. Open Actions
  4. Select the transition step you want to edit
  5. Adjust:
    • Steps
    • Delay
    • SW Ramping

Practical starting point

Try something like:

  • Steps: 10
  • Delay: 20 ms
  • SW Ramping: 1000 or similar non-zero value

That gives you a smoother start and stop without making the motion too sluggish.


2) Servo Speed skill

There is also a Servo Speed skill in ARC:

This skill is handy if you want to set and experiment with a servo speed value for a specific port.

It’s not really a full "ramping profile editor," but it can help you tune how fast a servo moves.

Docs:


3) Scripted ramping

If you want full control over acceleration and deceleration, scripting is the most flexible approach.

You can ramp a servo by moving it in small degree steps with a short sleep() between each move.

Example JavaScript ramp

function rampServo(port, startPos, endPos, stepSize, delayMs) {
    let direction = startPos < endPos ? 1 : -1;
    let pos = startPos;

    Servo.setPosition(port, pos);

    while (pos !== endPos) {
        pos += stepSize * direction;

        if (direction > 0 && pos > endPos) pos = endPos;
        if (direction < 0 && pos < endPos) pos = endPos;

        Servo.setPosition(port, pos);
        sleep(delayMs);
    }
}

// Example usage:
rampServo(d0, 90, 150, 2, 20);
sleep(200);
rampServo(d0, 150, 90, 2, 20);

That gives you a controlled move up and a controlled move down.


What about "true" hardware ramping?

That usually applies to smart servos or servo controllers that support:

  • velocity
  • acceleration
  • profile moves

ARC supports those features when the hardware/driver exposes them.

For example, some smart servo systems may support:

  • setVelocity()
  • setAcceleration()

But for a standard hobby servo, those hardware ramp parameters generally don’t exist on the servo itself.


If you connect the hobby servo directly to the PC

If you mean directly to the PC without an EZ-B, then the answer depends on which hardware/adapter is actually driving the servo.

ARC itself doesn’t drive a hobby servo directly from the PC’s USB port unless you have an intermediate controller or supported hardware interface. In that case, the ramping behavior would still be determined by:

  • the robot skill / driver
  • or your script
  • or the external controller’s firmware

So for a plain hobby servo, the EZ-B plus ARC scripting or Auto Position is the normal route.


Recommendation

For your case, I’d recommend:

  • Auto Position if the servo is part of a pose/action sequence
  • JavaScript ramping if you want custom easing behavior
  • Servo Speed only if you want a quick tuning tool

Useful references

If you want, I can also give you:

  1. a JavaScript easing/ramp function that accelerates then decelerates smoothly, or
  2. the exact Auto Position settings I’d use for a walking/arm motion on hobby servos.

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.
#2  

I'm very sure the SW Ramping feature in the Auto Position skill is what I am remembering. This sounds like the perfect solution I'm looking for.

Presently I have a few scripts that operate some servos. I've tried scripting ramp effects on these servos but have struggled to get a good "ramp down" effect and the timing needs to be almost exact.

Moving their control to the Frames and Actions in the AP skill should give me softer start and stop of these hobby servos.

Thanks.

#4  

Thanks @Synthiam Support. I'll be giving this skill a try to add ramping to my servos. After reading through this skill's directions in the article you pointed to it all sounds a bit compacted by not really too bad. I'm looking forward to setting it all up and doing the needed adjusting to the settings to get the ramp effect I'm looking for. I'm going to have to change a few of my current scripts but that's doable.