Skip to content

Ensure the robot state is up-to-date before Servoing#2954

Merged
sjahr merged 4 commits intomoveit:mainfrom
AndyZe:servo_initial_joints
Aug 13, 2024
Merged

Ensure the robot state is up-to-date before Servoing#2954
sjahr merged 4 commits intomoveit:mainfrom
AndyZe:servo_initial_joints

Conversation

@AndyZe
Copy link
Member

@AndyZe AndyZe commented Aug 7, 2024

Description

Previously we didn't wait to get a current robot state before servoing began. That caused the initial joint angles to be all-zero, which caused a small jump at the beginning of motion. This is a fix.

Test with:

ros2 launch moveit_servo demo_ros_api.launch.py

ros2 run moveit_servo servo_keyboard_input

@AndyZe AndyZe requested review from pac48 and sjahr August 7, 2024 15:54
@AndyZe AndyZe force-pushed the servo_initial_joints branch from 8950e60 to 9975f8b Compare August 7, 2024 15:56
Copy link
Contributor

@sea-bass sea-bass left a comment

Choose a reason for hiding this comment

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

Fixes look good at a glance!

One thing to watch out for, from my own experience, is what happens if you pause/stop servo, move the robot through some other free-space motion planner, and then resume servo. (Maybe @pac48 and @sjahr can test with MoveIt Pro and double check?)

Far as I remember, this was one reason for the liberal sprinkling of resetSmoothing(), but I don't doubt this PR fixes that. I just want to make sure it wasn't pruned too much to affect the interaction with other motions.

Essentially, there are 2 alternatives:

  1. Keep the smoothing going even when servo is stopped,
  2. Ensure that transitioning servo from stopped to not stopped triggers a reset to the latest state when restarting.

There are merits to both, but just wanted to bring it up and have people test this case.

@AndyZe
Copy link
Member Author

AndyZe commented Aug 12, 2024

One thing to watch out for, from my own experience, is what happens if you pause/stop servo, move the robot through some other free-space motion planner, and then resume servo. (Maybe @pac48 and @sjahr can test with MoveIt Pro and double check?)

I had to add one line to fix this. Good catch. Here's a video of several cycles of Servo -> pause -> joint command -> unpause -> Servo again

servo_pausing.webm

@AndyZe AndyZe force-pushed the servo_initial_joints branch 2 times, most recently from 3089351 to 3686dae Compare August 12, 2024 16:37
Copy link
Contributor

@sea-bass sea-bass left a comment

Choose a reason for hiding this comment

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

Awesome, thanks for that test!

@AndyZe AndyZe force-pushed the servo_initial_joints branch from 3686dae to 37bc770 Compare August 12, 2024 22:44
@AndyZe AndyZe added this pull request to the merge queue Aug 13, 2024
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to no response for status checks Aug 13, 2024
Copy link
Contributor

@sjahr sjahr left a comment

Choose a reason for hiding this comment

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

Nice work, thanks!

@sjahr sjahr merged commit 2178ed0 into moveit:main Aug 13, 2024
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.

3 participants