3-In-1 IMU icon 3-In-1 IMU EZ-Robot 3-in-1 IMU driver: accelerometer, gyroscope and compass support for motion sensing, orientation tracking and heading/navigation. 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

ARC Pro will give you immediate updates and new features needed to unleash your robot's potential!

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.

📚 This thread has been preserved as a helpful resource!

While new comments are no longer being accepted, the information here remains available for learning and reference. Check the most recent comment for additional details.