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

Use a better anti-tunneling algorithm for keep-out constraints #1108

Open
calcmogul opened this issue Jan 4, 2025 · 0 comments
Open

Use a better anti-tunneling algorithm for keep-out constraints #1108

calcmogul opened this issue Jan 4, 2025 · 0 comments
Assignees
Labels
component: backend Rust/Tauri backend type: enhancement New feature or request

Comments

@calcmogul
Copy link
Member

calcmogul commented Jan 4, 2025

The general idea is to formulate collision detection as a continuous problem. I've seen two ways to do that so far.

Option 1

This seems more straightforward to implement.

Differentiable Collision Detection for a Set of Convex Primitives

The paper: https://arxiv.org/pdf/2207.00669
The source code (not that helpful, imo): https://github.com/kevin-tracy/DifferentiableCollisions.jl

  1. Define all the robot corners with respect to the current state as x
  2. Define a keep-out shape constraint with a positive scaling parameter α as per section B of https://arxiv.org/pdf/2207.00669. r is generally the shape center and x is the robot point
  3. Apply the constraint that the robot point be within the scaled shape
  4. Apply the constraint that α ≥ 1 to avoid collisions (note that this also enforces the positivity constraint mentioned in step 1)

Differentiable Continuous Collision Detection for Convex Sets

The formulation above doesn't handle continuous collision detection, but the authors generalized it to work for that.

The paper: https://continuous-collisions.github.io/
An explanatory video: https://www.youtube.com/watch?v=L_AlqGmw5H8

Option 2

Implicit Swept Volume Signed Distance Field

https://arxiv.org/pdf/2405.00362

@calcmogul calcmogul added type: enhancement New feature or request component: backend Rust/Tauri backend labels Jan 4, 2025
calcmogul added a commit to calcmogul/Choreo that referenced this issue Jan 4, 2025
Artificially constraining the step travel distance like this makes the
solver report infeasible more often than it should. This isn't ideal in
projects that don't use keep-out constraints.

I saw differential drive generation report infeasible less often with
the anti-tunneling constraint removed.

See SleipnirGroup#1108 for better
potential alternatives.
calcmogul added a commit to calcmogul/Choreo that referenced this issue Jan 4, 2025
Artificially constraining the step travel distance like this makes the
solver report infeasible more often than it should. This isn't ideal in
projects that don't use keep-out constraints.

I saw differential drive generation report infeasible less often with
the anti-tunneling constraint removed.

See SleipnirGroup#1108 for better potential alternatives.
@calcmogul calcmogul self-assigned this Jan 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: backend Rust/Tauri backend type: enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant