Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improvements to VectorFieldPlanner #184

Merged
merged 13 commits into from
Sep 17, 2015
Merged

Conversation

mkoval
Copy link
Member

@mkoval mkoval commented Sep 16, 2015

This pull request makes several major improvements to VectorFieldPlanner to address #99:

  • Decouple the integration step size from the collision and constraint checking resolution.
  • Use a numerical integrator (from scipy.integrate) instead of fixed-size Euler integration.
  • Ignore velocity constraints when defining the vector field.
  • All checks are still done during the integration; not as a post-processing step.

It also adds some generally-useful functionality:

  • CACHE_AND_TERMINATE flag for TERMINATEing while still CACHEing the current configuration
  • ComputeUnitTiming computes the arclength parameterization of a path or trajectory.
  • GetCollisionCheckPts generates a sequence of (t, q) pairs that are within DOF resolution using the same bisection method as GreedyIK
  • ComputeJointVelocityFromTwist can optionally ignore the robot's velocity limits; e.g. to compute an answer up to scale

There is one blocking issue: I can't figure out how to handle numerical precision in GetCollisionCheckPts when starting partway through a trajectory. I don't see why this is any different than starting at zero, but it causes the bisection test to get stuck in an infinite loop. I'd appreciate another set of eyes to figure out what I"m doing wrong.

This includes some major changes and has some nasty edge cases. I'd really like @jeking04, @psigen, and @siddhss5 to look at this before I merge it.

@mkoval
Copy link
Member Author

mkoval commented Sep 16, 2015

Also tagging @aaronjoh because I know nothing about numerical integration.

siddhss5 pushed a commit that referenced this pull request Sep 17, 2015
@siddhss5 siddhss5 merged commit b0c2087 into master Sep 17, 2015
@siddhss5
Copy link

Oh yikes! My daughter merged this by accident on the phone! Dammit.
Where's the unmerge option?!

super(JointLimitError, self).__init__(
'Robot "{robot_name:s}" joint "{joint_name:s} axis {joint_axis:d}'
' violates {direction:s} {description:s} limit:'
' {dof_value:.5f} {comparison:s} {dof_limit:.5f}'.format(
Copy link
Member

Choose a reason for hiding this comment

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

Need to indicate which value is which in the comparison.

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

Successfully merging this pull request may close these issues.

3 participants