This document explains how to configure and use IGHAStar for different planning scenarios.
Configuration files are located in examples/standalone/Configs/ and include:
- Vehicle Parameters: Length, width, maximum velocity, steering limits
- Planning Parameters: Resolution, tolerance, epsilon values
- Environment Settings: Map resolution, timesteps, control discretization
kinematic_example.yml- Kinematic planning configurationkinodynamic_example.yml- Kinodynamic planning configurationsimple_example.yml- Simple planning configurationros_kinodynamic_example.yml- ROS integration configuration
To change the start and goal positions for path planning, you can either:
- Edit the configuration file to modify the default start/goal or add test cases
- Use the
--test-caseargument to select from predefined test cases
For Kinematic Planning:
map:
name: "Berlin_0_1024.png"
dir: "Maps/street-png"
start: [94.5, 19.5, 2.8284062641509644] # [x, y, heading]
goal: [38.7, 81.6, 0.6324707282184407] # [x, y, heading]
size: [1024, 1024]
res: 0.1
test_cases:
case1:
start: [94.5, 19.5, 2.8284062641509644]
goal: [38.7, 81.6, 0.6324707282184407]
case2:
start: [17.6, 72.0, 0.9402905929256757]
goal: [40.3, 16.9, 1.0911003058968491]For Kinodynamic Planning:
map:
name: "race-2"
dir: "Maps/Offroad"
start: [5.6, 8.9, 1.5844149127199794, 4.935323678240241, 0] # [x, y, heading, velocity, unused]
goal: [21.1, 46.1, 0.608009209539623, 4.516091247319389, 0] # [x, y, heading, velocity, unused]
size: [512, 512]
res: 0.1
test_cases:
case1:
start: [5.6, 8.9, 1.5844149127199794, 4.935323678240241, 0]
goal: [21.1, 46.1, 0.608009209539623, 4.516091247319389, 0]
case2:
start: [11.9, 16.8, 1.3574384016819936, 3.317266656251059, 0]
goal: [46.6, 25.0, 0.19076360687480998, 3.2507584385704855, 0]- x, y: Position coordinates in meters
- heading: Orientation in radians (0 = east, π/2 = north, π = west, -π/2 = south)
- velocity: Speed in m/s (kinodynamic only)
Map files are stored in examples/standalone/Maps/ with the following structure:
generated_maps/- Procedurally generated test mapsstreet-png/- Street network mapsOffroad/- Off-road terrain maps
Each configuration file can include multiple test cases with different start/goal positions. To use a specific test case:
python examples/standalone/example.py --config examples/standalone/Configs/kinematic_example.yml --test-case case2If no test case is specified, the default start/goal from the configuration file will be used.
name: Name of the map filedir: Directory containing the map file (relative to examples/)start: Starting position [x, y, heading] or [x, y, heading, velocity, unused]goal: Goal position [x, y, heading] or [x, y, heading, velocity, unused]size: Map dimensions [width, height] in pixelsres: Map resolution in meters per pixel
resolution: Starting resolution used for discretizationepsilon: Goal region tolerance [ate, cte, heading, vel] - along-track error, cross-track error, heading tolerance, velocity tolerancetolerance: Minimum separation between vertices (your perception/map resolution should be at least this)max_level: Maximum level to which the system can go (used to cache hash values)division_factor: Factor by which the resolution increases every levelmax_expansions: Maximum number of node expansions allowedhysteresis: Hysteresis threshold for IGHA*-H algorithm
length: Vehicle length in meterswidth: Vehicle width in meterssteering_list: Available steering angles in degreesthrottle_list: Available throttle values (negative = reverse, positive = forward)max_vel: Maximum velocity in m/smin_vel: Minimum velocity in m/sdel_theta: Maximum steering angle change in degreesmax_theta: Maximum steering angle in degreesdel_vel: Maximum velocity change in m/smax_vert_acc: Maximum vertical acceleration in m/s²RI: Rolling resistance coefficientgear_switch_time: Time penalty for gear switching (multiplies reverse distance)