Skip to content

Stable Joint Motion - #3

Open
alexnavtt wants to merge 36 commits into
develfrom
alexnavtt/stable_joint_motion
Open

Stable Joint Motion#3
alexnavtt wants to merge 36 commits into
develfrom
alexnavtt/stable_joint_motion

Conversation

@alexnavtt

Copy link
Copy Markdown
Contributor

The PR adds the ability for the robot to perform "Stable" arm motions. By this I mean that the end-effector and intermediate states are identical between the planned and executed trajectories.

The issue previously is that MoveIt outputs joint trajectories which assume a static base, but the robot leans its body during execution to maintain balance. The result is that executed trajectory and the final end-effector position are slightly off by however much the robot leaned, so poses far away from the robot body would be less accurate that those close to it.

The solution here is that when MoveIt outputs a joint trajectory, instead of executing it we calculate the end-effector position at each waypoint and create a new trajectory that contains both Cartesian and joint waypoints. This allows us to invoke the Spot API CartesianCommand, which accepts a final joint configuration argument. To maintain accuracy during the move, we command the robot to move to each waypoint in the trajectory in turn with its unique joint configuration instead of providing the entire trajectory in a single monolithic command.

Note that since the leaning still occurs, the final joint configuration is slightly different from that commanded by MoveIt

CJans121 and others added 29 commits September 18, 2024 16:50
…cartesian motion with joint position action server terminates
@alexnavtt
alexnavtt requested a review from FabianEP11 July 15, 2026 15:17
@alexnavtt
alexnavtt requested a review from ryanl0518 July 15, 2026 15:17
@alexnavtt alexnavtt changed the title Alexnavtt/stable joint motion Stable Joint Motion Jul 15, 2026
Comment thread spot_moveit_config/src/stable_arm_motion_server.cpp Outdated
Comment thread spot_moveit_config/src/stable_arm_motion_server.cpp Outdated
Comment thread spot_moveit_config/src/stable_arm_motion_server.cpp Outdated
Comment thread spot_moveit_config/src/stable_arm_motion_server.cpp Outdated
Comment thread spot_moveit_config/src/stable_arm_motion_server.cpp

@FabianEP11 FabianEP11 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I didn't track this down completely, but where is the feedback propagation happening?
I saw the publish_feedback for ArmCartesianCommand, but couldn't find where it gets forwarded to StableArmCommand.

@alexnavtt

Copy link
Copy Markdown
Contributor Author

I'll admit that after trying for a little while, it just seemed like the feedback wouldn't be meaningful since it's actually a sequence of commands being issued under the hood, and not just one command, so updates on distance to goal and tracking error wouldn't mean much.

So in short, there is no feedback in that case

@alexnavtt

Copy link
Copy Markdown
Contributor Author

Alright, I removed the odom frame requirement and tested it, all is well. I assume that when I made that requirement I was rushing to get something working, and I just put that in there as a guardrail against my own mistakes. Also fixed the other issues

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.

4 participants