Remote Mouse icon Remote Mouse Scriptable Remote Mouse for ARC: control PC cursor and ARC window via ControlCommand, using voice, camera or I/O inputs; shows cursor coordinates. Try it →
Asked
OpenManipulatorX IK axes rotated on LattePanda

Openmanipulatorx IK Axes Rotated On Lattepanda

Running ARC on a DF Robot LattePanda (Windows) with a U2D2 connected over USB to a Robotis OpenManipulator-X (12V SMPS to the DYNAMIXEL bus). U2D2 shows up as COM7 at 1,000,000 bps. The Robotis OpenManipulatorX skill connects, finds the joints, homes fine, and the joint sliders behave exactly as expected. I also have the LattePanda’s onboard Leonardo flashed with the EZB firmware (DTR enabled in the connection config) to drive a simple gripper servo on D6, which is working.

The issue is with inverse kinematics Cartesian space: the axes seem rotated 90 around Z compared to the skill’s coordinate display. For example, with the end effector at a comfortable mid pose, entering X=12, Y=0, Z=8 in the Robotis OpenManipulatorX skill moves the arm to the robot’s left instead of straight forward. Conversely, X=0, Y=12, Z=8 moves it forward toward the table edge. Z behaves as expected. So it looks like X and Y are swapped relative to my arm’s base orientation.

What I’ve tried:

  • Verified joint directions and limits; flipping individual joint direction fixes slider sense but not the IK frame.
  • Adjusted tool length and re-homed; reach updates correctly, frame still rotated.
  • Physically rotating the base 90 does align frames, but my mount doesn’t allow it.

Is there a way in the Robotis OpenManipulatorX skill to redefine the base/world frame (swap X/Y or apply a Z rotation offset) so IK targets align with my arm’s mounting orientation, or should I pre-transform targets in a script before calling MoveToXYZ?



Related Hardware (view all EZB hardware)
Lattepanda by DF Robot
LattePanda runs Windows and Synthiam ARC, with onboard Arduino (EZB firmware) for GPIO and direct EZ‑B v4 hardwire control with low latency.
Wi-Fi / USB
Servos 12
Camera
Audio
UART 1
I2C
ADC 5
Digital 12

Related Robot Skill (view all robot skills)
Inverse kinematics for Robotis OpenManipulatorX: compute joint angles and MoveTo 3D (cm) positions, supports camera-to-CM mapping for pick-and-place.

ARC Pro

Upgrade to ARC Pro

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Yes - what you’re describing sounds like a base-frame rotation, not a joint direction issue.

Short answer

The Robotis OpenManipulatorX skill does not currently expose a setting to redefine the IK world frame or apply a base yaw offset directly in the skill UI. So if the arm is mounted 90 off from the skill’s assumed forward direction, the practical solution is to pre-transform the coordinates before sending them to MoveTo.

What to do

If your mount is rotated 90 around Z, swap the X/Y inputs and invert one axis depending on the direction of rotation:

  • Clockwise 90

    • x' = y
    • y' = -x
  • Counter-clockwise 90

    • x' = -y
    • y' = x

z stays the same.

Example in JavaScript

If you want to keep using the skill’s MoveTo command, you can wrap your targets like this:

// Original target in your desired world frame
var x = 12;
var y = 0;
var z = 8;

// Rotate 90 degrees around Z
var x2 = y;
var y2 = -x;

// Send to the OpenManipulatorX skill
ControlCommand("Robotis OpenManipulatorX", "MoveTo", x2, y2, z);

If your rotation is the opposite direction, use:

var x2 = -y;
var y2 = x;

Best way to confirm

Try a couple of known points:

  1. X=10, Y=0, Z=8
  2. X=0, Y=10, Z=8

If those land on the wrong physical directions, the swap/invert above will correct it.

Why joint flips didn’t help

Changing joint direction only changes:

  • servo motion sense
  • slider direction
  • positive/negative joint rotation

It does not change the IK solver’s coordinate frame.

Recommendation

If you need this consistently, make a small helper script or custom wrapper skill that applies the transform before calling MoveTo. That keeps the arm usable without modifying the mounting.

If you want, I can help you write a tiny ARC JavaScript wrapper for this so you can enter your desired coordinates in your own frame and have ARC automatically rotate them before sending them to the OpenManipulatorX skill. The ARC AI Assistant built into ARC is also great for this kind of coordinate-transform scripting: https://synthiam.com/Products/AI-Assistant

I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.