Skip to content
Hierarchical Optimization-Based Collision Avoidance - a path planner for autonomous parking
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images
DualMultWS.jl
LICENSE
ParkingConstraints.jl
ParkingSignedDist.jl
README.md
a_star.jl
collision_check.jl
hybrid_a_star.jl
main.jl
obstHrep.jl
plotTraj.jl
reeds_shepp.jl
setup.jl
veloSmooth.jl

README.md

H-OBCA

Hierarchical Optimization-Based Collision Avoidance - An algorithm for generating dynamically feasible parking trajectories

Paper describing the theory can be found here.

Short Description

H-OBCA is an optimization-based approach for autonomous parking. It builds on OBCA, which is a recent method for generating obstacle-free trajectories using optimal control.

H-OBCA is able to generate high-quality kino-dynamically feasible obstacle-free trajectories. These trajectories are smooth, and can be accurately tracked by simple low-level path following controllers. A Julia-based implementation is provided.

Examples

H-OBCA for Reverse Parking

H-OBCA for Parallel Parking

How to run the Parking code:

First steps

  1. Change to the directory

  2. Install Julia from https://julialang.org/downloads/ (code tested on version 0.5.1 and 0.6.0)

  3. Open Julia in terminal

  4. Install Julia package JuMP using Pkg.add("JuMP")

  5. Install Julia package Ipopt using Pkg.add("Ipopt")

  6. Install Julia package PyPlot using Pkg.add("PyPlot")

  7. Install Julia package NearestNeighbors using Pkg.add("NearestNeighbors")

  8. Install Julia package ControlSystems using Pkg.add("ControlSystems")

Running the parking example

  1. Start Julia in terminal

  2. Type in terminal: include("setup.jl")

  3. Type in terminal: include("main.jl")

modifying the code

  1. To play with start points, change x0 in main.jl and run the code by: include("main.jl")

  2. If you change anything in one of the collision avoidance problems, you need to activate the changes by running: include("setup.jl")

  3. If you change the size of the car in main.jl, the change also need to be made in collision_check.jl

Note

  1. this code has been tested on Julia 0.5.1 and 0.6.0, and might not run on any other Julia versions

  2. For best results, run code in Julia terminal

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.