Skip to content

Fix Cartesian interpolation#380

Merged
rhaschke merged 6 commits intomoveit:masterfrom
ubi-agni:fix-cartesian-interpolation
Nov 1, 2022
Merged

Fix Cartesian interpolation#380
rhaschke merged 6 commits intomoveit:masterfrom
ubi-agni:fix-cartesian-interpolation

Conversation

@rhaschke
Copy link
Copy Markdown
Contributor

This fixes #359. There were actually two major issues:

  1. Add MoveTo tests & make them pass #304 broke Cartesian interpolation, wrongly calculating the target frame when rotations were involved (see videos below, were the endeffector should move and rotate about the green axis)
  2. MoveIt itself didn't yet support Cartesian interpolation for non-link frames. To fix this, I filed Improve Cartesian interpolation moveit#3197.

old:

old.mp4

new:

new.mp4

@rhaschke
Copy link
Copy Markdown
Contributor Author

Closing and reopening to trigger CI.

@rhaschke rhaschke closed this Oct 20, 2022
@rhaschke rhaschke reopened this Oct 20, 2022
@rhaschke
Copy link
Copy Markdown
Contributor Author

rhaschke commented Oct 20, 2022

@v4hn, looks like C++14 standard is not default (or downgraded by other packages?) in Melodic.
Could this be related to moveit/moveit_tutorials@cf79c87?

I was confused because this still worked for me locally - until I noticed that you removed the C++14 standard recently (8d0f398 + 211b8c7) without filing a PR or testing it. This actually fails with clang-6.0 on Bionic!

@v4hn
Copy link
Copy Markdown
Contributor

v4hn commented Oct 22, 2022

This actually fails with clang-6.0 on Bionic!

You lost me there, what?
Why did you cite the moveit_tutorials commit that succeeded on ci (including the master-source job on 18.04)?

#386 should consistently cleanup the standard specification now. I don't like the fact that we need the workaround for 5-year old build-system bugs, but at least the macro hides it consistently.

@rhaschke rhaschke force-pushed the fix-cartesian-interpolation branch from 11be7ea to d24f6fd Compare October 31, 2022 16:28
@codecov
Copy link
Copy Markdown

codecov bot commented Oct 31, 2022

Codecov Report

Base: 54.04% // Head: 54.07% // Increases project coverage by +0.04% 🎉

Coverage data is based on head (85de541) compared to base (64a8df1).
Patch coverage: 76.48% of modified lines in pull request are covered.

❗ Current head 85de541 differs from pull request most recent head d66b226. Consider uploading reports for the commit d66b226 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #380      +/-   ##
==========================================
+ Coverage   54.04%   54.07%   +0.04%     
==========================================
  Files          80       80              
  Lines        7692     7698       +6     
==========================================
+ Hits         4156     4162       +6     
  Misses       3536     3536              
Impacted Files Coverage Δ
...oveit/task_constructor/solvers/planner_interface.h 100.00% <ø> (ø)
core/src/solvers/cartesian_path.cpp 82.93% <0.00%> (-2.07%) ⬇️
core/src/solvers/pipeline_planner.cpp 67.75% <0.00%> (ø)
core/src/utils.cpp 66.67% <64.29%> (+6.67%) ⬆️
core/src/solvers/joint_interpolation.cpp 87.76% <100.00%> (ø)
core/src/stages/move_relative.cpp 80.56% <100.00%> (-0.31%) ⬇️
core/src/stages/move_to.cpp 79.70% <100.00%> (ø)
...ude/moveit/task_constructor/stages/move_relative.h 100.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

The twist motion performs an angular rotation about the given axis _and_
the origin of ik_frame as well as a linear translation.
Both transforms are expressed w.r.t. the model frame and thus require
left-multiplication to ik_frame's current pose.
The ik_frame should move in a straight-line Cartesian path.
However, so far the link frame was following a Cartesian path.
When passing the root frame, getRigidlyConnectedParentLinkModel() returns
a nullptr for robot_link, causing a segfault.
Actually, we don't need to use that method at all. We just need to find
the robot_link of an associated body.
- link_pose -> start_pose
- pos_link -> pos_start
@rhaschke rhaschke force-pushed the fix-cartesian-interpolation branch from 85de541 to 402d6a4 Compare October 31, 2022 18:53
@rhaschke rhaschke merged commit f88e25f into moveit:master Nov 1, 2022
@rhaschke rhaschke deleted the fix-cartesian-interpolation branch November 1, 2022 23:09
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.

Using MTC to Plan a Circular Path

2 participants