Skip to content

Computing multi-radius Dubins path, which allows to increase the vehicle's speed. This can decrease total travel time.

License

Notifications You must be signed in to change notification settings

comrob/AcceleratedDubins.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Accelerated Dubins Julia Library

Build Status

This library is used for computing multi-radius Dubins path. The radii of first and last segments can be changed independently, which allows to increase the vehicle's speed. This can decrease total travel time when the turning radii are selected right.

Full description is provided in the following paper.

@inproceedings{kucerova2020finding,
  title     = {On finding time-efficient trajectories for fixed-wing aircraft using dubins paths with multiple radii},
  author    = {Ku{\v{c}}erov{\'a}, Krist{\'y}na and V{\'a}{\v{n}}a, Petr and Faigl, Jan},
  booktitle = {Proceedings of the 35th Annual ACM Symposium on Applied Computing},
  pages     = {829--831},
  year      = {2020}
} 

Instalation

For Julia, it is necessary to have the Optim library installed, which is included in the AcceleratedDubins package.

To use the example/generate-gif.jl, the PyPlot, Julia libraries is required. To use the tests/runtests.jl, the Tests and Dubins libraries are needed.

The package can be installed in Julia by following commands.

using Pkg
Pkg.add(PackageSpec(url="https://github.com/comrob/AcceleratedDubins.jl"))

Paths example

Possible paths examples

Shortest is original Dubins. The two other trajectories are proposed paper, where the "fastest" trajectory is found using multiple radii samples and the "optimized" trajectory uses local optimization (Optim).

Basic usage

See example/basic.jl

using AcceleratedDubins

## Parameters of the vehicle
params = [5., 15., 2.6, 4] ## v_min v_max a_max -a_min
r_min = 1. # minimum turning radius
r_max = 5. # maximum turning radius

## Generate random configurations
start = [10*rand(), -10+5*rand(), 2*pi*rand()]
stop = [10+20*rand(), -10+5*rand(), 2*pi*rand()]

## try radii combinations and get resulting path time
    path_fastest, _ = fastest_path(start, stop, radii_samples_exp(r_min, r_max, 3), params)
    time_fastest = path_time(path_fastest, params)
## try to optimize path using Optim
    path_optimized, _ = optimized_path(start, stop, [r_min, r_max], params)
    time_optimized = path_time(path_optimized, params)
## compute shortest path (original Dubins with r_min)
    path_shortest, _ = retrieve_path(start, stop, [r_min, r_min], params)
    time_shortest = path_time(path_shortest, params)

@show time_fastest, time_optimized, time_shortest

## sample the path for plotting 
times, speeds = speed_profile(path_fastest, params)

Youtube presentation

YouTube presentation

Path computation functions

  • fastest_path: Selects fastest path using the radii combinations of input array.
  • optimized_path: Selects fastest path from local optimization. Performs two optimizations with different initializations to avoid bad local minimum.
  • retrieve_path: Selects from maneuvers the best path for starting and ending radii.

Helper functions

  • path_len: Returns length of the input path.
  • path_time: Computes the speed profule and gets the path time.
  • speed_by_radius: Returns the maximum value for given radius.

Sampling functions

  • sample_path: Returns x and y coordinates to plot the path.
  • speed_profile: Returns time and speed coordinates to plot the speed profile.

problems or suggestions email to kucerkr1@fel.cvut.cz

About

Computing multi-radius Dubins path, which allows to increase the vehicle's speed. This can decrease total travel time.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages