Custom Movement Panel V2 icon Custom Movement Panel V2 Custom Movement V2 panel for ARC: scripts for F/R/L, Reverse, roll left/right, up/down with speed mapping to PWM for drones, mecanum & custom drives 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

Take control of your robot's destiny by subscribing to Synthiam ARC Pro, and watch it evolve into a versatile and responsive machine.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#9  

Perfect - this is exactly the kind of snippet I need. Yes: your plan is correct. Below I’ll confirm the exact steps, show safe ways to create one-servo-per-frame frames, give examples (including how the frame text should look), explain common pitfalls, and show the reliable startup / Jump-To-Home commands you should use.

Quick answers (short)

  • Use -1 to skip a servo in a frame (leave it alone). Do NOT use 0 to "skip."
  • Turn Realtime Update OFF while editing frames so the robot doesn’t move unexpectedly.
  • Create a Home frame that contains explicit values for every servo (no -1s) and Jump To it at startup.
  • If other servos still move when you move one, check mechanical coupling, power supply, or other skills/scripts commanding the same v-ports.

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

  1. Open the Auto Position skill CONFIGURE FRAMES.
  2. Turn OFF Realtime Update while you edit (safe).
  3. Create or copy a base frame (use your current Home or a neutral pose). Name it e.g., RightElbow_110.
  4. For the servo you want to move, set the desired angle (e.g., v6 = 110).
  5. For every other servo in that frame set the value to -1 (skip). This ensures only the chosen servo is commanded.
  6. Save the frame. Test with Jump To (instant) to confirm exactly the commanded servo moves where you expect.
  7. Repeat for each servo you want a single-servo frame for. Later, build Actions from those single-servo frames.

Example - if your robot uses v4..v8 for right arm and v11..v15 for left arm:

  • Home frame (explicit values for all servos; no -1s)
    • v4=90 v5=80 v6=76 v7=68 v8=90 v11=90 v12=90 v13=75 v14=87 v15=90
  • Single-servo frame for right elbow only:
    • v4=-1 v5=-1 v6=110 v7=-1 v8=-1 v11=-1 v12=-1 v13=-1 v14=-1 v15=-1

You posted this snippet: 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

Notes about that snippet:

  • It looks like exported frame lines. That’s fine - when you edit the exported text you can change the servo positions to -1 for the ports you want to skip.
  • Be careful: some exports show "V12" with uppercase V. In ARC scripts and when using servo constants, use lowercase v12 (unquoted) in JavaScript: Servo.setPosition(v12, 90). The Auto Position import/export will accept its own format but keep port mapping consistent. If you manually edit exported text, preserve the file structure - only change the position numbers where needed.

Bulk-editing frames (export edit import) - safe tips

  • Export the .autoposition file (CONFIGURE Import/Export Export).
  • Open with Notepad++ or Visual Studio Code. Locate the frame blocks you want to change. Change values for the non-moving servos to -1.
  • DO NOT perform a global replace from 0 -1 (that will break frames which legitimately use 0 degrees). Replace individually or with careful find/replace for specific port lines.
  • Save and re-import the edited .autoposition file into ARC (Import).

Testing and startup consistency

  • Create a Home frame with explicit values for all servos (no -1s). Name it "Home" or similar.
  • On project start, Jump To the Home frame so every servo is known and consistent. Example JavaScript startup snippet (put in Project Start script or the Auto Position Start Script):
// Jump to Home frame on startup -  Auto Position skill title must match exactly
sleep(2000); // allow SSC-32 / skill to initialize
controlCommand("Auto Position", "AutoPositionFrameJump", "Home");
sleep(1000); // let servos settle
print("Startup: Home frame set");

(If your Auto Position skill is named something other than "Auto Position", use the exact skill window title for the first parameter.)

If you prefer explicit servo commands at startup instead of Jump To, use Servo.setPosition calls (lowercase v/d constants):

// Explicit set of every servo (example ports - change to match your mapping)
sleep(2000);
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
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
sleep(1000);
print("InitServos: explicit home set");

Why other servos might still move slightly when you move one

  • Mechanical coupling/gravity: shoulder motion can change loads on elbow/wrist - they can sag or shift. Support the limb during testing or add counterbalance.
  • Power supply sag: moving one servo briefly draws current and can cause twitching elsewhere. Use a battery/power supply that can deliver enough current; ensure common ground.
  • Conflicting commands: make sure no other skill or script is also commanding the same v-ports. Stop other Auto Position instances or scripts while tuning.
  • Offsets/servo profile: verify servo profile offsets are correct and applied. Off-by-offsets cause visible misplacement after frames run.

Naming convention suggestion (helps keep frames organized)

  • Use names like R_Shoulder_inc / R_Shoulder_dec or R_Elbow_110 so you can easily build Actions from ordered single-servo frames.

If you want me to edit frames for you

  • Paste the frame text (exported .autoposition segment or "copy positions to clipboard" for the frame) for Home + 2-3 sample single-servo frames here in your next reply (wrap in triple backticks so it’s readable). I will mark exactly which numbers to change to -1 and show the corrected lines to paste back into the file (or re-create the frames in the GUI).

Follow-ups I need from you

  1. Confirm your exact virtual port mapping (example: Right shoulder = v4, Right arm = v5, Right elbow = v6, Right wrist = v7, Right gripper = v8; Left shoulder = v11, etc.).
  2. Do you want me to edit a few frame blocks here? Paste the frames (Home + 2 problem frames) between triple backticks.
  3. Confirm servos are HDD PWM servos (you mentioned EZ-Robot HDD servos) - that affects feedback options.

Useful links (refresher)

Next step - which do you want?

    1. Paste Home + 2 sample frames and I’ll edit them to the one-servo-per-frame format (I’ll show exact text changes).
    1. Tell me the v-port mapping and I’ll produce a ready-to-copy startup script and a recommended set of frame names and conventions.

Which option do you want?


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

I also started looking into the  Inverse Kinematic Skill.

Figured out how to configure one arm, but I have two arms. Also, the base of my robots arms are actually bolted upside down, acting as a shoulder of the arm. Is there a video somewhere on how to actually do this whole set up and how actually control the arm? Id love to see how to use the camera to help pick up objects.

I am almost at the point of creating separate servo scripts for each and every single servo movement. The AutoPosition skill has not worked out all that well for me, even after following previous instructions.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#11  

Great - you’re on the right track exploring Inverse Kinematics (IK). IK is usually a better approach than trying to manually build dozens of single-servo frames when you want the arm end-effector (gripper) to move to a point in space. Below I’ll give an organized plan: how to set up two IK arms in ARC, handle upside-down / inverted shoulder mounting, how to test and calibrate safely, and a practical camera-to-pickup workflow with example JavaScript snippets you can paste into ARC. I’ll also link the Synthiam docs and show what I’ll need from you to help further.

Useful links

Plan overview

  1. Create two separate IK skill instances (one per arm) and give them clear titles (e.g., IK_RightArm, IK_LeftArm).
  2. Configure each IK instance as a kinematic chain: map joints v-ports, define joint axes/limits, link lengths (DH or other parameters), and set joint zero/offsets.
  3. Handle the upside-down (inverted) shoulder by adjusting joint orientation/zero offsets or flipping the sign of joint rotation in the IK config (or via servo profile offsets).
  4. Calibrate/test each joint with small joint-only moves first (MoveJoint or MoveTo JointAngles).
  5. Create a repeatable Home position (either via an Auto Position "Home" frame with explicit positions or via an initialization JS that Servo.setPosition()s all joints). Jump to this Home on startup.
  6. Integrate camera detection (blob / marker / object detection) to get target position in camera coordinates map to robot coordinates (calibration) call IK MoveTo for the gripper pose close gripper lift.

Detailed steps

A - Add/configure two IK skills

  • Project Add robot skill locate Inverse Kinematics and add it twice. Rename them:
    • IK_RightArm
    • IK_LeftArm
  • Open the kebab menu (three lines) of each IK skill Configure. Use the IK UI to:
    • Add the number of joints your physical arm has (5 for you).
    • Assign each joint to the correct virtual servo port (v# created by SSC-32 skill). Use lowercase v4, v5, etc. (no quotes) in scripts.
    • Enter link lengths and joint axes. If the IK UI asks for joint orientation or rotation direction, set them to match how the servos are mounted.
    • Set min/max limits for each joint (safe testing).
    • Enter servo offsets / zero positions so that when joint angle = 0, the arm is actually at the physical zero you expect.

B - Upside-down (inverted) shoulder base Because your shoulder is bolted upside-down, you must tell the IK system that the base or the first joint is rotated/inverted. Options:

  • Preferred (in IK config): In the IK skill config, flip the sign for the first joint’s rotation direction or add a 180 offset to the joint zero. Many IK UIs allow you to set joint orientation or a joint offset - use that.
  • Alternative (servo profile): In Project servo Profile configure a fine-tune offset for that servo so the commanded angle maps to the actual physical angle. That is less ideal because the logical IK joint orientation is better to change inside IK config.
  • Test: after changing sign/offset, use MoveJoint to rotate the shoulder +10/-10 to verify directions match numeric changes.

C - Testing joints safely (first tests)

  • Turn OFF Realtime Update in Auto Position (if using frames) and disable other skills that could command the same virtual ports.
  • In IK skill UI you can test single-joint moves (small increments). Test each joint one at a time:
    • Small movement (5) then back to zero.
    • Watch for mechanical binding and power sag.
  • Use the Project Start/Init script to wait until SSC-32 is connected, then set Home.

D - Home/init and reliable startup Two ways to guarantee a known starting pose:

  1. Auto Position Home frame: create a Home frame with explicit positions for every servo (no -1s). On startup call Jump-To-Home.
  2. JS init script: call Servo.setPosition() for every v-port in the startup script after a sleep(2000) to let SSC-32 connect.

Sample startup using Auto Position Jump (replace skill title and frame name):

// Startup: Jump to Home  Auto Position frame
sleep(2000); // allow SSC-32/IK skills to initialize
controlCommand("Auto Position","AutoPositionFrameJump","Home"); // use exact  Auto Position skill title
sleep(1000);
print("Startup: Home frame set");

Sample explicit startup with Servo.setPosition (use the v-ports for your robot):

// Explicit startup - set all servos to known positions
sleep(2000);
Servo.setPosition(v4,90);  // right shoulder example
Servo.setPosition(v5,80);  // right arm
Servo.setPosition(v6,76);  // right elbow
Servo.setPosition(v7,68);  // right wrist
Servo.setPosition(v8,90);  // right gripper
Servo.setPosition(v11,90); // left shoulder
// ... set remaining ports ...
sleep(1000);
print("InitServos: explicit home set");

E - Typical IK commands / calling from script Check the IK skill’s kebab menu or manual for exact ControlCommand names for your ARC version. A typical pattern is:

  • controlCommand("IK_RightArm","MoveTo", x, y, z, rx, ry, rz) - move end effector to position and orientation
  • controlCommand("IK_RightArm","MoveJoint", jointIndex, angle) - move one joint
  • controlCommand("IK_RightArm","Stop") etc.

A sandbox JavaScript pseudo-workflow:

// pseudo-code: move gripper to a position (replace with the IK skill's exact command)
let x = 20;   // cm in robot coordinates
let y = 10;
let z = -5;
controlCommand("IK_RightArm", "MoveTo", x, y, z, 0, 0, 0);
sleep(600); // allow movement (tune for speed / distance)
print("IK move completed");

Note: confirm the exact parameter order from the IK skill help/kebab menu.

F - Camera-based object pickup: overall approach

  1. Object detection:
    • Use ARC’s Vision controls: Color Blob or Object/Contour detector, or a marker detector (ArUco/AprilTag if available) to get the pixel (u,v) center of object or the pose of a marker.
    • For robust pose, use fiducial markers on objects (AprilTag/ArUco) or known-size objects where measured bounding box size can estimate distance.
  2. Camera Robot coordinate mapping:
    • If you have depth camera or stereo camera, you can get X,Y,Z more directly.
    • For single webcam: you must calibrate a mapping from pixel coords + estimated depth to robot coordinates. For example:
      • Put a calibration board with known coordinates, capture pixel->robot coordinate pairs, compute a transform (homography or simple linear mapping) to estimate X,Y from u,v and a known Z (table height).
      • OR: place the object on a table at a known height and use a known camera mounting model to map image coordinates to table coordinates.
  3. Pick sequence (simplified):
    • Detect object compute target (x,y,z, orientation).
    • controlCommand("IK_RightArm","MoveTo", approachX, approachY, approachZ, rx,ry,rz)
    • close gripper (Servo.setPosition on gripper v-port)
    • controlCommand("IK_RightArm","MoveTo", liftX, liftY, liftZ, rx,ry,rz)
  4. Keep safety: use slow IK speeds for first tests, and physically support arms during testing.

G - Example camera integration pseudo-code This is high-level pseudo-code; you must adapt it to the vision skill events and exact IK ControlCommand parameters for your ARC version.

// PSEUDO: camera  detect  pick
function pickObjectFromCamera() {
  // 1) Detect object using Vision skill (you need to read detected pixel center)
  //    Many vision skills update variables or raise events - use those outputs (or Net.hTTPGet if using a cloud detector)
  let px = getVar("$DetectedX"); // pixel X from vision skill (example)
  let py = getVar("$DetectedY"); // pixel Y

  // 2) Map pixel to robot coords (simple calibrated mapping)
  //    Replace with your calibrated mapping function
  let robotPos = pixelToRobot(px, py, /*estimated Z/table height*/ 0);

  // 3) Approach point slightly above object
  controlCommand("IK_RightArm", "MoveTo", robotPos.x, robotPos.y, robotPos.z + 5, 0, 0, 0);
  sleep(800);

  // 4) Move down to grasp
  controlCommand("IK_RightArm", "MoveTo", robotPos.x, robotPos.y, robotPos.z, 0, 0, 0);
  sleep(600);

  // 5) Close gripper
  Servo.setPosition(v8, 60); // adjust for your gripper port & position
  sleep(400);

  // 6) Lift object
  controlCommand("IK_RightArm", "MoveTo", robotPos.x, robotPos.y, robotPos.z + 40, 0, 0, 0);
  sleep(800);

  print("Pick sequence completed");
}

H - Calibration advice (camera robot mapping)

  • Use a printable calibration board or place one object at known X,Y positions on the table; record pixel center and known X,Y. Use several points to compute a 2D transform (affine/homography) that maps pixel positions into robot XY coordinates at a fixed Z.
  • Keep camera mounted rigidly with known height and angle.
  • If you need depth, use a depth camera (Intel Realsense etc.) or a stereo pair; that dramatically simplifies the mapping.

Common pitfalls and fixes

  • Multiple skills commanding same v-ports: stop other skills while testing. Use Project Start script to initialize once.
  • Power sag: ensure battery/supply can handle current when multiple servos move.
  • Mechanical limits: set safe joint limits in IK to avoid hitting physical stops.
  • Inverted joints: change joint sign or add 180 offsets in IK config (do it at the IK level if possible).
  • Noisy detection: use fiducial markers when beginning; they give consistent pose.

What I need from you to give exact copy/paste help

  1. Confirm the servo port mapping for each joint of both arms (list like: Right shoulder = v4; Right arm = v5; Right elbow = v6; Right wrist = v7; Right gripper = v8; Left shoulder = v11; etc.).
  2. Tell me the exact names you gave the two IK skill instances (skill window titles). I’ll use those in script examples (controlCommand first parameter must match the skill title exactly).
  3. Confirm servos are HDD/PWM (you said EZ-Robot HDD servos) - that means no realtime feedback; movements are open-loop and you must rely on calibration and repeatable positions.
  4. Tell me how the shoulder is upside-down (is the servo physically rotated 180 relative to the expected mounting?), and whether you prefer I show how to offset in IK or handle it in servo profile.
  5. If you’ve already configured an IK instance, paste a screenshot of the joint list as text (I can’t view images), or paste the IK joint mapping (joint0->v4, joint1->v5, etc.) or paste relevant exported IK config text if available.

Next recommended steps for you now

  • If you want quick progress: configure both IK instances mapping the v-ports and set simple link lengths. Test each with MoveJoint so you ensure joint directions and limits are correct. Share the port map here and I’ll produce a startup script and example ControlCommand calls tailored to your skill names.
  • If you want camera pickup: plan to use markers or do a calibration mapping table pixel to robot XY. I can give a ready-to-run calibration JS script if you provide sample (pixel, robot X,Y) pairs after you collect them.

Would you like me to:

  1. Give a ready-to-use Project Start script and a set of MoveJoint / MoveTo examples for your exact v-port mapping? (If yes: paste your mapping and IK skill titles.)
  2. Walk through a simple camera calibration routine (I’ll provide step-by-step and a JS helper function to compute the mapping)?
  3. Help convert a single EZ-Script pickup routine you have into JavaScript and tie it into IK?

Pick A, B, or C (or multiple), paste your v-port mapping and IK skill titles, and I’ll produce the exact copy/paste scripts and the step-by-step checks to finish setup and safe testing.


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

This question was asked about the Auto Position. Athena, the AI has already identified this question as regarding to Auto Position. Therefore, asking a question about another robot skill will provide incorrect information. You must create a new thread to start a new context window for the AI - having new threads not only makes the AI understand the context, it also keeps conversations organized in topics for others to follow and search. Having more conversation threads is better than messy threads. (How To Use Athena AI)

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#13  

Thanks - Synthiam_Support is correct: keep this thread focused on Auto Position. If you want help with Inverse Kinematics (IK), please start a new thread titled something like "IK setup - two arms & inverted shoulder" and I’ll move into that topic there. For now I’ll stay on Auto Position and finish helping you get reliable one-servo-per-frame behavior.

Short answer (confirming your plan)

  • Yes - your plan is correct: create a Home frame with explicit values for every servo (no -1s), then create one frame per servo where that servo has the desired angle and every other servo is set to -1.
  • Turn Realtime Update OFF while editing frames to avoid unexpected movement.
  • Do NOT use 0 to "skip" - 0 is a real commanded angle. Use -1 to skip.

Step-by-step: safe workflow to create one-servo frames

  1. Create a Home (neutral) frame:
    • Open Auto Position Configure Frames.
    • Create a frame named "Home" (or similar).
    • Fill in explicit values for every servo (no -1s). Save it.
  2. Turn OFF Realtime Update while editing frames (prevents sudden moves).
  3. Create single-servo frames:
    • Duplicate the Home frame (so all ports are present).
    • Rename it e.g., "R_Elbow_110".
    • In that frame: set the target servo (e.g., right elbow) to the desired angle (110). For every other servo set value to -1.
    • Save the frame.
  4. Test the single-servo frame:
    • Use Jump To (instant) to confirm only that servo moves.
    • If it moves other servos, check mechanical coupling, power, or other skills commanding the same v-ports.
  5. Repeat for every servo you want an isolated frame for.
  6. Build Actions from those frames once you’ve verified them.

Example (how to post a frame here)

  • Best: right-click frame "Copy positions to clipboard" then paste here in your reply wrapped in triple backticks. Example paste format I can use:
Frame: RightElbow_110
v4 = -1
v5 = -1
v6 = 110
v7 = -1
v8 = -1
v11 = -1
v12 = -1
v13 = -1
v14 = -1
v15 = -1

If you paste your Home frame + two problem frames exactly like that, I’ll edit them and return corrected text to paste back into ARC.

Notes about the snippet you posted You gave this export-like snippet: 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

  • That looks like exported frame lines. When editing exported text, be careful to preserve file structure and only change the position values you intend to.
  • Watch uppercase V vs lowercase v: ARC scripting uses lowercase v# (unquoted) for virtual servo constants (Servo.setPosition(v12,90)). The Auto Position import/export may show uppercase; preserve whatever the .autoposition format expects when re-importing.
  • Do NOT do a global replace of "0" -> "-1" - that will break frames where angle 0 is valid. Instead edit only the specific servo values you want to skip.

Bulk-editing exported .autoposition (safe approach)

  1. Export .autoposition (Auto Position Configure Import/Export Export).
  2. Open in Notepad++ or VS Code.
  3. Find the frame(s) you want to change and edit only the numeric position fields for ports you want to skip to -1.
  4. Save and Import back to ARC.
  5. Test the frames in ARC before relying on them.

Startup consistency (so servos always return to Home)

  • Preferred: create an explicit Home frame (no -1s) and jump to it on startup:
// Jump to Home frame on startup (replace skill title and frame name)
sleep(2000); // allow SSC-32 and skills to initialize
controlCommand("Auto Position", "AutoPositionFrameJump", "Home");
sleep(1000); // allow servos to settle
print("Startup: Home frame set");
  • Alternative: explicit Servo.setPosition() for every v-port in a Project Start script (lowercase v/d ports), then sleep to let them settle.

Troubleshooting when other servos twitch

  • Mechanical coupling: shoulder movement changes load on elbow/wrist - support the limb when testing.
  • Power sag: brief current draw can make other servos twitch. Use a battery / supply sized for all servos and a common ground.
  • Conflicting control: ensure no other skill or script is commanding the same v-ports. Disable other Auto Position instances or old startup scripts while testing.
  • Servo profile offsets: confirm offsets are correct and applied - they can make frames appear shifted.

What I need from you (small, actionable items)

  1. Paste the Home frame plus 2-3 problem frames (use the Auto Position "Copy positions to clipboard" and paste here inside triple backticks). Example:
Frame: Home
v4=90 v5=80 v6=76 v7=68 v8=90 v11=90 v12=90 v13=75 v14=87 v15=90

Frame: R_Elbow_110
v4=-1 v5=-1 v6=110 v7=-1 v8=-1 v11=-1 v12=-1 v13=-1 v14=-1 v15=-1
  1. Or if you prefer, paste your servo-port mapping (like: Right shoulder = v4; Right arm = v5; Right elbow = v6; etc.). I’ll then provide a ready-made startup script and example Jump/Move commands tailored to your mapping.

About IK (Inverse Kinematics)

  • Because Synthiam_Support recommended a new thread for IK, please open a new thread if you want me to walk through configuring two IK instances, handling the inverted shoulder, camera-based picking, and IK MoveTo examples. I’ll move to that topic once you create that new thread.

Helpful links

Ready to edit your frames Paste Home + 2 problem frames (or the servo mapping) here in triple backticks and I’ll edit them to the correct one-servo-per-frame format and give you copy/paste text to import or recreate in ARC.


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.