Troubleshooting#
Warning
Several symptoms below are caused by wrong robot parameters, and the fix is to correct the parameter — not to compensate for it elsewhere. Scaling a URDF to hide a wrong gear ratio, or flipping a sign in application code to hide a wrong polarity, leaves the robot able to move unexpectedly in every path that does not go through your workaround. See Robot Parameter Configuration and Validation.
Robot Moves in the Wrong Direction#
Symptom: A positive command moves the joint in the negative direction, or RViz and the physical robot move opposite ways.
Solutions:
Read back the polarity the engine actually holds:
ros2 service call /wmx/params/get wmx_r2_message/srv/GetWmxParams \ "{index: [0,1,2,3,4,5]}"
Correct
AxisPolarityfor that axis in the robot’s WMX parameter XML (+1or-1) and rebuild, or override it for testing:ros2 service call /wmx/axis/set_polarity wmx_r2_message/srv/SetAxis \ "{index: [0], data: [-1]}"
Confirm the URDF’s sign convention for that joint (
<axis xyz>together with the joint<origin rpy>) before deciding which sign is correct.Re-verify with the single-axis procedure in Commissioning and First Motion. A runtime polarity override is lost on the next engine restart — write the corrected value into the XML.
Robot Moves the Wrong Distance#
Symptom: A commanded 90° rotation produces a visibly different physical rotation, or the robot moves by a large factor more or less than expected.
Solutions:
Check
AxisGearRatioNumeratorandAxisGearRatioDenominatoragainst the drive’s encoder resolution and the joint’s reducer ratio:numerator = encoder counts per motor revolution × gear ratio.Confirm
AxisGearRatioDenominatoris 2π. Any other value changes the unit of every position, velocity, and acceleration in the ROS 2 interface.Verify against the running engine with
/wmx/params/get, not against the file — the engine may be holding values from a previous session, since the general nodes load no parameter file.Re-measure with a small commanded step and a physical reference; see Commissioning and First Motion.
Wrong Joint Moves#
Symptom: Commanding joint2 moves a different physical joint.
Solutions:
Compare
joint_nameandjoint_axesin the robot’s application YAML. They are matched by position:joint_name[i]is driven byjoint_axes[i].Confirm the EtherCAT chain order, which is what assigns the axis indices:
ros2 service call /wmx/ecat/get_network_state \ wmx_r2_message/srv/EcatGetNetworkState
Re-cabling the drives in a different order shifts every axis index after the change, with no error anywhere in ROS 2.
All Joints Offset by a Constant#
Symptom: The robot’s poses are consistently shifted from the URDF zero, in the same direction, by roughly the same amount per joint.
Solutions:
Check
AbsoluteEncoderHomeOffset(andHomePosition) for each axis. The shipped files use0.0, which asserts that the drive’s absolute zero is the URDF zero — a per-unit property, not a per-model one.Move each joint to a known mechanical reference and compare
actual_posagainst the value the URDF zero implies.
Device Creation Failures#
Symptom: Failed to create device after N attempts
Solutions:
Verify the WMX Runtime is installed:
ls /opt/wmx3/lib/libwmx3api.soEnsure you are running with
sudoCheck that no other WMX application is running (lock contention causes error code 297)
If the error persists after stopping other applications, reboot to clear stale device locks
EtherCAT Scan Failures#
Symptom: Failed to scan network
Solutions:
Verify the EtherCAT cable is connected to the correct dedicated Ethernet port
Ensure all servo drives are powered on
Check the
eni/directory has the correct EtherCAT Network Information files for your servo drivesVerify the EtherCAT Ethernet port does not have an IP address assigned
Communication Start Failures#
Symptom: Failed to start communication
Solutions:
Check that the EtherCAT network scan succeeded (look for earlier scan errors in the log)
Verify servo drives are properly daisy-chained (IN port to OUT port)
Remove any IP address from the EtherCAT network interface
Check the WMX engine status:
ros2 service call /wmx/engine/get_status std_srvs/srv/Trigger
Joint States All Zero#
Symptom: /joint_states publishes but all position values are zero.
Solutions:
Verify engine is in
Communicatingstate (see above)Check that servo drives are enabled (no amplifier alarms):
ros2 topic echo /wmx/axis/state --field amp_alarm
Verify
wmx_param_file_pathin the config YAML points to the correct WMX parameter XML file for your robotClear alarms and re-enable servos:
ros2 service call /wmx/axis/clear_alarm wmx_r2_message/srv/SetAxis \ "{index: [0,1,2,3,4,5], data: [0,0,0,0,0,0]}"
Servo Alarm Errors#
Symptom: Servo drives report amplifier alarms; motion commands are rejected.
Solutions:
Clear alarms via the service:
ros2 service call /wmx/axis/clear_alarm wmx_r2_message/srv/SetAxis \ "{index: [0,1,2,3,4,5], data: [0,0,0,0,0,0]}"
Check for physical obstructions or overcurrent conditions on the robot
Verify gear ratios and polarities match the physical servo configuration (see Robot Parameter Configuration and Validation). A wrong polarity drives the joint away from its target, which shows up as a following error or an overcurrent alarm rather than as an obviously wrong direction.
Trajectory Execution Failures#
Symptom: FollowJointTrajectory goal is aborted with a WMX error
code.
Solutions:
Check that the trajectory has at most 1000 waypoints
Verify all servos are enabled and in the correct mode
Check the WMX error description in the action result
error_string
Gripper Not Responding#
Symptom: Gripper open/close service calls succeed but the gripper does not move.
Solutions:
Verify the I/O module is part of the EtherCAT daisy chain
Check EtherCAT communication is active (engine state =
Communicating)Test the I/O directly:
ros2 service call /wmx/set_gripper std_srvs/srv/SetBool "{data: true}"
Nodes Not Found#
Symptom: ros2 pkg list | grep wmx returns nothing.
Solutions:
Source the workspace:
source ~/wmx_r2_ws/install/setup.bashRebuild if needed:
cd ~/wmx_r2_ws && colcon buildCheck the two-stage build was done correctly (message package first). See Getting Started.
Build Errors#
Symptom: Linker errors referencing coremotionapi, wmx3api, or
other WMX libraries.
Solutions:
Verify the WMX Runtime and SDK are installed. The MIT-licensed ROS 2 packages link against the proprietary WMX libraries and cannot be built without them (see Licensing):
ls /opt/wmx3/lib/Ensure
LD_LIBRARY_PATHincludes/opt/wmx3/lib/:export LD_LIBRARY_PATH=/opt/wmx3/lib:$LD_LIBRARY_PATH
Install missing ROS2 dependencies:
cd ~/wmx_r2_ws rosdep install --from-paths src --ignore-src -y
Getting Help#
For additional support, contact your MOVENSYS representative or file an issue on the project repository.