Skip to content

exbibyte/sample_planning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

50f36e3 · Jul 14, 2019

History

99 Commits
Jul 14, 2019
Apr 29, 2019
May 4, 2019
Apr 30, 2019
Apr 6, 2019
Apr 12, 2019
Apr 29, 2019
May 23, 2019
Jul 14, 2019
Jul 14, 2019
Mar 10, 2019
May 23, 2019
Mar 13, 2019
Apr 8, 2019
Jul 8, 2019
Apr 28, 2019
Apr 12, 2019
Apr 12, 2019

Repository files navigation

Briefing

Sample Based Motion Planning.

This project is intended as educational replication of several general ideas:

  • Sparseness
  • Motion Primitives
  • Importance Sampling

A sub-goal of this project is to integrate and leverage benefits of several of these ideas in a hybrid solution.

Inputs to program

  • system dynamics and various constraints are supplied as functions
  • environment obstacles

What's in it:

Writeups, Benchmarks, etc..

project

Running Planner

  • prerequisites
  • build and run in release mode
    • Either:
      • have custom maps already generated (see Generating Custom Maps section)
      • cargo run --release --bin planner -- -p <problem_instance_name> (other program arguments...)
      • see prob_instances.rs for predefined problem domain list
    • Or:
      • cargo run --release --bin planner -- -o <file_obstacle> (other program arguments...)
      • sample obstacle file: obstacles/obs3.txt (randomly generated boxes)
    • Or:
      • have custom maps already generated (see Generating Custom Maps section)
      • cargo run --release --bin planner -- -e <.ele file path> -n <.node file path> (other program arguments...)
        • eg: cargo run --release --bin planner -- -e maps_custom/dragon_age/poly/ost100d.1.ele -n maps_custom/dragon_age/poly/ost100d.1.node -p orz000d -i 1000000 -b 300 -m dubins
      • would need to modify dynamics model file to change goal states, etc.
      • see custom maps section for .ele and .node details
  • optional arguments:
    • -w: show witness node and witness representative pairs
      • drawn as a line(red) with end points (purple: witness), (blue: witness representative)
    • -i <N>: max iterations
    • -m <model>: dynamical model selection (see src/dynamics_* files)
      • variants: dubins, airplane (defaults to dubins)
    • -b <N>: batch N iterations in between rendering calls
    • -h: help
  • optional compile-time features:
    • usage:
      • cargo run --release --bin planner --features nn_naive,disable_pruning,(other features...) -- -p <problem_instance_name> (other program arguments...)
    • variants: see [features] section of Cargo.toml for the list
  • sample program:
    • cargo run --release --bin planner --features nn_sample_log,state_propagate_sample,path_optimize -- -p obs3 -m dubins -i 1000000 -b 200

Generating Random Obstacles (a couple obstacles exists in obstacles/ folder)

  • build and run in release mode with: cargo run --release --bin gen_obs -- -f <output_file_path>
  • required arguments:
    • -f <output_file_path> (eg: cargo run --release --bin gen_obs -- -f obstacles/obs99.txt)
  • optional arguments:
    • -n <N>: number of obstacles to be generated (default: 30)
  • optional features:
    • gen_obs_3d: generate boxes for in 3D domain (defaults to planar domain)

Using Random Obstacles

  • cargo run --release --bin planner -- -o <file_obstacle>
    • -o <file_obstacle>: obstacle file path (eg: -o obstacles/obs2.txt)

Generating Custom Maps (need to run this once in order to use custom maps):

  • a set of maps that is mainly used for benchmarking purposes obtainable from https://www.movingai.com/benchmarks/grids.html can be used, these are located in the /maps_custom folder
  • character movable space within a map are triangulated for use in the planner as the configuration free space
  • triangulation is done using the awesome Triangle software from http://www.cs.cmu.edu/~quake/triangle.html
  • the maps are converted into a format for Triangle to process and output is loadable into our planner and further extruded as triangular prisms for use with a general purpose 3D obstacle detector, these intermediate files are stored at /maps_custom//poly
  • some maps might have bad triangulation not useable for the planner (I aimed for working with Dragon Age maps)
  • generating intermediate files and map assets for our planner
    • 1st, compile Triangle
      • cd Triangle_v1_6
      • make
    • 2nd, run ./script_map2poly.sh (generates formatted file for Triangle, may take a while)
    • 3rd, run ./script_triangulate_poly.sh (outputs 2D triangulation result as .ele and .node files)
    • all set for use...

Screenshots

Simple Environments

drawing drawing drawing drawing drawing

Hard Game Maps

drawing drawing drawing drawing drawing

Releases

No releases published

Packages

No packages published