Skip to content

Fix MoveIt planning by defining joint acceleration limits#89

Open
leochien1110 wants to merge 1 commit into
enactic:jazzyfrom
HCIS-Lab:moveit-acceleration-limits
Open

Fix MoveIt planning by defining joint acceleration limits#89
leochien1110 wants to merge 1 commit into
enactic:jazzyfrom
HCIS-Lab:moveit-acceleration-limits

Conversation

@leochien1110

Copy link
Copy Markdown

Summary

This PR fixes a MoveIt planning failure by defining nonzero acceleration limits in openarm_bimanual_moveit_config/config/joint_limits.yaml.

What I observed

Using the MoveIt demo launch with fake hardware:

ros2 launch openarm_bimanual_moveit_config demo.launch.py use_fake_hardware:=true

RViz and the Motion Planning panel start correctly, and the robot model is visible, but pressing Plan or Plan & Execute fails.

I reproduced this in:

  • Ubuntu 24.04
  • macOS (RoboStack)
  • Both are running with Jazzy Distro.

I also verified the same behavior against both upstream main and jazzy.

Important scope note

I have not tested this on real hardware.

So this PR is based on the fake/demo workflow (use_fake_hardware:=true). It is possible that real hardware workflows were not affected in the same way, but the MoveIt config currently lacks usable acceleration limits for trajectory time parameterization, which appears to be a configuration issue regardless.

Root cause

The MoveIt config defines velocity limits, but acceleration limits are disabled in:

  • openarm_bimanual_moveit_config/config/joint_limits.yaml

For example, the joints were configured like this:

has_acceleration_limits: false
max_acceleration: 0.0

However, the configured planning response adapter:

  • default_planning_response_adapters/AddTimeOptimalParameterization

requires acceleration limits in order to generate a time-parameterized trajectory.

Without them, planning fails.

Fix in this PR

This PR enables acceleration limits and assigns conservative nonzero acceleration values so MoveIt can complete time parameterization and produce a valid trajectory.

Why these values

The max_acceleration: 5.0 values used here are intended as conservative placeholder values to restore planning behavior.

I am not claiming these are the authoritative hardware acceleration limits. If there is a better source for canonical acceleration limits (URDF, hardware specs, internal tuning, etc.), maintainers may want to replace these values accordingly.

Validation performed

Tested with:

colcon build --symlink-install --packages-up-to openarm_bringup openarm_description openarm_bimanual_moveit_config
source install/setup.zsh
ros2 launch openarm_bimanual_moveit_config demo.launch.py use_fake_hardware:=true

Before this change:

  • MoveIt launched
  • planning failed at time parameterization

After this change:

  • fake hardware launches successfully
  • controllers load successfully
  • MoveIt no longer fails with the missing-acceleration-limits error during planning

Error details

Terminal error output before this fix
[move_group-3] [INFO] [...] Calling PlanningResponseAdapter 'AddTimeOptimalParameterization'
[move_group-3] [ERROR] [...] No acceleration limit was defined for joint openarm_left_joint1! You have to define acceleration limits in the URDF or joint_limits.yaml
[move_group-3] [ERROR] [...] Response adapter 'AddTimeOptimalParameterization' failed to generate a trajectory.
[move_group-3] [ERROR] [...] PlanningResponseAdapter 'AddTimeOptimalParameterization' failed with error code FAILURE
[move_group-3] [INFO] [...] FAILURE
[rviz2-4] [ERROR] [...] MoveGroupInterface::move() failed or timeout reached

Notes

  • This was reproduced in fake hardware mode.
  • I did not validate on physical hardware.
  • If preferred, I can also open a follow-up issue or adjust the acceleration values based on maintainers' guidance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant