On Variable Changed icon On Variable Changed Run scripts automatically when specified ARC variables change; define variable-to-script pairs, monitor status, and trigger actions. Try it →
Asked

Auto Position Robot Skill Guidance

I have a question related to the Auto Position robot skill in ARC. I need a refresher on creating various arm movements, one servo at a time. I'm using the latest version of ARC and working on a robot project with two arms, each equipped with 5 EZ-Robot HDD servos (shoulder, arm, elbow, wrist, and gripper). These servos are connected to an SSC-32 controller, although I recently found out that it has been discontinued by LynxMotion.

Previously, I created test auto positions for each arm using EZ-Script. Now, I want to create more movements but face some challenges. I'm trying to move only one servo at a time to achieve the desired position for the entire arm. I recall something about using a "0" or "-1" for the servo position. Is that still correct? When creating a frame for each servo's position, should I set all other servos to 0 or -1 and save each position individually? Currently, I'm experiencing an issue where other servos seem to move slightly when I try to move just one servo on an arm. Additionally, I'm having trouble getting servos to consistently return to their proper positions.

I've already created a servo profile and a servo initialization script to assist with this process.

For Athena or DJ, I've included the test file I created: Cy_armsTesting.EZB



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)
ARC integration for SSC-32 servo controllers via PC COM or EZ-B/Arduino UART; maps V0-V31, configurable baud, enables servos in ARC skills.
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

Unleash your creativity with the power of easy robot programming using Synthiam ARC Pro

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Thanks - good details. Below is a focused refresher and troubleshooting plan for using Auto Position (Gait) to move one servo at a time and to get consistent return-to-home behavior. I can’t open your attached .EZB file here, so please paste your Auto Position frames or initialization script text (or export & paste the .autoposition contents) if you want me to inspect them.

Useful links

Quick answers to your direct questions

  • Use -1 to skip a servo in an Auto Position frame. -1 means "ignore this servo / leave it alone."
  • 0 is not the same as -1. A value of 0 generally means "set the servo to 0 degrees" (or release for some contexts). Do NOT set all other servos to 0 if you want them unchanged - use -1.
  • To move only one servo at a time in a frame: set the target servo to the desired angle and set every other servo to -1 in that frame. Save the frame. Then build an Action with those single-servo frames in sequence so the action moves one servo at a time.
  • If other servos still move slightly when you change one servo, that’s usually: (1) mechanical coupling or gravity load, (2) power supply drop causing twitching, (3) conflicting control from another skill/script, or (4) servo profile offsets / initialization differences. See troubleshooting below.

Step-by-step: build single-servo frames (recommended safe workflow)

  1. Project Open your Auto Position skill CONFIGURE FRAMES.
  2. Turn OFF Realtime Update while editing (safer for recording).
  3. Create a new frame. Name it for the servo and angle (e.g., "RightElbow_110").
  4. For the servo you want to move, enter the desired angle (e.g., 110). Make sure you are editing the correct port type (SSC-32 uses virtual ports v0..v31 - confirm the ports in the Auto Position map).
  5. For every other servo in that frame set the value to -1 (skip). This ensures only the chosen servo is commanded.
    • Tip: If many servos exist and GUI bulk-edit is awkward, create a frame by using Get & Set All Positions, then edit the one servo and then use an editor or export/import to change other values to -1. You can also copy a frame and then manually set the other servos to -1.
  6. Use Jump To to instantly verify the frame (Jump To does an immediate set - no ramps). If you prefer a smooth move for testing use Transition To with Steps/Delay.
  7. Save the frame.
  8. Repeat for all single-servo target poses.
  9. Create an Action and add the single-servo frames in the order you want them executed. When the Action runs, only the servos with non -1 values in each frame will be commanded.

Why other servos might move slightly - checklist & fixes

  • Mechanical coupling / gravity:
    • When shoulder/arm moves it shifts loads on lower joints, so the elbow/wrist may sag or shift slightly. Solution: support the limb while testing or add counterbalance.
  • Power supply sag:
    • Servos draw current when moving. Voltage dips can make adjacent servos twitch. Solution: use a battery/power supply that can supply sufficient current and common ground; add decoupling caps or a beefier battery.
  • Conflicting skills or scripts:
    • Make sure no other robot skill (or your servo initialization script) is simultaneously commanding the same virtual ports. If multiple skills use the same v-ports, they fight each other. Solution: stop/disable other skills while tuning Auto Position. Verify your init script only runs when desired.
  • Servo profile offsets:
    • Confirm servo profile offsets are correct and applied consistently. If offsets are wrong, the visual frame values and the commanded final positions will misalign. If you changed the skill title remember scripts referencing it must use the new title.
    • Re-check Configure servo Profile Configure (use Auto Position layout) to ensure offsets are small and sensible.
  • Auto Position transition interpolation:
    • When you run an Action, Auto Position computes intermediate steps so servos arrive simultaneously. If a frame includes some servos (non -1) and not others, only included servos get commands. If you see movement on excluded servos, it points to hardware or other-skill interference.
  • SSC-32 mapping / V-port confusion:
    • Verify in the SSC-32 skill configuration that channel mapping matches the ports used by Auto Position. SSC-32 creates virtual port constants v0..v31 - ensure Auto Position uses those v constants and not ezb d0 style ports.

Getting servos to reliably return to "home"

  • Best practice: create a dedicated "Home" frame with explicit positions for every servo (no -1s), save it, and use Jump To to force an instant known pose on startup or when needed.
  • Initialization script: run a script at project start that Jump To the Home frame or explicitly sets all servo positions. Example JavaScript initialization snippet you can use in ARC script (place in a startup script or Auto Position Start Script):
// Example startup/initialization script
// Set these to match your home frame and ports (v0..v4 are examples)
Servo.setPosition(v0, 90);   // shoulder
Servo.setPosition(v1, 90);   // arm
Servo.setPosition(v2, 90);   // elbow
Servo.setPosition(v3, 90);   // wrist
Servo.setPosition(v4, 10);   // gripper (open)
sleep(600); // wait 600 ms for servos to move
print("Init home positions set");

Notes:

  • Use virtual servo port constants (v0..v31) without quotes.
  • Use sleep(ms) built-in (milliseconds).
  • If your SSC-32 skill needs time to connect, put a short sleep before sending positions.

If you used EZ-Script before

  • EZ-Script is legacy. If you want, paste the EZ-Script init code here and I’ll convert it to JavaScript for you.

Extra tips for tidy Auto Position frames and actions

  • Realtime Update: disable while editing frames to avoid unexpected motion. Enable only when you want immediate feedback.
  • Jump To vs Transition To:
    • Jump To = instant set (use to verify exact positions).
    • Transition To = interpolated smooth move using the Steps and Delay values defined for that step.
  • Use a "Calibration/Home" frame that you always Jump To at the start of any sequence to be sure offsets are applied and you have a repeatable reference.
  • When making a gait where only one servo moves per step, make Steps small and Delay short so those small single-servo moves don’t take too long - tune Steps/Delay per step when adding to an action.

What I need from you to help more precisely

  1. Are your servos PWM hobby servos or smart serial servos (Dynamixel/LewanSoul/Feetech)? (smart servos can report position)
  2. Confirm the ports used by Auto Position for the left and right arms (list as v# for each joint). Example: Right arm = v0 shoulder, v1 arm, v2 elbow, v3 wrist, v4 gripper.
  3. Paste your servo initialization script (the exact text). I will check for conflicts/timing issues.
  4. Describe the symptom when "servos don’t return to proper positions" - are they off by a consistent offset? random? only after some moves? Does Jump To the Home frame recover them reliably?
  5. If possible, export and paste the Auto Position frames XML or the small .autoposition file text (you can export from the skill Import/Export menu) so I can inspect values and suggest edits.

If you want, I’ll:

  • Convert any EZ-Script initialization code you have into ARC JavaScript and optimize timing.
  • Review a pasted list of Auto Position frames and point out where -1 should be used, or how to re-organize frames/actions for one-at-a-time servo moves.
  • Provide a recommended startup sequence script to apply servo profile offsets and reliably return to Home.

Next step? Please answer items 1-4 above and paste the initialization script (or the exported auto-position frames). I’ll walk through the exact changes to your frames/actions and give a ready-to-copy startup script.


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  

Here is the InitServos script so far:

Servo(d20,80)#IR Servo Servo(d0,90)#Head U/D servo Servo(d1,110)#Head L/R Servo Servo(V4,90)#Rshoulder Servo(V5,80)#Rarm Servo(V6,76)#Relbow Servo(V7,68)#Rwrist Servo(V8,90)#Right gripper Servo(V11,90)#Lshoulder servo(V12,90)#Larm servo(V13,75)#Lelbow servo(V14,87)#Lwrist servo(V15,90)#Lgripper

sleep(1000) halt()

Id like to upload the servo profile and Auto Position files but they seem to be too large to send.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#3  

Thanks - good information. I converted your EZ-Script init into an ARC JavaScript startup script, and added troubleshooting tips and steps to make one-servo-at-a-time Auto Position frames behave reliably.

Important reminders before the script

  • I cannot open attachments here, so I couldn’t load your .EZB file. Please paste any script text or exported AutoPosition .autoposition content if you want me to inspect it.
  • Use -1 inside Auto Position frames to "skip" a servo (leave it unchanged). Do NOT use 0 for "skip" - 0 is a valid position.
  • In ARC JavaScript use the servo constants without quotes and lowercase: d0..d23 and v0..v99 (do not use "V4" with capital V).
  • Avoid EZ-Script going forward - JavaScript is preferred. I converted your EZ-Script init to JavaScript below.

Converted initialization (JavaScript)

  • Put this in a Project Start script or Auto Position Start Script. It sets explicit home positions for every servo (no -1) so you always have a repeatable known state. Adjust times if needed.
// InitServos.js - Run on project start (ARC JavaScript)
// NOTE: use lowercase port constants (d0, d1, v4, etc.). No quotes around port constants.

// Give robot skills (SSC-32 etc.) time to initialize
sleep(2000); // 2 seconds - increase if your SSC-32/skill needs more time
print("InitServos: starting");

// EZB / Head servos (digital ports)
Servo.setPosition(d20, 80);   // IR Servo
Servo.setPosition(d0,  90);   // Head U/D
Servo.setPosition(d1, 110);   // Head L/R

// Right arm (virtual ports from SSC-32)
// Replace v4..v8 with the exact v-ports your SSC-32 mapping uses if different
Servo.setPosition(v4,  90);   // R shoulder
Servo.setPosition(v5,  80);   // R arm
Servo.setPosition(v6,  76);   // R elbow
Servo.setPosition(v7,  68);   // R wrist
Servo.setPosition(v8,  90);   // R gripper

// Left arm (virtual ports)
Servo.setPosition(v11, 90);   // L shoulder
Servo.setPosition(v12, 90);   // L arm
Servo.setPosition(v13, 75);   // L elbow
Servo.setPosition(v14, 87);   // L wrist
Servo.setPosition(v15, 90);   // L gripper

// Allow servos to move to their commanded positions
sleep(1000); // 1 second - increase if needed by servo speed/load
print("InitServos: home positions set");

Why set every servo explicitly at startup?

  • It creates a repeatable "home" state (important when using offsets/servo profile).
  • Avoids partial-state ambiguity when frames contain -1 values (use -1 in Auto Position frames only).
  • Prevents surprises from servo profile offsets or earlier conflicting commands.

If you prefer using Auto Position to Jump-to-Home instead of scripting all ports:

Troubleshooting why other servos twitch when you move one

  1. Mechanical coupling / gravity

    • Moving shoulder changes load on elbow/wrist; they may sag or shift.
    • Test by supporting the limb manually while moving a single servo.
  2. Power / supply sag

    • Servo draw during a move can drop voltage and cause small twitches on other servos.
    • Use a beefy battery or power supply sized for all servos; check common ground wiring.
    • Add decoupling (large capacitor) near servo power distribution if needed.
  3. Conflicting commands from other skills/scripts

    • Ensure no other robot skill is commanding the same v-ports (e.g., another Auto Position instance, custom scripts, or an old startup script).
    • Disable other skills while tuning. In ARC, stop competing skills or remove their ControlCommand calls.
  4. Servo profile offsets or initialization timing

    • Make sure the servo Profile offsets are small and were saved/applied correctly.
    • If the SSC-32 skill needs time to connect, put sleep(2000-5000) before sending servo positions.
    • Always set home via a single startup action (script or Jump To frame) after skill connection.

How to build single-servo frames (recommended safe workflow)

  1. Open Auto Position CONFIGURE FRAMES.
  2. Turn OFF Realtime Update while you edit frames.
  3. Create one frame per single-servo move, name it (e.g., RElbow_110).
  4. For the target servo set the desired angle; set every other servo to -1 (skip).
  5. Save the frame.
  6. Repeat for each single-servo pose.
  7. Build an Action adding those single-servo frames in order.
  8. Test with Transition To (smooth) or Jump To (instant) to verify the exact behavior.

Using -1 vs 0

  • -1 = skip/ignore the servo (use this in Auto Position frames when you only want to command a subset).
  • 0 = command the servo to 0 degrees (not a skip).

Additional improvements / reliability

  • If servos don’t reliably reach positions, slow them by setting servo speeds in the SSC-32 skill or use Auto Position Steps/Delay to allow smoother transitions.
  • Consider adding a short sleep after each setPosition or grouping sets then sleeping to allow load-dependent movement.
  • If you want per-servo confirmation (only possible with smart/serial servos), use Servo.getPositionRealtime() or Servo.waitForPositionEquals() for exact feedback - but this requires serial-capable servos (Dynamixel, Lewan, etc.), not typical PWM HDD servos.

Follow-ups I need to help further

  1. Are your servos standard PWM HDD servos (most likely) or smart serial (Dynamixel/LewanSoul/etc.)?
  2. Confirm the exact v-port mapping for each joint (list like: Right shoulder = v4, Right arm = v5, etc.), especially if the SSC-32 mapping differs from what I used.
  3. Paste your existing Auto Position Home frame name or exported frames (if you can copy/paste text) and your servo Profile offsets if you want me to verify values.
  4. Tell me whether you want a script that Jump-To your Auto Position "Home" frame at startup (I’ll give the exact ControlCommand string) or prefer the explicit Servo.setPosition approach above.

If you paste your InitServos (your EZ-Script) - you already did - and confirm the v-port mapping I’ll:

  • Provide the exact copy/paste startup script (already above but I can adapt to any port changes).
  • Convert any EZ-Script control calls you used previously to JavaScript.
  • If you paste one or two sample AutoPosition frame lines or the exported .autoposition text, I’ll point out exactly where to put -1 and show a corrected Action sequence.

Would you like:

    1. a Jump-To-Home ControlCommand example for Auto Position (I can give the exact string if you tell me the Auto Position skill title and Home frame name), or
    1. a revised initialization script that sets speeds, positions, and waits per-arm for smoother startup?

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.
Author Avatar
PRO
Canada
Twitter YouTube GitHub
#5  

Good - here are simple, step-by-step ways to get your Auto Position and servo Profile data out of ARC so you can paste it into the forum. I can’t open attachments here, so please paste the file text or use the clipboard export options described below. If you paste large files, you can trim them to the relevant frames (Home + a few problem frames) or paste only the servo-port mapping and the frames you want reviewed.

  1. Export an Auto Position (.autoposition) file
  • Open your project in ARC.
  • Open the Auto Position skill window for the arm you want to share.
  • Click CONFIGURE (top-right of the skill window).
  • Go to the Import / Export tab.
  • Click Export (Save) and save the .autoposition file to your PC.

How to paste it here:

  • Open the saved .autoposition file with Notepad or Notepad++.
  • Select and copy the text (or just the sections you want reviewed - e.g., the Home frame and 3 problem frames).
  • Paste the text into your forum reply between triple backticks so it remains formatted, for example:
(paste .autoposition XML or JSON here)

If the file is huge, open it and copy only the <Frames> or the specific Action you want help with.

  1. Copy a single Auto Position frame directly (fast method)
  • CONFIGURE Frames in the Auto Position window.
  • Right-click the frame you want and choose "Copy positions to clipboard" (or use the frame export/copy option shown in the Frames UI).
  • Paste the clipboard text here between triple backticks.

This is the quickest way to share just the frame values without exporting the whole file.

  1. Export / Save servo Profile
  • In ARC main ribbon: Project servo Profile (or open the servo Profile control if you have it in project).
  • Choose Configure or Advanced depending on how you created the profile.
  • Look for Save / Export / Save Profile buttons (ARC gives an option to save locally or to cloud). Save the profile to a file on your PC.

How to paste it:

  • Open the saved profile file in Notepad and copy/paste the content here in triple backticks.
  • If there isn’t a file save button in your ARC version, open the servo Profile window and copy the list of servo offsets (you can take a screenshot if needed - but remember I can’t view images, so instead copy the text rows or export to text).
  1. If you can’t export the files
  • At Frames list: turn off Realtime Update, select the frame, then right-click to copy the frame or use "Get & Set All Positions" then paste values shown in the GUI (copy/paste rows manually).
  • For servo Profile: open Configure Advanced and copy the list of servo names/ports/offsets shown in the window into a text reply.
  1. If files are too large for the forum
  • Paste only the important parts: Home frame, the frames that move a single servo, and the servo profile offsets for those ports.
  • Or paste the first 200-500 lines and indicate you can share more if needed.
  • Alternatively use a paste host (GitHub Gist or Pastebin) and paste the link here - I’ll review the text you paste/link.
  1. What to include when you paste (minimum useful info)
  • The Auto Position skill title (exact name in ARC).
  • Home frame name.
  • Servo port mapping (example: Right shoulder = v4, Right arm = v5, Right elbow = v6, Right wrist = v7, Right gripper = v8).
  • The init/startup script you are using (you already pasted earlier - good).
  • The Home frame contents and 2-3 frames where you see the problem (paste them).
  1. Example of how to paste a single frame
  • Copy/paste like this:
Frame: Home
v4=90
v5=80
v6=76
v7=68
v8=90
v11=90
v12=90
v13=75
v14=87
v15=90
  1. After you paste I’ll:
  • Verify you used -1 for skipped servos where appropriate.
  • Check for port naming issues (uppercase V vs lowercase v; Auto Position uses v0..v99 constants without quotes).
  • Look for conflicting frames or missing explicit Home positions.
  • Suggest exact edits and give a ready-to-copy JavaScript ControlCommand or Servo.setPosition startup script (or JumpTo Home command) to ensure consistent return-to-home behavior.

Next step Which do you prefer to paste first - (A) the Home frame + 2 problem frames, or (B) the full .autoposition and servo profile text? Paste them here (or paste a link to a Gist/Pastebin), and I’ll review and give exact corrections.


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.
Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#6  

Based on your question, I'm not 100% certain that the auto-position robot skill is what you want. The auto-position robot skill, as Athena mentioned, plays back animation frames. As described in the manual, you link frames to actions. The Auto Position plays the frames back as an action. It's preset servo positions. But you still can do it, but take some thought to think if it's the right solution.

Either way, you can create frames that have -1 values, not to move the servos. Your project is using 0's instead of -1's.

The manual for Auto Position states, as Athena mentioned

-1: don't move the servo. Just keep the last position 0: release the servo from holding its position

So if you're still going to use auto-position frames and control commands to call those frames, put -1s in the positions of servos you don't want to move. Just right-click the number, type -1, and press Enter.

The other option is to use the inverse-kinematics robot skill, which lets you specify a coordinate in 3D space and have the end-effector (gripper) move there.

Control robot arms by X,Y,Z(cm); computes joint angles (inverse kinematics), shows forward kinematics, safety limits, Panic stop, camera & code support

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#7  

Good summary from DJ - he’s right: Auto Position plays prerecorded poses (frames) and you should use -1 to skip servos you don’t want commanded. Below are safe, practical ways to fix your existing frames (bulk or manual), how to post the files/text so I can review them, and a few ready-to-use commands/scripts to help you get to a reliable home/init behavior.

  1. Quick reminders (answers to the core confusion)
  • -1 in an Auto Position frame = SKIP this servo (do not send any command for it).
  • 0 in a frame = command the servo to 0 degrees (NOT a skip).
  • Use -1 when you want only one servo to be commanded in a frame.
  • Make a Home frame with explicit values for ALL servos (no -1s) and use Jump To that frame on startup to guarantee a repeatable state.
  1. How to fix the frames (choose one method)

A - GUI (safe, manual)

  • Open Auto Position CONFIGURE FRAMES.
  • Turn OFF Realtime Update while editing.
  • For each single-servo frame: right-click the frame, edit it, set the target servo to the desired angle and type -1 for every other servo. Hit Enter to save.
  • Save the frame and test with Jump To (instant) or Transition To (smooth).
    Notes: This is safest when you only have a few frames to fix.

B - Export / Edit / Reimport (bulk)

  • Auto Position CONFIGURE Import / Export Export (save .autoposition file).
  • Open the exported file in Notepad++ / VS Code. Search for the frame(s) you want to edit. The file contains each frame’s servo entries - edit the positions you want to skip to -1.
    • WARNING: only change zeros to -1 for frames you KNOW should be single-servo. Don’t globally replace "Position="0"" "Position="-1"" or you’ll break frames that legitimately use angle 0.
  • Save and Import the edited .autoposition back into ARC (Import). Test in ARC.
    If you paste a frame or a small portion of the exported text here, I’ll suggest exact edits and show the lines to change.

C - Copy a frame to clipboard, edit text, create new

  • Right-click a frame Copy positions to clipboard, paste into your reply OR into a text file. Manually edit values to -1 except your target servo, then in Auto Position create a New Frame and paste those values (or edit manually). This is good when you want to create corrected duplicates.
  1. Useful ControlCommand & JavaScript examples
  • Jump to a frame named "Home" in the Auto Position skill titled "Auto Position":
// Jump to  Auto Position frame "Home"
controlCommand("Auto Position", "AutoPositionFrameJump", "Home");
sleep(500); // wait 500 ms for servos to respond
print("Jumped to Home frame");
  • Call an action/frame smoothly (example usage):
// Smooth transition to a named frame (STAND) via Auto Position
controlCommand("Auto Position", "AutoPositionFrame", "STAND", 20, 5, 100);
// params: "STAND", delay(ms), steps, speed (use your action defaults)

(If your Auto Position skill window title is different than "Auto Position", change the first ControlCommand parameter to the exact skill title.)

  • Reliable startup (script option): Jump to Home at project start
// put in Project Start or  Auto Position Start Script
sleep(2000); // allow SSC-32 / robot skills to initialize
controlCommand("Auto Position", "AutoPositionFrameJump", "Home");
sleep(1000); // allow servos to settle
print("Startup: Home frame set");
  1. If you prefer keeping an initialization JS that sets all ports explicitly (no -1s):
// Example explicit startup positions for each servo (use correct v/d ports)
sleep(2000); // allow skills to initialize
Servo.setPosition(v4, 90);  // R shoulder
Servo.setPosition(v5, 80);  // R arm
Servo.setPosition(v6, 76);  // R elbow
Servo.setPosition(v7, 68);  // R wrist
Servo.setPosition(v8, 90);  // R gripper
// left arm...
Servo.setPosition(v11, 90);
Servo.setPosition(v12, 90);
Servo.setPosition(v13, 75);
Servo.setPosition(v14, 87);
Servo.setPosition(v15, 90);
sleep(1000);
print("InitServos: explicit home set");

(Reminder: use lowercase v## d## constants, unquoted, and adjust sleep times to your servo speeds and load.)

  1. How to post files/data here so I can review
  • Best: Export the .autoposition file, open it in Notepad, copy the small relevant section (Home + the 2-3 frames you have trouble with) and paste that text here. If the file is huge, paste only the frame blocks you want reviewed.
  • Alternatively right-click a frame Copy positions to clipboard paste that text here.
  • For servo Profile: open Project servo Profile Configure (or Advanced) copy the text rows (port, offset) and paste here. If you paste the Auto Position frame text, wrap it in triple backticks so it’s readable and I can point out exact edits.
  1. Troubleshooting why other servos twitch when you move one
  • Mechanical coupling / gravity - support the limb during testing.
  • Power supply sag - use a battery/supply sized for all servos; verify common ground. Add decoupling caps on the power rail if needed.
  • Conflicting control - stop other ARC skills or scripts that might be commanding the same virtual v-ports. Verify only Auto Position or your init script is issuing commands.
  • Servo profile offsets / misapplied initialization - ensure your servo profile offsets are correct and that the Home frame or startup script applies positions after the SSC-32 skill connects (add sleep before commands).
  1. Alternative approach (if you want higher-level control)
  • If you’d rather move the arm by coordinates (end-effector XYZ) instead of playing pose frames, consider the Inverse Kinematics robot skill:
    https://synthiam.com/Support/Skills/Servo/Inverse-Kinematics?id=21839
    It maps 3D coordinates to joint angles and may be better for precise arm movement rather than building lots of single-servo frames.
  1. Next step - what I need from you Pick one of these and paste here:
  • Option A (recommended): Paste the Home frame plus 2 problematic frames (copy from Auto Position or the exported .autoposition snippet) inside triple backticks so I can edit them and show you exactly what to change to -1.
  • Option B: Paste your servo-port mapping (example: Right shoulder = v4, Right arm = v5, etc.) and I’ll give a tailored startup script and ControlCommand string for Jump-To-Home.
  • Option C: If you prefer, paste the exported portion of your .autoposition file (relevant frames only). I’ll propose exact replacements and give re-import instructions.

I can then:

  • Show exact text edits to make (so you can paste/replace safely).
  • Provide the exact controlCommand/JS script to Jump-to-Home on startup.
  • Convert any remaining EZ-Script you have into ARC JavaScript if needed.

Which option do you want to do now? Paste the frames or port map and I’ll give direct, copy/paste changes.


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

Hope this can help.

Here is a piece of the Cybot3000_ArtTest.Auto Position
  
    V12
    90
    90
    0
    1
    Master
    false
    -1
    -1
    -1
  
  
    V5
    90
    90
    0
    1
    Master
    false
    -1
    -1
    -1
  
  
    V6
    90
    90
    0
    1
    Master
    false
    -1
    -1
    -1
  
  
    V7
    90
    90
    0
    1
    Master
    false
    -1
    -1
    -1
  
  
    V8
    90
    90
    0
    1
    Master
    false
    -1
    -1
    -1
  

Just wanted to clarify some of your previos info, To recap, In my Auto Position setup, I have two arms, each with 5 EZB HDD Servos each. To move just one servo, I would set position of a servo (real-time edit off?) while the other 9 servos are set with a '-1' position. Then click save. Do this for each and every servo one at a time, each time the other servos must always be set to '-1'. I basically want to end up with a bunch of fames, each one to contain only one servo movement which I can then create whole actions later.