Asked

Requesting Video For Inverse Kinematic Arm

I have a question about the ARC robot skill called Inverse Kinematic Arm. Is there any video available that demonstrates this skill? I find the current instructions too vague, and it would be helpful to see the skill in operation through a video.



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 Skill (view all robot skills)
Control robot arms via inverse & forward kinematics: specify X,Y,Z (cm), auto joint calc, EZB config, MoveTo API, camera pick/track

ARC Pro

Upgrade to ARC Pro

Unleash your robot's full potential with the cutting-edge features and intuitive programming offered by Synthiam ARC Pro.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Short answer: There is no official video embedded on the Inverse Kinematic Arm skill manual page at this time. You can view the skill manual here (it contains examples and code snippets):
https://synthiam.com/Support/Skills/Servo/Inverse-Kinematic-Arm?id=21839

If a video would help, I can either:

  • Walk you stepbystep here to set up a working demo, or
  • Create a short demo project (ARC file) or stepbystep script you can load and follow.

Below is a concise howto and example scripts so you can see the skill in action right away.

How to get a quick demo running in ARC

  1. Add the skill

    • Project Add robot skill search "Inverse Kinematic Arm" Add.
  2. Open the skill settings

    • Click the kebab menu (three lines) at the topright of the skill window Configure (or Options). This is where you add joints and configure lengths, offsets, servo ports, ranges, and joint type (Rotation vs Lever).
  3. Configure joints (example)

    • For each joint enter:
      • Servo Port (d0, d1, v2, etc - do NOT put in quotes)
      • Type (Rotation or Lever)
      • Length (mm) - measure centertocenter
      • Offset (mm) if joint is laterally offset
      • Servo Range (degrees) and servo Offset (mounting angle)
      • Invert servo if movement is reversed
    • Save the configuration.
  4. Initialize safely

    • Add a servo robot skill for each servo (or one skill that manages them). Move servos manually slowly to confirm orientation and ranges.
    • Watch the Forward Kinematics X,Y,Z values in the Inverse Kinematic skill as you move servos to verify the geometry.
  5. Test inverse kinematics MoveTo command

    • Use a JavaScript script or a Button that calls ControlCommand to move the end effector:
// Example: move to X=0cm, Y=10cm, Z=15cm
ControlCommand("Inverse Kinematic Arm", "MoveTo", 0, 10, 15);
print("MoveTo command sent");
  • Note: replace "Inverse Kinematic Arm" with the exact skill window title you added if different.
  1. Example: sequence script (safe basic demo)
// Example sequence to test movement (assumes your skill title is "Inverse Kinematic Arm")
print("Demo start");

// Move to a raised position
ControlCommand("Inverse Kinematic Arm", "MoveTo", 0, 15, 20);
sleep(2000);

// Move to the left
ControlCommand("Inverse Kinematic Arm", "MoveTo", -10, 10, 18);
sleep(2000);

// Move to the right
ControlCommand("Inverse Kinematic Arm", "MoveTo", 10, 10, 18);
sleep(2000);

// Return home
ControlCommand("Inverse Kinematic Arm", "MoveTo", 0, 10, 20);
print("Demo complete");
  1. Camera Arm pickup example (use only after you confirm geometry)
    • If you have a camera and use the Camera Device skill that writes global variables like $CameraObjectX, $CameraObjectY and $CameraObjectWidth, you can map camera pixel coordinates to arm cm coordinates and call MoveTo. Example (paste into the Camera Device Tracking Start script):
while (true) {
  // map camera pixel X (0..320) to arm X (-20..20 cm)
  var x = Utility.map( getVar("$CameraObjectX", 160), 0, 320, -20, 20 );
  // map camera pixel Y (0..240) to arm Y (35..5 cm)
  var y = Utility.map( getVar("$CameraObjectY", 120), 0, 240, 35, 5 );
  // map width (object size) to Z distance
  var z = Utility.map( getVar("$CameraObjectWidth", 40), 40, 100, 20, 30 );

  ControlCommand("Inverse Kinematic Arm", "MoveTo", x, y, z);
  sleep(200); // throttle frequency
}

Where to find more help

Would you like me to:

  • Create a stepbystep written walkthrough tailored to your arm (I’ll include exact joint entries and servo ports), or
  • Build a sample ARC project you can load (I’ll need the number of joints, the servo ports you use, and approximate bone lengths in mm), or
  • Record a short screen capture video showing the skill being configured and used (I can outline the steps I’d include - I can’t upload the video here directly, but I can provide a downloadable demo project and detailed timestamps)?

Tell me:

  • How many joints does your arm have?
  • Which servo ports are you using (d0, d1, v15, etc.)?
  • Do you have a camera attached and are you using ARC Camera tracking?

I’ll prepare the exact demo steps or project based on your answers.


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  

While there is no video, it's difficult to create because every arm configuration can be so different. We have recreated the manual to provide far more in-depth information that should help you get across the finish line.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#3  

Thanks - that matches what Synthiam_Support explained: a single generic video is hard because every robot arm is different. I can help you get the same benefits a video would provide by walking you through a clear, visual-style checklist and providing ready-to-run demo code or a sample ARC project you can load and test.

Below I’ll give:

  • direct links to the manual and useful pages
  • exact stepbystep configuration instructions using the kebab menu
  • safe testing steps and what to look for while the arm moves
  • ready-to-run JavaScript examples (print() used for debugging)
  • options I can provide for you (custom ARC project, step-by-step tailored setup, or a short screen-record plan)

Useful links

Step-by-step: add & open the skill

  1. Project -> Add robot skill -> find "Inverse Kinematic Arm" -> Add.
  2. In the skill window click the kebab menu (three lines) top-right -> Configure (or Options). This opens the configuration UI (where you add joints and ranges).

Configure joints (kebab menu -> Configure)

  • Add joints starting at the base and move outward (base = joint 1).
  • For each joint fill:
    • Servo Port: use the ARC constant (d0, d1, v2, etc.) - do NOT use quotes.
    • Joint Type: Rotation (base) or Lever (elbow/wrist).
    • Length: distance center-to-center in millimeters (mm). Measure carefully!
    • Offset: lateral offset in mm (0 if aligned).
    • Servo Range: half the total physical travel in degrees (180 servo -> 90).
    • Servo Offset: how the servo is mounted; adjust so its commanded "0" matches the physical neutral.
    • Invert: check if the axis moves the opposite direction.
  • Save: use File -> Save in the configuration window to create/load a .kinematic config file.

Safety & test prep (do these before inverse moves)

  • Add a servo robot skill for each servo (Project -> Add robot skill -> Servo) or use your existing servo controls.
  • With servos manually controlled, move each servo slowly to confirm direction/range and that no linkage binds.
  • Verify the Inverse Kinematic skill Forward Kinematics values (X,Y,Z) while manually moving servos to ensure displayed positions track what you see.
  • Keep the Panic button visible; pressing it releases/all servos immediately if something goes wrong.

Basic JavaScript tests (replace the skill window title exactly if you changed it)

  • MoveTo example:
// Example: move the arm to X=0cm, Y=10cm, Z=15cm
print("Sending MoveTo...");
ControlCommand("Inverse Kinematic Arm", "MoveTo", 0, 10, 15);
  • Small demo sequence (safe increments & pauses):
print("Demo start");
// move to raised center
ControlCommand("Inverse Kinematic Arm", "MoveTo", 0, 15, 20);
sleep(2000); // wait 2 seconds
// left
ControlCommand("Inverse Kinematic Arm", "MoveTo", -10, 10, 18);
sleep(2000);
// right
ControlCommand("Inverse Kinematic Arm", "MoveTo", 10, 10, 18);
sleep(2000);
// back to home
ControlCommand("Inverse Kinematic Arm", "MoveTo", 0, 10, 20);
print("Demo complete");

Camera + pick example (only after geometry verified)

  • If you use Camera Device tracking and it populates $CameraObjectX / $CameraObjectY / $CameraObjectWidth, map pixels to cm and call MoveTo:
while (true) {
  var camX = getVar("$CameraObjectX", 160); // default center
  var camY = getVar("$CameraObjectY", 120);
  var camW = getVar("$CameraObjectWidth", 40);

  // map camera pixels to robot coordinates (adjust limits to your setup)
  var x = Utility.map(camX, 0, 320, -20, 20);  // left/right in cm
  var y = Utility.map(camY, 0, 240, 35, 5);    // up/down in cm (top->bottom)
  var z = Utility.map(camW, 40, 100, 20, 30);  // depth mapping

  ControlCommand("Inverse Kinematic Arm", "MoveTo", x, y, z);
  sleep(200); // reduce update frequency
}

Troubleshooting checklist (most common issues)

  • Arm misses targets: re-measure bone lengths (center-to-center) - these are the most critical values.
  • Axis moves opposite: toggle Invert for that joint.
  • Large errors in forward kinematics: check servo offsets and joint types (Rotation vs Lever).
  • Strain/servo noise: check configured ranges and physical limits; use Panic if necessary.

Saving & sharing your config

  • Save .kinematic from the config File menu. You can share that .kinematic file and your ARC project so others can replicate your exact setup.

What I can do for you

  • Create a generic 3-DOF sample ARC project (ARC file) and .kinematic demo you can load and test immediately.
  • Build a tailored ARC project for your arm - I’ll need:
    • number of joints,
    • the servo ports (d0, d1, v2, etc.),
    • approximate bone lengths in mm,
    • servo mounting offsets (if known),
    • whether you use a camera and want camera-to-arm mapping.
  • Or give you a step-by-step written walkthrough specific to your arm (joint entries and exact values).
  • If you want an actual screen-recorded video, I can outline exactly what I’d record and the timestamps/steps; I can’t attach a video here but I can provide the ARC project and a script so you could reproduce the steps or I can host/share the recording elsewhere if you want.

Next step - tell me which of these you want me to prepare

  • Option A: Generic 3-DOF demo ARC project I build and give instructions for.
  • Option B: Tailored ARC project for your exact arm (I’ll need the joint/servo/bone details).
  • Option C: Step-by-step written walkthrough you can follow without sending hardware details.
  • Option D: Camera tracking mapping example adjusted to your camera resolution/placement.

Also answer these quick questions so I can provide the best next response:

  1. How many joints (DOF) on your arm?
  2. Which servo ports are you using for each joint (d0, d1, v2, )?
  3. Approximate bone lengths in mm (center-to-center) for each joint (or say "unknown" and I’ll give measurement tips).
  4. Do you have a camera and want the camera->arm example?

I’ll prepare either the demo ARC project, a tailored configuration, or a step-by-step guide based on your choice.


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.