Read Digital icon Read Digital — Read TTL digital input from an ARC I/O port; real-time red/green status for low (0V) or high (+3.3/5V), selectable board/port and read interval. Try it →
 
Auto Position (movement Panel) Robot Skill

Auto Position (Movement Panel)

by Synthiam Inc.

Animate servo poses into actions for walking, waving, standing or sitting; supports joystick movement and gait control for humanoids/hexapods.

Requires ARCx v6 (Updated 10/24/2026)
Tags: Movement Panels Servo
Compatible with: Compatible with Microsoft Windows 10 or 11 Windows Compatible with ARM Linux (Raspberry pi, etc) ARM Compatible with Linux Linux Compatible with MacOS MacOS

How to add the Auto Position (Movement Panel) robot skill

  1. Load the most recent release of ARCx on a compatible operating system (Get ARCx).
  2. Press the + Skills menu from the top menu bar in ARCx.
  3. Choose any of these category tabs, the robot skill appears in each of them: Movement Panels, Servo.
  4. Press the Auto Position (Movement Panel) icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Auto Position (Movement Panel) robot skill.


How to use the Auto Position (Movement Panel) robot skill

Auto Position (movement panel)

Animates a group of servos. Pose the robot, capture the pose as a frame, string frames together into a named action, and the robot walks, waves, stands up or sits down.

It is also a movement panel: five of its actions are reserved for Forward, Reverse, Left, Right and Stop, so a joystick, a Wiimote, a script's Movement.Forward() or the Autonomous AI skill can walk a hexapod or a humanoid exactly the way they would drive a wheeled robot.

Concepts

Term Meaning
Servo One joint. The skill drives a fixed list of servos; every frame holds a position for each of them.
Frame A named pose - one position per servo.
Action A named, ordered list of frames, each with its own transition speed. An action can repeat until stopped.
Transition Moving into a frame gradually, described by delay, steps and ramp.

Requirements

  • A connected EZB (or servo driver skill providing virtual ports).
  • The servos of the limb or body you want to animate.
  • Only one Movement Panel skill in a project.

Adding it to a project

  1. Connect the hardware.
  2. Add the skill (Movement Panels / servo category).
  3. Open the configuration and go to the Servos tab. Add every servo this panel will drive, with its port and limits.
  4. On the Frames tab, pose the robot, press Capture and name the pose.
  5. On the Actions tab, create an action and Append frames to it in order.
  6. To make the robot walk, put your gait frames into the reserved Forward, Left, Right, Reverse and Stop actions.

The window

Auto Position (movement Panel)  <a href='/Support/Skills/Skills-Overview' target='_top'>robot skill</a> window

  • Panic Stop - stops all auto-position movement immediately.
  • Frames list, with:
    • Transition To... - move into the selected frame using the delay, steps and ramp below;
    • Jump To... - snap straight to the frame with no transition.
  • Actions list, with Execute and Stop.
  • Delay ms, Steps and Ramp - the panel's own transition settings, used by the Transition button and as the defaults for the frame control command.
  • Release - stop moving and release every servo so the robot can be posed by hand.

Delay, steps and ramp

Together these decide how a transition looks:

Setting Meaning Effect
Delay ms Milliseconds between each step. Higher is slower. Default 50.
Steps Servo positions moved per step. Higher is faster and coarser. Default 2.
Ramp Steps over which the movement accelerates and decelerates. 0 moves at a constant rate. A few steps of ramp makes a motion look much less mechanical.

A slow, smooth move is a large delay with few steps; a snappy one is a small delay with more steps.

Configuration tabs

Frames

Frames configuration tab

Build poses. Pose the robot with the sliders (or by hand with Release), press Capture to store the current servo positions into the frame, Duplicate a frame as the basis for the next one, and preview with Stop always to hand.

With Realtime update on, moving a slider moves the real servo at once, so the robot follows along while you build the pose.

If a robot picture has been loaded, the servo controls are positioned over the picture where each joint actually is, which makes a 20 servo humanoid far easier to work with than a list. The positions are stored as percentages, so the layout survives the window being resized.

Actions

Actions configuration tab

Assemble frames into a sequence. Each row in an action is a frame plus the delay, steps and ramp used to transition into it, so timing is set per step of the animation. An action can be marked to repeat, which is what a walking gait needs.

The five movement actions - Forward, Reverse, Left, Right and Stop - cannot be deleted, because a movement request would then have nothing to run.

Settings

Settings configuration tab

Setting Meaning Default
On start Script that runs when an action begins. empty
On end Script that runs when the auto positioner has finished moving. empty
Frame variable Global variable set to the title of the frame being moved into. AutoPositionFrame
Action variable Global variable set to the title of the running action. AutoPositionAction
Is running variable Global variable set to true while the panel is moving. AutoPositionStatus

Servos

Servos configuration tab

The servo list: port, board, limits and inversion per joint. Every frame has one position per servo in this list, so adding or removing a servo here affects every frame.

Import/Export Utilities

Import export utilities configuration tab

Import an Auto Position configuration from an ARC (EZ-Builder) project file. Anything that could not be brought across exactly is recorded as an import note.

A JSON export from the plain Auto Position skill imports here too, since both skills share the same configuration format. An action named Forward, Reverse, Left, Right or Stop becomes that movement action, so a gait built in the plain skill is ready to walk with.

The Window tab sets the robot skill's window title, its size on the workspace and notes about what it does in this project.

Window configuration tab

Walking - how movement requests are handled

When anything in ARCx asks the robot to move:

  • Stop always restarts the Stop action, because the robot has to settle wherever it currently is.
  • The other four only restart when the direction actually changed. A repeating gait would otherwise be reset to its first frame on every movement request, and the robot would twitch on the spot instead of walking.
  • The movement speed sets the action's velocity. One gait cannot turn at two speeds, so when the left and right speeds differ the faster one wins.

Troubleshooting

Symptom Cause
The robot twitches instead of walking The gait frames are in the wrong action, or the action does not repeat.
Movement commands do nothing The reserved movement action has no frames.
The motion is jerky Fewer steps with a bigger delay, and add a little ramp.
A servo goes the wrong way Invert it on the Servos tab rather than re-capturing every frame.
A joint slams at the start of an action The first frame is far from where the robot is standing; add an intermediate frame, or transition into a neutral pose first.
"The action '...' cannot be deleted." It is one of the five movement actions.
An action never finishes It repeats. Use AutoPositionAction rather than the waiting form, or turn repeating off.
The servos buzz when idle Press Release.

See also

  • Movement Joystick, Wiimote - drive this panel by hand
  • Rgb Eyes Animator - the same action-by-name idea for LEDs
  • Inverse Kinematics / Kinematics Service - drive an arm by coordinates instead of poses

Control Commands for the Auto Position (Movement Panel) robot skill

There are Control Commands available for this robot skill which allows the skill to be controlled programmatically from scripts or other robot skills. These commands enable you to automate actions, respond to sensor inputs, and integrate the robot skill with other systems or custom interfaces. If you're new to the concept of Control Commands, we have a comprehensive manual available here that explains how to use them, provides examples to get you started and make the most of this powerful feature.

Control Command Manual

This robot skill has 9 control commands, listed below. Send them from a JavaScript or Python script, from Blockly, or from another robot skill.

The first value is always the window title, which is the name in the title bar of the robot skill on your workspace. It starts out as Auto Position (movement Panel), which is what every example below uses. If you rename the robot skill, or add a second copy of it to the project, use the title as it appears on that window instead.

ControlCommand() can be shortened to CC(), and both spellings work in JavaScript and in Python. The examples are JavaScript; Python is the same call, except that true and false are written True and False.

AutoPositionAction

Execute the action in the background and continue running the script.

Syntax

ControlCommand("Auto Position (movement Panel)", "AutoPositionAction", (String)action name)

Parameters

# Name Type What to pass
1 action name Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "AutoPositionAction", "action name");

AutoPositionActionWait

Execute the action and wait for it to complete before continuing the script. An action that repeats cannot be used, because it would never finish.

Syntax

ControlCommand("Auto Position (movement Panel)", "AutoPositionActionWait", (String)action name)

Parameters

# Name Type What to pass
1 action name Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "AutoPositionActionWait", "action name");

AutoPositionAddFrameToAction

Capture the current servo positions as a new frame and append it to the named action, creating the action if it does not exist.

Syntax

ControlCommand("Auto Position (movement Panel)", "AutoPositionAddFrameToAction", (String)action name, (Number)delay, (Number)steps)

Parameters

# Name Type What to pass
1 action name Text Your text, in quotes
2 delay Number A number, without quotes
3 steps Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "AutoPositionAddFrameToAction", "action name", 0, 0);

AutoPositionAddPauseToAction

Append a pause of the specified milliseconds to the named action.

Syntax

ControlCommand("Auto Position (movement Panel)", "AutoPositionAddPauseToAction", (Number)delay ms, (String)action name)

Parameters

# Name Type What to pass
1 delay ms Number A number, without quotes
2 action name Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "AutoPositionAddPauseToAction", 0, "action name");

AutoPositionDeleteActionAndAssociatedFrames

Delete the named action and the frames that only it used.

Syntax

ControlCommand("Auto Position (movement Panel)", "AutoPositionDeleteActionAndAssociatedFrames", (String)action name)

Parameters

# Name Type What to pass
1 action name Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "AutoPositionDeleteActionAndAssociatedFrames", "action name");

AutoPositionFrame

Transition into the frame. Delay, steps and ramp are optional and default to the panel's own settings.

Syntax

ControlCommand("Auto Position (movement Panel)", "AutoPositionFrame", (String)frame name, (Number)delay, (Number)steps, (Number)ramp steps)

Parameters

# Name Type What to pass
1 frame name Text Your text, in quotes
2 delay Number A number, without quotes
3 steps Number A number, without quotes
4 ramp steps Number A number, without quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "AutoPositionFrame", "frame name", 0, 0, 0);

AutoPositionFrameJump

Move to the frame immediately with no transition.

Syntax

ControlCommand("Auto Position (movement Panel)", "AutoPositionFrameJump", (String)frame name)

Parameters

# Name Type What to pass
1 frame name Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "AutoPositionFrameJump", "frame name");

AutoPositionStop

Stop the current action or frame transition.

Syntax

ControlCommand("Auto Position (movement Panel)", "AutoPositionStop")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "AutoPositionStop");

ReleaseServos

Stop moving and release every servo so the robot can be posed by hand.

Syntax

ControlCommand("Auto Position (movement Panel)", "ReleaseServos")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Auto Position (movement Panel)", "ReleaseServos");

This list is read out of the robot skill itself each time its package is uploaded, so it matches the published version (v6).


ARC Pro

Upgrade to ARC Pro

ARC Pro is your gateway to a community of like-minded robot enthusiasts and professionals, all united by a passion for advanced robot programming.

#5  

This robot skill has been updated to v5.

What has changed

Reformated the ACTION tab in the config to make it easier to understand. Updated the config by adding hoverable question marks on every option.