Elastic Bands

This is a path planning with Elastic Bands.

https://github.com/AtsushiSakai/PythonRoboticsGifs/raw/master/PathPlanning/ElasticBands/animation.gif

Core Concept

  • Elastic Band: A dynamically deformable collision-free path initialized by a global planner.

  • Objective:

    • Shorten and smooth the path.

    • Maximize obstacle clearance.

    • Maintain global path connectivity.

Bubble Representation

  • Definition: A local free-space region around configuration b:

    B(b)={q:qb<ρ(b)},

    where ρ(b) is the radius of the bubble.

Force-Based Deformation

The elastic band deforms under artificial forces:

Internal Contraction Force

  • Purpose: Reduces path slack and length.

  • Formula: For node bi:

    fc(bi)=kc(bi1bibi1bi+bi+1bibi+1bi)

    where kc is the contraction gain.

External Repulsion Force

  • Purpose: Pushes the path away from obstacles.

  • Formula: For node bi:

    fr(bi)={kr(ρ0ρ(bi))ρ(bi)if ρ(bi)<ρ0,0otherwise.

    where kr is the repulsion gain, ρ0 is the maximum distance for applying repulsion force, and ρ(bi) is approximated via finite differences:

    ρxρ(bi+h)ρ(bih)2h.

Dynamic Path Maintenance

  1. Node Update:

    binew=biold+α(fc+fr),

    where α is a step-size parameter, which often proportional to ρ(biold)

2. Overlap Enforcement: - Insert new nodes if adjacent nodes are too far apart - Remove redundant nodes if adjacent nodes are too close

References