Skip to content

Fix jittery Unitree G1 motion during trajectory execution#6

Merged
mqcmd196 merged 1 commit into
mqcmd196:masterfrom
Michi-Tsubaki:fix-interpolation-method
May 13, 2026
Merged

Fix jittery Unitree G1 motion during trajectory execution#6
mqcmd196 merged 1 commit into
mqcmd196:masterfrom
Michi-Tsubaki:fix-interpolation-method

Conversation

@Michi-Tsubaki

@Michi-Tsubaki Michi-Tsubaki commented May 12, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR fixes the jittery / trembling motion observed on the Unitree G1 during trajectory execution.

The joint_trajectory_controller configuration was updated to use velocity state feedback and to interpolate new trajectories from the desired state.

state_interfaces:
  - position
  - velocity

interpolate_from_desired_state: true

Background

On robots with relatively soft joint gains, such as the Unitree G1, the actual joint positions can deviate from the commanded positions due to gravity and compliance.

When new trajectories are interpolated from the measured joint state, this deviation can introduce discontinuities between the current command and the next trajectory. As a result, the robot may show jittery or trembling motion.

By enabling interpolate_from_desired_state, the controller starts interpolation from the previously commanded desired state instead of the measured joint state, resulting in smoother command transitions.

Result

After this change, the Unitree G1 executes trajectories smoothly and the previous trembling behavior is no longer observed.

Verification on Unitree G1

Attached videos:

  • Before: trembling / jittery motion
20260511_185419.online-video-cutter.com.mp4
  • After: smooth motion without visible trembling
20260511_190741.mp4

@Michi-Tsubaki

Michi-Tsubaki commented May 12, 2026

Copy link
Copy Markdown
Contributor Author

(CC: @pazeshun )

@mqcmd196

Copy link
Copy Markdown
Owner

Thank you. Let me check this evening

@mqcmd196

Copy link
Copy Markdown
Owner

BTW, what interface did you use on taking the videos? MoveIt + RViz ? rqt_control ?

@mqcmd196 mqcmd196 merged commit 8a2b6c9 into mqcmd196:master May 13, 2026
1 check passed
@Michi-Tsubaki

Copy link
Copy Markdown
Contributor Author

BTW, what interface did you use on taking the videos? MoveIt + RViz ? rqt_control ?

I use jsk-ros-pkg/jsk_control#797 (sample of g1 / spacenav) using jsk-ros-pkg/jsk_robot#1947 (g1 model) while launching g1_ros bringup and activating ros2_control instructed in README in this repository.

I also used ros1_brdige (https://github.com/ros-o/ros1_bridge), just bridging all topics (this also bridge all action <-->actinlib )

ros2 run ros1_bridge dynamic_bridge --bridge-all-topics

@mqcmd196

mqcmd196 commented May 13, 2026 via email

Copy link
Copy Markdown
Owner

mqcmd196 pushed a commit that referenced this pull request May 15, 2026
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.

2 participants