diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..91ff2bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,220 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 + +## Intermediate documents: +*.dvi +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.gtex + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*.tikz +*-tikzDictionary + +# listings +*.lol + +# makeidx +*.idx +*.ilg +*.ind +*.ist + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# nomencl +*.nlo + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# easy-todo +*.lod + +# xindy +*.xdy + +# xypic precompiled matrices +*.xyc + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# Kile +*.backup + +# KBibTeX +*~[0-9]* + +# auto folder when using emacs and auctex +/auto/* + +# expex forward references with \gathertags +*-tags.tex \ No newline at end of file diff --git a/README.md b/README.md index dcfcd29..d204af2 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ -# Path Planning +# Hierarchical D* Lite -Hierarchical D* Lite (HD*) is a real-time path planning algorithm for use in unknown environments. It first plans a coarse path, then refines it to improve path quality. +Hierarchical D* Lite (HD*) is a real-time path planning algorithm for use in unknown environments. It first plans a coarse path, then refines it to improve path quality. This algorithm was developed by Matt Solomon under Dr. Huan Xu at the University of Maryland. -## How to Use : +## Getting Started -To run HD\*, run main_hdstar.py. Run main_dstar.py if you want to use normal D\* Lite (this is good for finding the optimal path on a given map). Once either of those functions are run, it imports config_user.py, config_program.py, and all_functions.py +To run HD\*, run main_hdstar.py. Alternativel, run main_dstar.py if you want to use normal D\* Lite (this is good for finding the optimal path on a given map). Be sure that you are using Python 2. + +## User Settings In config_user.py, you can modify the settings that affect oepration. Each variable is explained below. - `testingMode`: Suppresses figure generation, outputs from main_hdstar.py (or main_dstar.py) are not printed. - `makeFigure`: When `True`, the final path and environment is displayed upon completion. -- `makeMovie`: When `True`, the figure of then current path and environment is saved after each iteration, and at the end combined to create a movie. +- `makeMovie`: When `True`, the figure of then current path and environment is saved after each iteration, and at the end combined to create a movie. - `startWithEmptyMap`: When `True`, the agent (UAV) has no initial knowledge of the environment. When `False`, the agent is aware of the random fixed individual obstacles (FIO) and fixed rectangular obstacles (FRO). Obstacle configuration is explained more later. - `makeRandObs`: When `True`, additional random obstacles are generated during each iteration. - `minObs, maxObs`: Upper and lower bounds on the number of random obstacles generated during each iteration. @@ -44,7 +46,7 @@ In config_user.py, you can modify the settings that affect oepration. Each varia Worth noting is the default approach is to create splines to smooth out the straight line paths to generate more realistic paths. If the splines are not desired, the can be turned off by commenting out `path = fcn.CatmullRomSpline(path)` in main_hdstar.py. When main_hdstar.py is ran, config_user.py is imported. This function sets up obstacles, figures, etc. You generally will not need to edit this function, but there a few things you can change here. -- Modify the approach used to choose the next goal (when there are multiple goals) beginning at the line where `hyp = []` is declared. Currently, the goal with the shortest Euclidean distance from the start location is used. +- Modify the approach used to choose the next goal (when there are multiple goals) beginning at the line where `hyp = []` is declared. Currently, the goal with the shortest Euclidean distance from the start location is used. - If changing this, you also need to change the section beginning at `if len(gl.goals) > 1:` in main_hdstar.py - Under the comment `# Generating random fixed obstacles` is the line `rLoc = fcn.rectObs(newXFixed, newYFixed, newZFixed, 5,5,5)`. The 5,5,5 portion is what configures the fixed random obstacles to be 5x5x5. So modify this line if you want to change those dimensions. - Plot setting can be modified under the comment `# Configure plot settings` @@ -56,3 +58,8 @@ The last imported file is all_functions.py, which contains all the functions nee 3. The distance travelled since the last replan equals half of the refinement distance Regardless of which condition occurs, a new path is planned. The process is repeated until the goal is reached. + +## Authors + +* **Matt Solomon** - *Algorithm design and main developer* - [Github](https://github.com/mds1) + diff --git a/paper/AIAA.cls b/paper/AIAA.cls new file mode 100755 index 0000000..90a2af5 --- /dev/null +++ b/paper/AIAA.cls @@ -0,0 +1,1047 @@ +%% +%% Copyright notice. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~}% +%%% @LaTeX-file{ +%%% version = "x", +%%% date = "0000/00/00", +%%% author = "", +%%% revised by = "" +%%% copyright = "" +%%% address = "", +%%% FAX = "", +%%% email = "", +%%% abstract = "LaTeX Template for AAS journal submissions", +%%% } +\NeedsTeXFormat{LaTeX2e}[1996/12/01]% +\ProvidesClass{AIAA}% +\LoadClass[manuscript]{revtex4}[2001/08/03 v4.0 (http://publish.aps.org/revtex4/ for documentation)] +\def\class@name{revtex4}% +%\DeclareOption*{\PassOptionsToClass{\CurrentOption}{revtex4}}% +\ExecuteOptions{letterpaper,oneside,onecolumn,final}% +\ProcessOptions +\RequirePackage{latexsym}% +\RequirePackage{graphicx}% +\RequirePackage{verbatim}% +\usepackage[T1]{fontenc} +\usepackage{subfigure} % subfigures +\usepackage{array} +\usepackage{bm} +%\usepackage{placeins} % prevent floats from moving too far +%\usepackage{captcont} % allow subfigures to roll over onto next page +%\usepackage{footmisc} % allow footnotes to use symbol instead of number +\usepackage{hhline} % double horizontal line for tables +\usepackage{wrapfig} % wrap text around figures + +\def\normalsize{% + \@setfontsize\normalsize\@xpt{12}% + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \abovedisplayskip + \belowdisplayshortskip \abovedisplayskip + \let\@listi\@listI +}% +\def\small{% + \@setfontsize\small\@ixpt{10.5}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{% + \leftmargin\leftmargini + \topsep 4\p@ \@plus2\p@ \@minus2\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep + }% +}% +\def\footnotesize{% + \@setfontsize\footnotesize\@viiipt{9.5pt}% + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ + \def\@listi{% + \leftmargin\leftmargini + \topsep 3\p@ \@plus\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep + }% +}% +\def\scriptsize{% + \@setfontsize\scriptsize\@viipt\@viiipt +}% +\def\tiny{% + \@setfontsize\tiny\@vpt\@vipt +}% +\def\large{% + \@setfontsize\large\@xiipt{14pt}% +}% +\def\Large{% + \@setfontsize\Large\@xivpt{18pt}% +}% +\def\LARGE{% + \@setfontsize\LARGE\@xviipt{22pt}% +}% +\def\huge{% + \@setfontsize\huge\@xxpt{25pt}% +}% +\def\Huge{% + \@setfontsize\Huge\@xxvpt{30pt}% +}% + \@ifxundefined\twoside@sw{\@booleanfalse\twoside@sw}{}% + \twoside@sw{% + \oddsidemargin -20pt + \evensidemargin -20pt + \marginparwidth 107pt + }{% + \oddsidemargin .15in + \evensidemargin .15in + \marginparwidth 30pt + }% +\marginparsep 6pt +\topmargin -61pt +\headheight 25pt +\headsep 16pt +\topskip 10pt +\footskip 30pt + \textheight = 56pc +\textwidth36pc +\columnsep 1.5pc +\columnseprule 0pt +\footnotesep 1pt +\skip\footins 39pt plus 4pt minus 2pt +\def\footnoterule{\kern-19pt\hrule width.5in\kern18.6pt\relax}% +\floatsep 12pt plus 2pt minus 2pt +\textfloatsep 20pt plus 2pt minus 4pt +\intextsep 12pt plus 2pt minus 2pt +\dblfloatsep 12pt plus 2pt minus 2pt +\dbltextfloatsep 20pt plus 2pt minus 4pt +\@fptop 0pt plus 1fil +\@fpsep 8pt plus 2fil +\@fpbot 0pt plus 1fil +\@dblfptop 0pt plus 1fil +\@dblfpsep 8pt plus 2fil +\@dblfpbot 0pt plus 1fil +\marginparpush 5pt +\parskip 0pt plus 1pt +\parindent 1.5pc +\emergencystretch8\p@ +\partopsep 2pt plus 1pt minus 1pt +\leftmargini 25pt +\leftmarginii 22pt +\leftmarginiii 18.7pt +\leftmarginiv 17pt +\leftmarginv 10pt +\leftmarginvi 10pt +\def\@listI{% + \leftmargin\leftmargini + \parsep 4\p@ plus2\p@ minus\p@ + \topsep 8\p@ plus2\p@ minus4\p@ + \itemsep 4\p@ plus2\p@ minus\p@ +}% +\labelsep 4pt +\def\@listii{% + \leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 4\p@ plus2\p@ minus\p@ + \parsep 2\p@ plus\p@ minus\p@ + \itemsep \parsep +}% +\def\@listiii{% + \leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 2\p@ plus\p@ minus\p@ + \parsep \z@ + \partopsep \p@ plus\z@ minus\p@ + \itemsep \topsep +}% +\def\@listiv{% + \leftmargin\leftmarginiv + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep +}% +\def\@listv{% + \leftmargin\leftmarginv + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep +}% +\def\@listvi{% + \leftmargin\leftmarginvi + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep +}% +%%%%%%%%%%%%%%%% from class file + + + +\def\affils@present@group#1{% + \begingroup + \def\AF@temp{#1}% % 0B13 + \@tempcnta\z@ + \let\AU@opr \undefined % 0B13 + \let\CO@opr \undefined % 0B13 + \def\AF@opr{\@affilID@count\AF@temp\@tempcnta}% 0B13 + \@AAC@list + \@ifnum{\@tempcnta=\z@}{}{% + \begingroup + \frontmatter@above@affilgroup + \set@listcomma@count\@tempcnta + \let\AU@opr \undefined % 0B13 + \let\CO@opr \undefined % 0B13 + \def\AF@opr{\@affilID@match\AF@temp}% + \@AAC@list + \endgroup + \begingroup + \par + \vskip-.5\baselineskip + \frontmatter@above@affiliation + \frontmatter@affiliationfont + \let\\\frontmatter@addressnewline + \@tempcnta\z@ + \@tfor\AF@temp:=#1\do{% + \expandafter\@ifx\expandafter{\z@\AF@temp}{}{% + \advance\@tempcnta\@ne + }% + }% + \@ifnum{\@tempcnta=\tw@}{% + \let\@listcomma\relax + }{}% + \def\after@address{\@listcomma\ \@listand}% + \runinaddress@sw{% + }{% + \tightenlines@sw{% + }{% + \parskip\z@ %space between affilations in grouped mode + }% + \appdef\after@address\par + }% + \let\AFF@opr \@affil@group + \do@affil@fromgroup\@AFF@list#1\relax + \endgroup + }% + \par + \endgroup +}% + + +\def\frontmatter@thefootnote{% + \altaffilletter@sw{\@alph}{\@arabic}\c@footnote +}% + +\def\titleblock@produce{% + \begingroup + \let\footnote\footnote@latex + \let\@makefnmark\@makefnmark@latex + \let\@footnotemark\@footnotemark@latex + \let\thefootnote\frontmatter@thefootnote + \global\c@footnote\z@ + \let\@makefnmark\frontmatter@makefnmark + \frontmatter@setup + \thispagestyle{titlepage}\label{FirstPage}% + \frontmatter@title@produce + \groupauthors@sw{% + \frontmatter@author@produce@group + }{% + \frontmatter@author@produce@script + }% + \frontmatter@RRAPformat{% + \expandafter\produce@RRAP\expandafter{\@date}% + \expandafter\produce@RRAP\expandafter{\@received}% + \expandafter\produce@RRAP\expandafter{\@revised}% + \expandafter\produce@RRAP\expandafter{\@accepted}% + \expandafter\produce@RRAP\expandafter{\@published}% + }% + \frontmatter@abstract@produce + \@pacs@produce\@pacs + \@keywords@produce\@keywords + \par + \frontmatter@finalspace + \endgroup +}% + + +\def\frontmatter@title@produce{% + \begingroup + \frontmatter@title@above + \frontmatter@title@format\LARGE + \@title + \@ifx{\@title@aux\@title@aux@cleared}{}{% + \expandafter\frontmatter@footnote\expandafter{\@title@aux}% + }% + \par +%% \class@warn{Unused short title ignored}% + \frontmatter@title@below + \endgroup +}% + + + +\renewenvironment{abstract}{% + \aftermaketitle@chk{\begin{abstract}}% + \global\setbox\absbox\vbox\bgroup + \color@begingroup + \columnwidth\textwidth + \hsize\columnwidth + \@parboxrestore + \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ + \let\@footnotetext\frontmatter@footnotetext + \minipagefootnote@init + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage + %\frontmatter@abstractheading + %\frontmatter@abstractfont% + \vskip1pc + \bfseries\hskip1pc + \let\footnote\mini@note +}{% + \par + \unskip + \minipagefootnote@here + \@minipagefalse %% added 24 May 89 + \color@endgroup + \egroup +}% + + +\def\frontmatter@abstract@produce{% + \par + \preprintsty@sw{% + \do@output@MVL{% + \vskip\frontmatter@preabstractspace + \vskip200\p@%\@plus1fil + \penalty-200\relax + \vskip-200\p@%\@plus-1fil + }% + }{% + \addvspace{\frontmatter@preabstractspace}% + }% + \begingroup + \dimen@\baselineskip + \setbox\z@\vtop{\unvcopy\absbox}% + \advance\dimen@-\ht\z@\advance\dimen@-\prevdepth + \@ifdim{\dimen@>\z@}{\vskip\dimen@}{}% + \endgroup + \unvbox\absbox + \@ifx{\@empty\mini@notes}{}{\mini@notes\par}% + \addvspace\frontmatter@postabstractspace +}% + +\def\maketitle{% + \@author@finish + \title@column\titleblock@produce + \suppressfloats[t]% + \let\and\relax + \let\affiliation\@gobble + \let\author\@gobble + \let\@AAC@list\@empty + \let\@AFF@list\@empty + \let\@AFG@list\@empty + \let\@AF@join\@AF@join@error + \let\email\@gobble + \let\@address\@empty + \let\maketitle\relax + \let\thanks\@gobble + \titlepage@sw{% + %\vfil + %\clearpage + \vspace*{12pt} + }{}% +}% + +\renewcommand\thetable{\@arabic\c@table} +\def\tablename{Table} +\def\figurename{Fig.} + + +\long\def\@makecaption#1#2{% + \par + \vskip\abovecaptionskip + \begingroup + \small\rmfamily + \sbox\@tempboxa{% + \let\\\heading@cr + {\bf #1 #2}% + }% + \@ifdim{\wd\@tempboxa >\hsize}{% + \begingroup + \samepage + \flushing + \let\footnote\@footnotemark@gobble + {\bf #1 #2}\par + \endgroup + }{% + \global \@minipagefalse + \hb@xt@\hsize{\hfil\unhbox\@tempboxa\hfil}% + }% + \endgroup + \vskip\belowcaptionskip +}% + + +%%%%%%%%%%%% From APS.rtx + +\ifx\undefined\substyle@ext + \def\@tempa{% + \endinput + \GenericWarning{I must be read in by REVTeX! (Bailing out)}% + }% + \expandafter\else + \def\@tempa{}% + \expandafter\fi\@tempa +\def\ao{Appl.\ Opt.\ } +\def\ap{Appl.\ Phys.\ } +\def\apl{Appl.\ Phys.\ Lett.\ } +\def\apj{Astrophys.\ J.\ } +\def\bell{Bell Syst.\ Tech.\ J.\ } +\def\jqe{IEEE J.\ Quantum Electron.\ } +\def\assp{IEEE Trans.\ Acoust.\ Speech Signal Process.\ } +\def\aprop{IEEE Trans.\ Antennas Propag.\ } +\def\mtt{IEEE Trans.\ Microwave Theory Tech.\ } +\def\iovs{Invest.\ Ophthalmol.\ Vis.\ Sci.\ } +\def\jcp{J.\ Chem.\ Phys.\ } +\def\jmo{J.\ Mod.\ Opt.\ } +\def\josa{J.\ Opt.\ Soc.\ Am.\ } +\def\josaa{J.\ Opt.\ Soc.\ Am.\ A } +\def\josab{J.\ Opt.\ Soc.\ Am.\ B } +\def\jpp{J.\ Phys.\ (Paris) } +\def\nat{Nature (London) } +\def\oc{Opt.\ Commun.\ } +\def\ol{Opt.\ Lett.\ } +\def\pl{Phys.\ Lett.\ } +\def\pra{Phys.\ Rev.\ A } +\def\prb{Phys.\ Rev.\ B } +\def\prc{Phys.\ Rev.\ C } +\def\prd{Phys.\ Rev.\ D } +\def\pre{Phys.\ Rev.\ E } +\def\prl{Phys.\ Rev.\ Lett.\ } +\def\rmp{Rev.\ Mod.\ Phys.\ } +\def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.\ } +\def\sjqe{Sov.\ J.\ Quantum Electron.\ } +\def\vr{Vision Res.\ } +\def\@fnsymbol#1{% + \ensuremath{% + \ifcase#1\or + *\or \dagger \or + \ddagger \or \mathsection \or + \mathparagraph\or + **\or \dagger\dagger \or + \ddagger\ddagger \or \mathsection \mathsection \or + \mathparagraph\mathparagraph\or + *{*}*\ignorespaces \or \dagger\dagger\dagger \or + \ddagger\ddagger\ddagger\or \mathsection \mathsection \mathsection \or + \mathparagraph\mathparagraph\mathparagraph\or + \else + \@ctrerr + \fi + }% +}% +\renewenvironment{titlepage}{% + \let\wastwocol@sw\twocolumn@sw + \onecolumngrid + \newpage + \thispagestyle{titlepage}% + \c@page\z@% article sets this to one not zero??? +}{% + \wastwocol@sw{\twocolumngrid}{\newpage}% +}% +\def\frontmatter@abstractheading{% + \preprintsty@sw{% + \begingroup + \centering\large + \abstractname + \par + \endgroup + }{}% +}% +\def\frontmatter@abstractwidth{400\p@}% +\def\frontmatter@abstractfont{% + \small + \parindent1em\relax + \adjust@abstractwidth +}% +\def\adjust@abstractwidth{% + \dimen@\textwidth\advance\dimen@-\frontmatter@abstractwidth + \divide\dimen@\tw@ + \galley@sw{% + \advance\rightskip\tw@\dimen@ + }{% + \advance\leftskip\dimen@ + \advance\rightskip\dimen@ + }% +}% +\appdef\class@documenthook{% + \preprintsty@sw{% + \@ifxundefined\titlepage@sw{\@booleantrue\titlepage@sw}{}% + \def\frontmatter@abstractwidth{\textwidth}% + \def\frontmatter@affiliationfont{\it}% + \let\section\section@preprintsty + \let\subsection\subsection@preprintsty + \let\subsubsection\subsubsection@preprintsty + }{}% + }% +\def\frontmatter@authorformat{% + \skip@\@flushglue + \@flushglue\z@ plus.3\hsize\relax + \centering + \advance\baselineskip\p@ + \parskip11.5\p@\relax + \@flushglue\skip@ +}% +\def\frontmatter@above@affilgroup{% +}% +\def\frontmatter@above@affiliation@script{% + \skip@\@flushglue + \@flushglue\z@ plus.3\hsize\relax + \centering + \@flushglue\skip@ + \addvspace{3.5\p@}% +}% +\def\frontmatter@above@affiliation{% + \preprintsty@sw{}{% + }% +}% +\def\frontmatter@affiliationfont{% + \small\it +}% +\def\frontmatter@collaboration@above{% + \preprintsty@sw{% + }{% + \parskip1.5\p@\relax + }% +}% +\@ifxundefined\groupauthors@sw{% + \clo@groupedaddress +}{}% +\def\frontmatter@setup{% + \normalfont +}% +\def\frontmatter@title@above{\addvspace{6\p@}}% +\def\frontmatter@title@format{\large\bfseries\centering\parskip\z@skip}% +\def\frontmatter@title@below{}% +\def\@author@parskip{3\p@}% +\def\frontmatter@makefnmark{% + \@textsuperscript{% + \normalfont\@thefnmark + }% +}% +\def\frontmatter@authorbelow{% +\addvspace{3\p@}% +}% +\def\frontmatter@RRAP@format{% + \small + \centering + \everypar{\hbox\bgroup(\@gobble@leavemode@uppercase}% + \def\par{\@ifvmode{}{\unskip)\egroup\@@par}}% +}% +\def\punct@RRAP{;\egroup\ \hbox\bgroup}% +\def\@gobble@leavemode@uppercase#1#2{\expandafter\MakeTextUppercase}% +\def\frontmatter@PACS@format{% + \addvspace{11\p@}% + \footnotesize + \adjust@abstractwidth + \parindent\z@ + \parskip\z@skip + \samepage +}% +\def\frontmatter@keys@format{% + \footnotesize + \adjust@abstractwidth + \parindent\z@ + \samepage +}% +\def\ps@titlepage{% + \def\@oddhead{% + \hfill + \produce@preprints\@preprint + }% + \let\@evenhead\@oddhead + \def\@oddfoot{% + \hb@xt@\z@{\byrevtex\hss}% + \hfil + \preprintsty@sw{\thepage}{}% + \quad\checkindate + \hfil + }% + \let\@evenfoot\@oddfoot +}% +\def\byrevtex{\byrevtex@sw{Typeset by REV\TeX}{}}% +\def\produce@preprints#1{% + \preprint@sw{% + \vtop to \z@{% + \def\baselinestretch{1}% + \small + \let\preprint\preprint@count + \count@\z@#1\@ifnum{\count@>\tw@}{% + \hbox{% + \let\preprint\preprint@hlist + #1\setbox\z@\lastbox + }% + }{% + \let\preprint\preprint@cr + \halign{\hfil##\cr#1\crcr}% + \par + \vss + }% + }% + }{}% +}% +\def\preprint@cr#1{#1\cr}% +\def\preprint@count#1{\advance\count@\@ne}% +\def\preprint@hlist#1{#1\hbox{, }}% +\def\@seccntformat#1{\csname the#1\endcsname.\quad}% +\def\@hang@from#1#2#3{#1#2#3}% +\def\section{% + \@startsection + {section}% + {1}% + {\z@}% + {0.8cm \@plus1ex \@minus .2ex}% + {0.5cm}% + {% + \normalfont\small\bfseries + \centering + }% +}% + +\def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}{#3}}% + +%\def\@sect@ltx#1#2#3#4#5#6[#7]#8{% +% \@ifnum{#2>\c@secnumdepth}{% +% \def\H@svsec{\phantomsection}% +% \let\@svsec\@empty +% }{% +% \H@refstepcounter{#1}% +% \def\H@svsec{% +% \phantomsection +% }% +% \protected@edef\@svsec{{#1}}% +% \@ifundefined{@#1cntformat}{% +% \prepdef\@svsec\@seccntformat +% }{% +% \expandafter\prepdef +% \expandafter\@svsec +% \csname @#1cntformat\endcsname +% }% +% }% +% \@tempskipa #5\relax +% \@ifdim{\@tempskipa>\z@}{% +% \begingroup +% \interlinepenalty \@M +% \ifnum#2=1 +% #6{% +% \@ifundefined{@hangfrom@#1}{\@hang@from}{\csname @hangfrom@#1\endcsname}% +% {\hskip#3\relax\H@svsec}{\@svsec}{{#8}}% +% }% +% \else +% #6{% +% \@ifundefined{@hangfrom@#1}{\@hang@from}{\csname @hangfrom@#1\endcsname}% +% {\hskip#3\relax\H@svsec}{\@svsec}{#8}% +% }% +% \fi +% \@@par +% \endgroup +% \@ifundefined{#1mark}{\@gobble}{\csname #1mark\endcsname}{#7}% +% \addcontentsline{toc}{#1}{% +% \@ifnum{#2>\c@secnumdepth}{% +% \protect\numberline{}% +% }{% +% \protect\numberline{\csname the#1\endcsname}% +% }% +% #8}% +% }{% +% \def\@svsechd{% +% #6{% +% \@ifundefined{@runin@to@#1}{\@runin@to}{\csname @runin@to@#1\endcsname}% +% {\hskip#3\relax\H@svsec}{\@svsec}{#8}% +% }% +% \@ifundefined{#1mark}{\@gobble}{\csname #1mark\endcsname}{#7}% +% \addcontentsline{toc}{#1}{% +% \@ifnum{#2>\c@secnumdepth}{% +% \protect\numberline{}% +% }{% +% \protect\numberline{\csname the#1\endcsname}% +% }% +% #8}% +% }% +% }% +% \@xsect{#5}% +%}% + +%\def\@ssect@ltx#1#2#3#4#5#6[#7]#8{% +% \def\H@svsec{\phantomsection}% +% \@tempskipa #5\relax +% \@ifdim{\@tempskipa>\z@}{% +% \begingroup +% \interlinepenalty \@M +% #6{% +% \@ifundefined{@hangfroms@#1}{\@hang@froms}{\csname @hangfroms@#1\endcsname}% +% {\hskip#3\relax\H@svsec}{\MakeTextUppercase{#8}}% +% }% +% \@@par +% \endgroup +% \@ifundefined{#1smark}{\@gobble}{\csname #1smark\endcsname}{#7}% +% \addcontentsline{toc}{#1}{\protect\numberline{}#8}% +% }{% +% \def\@svsechd{% +% #6{% +% \@ifundefined{@runin@tos@#1}{\@runin@tos}{\csname @runin@tos@#1\endcsname}% +% {\hskip#3\relax\H@svsec}{#8}% +% }% +% \@ifundefined{#1smark}{\@gobble}{\csname #1smark\endcsname}{#7}% +% \addcontentsline{toc}{#1}{\protect\numberline{}#8}% +% }% +% }% +% \@xsect{#5}% +%}% + +\def\subsection{% + \@startsection + {subsection}% + {2}% + {\z@}% + {.8cm \@plus1ex \@minus .2ex}% + {.5cm}% + {% + \normalfont\small\bfseries + \centering + }% +}% +\def\subsubsection{% + \@startsection + {subsubsection}% + {3}% + {\z@}% + {.8cm \@plus1ex \@minus .2ex}% + {.5cm}% + {% + \normalfont\small\itshape + \centering + }% +}% +\def\paragraph{% + \@startsection + {paragraph}% + {4}% + {\parindent}% + {\z@}% + {-1em}% + {\normalfont\normalsize\itshape}% +}% +\def\subparagraph{% + \@startsection + {subparagraph}% + {5}% + {\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}% +}% +\def\section@preprintsty{% + \@startsection + {section}% + {1}% + {\z@}% + {0.8cm \@plus1ex \@minus .2ex}% + {0.0001cm}% + {% + \normalfont\small\bfseries\centering + }% +}% +\def\subsection@preprintsty{% + \@startsection + {subsection}% + {2}% + {-\parindent}% + {.8cm \@plus1ex \@minus .2ex}% + {.0001cm}% + {% + \normalfont\small\bfseries + }% +}% +\def\subsubsection@preprintsty{% + \@startsection + {subsubsection}% + {3}% + {\z@}% + {.8cm \@plus1ex \@minus .2ex}% + {.0001cm}% + {% + \normalfont\small\itshape + }% +}% + \@ifxundefined\frontmatter@footnote@produce{% + \let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote + }{}% +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5pt} +\setcounter{tocdepth}{3} +\def\tableofcontents{% + \addtocontents{toc}{\string\tocdepth@munge}% + \print@toc{toc}% + \addtocontents{toc}{\string\tocdepth@restore}% +}% +\def\tocdepth@munge{% + \let\l@section@saved\l@section + \let\l@section\@gobble@tw@ +}% +\def\@gobble@tw@#1#2{}% +\def\tocdepth@restore{% + \let\l@section\l@section@saved +}% +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \begingroup + \set@tocdim@pagenum{#2}% + \parindent \z@ + \rightskip\tocleft@pagenum plus 1fil\relax + \skip@\parfillskip\parfillskip\z@ + \addvspace{2.25em plus\p@}% + \large \bf % + \leavevmode\ignorespaces#1\unskip\nobreak\hskip\skip@ + \hb@xt@\rightskip{\hfil\unhbox\z@}\hskip-\rightskip\hskip\z@skip + \par + \nobreak % + \endgroup +}% +\def\tocleft@{\z@}% +\def\tocdim@min{5\p@}% +\def\l@section{% + \l@@sections{}{section}% Implicit #3#4 +}% +\def\l@f@section{% + \addpenalty{\@secpenalty}% + \addvspace{1.0em plus\p@}% + \bf +}% +\def\l@subsection{% + \l@@sections{section}{subsection}% Implicit #3#4 +}% +\def\l@subsubsection{% + \l@@sections{subsection}{subsubsection}% Implicit #3#4 +}% +\def\l@paragraph#1#2{}% +\def\l@subparagraph#1#2{}% +\let\toc@pre\toc@pre@auto +\let\toc@post\toc@post@auto +\def\listoffigures{\print@toc{lof}}% +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\def\listoftables{\print@toc{lot}}% +\let\l@table\l@figure +\appdef\class@documenthook{% + \@ifxundefined\raggedcolumn@sw{\@booleantrue\raggedcolumn@sw}{}% + \raggedcolumn@sw{\raggedbottom}{\flushbottom}% +}% +\def\tableft@skip@float{\z@ plus\hsize}% +\def\tabmid@skip@float{\@flushglue}% +\def\tabright@skip@float{\z@ plus\hsize}% +\def\array@row@pre@float{\hline\hline\noalign{\vskip\doublerulesep}}% +\def\array@row@pst@float{\noalign{\vskip\doublerulesep}\hline\hline}% +\def\@makefntext#1{% + \def\baselinestretch{1}% + \reset@font + \footnotesize + \leftskip1em + \parindent1em + \noindent\nobreak\hskip-\leftskip + \hb@xt@\leftskip{% + \Hy@raisedlink{\hyper@anchorstart{footnote@\the\c@footnote}\hyper@anchorend}% + \hss\@makefnmark\ + }% + #1% + \par +}% +\prepdef\appendix{% + \par + \let\@hangfrom@section\@hangfrom@appendix + \let\@hangfroms@section\@hangfroms@appendix + \let\@sectioncntformat\@appendixcntformat +}% +\def\@hangfrom@appendix#1#2#3{% + #1% + \@if@empty{#2}{% + \MakeTextUppercase{#3}% + }{% + #2\@if@empty{#3}{}{:\ \MakeTextUppercase{#3}}% + }% +}% +\def\@hangfroms@appendix#1#2{% + #1\MakeTextUppercase{#2}% +}% +\def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}% +\def\appendixesname{APPENDICES}% +\def\appendixname{APPENDIX}% + \bibpunct{[}{]}{,}{n}{}{,}% + \def\bibsection{% + \par + \onecolumngrid@push + \begingroup + % \baselineskip26\p@ + % \bib@device{\textwidth}{245.5\p@}% + \endgroup + \nobreak\@nobreaktrue + %\addvspace{19\p@}% + \par + \onecolumngrid@pop + }% +\def\bib@device#1#2{% +\hb@xt@#1{% + \hfil + \phantomsection + \addcontentsline {toc}{section}{\protect\numberline{}\refname}% + \hb@xt@#2{% + \skip@\z@\@plus-1fil\relax + \leaders\hrule height.25 \p@ depth.25 \p@ \hskip\z@\@plus1fil +\hskip\skip@ +\hskip\z@\@plus0.125fil\leaders\hrule height.375\p@ depth.375\p@ \hskip\z@\@plus0.75fil \hskip\z@\@plus0.125fil +\hskip\skip@ +\hskip\z@\@plus0.25 fil\leaders\hrule height.5 \p@ depth.5 \p@ \hskip\z@\@plus0.5 fil \hskip\z@\@plus0.25 fil +\hskip\skip@ +\hskip\z@\@plus0.375fil\leaders\hrule height.625\p@ depth.625\p@ \hskip\z@\@plus0.25fil \hskip\z@\@plus0.375fil + }% +\hfil +}% +}% +\let\bibpreamble\@empty +\bibsep\z@\relax +\def\newblock{\ }% + \def\bibfont{% + \small + }% +\renewenvironment{theindex}{% + \columnseprule \z@ + \columnsep 35\p@ + \c@secnumdepth-\maxdimen + \onecolumngrid@push + \section{\indexname}% + \thispagestyle{plain}% + \parindent\z@ + \parskip\z@ plus.3\p@\relax + \let\item\@idxitem + \onecolumngrid@pop +}{% +}% +\def\@idxitem{\par\hangindent 40\p@} +\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}} +\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}} +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} +\def\journal@pra{pra}% +\def\journal@prb{prb}% +\def\journal@prc{prc}% +\def\journal@prd{prd}% +\def\journal@pre{pre}% +\def\journal@prl{prl}% +\def\journal@prstab{prstab}% +\def\journal@rmp{rmp}% +\@ifx{\@journal\journal@pra}{% +}{}% +\@ifx{\@journal\journal@prb}{% + \@ifxundefined\bibnotes@sw{\@booleantrue\bibnotes@sw}{}% + \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}% + \def\@onlinecite#1{\begingroup\let\@cite\NAT@citenum\citealp{#1}\endgroup}% + \appdef\class@documenthook{% + \@ifxundefined\place@bibnumber{% + \let\place@bibnumber\place@bibnumber@sup + }{}% + }% +}{}% +\@ifx{\@journal\journal@prc}{% +}{}% +\@ifx{\@journal\journal@prd}{% +}{}% +\@ifx{\@journal\journal@pre}{% +}{}% +\@ifx{\@journal\journal@prl}{% + \@ifxundefined\bibnotes@sw{\@booleantrue\bibnotes@sw}{}% + \@booleanfalse\acknowledgments@sw + \def\bibsection{% + \par + \begingroup + \baselineskip26\p@ + \bib@device{\hsize}{72\p@}% + \endgroup + \nobreak\@nobreaktrue + \addvspace{19\p@}% + }% + \@ifxundefined\lengthcheck@sw{\@booleanfalse\lengthcheck@sw}{}% + \lengthcheck@sw{% + \RequirePackage{times}% + }{% + }% + \c@secnumdepth=-\maxdimen + \appdef\set@typesize@hook{% + \@ifnum{\@pointsize=10\relax}{% + \lengthcheck@sw{% + \def\large{% + \@setfontsize\large{12.5}{14\p@}% + }% + \def\normalsize{% + \@setfontsize\normalsize{10.5}\@xiipt + \abovedisplayskip 6\p@ \@plus6\p@ \@minus5\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \abovedisplayskip + \belowdisplayshortskip \abovedisplayskip + \let\@listi\@listI + }% + \def\small{% + \@setfontsize\small{9.5}\@xipt + \abovedisplayskip 5\p@ \@plus5\p@ \@minus4\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \abovedisplayskip + \belowdisplayshortskip \abovedisplayskip + \let\@listi\@listI + }% + \DeclareMathSizes{12.5}{12.5}{9}{6}% + \DeclareMathSizes{10.5}{10.5}{7.5}{5}% + \DeclareMathSizes{9.5}{9.5}{7.0}{5}% + }{% + \def\normalsize{% + \@setfontsize\normalsize\@xpt\@xiipt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \abovedisplayskip + \belowdisplayshortskip \abovedisplayskip + \let\@listi\@listI + }% + }% + }{}% + }% + \@ifnum{\@pointsize=10\relax}{% + \textheight = 694.0\p@ + }{}% +}{}% +\@ifx{\@journal\journal@prstab}{% +}{}% +\@ifx{\@journal\journal@rmp}{\input{\@journal\substyle@ext}}{}% +\@ifxundefined\footinbib@sw{\@booleantrue\footinbib@sw}{}% +\appdef\class@documenthook{% + \@ifxundefined\place@bibnumber{% + \let\place@bibnumber\place@bibnumber@inl + }{}% + \@ifxundefined\@bibstyle{% + \def\@bibstyle{apsrev}% + }{}% +}% + +\def\baselinestretch{2}% For double spacing + + +\endinput +%% +%% End of file `AIAA.cls'. diff --git a/paper/bibtex_journal.bib b/paper/bibtex_journal.bib new file mode 100644 index 0000000..49321c5 --- /dev/null +++ b/paper/bibtex_journal.bib @@ -0,0 +1,721 @@ +@Article{dstar1, + author = {Sven Koenig and Maxim Likhachev}, + title = {Fast Replanning for Navigation in Unknown Terrain}, + journal = {IEEE Transactions On Robotics}, + year = 2002, + volume = 21, + number = 3, + pages = {354-363}, + note = {} +} + +@Article{MTdstar, + author = {Xiaoxun Sun and William Yeoh and Sven Koenig}, + title = {Moving Target D* Lite}, + journal = {Proceedings of 9th International Conference on Autonomous Agents and Multiagent Systems (AAMAS 2010)}, + year = 2010, + volume = + number = + pages = {67-74}, + note = {} +} + +@Article{directColl, + author = {Brian R. Geiger and Joseph F. Horn and Gregory L. Sinsley and James A. Ross and Lyle N. Long and and Albert F. Niessner}, + title = {Flight Testing a Real-Time Direct Collocation Path Planner}, + journal = {Journal of Guidance, Control, and Dynamics}, + year = 2008, + volume = 31 + number = 6 + pages = {1575-1586}, + note = {} +} + +@InProceedings{circularAvoid, + author = {Jeffery Saunders and Randal Beard and Tim McLain}, + title = {Obstacle Avoidance Using Circular Paths}, + booktitle = {AIAA Guidance, Navigation and Control Conference and Exhibit}, + year = 2007, + publisher = {}, + address = {Hilton Head, South Carolina}, + pages = {} +} + +@Article{bspline, + author = {Dongwon Jung and Panagiotis Tsiotras}, + title = {On-Line Path Generation for Small Unmanned Aerial Vehicles Using B-Spline Path Templates}, + journal = {Journal of Guidance, Control, and Dynamics}, + year = 2013, + volume = 36 + number = 6 + pages = {1642-1653}, + note = {} +} + + +@InProceedings{covPlanning, + author = {Sooho Park and Han-Lim Choi and Nicholas Roy and Jonathan P. How}, + title = {Learning covariance dynamics for path planning of UAV sensors in a large-scale dynamic environment}, + booktitle = {AIAA Guidance, Navigation, and Control Conference}, + year = 2009, + publisher = {}, + address = {Chicago, Illinois}, + pages = {} +} + +@InProceedings{IRTT, + author = {Daniel Levine and Brandon Luders and Jonathan P. How}, + title = {Information-Rich Path Planning with General Constraints using Rapidly-exploring Random Trees}, + booktitle = {AIAA Infotech@Aerospace 2010}, + year = 2010, + publisher = {}, + address = {Atlanta, Georgia}, + pages = {} +} + +@InProceedings{predRRT, + author = {Jeremiah Farinella and Clayton Lay and Subodh Bhandari}, + title = {UAV Collision Avoidance using a Predictive Rapidly-Exploring Random Tree (RRT)}, + booktitle = {AIAA Infotech @ Aerospace}, + year = 2016, + publisher = {}, + address = {San Diego, California}, + pages = {} +} + +@InProceedings{bezierAvoidance, + author = {Syed Bilal Mehdi and Ronald Choe and Venanzio Cichella and Naira Hovakimyan}, + title = {Collision Avoidance through Path Replanning using Bezier Curves}, + booktitle = {AIAA Guidance, Navigation, and Control Conference}, + year = 2015, + publisher = {}, + address = {Kissimmee, Florida}, + pages = {} +} + +@TechReport{field_dstar, + author = {Dave Ferguson and Anthony Stentz}, + title = {The Field D* Algorithm for Improved Path Planning and Replanning in Uniform and Non-Uniform Cost Environments}, + institution = {Robotics Institute, Carnegie Mellon University}, + type = {CMU-TR-RI-05-19}, + year = 2005, + address = {Pittsburgh, PA}, + month = June +} + + +@Article{hpa, + author = {Adi Botea and Martin Müller and Jonathan Schaeffer}, + title = {Near Optimal Hierarchical Path-Finding}, + journal = {Journal of Game Development}, + year = 2004, + volume = 1 + number = + pages = {7-28}, + note = {} +} + + + +@Article{poten_field, + author = {Oussama Khatib}, + title = {Real-time obstacle avoidance for manipulators and mobile robots}, + journal = {International Journal of Robotics Research}, + year = 1986, + volume = 5 + number = 1 + pages = {90-98}, + note = {} +} + + +@Article{astar, + author = {Peter E. Hart and Nils J. Nilsson and Bertram Raphael}, + title = {A Formal Basis for the Heuristic Determination of Minimum Cost Paths}, + journal = {IEEE Transactions on Systems Science and Cybernetics}, + year = 1968, + volume = 2 + number = + pages = {100-107}, + note = {} +} + +@Article{fib, + author = {Michael L. Fredman and Robert Sedgewick and Daniel D. Sleator and Robert E. Tarjan}, + title = {The Pairing Heap: A New Form of Self-Adjusting Heap}, + journal = {Algorithmica}, + year = 1986, + volume = 1 + number = + pages = {111-129}, + note = {} +} + +@Article{astarHeur, + author = {Rina Dechter, Judea Pearl}, + title = {Generalized best-first search strategies and the optimality of A*}, + journal = {Journal of the ACM}, + year = 1985, + volume = 32 + number = 3 + pages = {505-536}, + note = {} +} + +@Article{truncated, + author = {Sandip Aine and Maxim Likhachev}, + title = {Truncated incremental search}, + journal = {Artificial Intelligence}, + year = 2016, + volume = 234 + number = + pages = {49-77}, + note = {} +} + + +@PhdThesis{ppo, + author = {Ross A. Knepper}, + title = {On the Fundamental Relationships Among Path Planning Alternatives}, + school = {Carnegie Mellon University}, + year = 2011, + address = {Pittsburgh, PA, USA}, + month = June, + annote = { } +} + + +@PhdThesis{phd_planning, + author = {Elizabeth Murphy}, + title = {Planning and Exploring Under Uncertainty}, + school = {University of Oxford}, + year = 2010, + address = {Somerville College, Oxford, England}, + month = , + annote = { } +} + + +@Book{vis, + author = {Howie Choset and Kevin M. Lynch and Seth Hutchinson and George A Kantor and Wolfram Burgard and Lydia E. Kavraki and Sebastian Thrun}, + title = {Principles of Robot Motion: Theory, Algorithms, and Implementations}, + publisher = {MIT Press}, + year = 2005 +} + +@Book{lavalle, + author = {Steven LaValle}, + title = {Planning Algorithms}, + publisher = {Cambridge University Press}, + year = 2006 +} + + +@Book{heuristicrule, + author = {Judea Pearl}, + title = {Heuristics: Intelligent Search Strategies for Computer Problem Solving}, + publisher = {Addison-Wesley}, + year = 1984 +} + + +@Book{intro_algs, + author = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest and Clifford Stein}, + title = {Introduction to Algorithms}, + publisher = {MIT Press}, + year = 2009 +} + + +@book{metricplanning, + author = {Robin R. Murphy}, + title = {Introduction to AI Robotics}, + year = {2000}, + isbn = {0262133830}, + edition = {1st}, + publisher = {MIT Press}, + address = {Cambridge, MA, USA}, +} + + +@InProceedings{lazytheta, + author = {Alex Nash and Sven Koenig and Craig Tovey}, + title = {Lazy Theta*: Any-Angle Path Planning and Path Length Analysis in 3D}, + booktitle = {AAAI Conference on Artificial Intelligence}, + year = 2010, + publisher = {}, + address = {}, + pages = {} +} + +@InProceedings{RRTnew, + author = {Alexandre Boeuf and Juan Cortés and Rachid Alami and Thierry Siméon}, + title = {Enhancing Sampling-Based Kinodynamic Motion Planning for Quadrotors}, + booktitle = {2015 {IEEE/RSJ} International Conference on Intelligent Robots and Systems, {IROS} 2015}, + year = Hamburg, Germany, September 28 - October 2, 2015, + publisher = {}, + address = {}, + pages = {} + +} + + +@InProceedings{rrt_cmu, + author = {James Bruce and Manuela Veloso}, + title = {Real-Time Randomized Path Planning for Robot Navigation}, + booktitle = {Proceedings of IROS-2002}, + year = 2002, + publisher = {}, + address = {Switzerland}, + pages = {} +} + +@InProceedings{splines, + author = {Cem Yuksel and Scott Schaefer and John Keyser}, + title = {On the Parameterization of Catmull-Rom Curves}, + booktitle = {2009 SIAM/ACM Joint Conference on Geometric and Physical Modeling}, + year = 2009, + publisher = {ACM}, + address = {New York, NY, USA}, + pages = {47-53} +} + +@InProceedings{jps, + author = {Daniel Harabor and Alban Grastien}, + title = {Online Graph Pruning for Pathfinding on Grid Maps}, + booktitle = {Proceedings of the Twenty-Fifth AAAI Conference on Artificial Intelligence}, + year = 2011, + publisher = {}, + address = {}, + pages = {} +} + +@InProceedings{poten_field2, + author = {Ding Fu-guang and Jiao Peng and Bian Xin-qian and Wang Hong-jian}, + title = {AUV Local Path Planning Based on Virtual Potential Field}, + booktitle = {Proceedings of the IEEE International Conference on Mechatronics \& Automation}, + year = 2005, + publisher = {}, + address = {}, + pages = {} +} + +@InProceedings{alg_comparison, + author = {Sven Koenig}, + title = {A Comparison of Fast Search Methods for Real-Time Situated Agents}, + booktitle = {Proceedings of the International Joint Conference on Autonomous Agents and Multiagent Systems (AAMAS)}, + year = 2004, + publisher = {}, + address = {}, + pages = {864-871} +} + + + @Article{poten_field_noise, + author = {Luciano C. A. Pimenta and Alexandre R. Fonseca and Guilherme A. S. Pereira and Renato C. Mesquita and Elson J. Silva and Walmir M. Caminhas and Mario F. M. Campos}, + title = {Robot Navigation Based on Electrostatic Field Computation}, + journal = {IEEE Transactions on Magnetics}, + year = 2006, + volume = 42 + number = 4 + pages = {1459-1462}, + note = {} +} + + + +@InProceedings{3dfield, + author = {Joseph Carsten and Dave Ferguson and Anthony Stentz}, + title = {3D Field D*: Improved Path Planning and Replanning in Three Dimensions}, + booktitle = {International Conference on Intelligent Robots and Systems}, + year = 2006, + publisher = {}, + address = {}, + pages = {} +} + +@InProceedings{orig_dstar, + author = {Anthony Stentz}, + title = {The Focussed D* Algorithm for Real-Time Replanning}, + booktitle = {Proceedings of the 14th International Joint Conference on Artificial Intelligence}, + year = 1995, + publisher = {}, + address = {}, + pages = {} +} + + @Article{lineofsight, + author = {J. E. Bresenham}, + title = {Algorithm for computer control of a digital plotter}, + journal = {IBM Systems Journal}, + year = 1965, + volume = 4 + number = 1 + pages = {25-30}, + note = {} +} + + + @Article{vis_orig, + author = {Tomás Lozano-Pérez and Michael A. Wesley}, + title = {An algorithm for planning collision-free paths among polyhedral obstacles}, + journal = {Communications of the ACM}, + year = 1978, + volume = 22 + number = + pages = {560-570}, + note = {} +} + + + @Article{thetastar, + author = {Kenny Daniel and Alex Nash and Sven Koenig and Ariel Felner}, + title = {Theta*: Any-Angle Path Planning on Grids}, + journal = {Journal of Artificial Intelligence Research}, + year = 2010, + volume = 39 + number = + pages = {533-579}, + note = {} +} + + +@InCollection{gameproggems, + author = {Steve Rabin}, + title = {A* Aesthetic Optimizations}, + booktitle = {Game Programming Gems}, + year = 2000, + edition = {}, + publisher = {Charles River Media}, + address = {}, + volume = , + pages = {264-271} + } + + + + +@InProceedings{jps, + author = {Daniel Harabor and Alban Grastien}, + title = {Online Graph Pruning for Pathfinding on Grid Maps}, + booktitle = {AAAI Conference on Artificial Intelligence}, + year = 2011, + publisher = {}, + address = {}, + pages = {} +} + + +@InProceedings{rrt_comaparison, + author = {Alexandre Boeuf and Juan Cortés and Rachid Alami and Thierry Siméon}, + title = {Enhancing Sampling-Based Kinodynamic Motion Planning for Quadrotors}, + booktitle = {IEEE/RSJ International Conference on Intelligent Robots and Systems}, + year = 2015, + publisher = {}, + address = {}, + pages = {} +} + + +@Misc{amit, + author = {Amit Patel}, + title = {Amit's Game Programming Information}, + howpublished = {available online at \url{http://theory.stanford.edu/~amitp/GameProgramming/}}, + year = 2000, + month = +} + + + @Article{mts, + author = {Toru Ishida and Richrd Korf}, + title = {Moving Target Search}, + journal = {Proceedings of International Joint Conference in Artificial Intelligence}, + year = 1991, + volume = + number = + pages = {204-211}, + note = {} +} + + + @Article{realtimeedge, + author = {Cagatay Undeger and Faruk Polat}, + title = {Real-Time Edge Follow: A Real-Time Path Search Approach}, + journal = {IEEE Transactions on Systems, Man, and Cybernetics: Part C}, + year = 2007, + volume = 37 + number = 5 + pages = {860-872}, + note = {} +} + + @Article{quadtrees, + author = {Hanan Samet}, + title = {An Overview of Quadtrees, Octrees, and Related Hierarchical Data Structures}, + journal = {NATO ASI Series}, + year = 1988, + volume = + number = + pages = {}, + note = {} +} + + + @Article{rts2, + author = {Richard E. Korf}, + title = {Real-Time Heuristic Search}, + journal = {Artificial Intelligence}, + year = 1990, + volume = 42 + number = 2-3 + pages = {189-211}, + note = {} +} + + +@InProceedings{rts1, + author = {Richard E. Korf}, + title = {Real-Time Heuristic Search: First Results}, + booktitle = {AAAI-87 Proceedings}, + year = 1987, + publisher = {AAAI}, + address = {}, + pages = {} +} + + +@InProceedings{framed_quadtrees1, + author = {Alex Yahja and Anthony Stentz and Sanjiv Singh and and Barry L. Brumitt}, + title = {Framed-Quadtree Path Planning for Mobile Robots Operating in Sparse Environments}, + booktitle = {Proceedings, IEEE Conference on Robotics and Automation}, + year = 1998, + publisher = {}, + address = {Leuven, Belgium}, + pages = {} +} + + + + + + + + + + +@InCollection{blottner:70cp, + author = {F. G. Blottner}, + title = {Prediction of Electron Density in the Boundary Layer + of Entry Vehicles with Ablation}, + booktitle = {The Entry Plasma Sheath and Its Effects}, + type = {NASA SP--252}, + volume = 1, + year = 1970, + month = oct, + pages = {219--240} +} + +@InProceedings{wirin:90cp, + author = {W. B. Wirin}, + title = {Space Debris 1989}, + booktitle = {Proceedings of the Thrity-Second Colloquium + on the Law of Outer Space}, + year = 1990, + publisher = {AIAA}, + address = {Wahington, DC}, + pages = {184--196} +} + + +@TechReport{miner:75ncr, + author = {E. W. Miner and C. H. Lewis}, + title = {Hypersonic Ionizing Air Viscous Shock-Layer Flows + over Nonanlytic Blunt Bodies}, + year = 1975, + type = {NASA CR--2250}, + month = may +} + +@TechReport{bhutta:90cp, + author = {B. A. Bhutta and C. H. Lewis}, + title = {Aerothermodynamic Performance of 3-D and Bent-Nose RVs + Hypersonic Conditions}, + year = 1990, + type = {AIAA Paper 90--3068}, + month = aug +} + +@InCollection{sutton:85ar, + author = {K. Sutton}, + title = {Air Radiation Revisted}, + booktitle = {Thermal Design of Aeroassisted Orbital Transfer Vehicles}, + publisher = {AIAA}, + year = 1985, + editor = {H. F. Nelson}, + volume = 96, + type = {Progress in Astronautics and Aeronautics}, + address = {New York}, + pages = {419--441} +} + +@TechReport{anon:53, + author = {Anon.}, + title = {Equations, Tables, and Charts for Compressible Flow}, + year = 1953, + type = {NACA Rept.~1135} +} + +@Misc{moss:90pc, + author = {J. N. Moss}, + howpublished = {private communication, + NASA Langley Research Center, + Hampton, VA}, + year = 1990, + month = jun +} + +@Book{tufte:83bk, + author = {Edward R. Tufte}, + title = {The Visual Display of Quantitative Information}, + publisher = {Graphics Press}, + year = 1983 +} + +@PhdThesis{thoman:66phd, + author = {David Charles Thoman}, + title = {Numerical Solutions of Time Dependent Two Dimensional + Flow of a Viscous, Incompressible Fluid Over + Stationary and Rotating Cylinders}, + school = {University of Notre Dame}, + year = 1966, + address = {Indiana}, + month = aug, + annote = { example of viscous timestep restriction, cell Re } +} + + + + + + + @Article{XXXXX, + author = {}, + title = {}, + journal = {}, + year = , + volume = + number = + pages = {}, + note = {} +} + +@Article{bezierPlanning, + author = {Ronald Choe and Javier Puig-Navarro and Venanzio Cichella and Enric Xargay and Naira Hovakimyan}, + title = {Cooperative Trajectory Generation Using Pythagorean Hodograph Bezier Curves}, + journal = {AIAA Journal of Guidance, Control, and Dynamics}, + year = 2016, + volume = 39 + number = 8 + pages = {1744-1763}, + note = {} +} + +@Article{pseudospec, + author = {Qi Gong and L. R. Lewis and I. Michael Ross}, + title = {Pseudospectral Motion Planning for Autonomous Vehicles}, + journal = {AIAA Journal of Guidance, Control, and Dynamics}, + year = 2009, + volume = 32 + number = 3 + pages = {1039-1045}, + note = {} +} + +@Article{pseudospec_o1, + author = {Fariba Fahroo and I. Michael Ross}, + title = {Costate Estimation by a Legendre Pseudospectral Method}, + journal = {AIAA Journal of Guidance, Control, and Dynamics}, + year = 2001, + volume = 24 + number = 2 + pages = {270-277}, + note = {} +} + +@Article{pseudospec_o2, + author = {Fariba Fahroo and I. Michael Ross}, + title = {Direct Trajectory Optimization by a Chebyshev Pseudospectral Method}, + journal = {AIAA Journal of Guidance, Control, and Dynamics}, + year = 2002, + volume = 25 + number = 1 + pages = {160-166}, + note = {} +} + +@Article{pseudospec_o3, + author = {Qi Gong and I. Michael Ross and Fariba Fahroo}, + title = {Costate Estimation by a Chebyshev Pseudospectral Method}, + journal = {AIAA Journal of Guidance, Control, and Dynamics}, + year = 2010, + volume = 33 + number = 2 + pages = {623-628}, + note = {} +} + +@Article{prm, + author = {Lydia E. Kavralu and Petr Svestka and Jean-Claude Latombe and Mark H. Overmars}, + title = {Probabilistic Roadmaps for Path Planning in High-Dimensional Configuration Spaces}, + journal = {IEEE Transactions on Robotics and Automation}, + year = 1996, + volume = 12 + number = 4 + pages = {566-580}, + note = {} +} + +@Article{esp, + author = {David Hsu and Robert Kindel and Jean-Claude Latombe and Stephen Rock}, + title = {Randomized Kinodynamic Motion Planning with Moving Obstacles}, + journal = {The International Journal of Robotics Research}, + year = 2002, + volume = 21 + number = 3 + pages = {233-255}, + note = {} +} + +@Article{pf1, + author = {Ismael Lopez and Colin R. Mclnnes1}, + title = {Autonomous Rendezvous Using Artificial Potential Function Guidance}, + journal = {AIAA Journal of Guidance, Control, and Dynamics}, + year = 1995, + volume = 18 + number = 2 + pages = {237-241}, + note = {} +} + +@Article{pf2, + author = {David A. Spencer}, + title = {Automated Trajectory Control Using Artificial Potential Functions to Target Relative Orbits}, + journal = {AIAA Journal of Guidance, Control, and Dynamics}, + year = 1995, + volume = 39 + number = 9 + pages = {2142-2148}, + note = {} +} + + +@Article{rrt1, + author = {Brandon Luders and Aaron Ellertson and Jonathan P. How}, + title = {Wind Uncertainty Modeling and Robust Trajectory Planning for Autonomous Parafoils}, + journal = {AIAA Journal of Guidance, Control, and Dynamics}, + year = 2016, + volume = 39 + number = 7 + pages = {1614-1630}, + note = {} +} diff --git a/paper/correctionLitReview/Collision Avoidance through Path Replanning using Bezier Curves.pdf b/paper/correctionLitReview/Collision Avoidance through Path Replanning using Bezier Curves.pdf new file mode 100644 index 0000000..9d4dc82 Binary files /dev/null and b/paper/correctionLitReview/Collision Avoidance through Path Replanning using Bezier Curves.pdf differ diff --git a/paper/correctionLitReview/Flight Testing a Real-Time Direct Collocation Path Planner.pdf b/paper/correctionLitReview/Flight Testing a Real-Time Direct Collocation Path Planner.pdf new file mode 100644 index 0000000..b3b0c48 Binary files /dev/null and b/paper/correctionLitReview/Flight Testing a Real-Time Direct Collocation Path Planner.pdf differ diff --git a/paper/correctionLitReview/Information-rich Path Planning with General Constraints using Rapidly-exploring Random Trees.pdf b/paper/correctionLitReview/Information-rich Path Planning with General Constraints using Rapidly-exploring Random Trees.pdf new file mode 100644 index 0000000..cec5836 Binary files /dev/null and b/paper/correctionLitReview/Information-rich Path Planning with General Constraints using Rapidly-exploring Random Trees.pdf differ diff --git a/paper/correctionLitReview/Learning covariance dynamics for path planning of UAV sensors in a large-scale dynamic environment.pdf b/paper/correctionLitReview/Learning covariance dynamics for path planning of UAV sensors in a large-scale dynamic environment.pdf new file mode 100644 index 0000000..0174734 Binary files /dev/null and b/paper/correctionLitReview/Learning covariance dynamics for path planning of UAV sensors in a large-scale dynamic environment.pdf differ diff --git a/paper/correctionLitReview/Obstacle Avoidance Using Circular Paths.pdf b/paper/correctionLitReview/Obstacle Avoidance Using Circular Paths.pdf new file mode 100644 index 0000000..4526adf Binary files /dev/null and b/paper/correctionLitReview/Obstacle Avoidance Using Circular Paths.pdf differ diff --git a/paper/correctionLitReview/On-line Path Generation for Small Unmanned Aerial Vehicles Using B-Spline Path Templates.pdf b/paper/correctionLitReview/On-line Path Generation for Small Unmanned Aerial Vehicles Using B-Spline Path Templates.pdf new file mode 100644 index 0000000..3b2546b Binary files /dev/null and b/paper/correctionLitReview/On-line Path Generation for Small Unmanned Aerial Vehicles Using B-Spline Path Templates.pdf differ diff --git a/paper/correctionLitReview/Trajectory Generation using Spatial Pythagorean Hodograph Bezier Curves.pdf b/paper/correctionLitReview/Trajectory Generation using Spatial Pythagorean Hodograph Bezier Curves.pdf new file mode 100644 index 0000000..a52a95f Binary files /dev/null and b/paper/correctionLitReview/Trajectory Generation using Spatial Pythagorean Hodograph Bezier Curves.pdf differ diff --git a/paper/correctionLitReview/UAV Collision Avoidance using a Predictive Rapidly-Exploring Random Tree (RRT).pdf b/paper/correctionLitReview/UAV Collision Avoidance using a Predictive Rapidly-Exploring Random Tree (RRT).pdf new file mode 100644 index 0000000..93b59e5 Binary files /dev/null and b/paper/correctionLitReview/UAV Collision Avoidance using a Predictive Rapidly-Exploring Random Tree (RRT).pdf differ diff --git "a/paper/correctionLitReview2/Cooperative Trajectory Generation Using Pythagorean Hodograph B\303\251zier Curves.pdf" "b/paper/correctionLitReview2/Cooperative Trajectory Generation Using Pythagorean Hodograph B\303\251zier Curves.pdf" new file mode 100644 index 0000000..ebc60fa Binary files /dev/null and "b/paper/correctionLitReview2/Cooperative Trajectory Generation Using Pythagorean Hodograph B\303\251zier Curves.pdf" differ diff --git a/paper/correctionLitReview2/On-Line Path Generation for Unmanned Aerial Vehicles Using B-Spline Path Templates.pdf b/paper/correctionLitReview2/On-Line Path Generation for Unmanned Aerial Vehicles Using B-Spline Path Templates.pdf new file mode 100644 index 0000000..2af4da5 Binary files /dev/null and b/paper/correctionLitReview2/On-Line Path Generation for Unmanned Aerial Vehicles Using B-Spline Path Templates.pdf differ diff --git a/paper/correctionLitReview2/Pseudospectral Motion Planning for Autonomous Vehicles.pdf b/paper/correctionLitReview2/Pseudospectral Motion Planning for Autonomous Vehicles.pdf new file mode 100644 index 0000000..40698a2 Binary files /dev/null and b/paper/correctionLitReview2/Pseudospectral Motion Planning for Autonomous Vehicles.pdf differ diff --git a/paper/images/change_heuristicScale.pdf b/paper/images/change_heuristicScale.pdf new file mode 100644 index 0000000..eccb313 Binary files /dev/null and b/paper/images/change_heuristicScale.pdf differ diff --git a/paper/images/change_heuristicScale2.pdf b/paper/images/change_heuristicScale2.pdf new file mode 100644 index 0000000..da5f3e2 Binary files /dev/null and b/paper/images/change_heuristicScale2.pdf differ diff --git a/paper/images/change_mapsize.pdf b/paper/images/change_mapsize.pdf new file mode 100644 index 0000000..2a8981e Binary files /dev/null and b/paper/images/change_mapsize.pdf differ diff --git a/paper/images/change_obstacleDensity.pdf b/paper/images/change_obstacleDensity.pdf new file mode 100644 index 0000000..057a001 Binary files /dev/null and b/paper/images/change_obstacleDensity.pdf differ diff --git a/paper/images/change_timeLimit.pdf b/paper/images/change_timeLimit.pdf new file mode 100644 index 0000000..ea7c98c Binary files /dev/null and b/paper/images/change_timeLimit.pdf differ diff --git a/paper/images/field_path.pdf b/paper/images/field_path.pdf new file mode 100644 index 0000000..e9e8888 Binary files /dev/null and b/paper/images/field_path.pdf differ diff --git a/paper/images/hpa_succ.pdf b/paper/images/hpa_succ.pdf new file mode 100644 index 0000000..06b9b48 Binary files /dev/null and b/paper/images/hpa_succ.pdf differ diff --git a/paper/images/jps.png b/paper/images/jps.png new file mode 100644 index 0000000..125a17e Binary files /dev/null and b/paper/images/jps.png differ diff --git a/paper/images/maps.pptx b/paper/images/maps.pptx new file mode 100644 index 0000000..0f294ec Binary files /dev/null and b/paper/images/maps.pptx differ diff --git a/paper/images/photo_MatthewSolomon.jpg b/paper/images/photo_MatthewSolomon.jpg new file mode 100644 index 0000000..b9c24d1 Binary files /dev/null and b/paper/images/photo_MatthewSolomon.jpg differ diff --git a/paper/images/photo_Xu.jpg b/paper/images/photo_Xu.jpg new file mode 100644 index 0000000..c290ac1 Binary files /dev/null and b/paper/images/photo_Xu.jpg differ diff --git a/paper/images/refinement/step1 copy.png b/paper/images/refinement/step1 copy.png new file mode 100644 index 0000000..5395a7a Binary files /dev/null and b/paper/images/refinement/step1 copy.png differ diff --git a/paper/images/refinement/step1.png b/paper/images/refinement/step1.png new file mode 100644 index 0000000..58096bd Binary files /dev/null and b/paper/images/refinement/step1.png differ diff --git a/paper/images/refinement/step2 copy.png b/paper/images/refinement/step2 copy.png new file mode 100644 index 0000000..8388da9 Binary files /dev/null and b/paper/images/refinement/step2 copy.png differ diff --git a/paper/images/refinement/step2.png b/paper/images/refinement/step2.png new file mode 100644 index 0000000..c3b0351 Binary files /dev/null and b/paper/images/refinement/step2.png differ diff --git a/paper/images/refinement/step3 copy.png b/paper/images/refinement/step3 copy.png new file mode 100644 index 0000000..729f6c5 Binary files /dev/null and b/paper/images/refinement/step3 copy.png differ diff --git a/paper/images/refinement/step3.png b/paper/images/refinement/step3.png new file mode 100644 index 0000000..56a4eb4 Binary files /dev/null and b/paper/images/refinement/step3.png differ diff --git a/paper/images/refinement/step4 copy.png b/paper/images/refinement/step4 copy.png new file mode 100644 index 0000000..fbc8f54 Binary files /dev/null and b/paper/images/refinement/step4 copy.png differ diff --git a/paper/images/refinement/step4.png b/paper/images/refinement/step4.png new file mode 100644 index 0000000..91439ca Binary files /dev/null and b/paper/images/refinement/step4.png differ diff --git a/paper/images/refinement/step5 copy.png b/paper/images/refinement/step5 copy.png new file mode 100644 index 0000000..f25ba87 Binary files /dev/null and b/paper/images/refinement/step5 copy.png differ diff --git a/paper/images/refinement/step5.png b/paper/images/refinement/step5.png new file mode 100644 index 0000000..8a802f7 Binary files /dev/null and b/paper/images/refinement/step5.png differ diff --git a/paper/images/refinement/step6 copy.png b/paper/images/refinement/step6 copy.png new file mode 100644 index 0000000..d3ca77f Binary files /dev/null and b/paper/images/refinement/step6 copy.png differ diff --git a/paper/images/refinement/step6.png b/paper/images/refinement/step6.png new file mode 100644 index 0000000..9d7b51b Binary files /dev/null and b/paper/images/refinement/step6.png differ diff --git a/paper/images/safetymargin/backups/margin_2.pdf b/paper/images/safetymargin/backups/margin_2.pdf new file mode 100644 index 0000000..a9f23a6 Binary files /dev/null and b/paper/images/safetymargin/backups/margin_2.pdf differ diff --git a/paper/images/safetymargin/backups/margin_3.pdf b/paper/images/safetymargin/backups/margin_3.pdf new file mode 100644 index 0000000..c2cb1ff Binary files /dev/null and b/paper/images/safetymargin/backups/margin_3.pdf differ diff --git a/paper/images/safetymargin/backups/margin_4.pdf b/paper/images/safetymargin/backups/margin_4.pdf new file mode 100644 index 0000000..37f2e16 Binary files /dev/null and b/paper/images/safetymargin/backups/margin_4.pdf differ diff --git a/paper/images/safetymargin/backups/margin_5.pdf b/paper/images/safetymargin/backups/margin_5.pdf new file mode 100644 index 0000000..eca17a8 Binary files /dev/null and b/paper/images/safetymargin/backups/margin_5.pdf differ diff --git a/paper/images/safetymargin/margin_2.png b/paper/images/safetymargin/margin_2.png new file mode 100644 index 0000000..7824b8a Binary files /dev/null and b/paper/images/safetymargin/margin_2.png differ diff --git a/paper/images/safetymargin/margin_3.png b/paper/images/safetymargin/margin_3.png new file mode 100644 index 0000000..2ce4678 Binary files /dev/null and b/paper/images/safetymargin/margin_3.png differ diff --git a/paper/images/safetymargin/margin_4.png b/paper/images/safetymargin/margin_4.png new file mode 100644 index 0000000..180e1bb Binary files /dev/null and b/paper/images/safetymargin/margin_4.png differ diff --git a/paper/images/safetymargin/margin_5.png b/paper/images/safetymargin/margin_5.png new file mode 100644 index 0000000..7e28c31 Binary files /dev/null and b/paper/images/safetymargin/margin_5.png differ diff --git a/paper/images/small_transition.png b/paper/images/small_transition.png new file mode 100644 index 0000000..4ca20c0 Binary files /dev/null and b/paper/images/small_transition.png differ diff --git a/paper/images/sr_v_rd.pdf b/paper/images/sr_v_rd.pdf new file mode 100644 index 0000000..014af21 Binary files /dev/null and b/paper/images/sr_v_rd.pdf differ diff --git a/paper/images/transistions.png b/paper/images/transistions.png new file mode 100644 index 0000000..a68d6dc Binary files /dev/null and b/paper/images/transistions.png differ diff --git a/paper/images/visuals/backups/fig_sr10_rd1_ex6434_t13-32_c423-1.pdf b/paper/images/visuals/backups/fig_sr10_rd1_ex6434_t13-32_c423-1.pdf new file mode 100644 index 0000000..0865145 Binary files /dev/null and b/paper/images/visuals/backups/fig_sr10_rd1_ex6434_t13-32_c423-1.pdf differ diff --git a/paper/images/visuals/backups/fig_sr20_rd0p5_ex6049_t14-2_c443-4.pdf b/paper/images/visuals/backups/fig_sr20_rd0p5_ex6049_t14-2_c443-4.pdf new file mode 100644 index 0000000..04a936c Binary files /dev/null and b/paper/images/visuals/backups/fig_sr20_rd0p5_ex6049_t14-2_c443-4.pdf differ diff --git a/paper/images/visuals/backups/fig_sr20_rd1_ex3684_t16-4_c428-5.pdf b/paper/images/visuals/backups/fig_sr20_rd1_ex3684_t16-4_c428-5.pdf new file mode 100644 index 0000000..4bf6a9f Binary files /dev/null and b/paper/images/visuals/backups/fig_sr20_rd1_ex3684_t16-4_c428-5.pdf differ diff --git a/paper/images/visuals/backups/fig_sr20_rd2_ex4092_t22-47_c398-9.pdf b/paper/images/visuals/backups/fig_sr20_rd2_ex4092_t22-47_c398-9.pdf new file mode 100644 index 0000000..f0e7498 Binary files /dev/null and b/paper/images/visuals/backups/fig_sr20_rd2_ex4092_t22-47_c398-9.pdf differ diff --git a/paper/images/visuals/backups/fig_sr30_rd1_ex3698_t19-7_c408.pdf b/paper/images/visuals/backups/fig_sr30_rd1_ex3698_t19-7_c408.pdf new file mode 100644 index 0000000..8b887e0 Binary files /dev/null and b/paper/images/visuals/backups/fig_sr30_rd1_ex3698_t19-7_c408.pdf differ diff --git a/paper/images/visuals/fig_sr10_rd1_ex6434_t13-32_c423-1.png b/paper/images/visuals/fig_sr10_rd1_ex6434_t13-32_c423-1.png new file mode 100644 index 0000000..8caf002 Binary files /dev/null and b/paper/images/visuals/fig_sr10_rd1_ex6434_t13-32_c423-1.png differ diff --git a/paper/images/visuals/fig_sr20_rd0p5_ex6049_t14-2_c443-4.png b/paper/images/visuals/fig_sr20_rd0p5_ex6049_t14-2_c443-4.png new file mode 100644 index 0000000..340cecf Binary files /dev/null and b/paper/images/visuals/fig_sr20_rd0p5_ex6049_t14-2_c443-4.png differ diff --git a/paper/images/visuals/fig_sr20_rd1_ex3684_t16-4_c428-5.png b/paper/images/visuals/fig_sr20_rd1_ex3684_t16-4_c428-5.png new file mode 100644 index 0000000..c56848c Binary files /dev/null and b/paper/images/visuals/fig_sr20_rd1_ex3684_t16-4_c428-5.png differ diff --git a/paper/images/visuals/fig_sr20_rd2_ex4092_t22-47_c398-9.png b/paper/images/visuals/fig_sr20_rd2_ex4092_t22-47_c398-9.png new file mode 100644 index 0000000..59175bd Binary files /dev/null and b/paper/images/visuals/fig_sr20_rd2_ex4092_t22-47_c398-9.png differ diff --git a/paper/images/visuals/fig_sr30_rd1_ex3698_t19-7_c408.png b/paper/images/visuals/fig_sr30_rd1_ex3698_t19-7_c408.png new file mode 100644 index 0000000..ebdc4ec Binary files /dev/null and b/paper/images/visuals/fig_sr30_rd1_ex3698_t19-7_c408.png differ diff --git a/paper/mainjournal.pdf b/paper/mainjournal.pdf new file mode 100644 index 0000000..318d007 Binary files /dev/null and b/paper/mainjournal.pdf differ diff --git a/paper/mainjournal.tex b/paper/mainjournal.tex new file mode 100755 index 0000000..460038f --- /dev/null +++ b/paper/mainjournal.tex @@ -0,0 +1,766 @@ +\documentclass{AIAA} + +\begin{document} + +\title{Hierarchical D* Lite: A Real-Time 3D Path Planning Algorithm for Unknown Environments} +%\title{Preparation of Papers for AIAA Technical Journals} + +\author{Matthew D. Solomon\footnote{M.S. Graduate, Department of Aerospace Engineering, solomon684@gmail.com, AIAA Student Member.} and Huan Xu\footnote{Assistant Professor, Department of Aerospace Engineering, mumu@umd.edu, AIAA Member.}} +\affiliation{University of Maryland, College Park, MD, 20742} +%\author{Third C. Author\footnote{Insert Job Title, Department Name, Address/Mail Stop, and AIAA Member Grade (if any) for third author.}} +%\affiliation{Business or Academic Affiliation 2, City, Province, Zip Code, Country} +%\author{Fourth D. Author\footnote{Insert Job Title, Department Name, Address/Mail Stop, and AIAA Member Grade (if any) for fourth author (etc.).}} +%\affiliation{Business or Academic Affiliation 2, City, State, Zip Code} + +\begin{abstract} +Unmanned aerial vehicles (UAVs) frequently operate in partially or entirely unknown environments. As the vehicle traverses the environment and detects new obstacles, rapid path replanning is essential to avoid collisions. This paper presents a new algorithm called Hierarchical D* Lite (HD*), which combines the incremental algorithm D* Lite with a novel hierarchical path planning approach to replan paths sufficiently fast for real-time operation. Unlike current hierarchical planning algorithms, HD* does not need to update the map representation before planning a new path. Directional cost scale factors, path smoothing, and Catmull-Rom splines are used to ensure the resulting paths are feasible. HD* sacrifices optimality for real-time performance. Its computation time and path quality are dependent on parameters such as map size, environment complexity, sensor range, and any restrictions on planning time. Monte Carlo simulations were used to assess performance, and it was found that HD* finds paths within 10\% of optimal in under 35 ms for the most complex environments tested. +\end{abstract} + +\maketitle + +%\section*{Nomenclature} +%(Nomenclature entries should have the units identified)\\ +%\noindent\begin{tabular}{@{}lcl@{}} +%\textit{A} &=& amplitude of oscillation \\ +%\textit{a }&=& cylinder diameter \\ +%\textit{C}$_{p}$&=& pressure coefficient \\ +%\textit{Cx} &=& force coefficient in the \textit{x} direction \\ +%\textit{Cy} &=& force coefficient in the \textit{y} direction \\ +%c &=& chord \\ +%d\textit{t} &=& time step \\ +%\textit{Fx} &=& \textit{X} component of the resultant pressure force acting on the vehicle \\ +%\textit{Fy} &=& \textit{Y} component of the resultant pressure force acting on the vehicle \\ +%\textit{f, g} &=& generic functions \\ +%\textit{h} &=& height \\ +%\textit{i} &=& time index during navigation \\ +%\textit{j} &=& waypoint index \\ +%\textit{K} &=& trailing-edge (TE) nondimensional angular deflection rate +%\end{tabular} \\ + +\section{Introduction} +\label{sec:intro} +Flight paths for unmanned aerial vehicles (UAVs) often consist of traveling from their current location to one or more given goal locations without complete knowledge of the surrounding environment. Because the domain is not entirely known, sensors on the UAV continuously detect new obstacles as the vehicle travels towards the goal, and the original path that was being followed may no longer be valid. In these situations the UAV must plan a new path sufficiently fast to avoid collisions with these obstacles. Real-time replanning is also necessary when chasing a moving target. The path may frequently become invalidated as the target moves, so rapid replanning is again needed to ensure the vehicle does not stray too far from the optimal path. + +Path planning in known, 2D terrain is a well-studied problem, and various solutions to find the shortest path exist. These include potential field methods~\cite{poten_field, poten_field_noise}, visibility graphs~\cite{vis_orig}, and heuristic based planners such as the widely used A* algorithm~\cite{astar}. There are three significant problems with existing solutions that make them unsuitable for real-time 3D path planning. Heuristic-based algorithms are designed for off-line operation in known environments, so their primary function is to find the true shortest path, with minimal focus on reducing computation time. Additionally, these solutions are generally designed for 2D environments and do not necessarily carry over well to 3D environments. Visibility graphs, for example, are guaranteed to find the shortest path in 2D, but are frequently unable to find the shortest path in 3D~\cite{vis_orig}. Lastly, these approaches are not designed to update paths to accommodate unexpected changes in terrain. When a path needs to be recalculated, previously used information cannot always be reused to speed up the current search. + +Real-time path planning in unknown terrain has not been studied as extensively and fewer solutions exist. In this paper a new path planning algorithm is presented, called Hierarchical D* Lite (HD*), that is capable of computing new paths fast enough to operate in real-time. HD* merges D* Lite~\cite{dstar1} and Hierarchical Path-Finding A*~\cite{hpa}, and introduces changes to improve performance and path quality. Computation times are similar whether used for unknown environments, chasing moving targets, or a combination of the two. The presented algorithm sacrifices optimality for performance, but still finds near-optimal paths within 7 to 35 ms, which is certainly sufficient for real-time performance. In Section~\ref{sec:litreview}, a brief review of existing literature is presented. Section~\ref{sec:background} provides background information for the algorithms implemented into HD*. Section~\ref{sec:implementation} discusses modifications to these algorithms and other specific implementation details of HD*, and Section~\ref{chap:performance} presents performance results of HD*. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%% Literature Review Section %%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Literature Review} +\label{sec:litreview} +There has been significant research in path planning in recent years. A few existing methods of path planning were briefly mentioned in Section~\ref{sec:intro}, but there are additional relevant approaches worth discussing. Although the path planning method presented in this paper is for a single UAV in an unknown environment, a wide variety of approaches are discussed below for completeness. + +% ******SAMPLING-BASED METHODS****** +\subsection{Potential Field Methods} +Potential field methods haven been used for real-time planning and obstacle avoidance in a wide range of applications, from robotics to spacecraft~\cite{pf1, pf2, poten_field, poten_field_noise}. By simulating an attractive force around the goal location and repulsive forces around obstacles, the vehicle can follow the field to the goal. However, potential field methods have a tendency to generate local minima that trap the vehicle and prevent it from reaching the goal. The local minima may be removed by the injection of random noise, but this would result in jagged paths that may be infeasible to follow. An alternative resolution is to include a separate planner to provide information on map connectivity, but this increases computation time and the planner is not guaranteed to be suitable for real-time operation. Even if the global planner is sufficiently fast, the resulting paths from this approach are likely to be suboptimal~\cite{poten_field, ppo}. +%This method is simple, easy to implement, and was originality developed for real-time use in unknown environments, making it an attractive candidate. + +% ******SAMPLING-BASED METHODS****** +\subsection{Sampling-Based Methods} +Rapidly Exploring Random Trees (RRTs)~\cite{RRTnew, rrt1, predRRT, IRTT, lavalle}, Probabilistic Roadmaps (PRMs)~\cite{lavalle, prm}, and Expansive Space Planners (ESPs)~\cite{lavalle, esp} all use a probabilistic approach to connect the initial and goal locations. These methods each begin by sampling a random state. RRTs create a tree at the start and goal nodes, and attempt to connect the newly sampled state to the closest state on one of the trees. This causes the trees to expand towards each other, and once the trees are connected, a path between the start and goal nodes has been found. PRMs connect the random sample to all neighboring states, forming a roadmap which can be searched to find the optimal path between the start and goal nodes. ESPs are similar to PRMs, but with a bias towards unexplored regions and a bidirectional search method. These methods can account for vehicle dynamics and be used in real-time scenarios. Their downside lies in the fact that they have no guarantee of optimality, especially when the environment becomes complex and computation times may be prohibitively long~\cite{rrt1, predRRT, rrt_cmu, ppo}. +% Like potential field methods, they have a history of application in multiple diverse fields. +% Done -- try to replace conferences with published papers + + + +% ******HEURISTIC METHODS****** +\subsection{Heuristic Methods} +Heuristic-based incremental planners, such as D* Lite~\cite{dstar1}, expand the heuristic-based A* algorithm to reuse previous information, resulting in reduced computation time for the current search. This category of planners attempts to combine the performance of real-time algorithms with the solution quality of heuristic-based algorithms. While this is a promising combination, their performance is not suitable for on-line operation; the performance of such a planner is sufficient for some scenarios~\cite{realtimeedge}, but it does not perform well for large 3D maps, where an exponential increase in grid size significantly slows down the search, as does computing the entire path to the goal each time the environment or target changes. This process can be performed significantly faster by initially planning a coarse path and later refining it, as demonstrated by Botea and Müller~\cite{hpa}. This algorithm, known as Hierarchical Path-Finding A* (HPA*), is designed for a 2D implementation, and would need to be expanded to 3D for real-time UAV path planning. +% Done -- try to replace conferences with published papers + + +% ******REAL-TIME METHODS****** +\subsection{Real-Time Methods} +Path planning applications typically do not require the entire path to be known immediately. As a result, heuristic approaches can be modified to obtain real-time performance by restricting the lookahead distance of each search. This family of heuristic-based on-line planners, such Real-Time A* (RTA*), Learning RTA*~\cite{rts2}, and the Real-Time Edge Follow (RTEF) methods~\cite{realtimeedge} find a prefix of the path and begin to move along it, instead of finding the complete path. This allows the vehicle to begin moving within a constant amount of time regardless of map size and environmental complexity. These are suitable for unknown environments, and some variations are applicable to moving targets. Because the complete path is not found, the prefix being followed often leads to a very suboptimal path~\cite{rts2,realtimeedge}, and these approaches are unable to account for vehicle dynamics. +% Done -- try to replace conferences with published papers + +% ******OPTIMAL CONTROL METHODS****** +\subsection{Optimal Control Theory Methods} +The use of pseudospectral (PS) methods~\cite{pseudospec, pseudospec_o1, pseudospec_o2, pseudospec_o3} for optimal control problems has recently gained prominence, and real-time path planning falls under this domain. Thus, PS approaches can be used for real-time planning in obstacle-dense environments. As an optimal control method, this approach makes it easy to incorporate any necessary constraints such as vehicle dynamics or path requirements. Moreover, these methods are applicable to a variety of different vehicles and problems, making them an attractive approach. + +In~\cite{pseudospec}, Gong, Lewis, and Ross successfully simulated this approach for a UAV in an urban environment. The computation time was about 15 seconds, which may be too slow for some applications. It is stated that the best-case time for the PS approach could be about 33 ms, which is comparable to the worst-case time of HD*, although the PS method does have the benefit of handing a variety of constraints. +% Done -- try to replace conferences with published papers + + +% ******CURVE-BASED METHODS****** +\subsection{Curve-Based Methods} +Trajectory generation and obstacle avoidance through the use of Bézier Curves~\cite{bezierPlanning, bezierAvoidance} or circular paths~\cite{circularAvoid} can be quite useful, as they are guaranteed to meet vehicle constraints and ensure evasion. They have the added benefit of supporting situations involving sets of cooperative vehicles and maintaining temporal separation. One downside to such an approach is that the use of collision avoidance maneuvers, as opposed to replanning the entire path, may result in highly suboptimal paths in the presence of numerous obstacles. This occurs because the agent attempts to continue following the existing path, even though it may no longer be near-optimal due to these obstacles. It is also worth noting that without replanning the full path, these algorithms cannot be used to chase moving targets. %These problems will always be present unless the algorithm recomputes the the entire path, as HD* does. + +The B-spline path template method presented by Jung and Tsiotras in~\cite{bspline} is similar to that used by HD*. Both are based on the D* Lite algorithm, utilize a form of hierarchical planing, and use splines to smooth out paths. Although the B-spline approach has the advantage of accounting for kinematic constraints, HD* provides two improvements upon this method. First, the approach presented in~\cite{bspline} is for generating 2D paths, and does not discuss altitude changes as part of the planning process. On the contrary, HD* was designed for computing paths in 3D. The second is that HD* takes a different approach to hierarchical planning, leading to both improved path quality and reduced computation times. The HD* approach to hierarchical planning is further discussed in Section~\ref{sec:mods}. + +\subsection{Hierarchical D* Lite} +This paper presents an algorithm called HD*, which combines D* Lite with a modified version of HPA*. D* Lite allows a full path to be replanned quicker than the A* algorithm it is based on. However, D* Lite is still not sufficient for real-time use in a 3D environment, so HD* builds on the approach of HPA* by utilizing hierarchical planning to reduce computation time. HD* uses a novel hierarchical approach which is suitable for any environment, accounts for detected obstacles, and provides the user with flexibility on the tradeoff between path cost and computation time. This results in a heuristic-based algorithm designed for real-time use with unknown environments or moving targets. Compared to an existing 3D version of D* Lite, known as 3D Field D*~\cite{3dfield}, HD* reduces the number of nodes searched by an order of magnitude. This significantly improves computation speed, but comes with a worst-case increase in path cost of less than 10\%. + + + +%Overall, HD* provides a significant improvement over existing real-time planning algorithms by recomputing the full path in three dimensions, which allows it to consistently provide near-optimal paths whether used for obstacle avoidance or chasing a moving target. +% Done -- try to replace conferences with published papers + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%% End Literature Review Section %%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Background} +\label{sec:background} +Before discussing HD*, it is necessary to briefly describe the algorithms that compose its foundation, which are A*, D* Lite, and HPA*. It is assumed all traversal costs are one for open nodes and infinity for blocked nodes. Nodes of unknown status are assumed to be open. + +% The heuristic based A* algorithm will first be described, followed by an explanation of the incremental planner D* Lite. Lastly, the principles behind HPA* are covered. Modifications have been made to these algorithms to make them suitable for unknown 3D environments, and those changes will be presented in Section~\ref{sec:implementation}. + +\subsection{A* Algorithm} +\label{sec:astar} + +Until the development of A*, there was no central theory used to guide the search of a minimum cost path. Methods used to find shortest paths did not consider computational practicality and required every node of the map to be searched. The methods that did consider performance used domain specific knowledge to reduce the number of nodes searched, but were unable to find the shortest path. A* combines these two approaches, resulting in a complete and optimal algorithm that does not need to search the entire map~\cite{astar}. + +A* works by keeping track of four different values for every node \(s \in\ S\). These values are: + +\begin{enumerate} + \item the g-value, \(g(s)\), which is an estimate of the cost from the start node to node \(s\). This cost is denoted \(c(s_{start},s)\). The g-values are initialized to infinity; + \item the heuristic, \(h(s,s_{goal})\), is an estimate of \(c(s,s_{goal})\) provided by the user; %The heuristic must be admissible, meaning it never overestimates the true cost. It must also be consistent, which is true if and only if it obeys the triangle inequality \(h(s,s'') \leq h(s,s') + h(s',s'')\). An admissible heuristic is required to guarantee the shortest path is found; + \item the f-value, which is an estimate of the smallest cost of moving from \(s\) to the goal state;% and is defined as \(f(s) = g(s) + h(s,s_{goal})\); + \item the backpointer of a node, given by \(bptr(s) \in succ(s)\), points to the parent node of \(s\), where \(succ(s)\) represents all the successors of a given node. It is computed by % using~(\ref{e:backpointer}) + %\item the backpointer of a node, given by \(bptr(s) \in succ(s)\), points to the parent node of \(s\), where \(succ(s)\) represents all the successors of a given node. The backpointer is used to extract the shortest path once the search is complete. It is initialized to \(NULL\) when \(s\) is first encountered, and is computed using~(\ref{e:backpointer}) +\end{enumerate} +\begin{equation} +\label{e:backpointer} + bptr(s) = \left\{ +\begin{array}{ll} + NULL & \;\textrm{if } s=s_{goal} \\ + \textrm{argmin}_{s' \in succ(s)}(g(s')+c(s',s)) & \;\textrm{otherwise}. \\ +\end{array} +\right. +\end{equation} + + +The open set \(U\) is a priority queue sorted by f-values, and the node with the minimum f-value is expanded next. Initially, it only contains $s_{start}$. Expansion of node $s$ occurs when each successor of $s$ is operated on in order to determine their f-values. A* also maintains a closed list, which is a list of all nodes that have already been expanded. The algorithm operates by removing the state with the smallest f-value from \(U\), moving it to the closed list, and expanding that state. It terminates when the goal state is expanded, indicating the shortest path was found and can be extracted. It may also terminate when \(U\) becomes empty, in which case no path exists. See~\cite{astar} and~\cite{thetastar} for more details regarding A*. + + +\subsection{D* Lite Algorithm} +D* Lite is an extension of A* that is fundamentally the same with the benefit of faster replanning. Whereas A* searches from start to goal, D* Lite~\cite{dstar1} searches from goal to start. This is because D* Lite requires the root node to remain the same for each subsequent search in order to speed up replanning~\cite{alg_comparison}. %The start node continually changes as the agent moves towards the goal, whereas the goal node is often a fixed location, making it an ideal candidate for the root node. The restriction arises from the fact that obstacle detection occurs near the vehicle within the range of its sensors. Planning from start to goal would require the detected changes to be propagated throughout the entire path, but planning from goal to start reduces the impact of these changes~\cite{phd_planning}. +Because of this requirement, D* Lite cannot find only a prefix of the path, as the prefix would begin at the goal node and therefore be useless to the vehicle. This restriction on the root node prevents incremental search algorithms from being combined with real-time search algorithms. + +%%%% Continue from here + +%An interesting consequence of the reversed search occurs because detection of an obstacle occurs near the UAV. Upon obstacle detection many cost estimates near the current location will change, but the environment around the goal remains unchanged. As the search propagates, it gets more focused and selective on the nodes it expands. +% +%Therefore, by searching from goal to start, there are fewer changes to be made upon obstacle detection than when searching the opposite direction. + + +% Why combining incremental heuristic with real time doesnt work...root node cant change...hence moving target d* lite? + + +With the search direction reversed from A*, the g-values now represent estimates of distances to the goal. The g-values, f-values, and backpointers are computed for each node the same way as they are in A*, with the addition of a new variable, known as the right-hand side value. Generally referred to as the rhs-value, this value must always satisfy the relationship +%is based on the g-values of $succ(s)$ and must always satisfy the relationship in~(\ref{e:rhs}). +\begin{equation} +\label{e:rhs} + rhs(s) = \left\{ +\begin{array}{ll} + 0 & \;\textrm{if } s=s_{goal} \\ + \min_{s' \in succ(s)}(g(s')+c(s',s)) & \;\textrm{otherwise}. \\ +\end{array} +\right. +\end{equation} + +%The rhs-value is dependent on the neighbors of a node, making it more informed than the g-value because it looks one step ahead. This introduces the concept of consistency, where a node is considered consistent if \(g(s)=rhs(s)\). When $g(s) \neq rhs(s)$, the node is called inconsistent, and is overconsistent when \(g(s)>rhs(s)\), and underconsistent when \(g(s){\centering\arraybackslash}m{1.2cm}} +\newcolumntype{L}{>{\centering\arraybackslash}m{3.5cm}} +\newcolumntype{B}{@{}m{0pt}@{}} % blank column at end +\newcommand{\columnHeight}{0.5cm} % adjust column heights +\newcommand{\columnHeightTwo}{0.2cm} +\setlength\belowcaptionskip{5pt} % fixes caption being too close to table + +\begin{table}[!t]% order of placement preference: here, top, bottom +%\small + \begin{center} + \caption{HD* Path Cost vs. Optimal Path Cost} + \label{t:cost_test} + \begin{tabular}{LCCCCC} + +\hhline{======} +\bfseries Obstacle Density (\%) & \bfseries5 & \bfseries10 & \bfseries15 & \bfseries20 & \bfseries25 \\ +\hline +Optimal Cost & 198.39 & 198.92 & 199.78 & 201.39 & 201.80 \\ +HD* Cost & 199.73 & 203.81 & 212.33 & 216.13 & 220.73 \\ +Percent Increase & 0.68 & 2.46 & 6.28 & 7.32 & 9.38 \\ +\hhline{======} + \end{tabular} + \end{center} +\end{table} + +With fewer obstacles, HD* finds paths that are very close to optimal, and the deviations become greater as the obstacle density increases. This trend is expected, as HD* must find a path fast enough to operate in real-time, and the effort required to find the optimal path increases with the number of obstacles. Section~\ref{sec:performance_analysis} discusses some changes can be made to the default HD* implementation if shorter path lengths are desired. + +\subsection{Comparison to 3D Field D*} + +In~\cite{3dfield}, the 3D Field D* (3DF) algorithm was tested on a $150\times 150\times 150$ map. This algorithm uses interpolation based planning to remove the limitation that the agent must transition between node centers when planning a path. 3DF and HD* are both based on D* Lite, so comparing the two demonstrates whether HD* improves upon similar existing algorithms. To compare HD* with 3DF, the experimental setup used in~\cite{3dfield} was replicated. (N.B. because 3DF is conceptually similar to D* Lite but with the addition of interpolation, a comparison with D* Lite is not presented as its performance will be similar to 3DF.) + +%A sensor range of seven units was used, and the map was assumed to be initially empty. The path was updated as changes in the environment were detected. The agent began in the center of the environment at $(75,75,75)$ with the goal location at $(150,75,75)$. Vertical movement is allowed and $c_x=c_y=c_z = 1$. The obstacle densities tested were $\rho=20\%$ and $\rho=50\%$. + + +\newcolumntype{C}{>{\centering\arraybackslash}m{2.5cm}} +\newcolumntype{L}{>{\centering\arraybackslash}m{2.5cm}} +\newcolumntype{Q}{>{\centering\arraybackslash}m{3.2cm}} +\newcolumntype{B}{@{}m{0pt}@{}} % blank column at end +\renewcommand{\columnHeight}{0.5cm} % adjust column heights +\renewcommand{\columnHeightTwo}{0.2cm} +\setlength\belowcaptionskip{5pt} % fixes caption being too close to table + +\begin{table}[!t]% order of placement preference: here, top, bottom +%\small + \begin{center} + \caption{HD* Path Cost vs. Optimal Path Cost} + \label{t:comparison_testing} + \begin{tabular}{LQQL} + +\hhline{====} +\bfseries Algorithm & \bfseries Obstacle Density (\%) & \bfseries Nodes Expanded & \bfseries Run Time (ms) \\ \hline + 3D Field D* & 20 & 25,200 & 11.07 \\ + HD* & 20 & 2,293 & 9.67 \\ + 3D Field D* & 50 & 62,400 & 20.80 \\ + HD* & 50 & 5,090 & 15.34 \\ + \hhline{====} + \end{tabular} + \end{center} +\end{table} + +The results are presented in Table~\ref{t:comparison_testing}. Note that HD* did not use splines for the tests with 50\% obstacle density, as the splines sometimes pass through obstacles in denser environments. Path length is not presented as it is not reported in~\cite{3dfield}. It is found that HD* computes paths faster than 3DF, and the time savings increase as obstacle density $\rho$ increases. HD* is 12\% faster with $\rho=20\%$, and 26\% faster when $\rho=50\%$. Additionally, the number of nodes expanded by HD* is an order of magnitude less than 3DF. The difference in node expansions would become more drastic as map size increases. Although not evident from this data, the runtime of 3DF will increase as map size increases, as it must replan each path at the highest resolution. HD* is capable of providing more consistent performance in a variety of environments due to the hierarchical planning, which is the biggest benefit it provides over 3DF. + + + + +% HD* Performance Analysis +\subsection{HD* Performance Analysis} +\label{sec:performance_analysis} + +Next, the performance of HD* is analyzed for a wide range of possible configurations. Twenty-five trials were run for each configuration, and the median values are reported. Error bars represent the 25th and 75th percentile values. The trials use randomly generated obstacles of size $5\times 5\times 5$, and parameters will be analyzed in the order they appear in Table~\ref{t:parameters}. The start and goal locations are always located in opposite corners of the map, with $s_{start} = (5,5, d_z/2)$ and $s_{goal} = (d_x-5, d_y-5, d_z/2)$ where the map dimensions are given by $(d_x, d_y, d_z)$. The impact of directional cost factors and vertical movement restriction are not presented as they do not have a significant impact on performance. Directional costs alter the path but do not have a large impact on computation time, and the restriction of vertical movement simply removes two successor nodes. + +It is worth mentioning the performance of recent state of the art planners as a reference point for this section. The computation times for two different types of planners presented in~\cite{rrt_comaparison} are given. The best-case time for the Rapidly Exploring Random Tree planner was approximately 28 ms, and for the Probabilistic Roadmap planner the best-case time was approximately 56 ms. Note that these planners have the advantage of also accounting for kinodynamic constraints, whereas HD* does not. + +\begin{figure}[!t] + \begin{center} + \includegraphics[width=\figureWidth]{images/change_mapsize} + \caption{Effect of Map Dimensions on Performance} + \label{f:change_mapsize} + \end{center} +\end{figure} + +Fig.~\ref{f:change_mapsize} shows the impact of performance when map size is varied. The x-, y, and z- dimensions are equal for each trial, and tests were performed at values of 50, 100, 150, 200, 250, and 300. The results match what is expected, as it can be sees that planning time is correlated with the number of nodes expanded, and both increase with map size. However, planning time does not increase as fast as map size. The planning time for the largest map is less than 3.5 times that of the smallest map, which is significant considering the larger map has 216 times more nodes. + +The increase in node expansions can be attributed to two main factors. The first is simply that a larger map implies the goal can be further away and there are more nodes to explore. The second factor is that the sensor range remains constant as map size increases. When the map dimensions are $50\times 50\times 50$, the search radius covers 40\% of the length of the map and can see 6.4\% of all the nodes. Comparatively, these values decrease to 6.67\% of the length and 0.03\% of the entire map for the largest map tested. Such little foresight on the larger maps results in less informed paths, leading to routes that are more likely to be suboptimal and therefore require frequent replanning and more node expansions. + +%An additional factor is that maps using randomly generated obstacles are more likely to produce environments with routes that initially seem promising and turn out to be poor paths. This leads to many more node expansions which consequently increases computation time. This is shown by Table~\ref{t:random_v_city}, in which the randomly generated maps of $250\times 250\times 250$ are compared with a city-like environment of the same size. HD* finds paths over three times faster and explores five times fewer nodes in the city environment than in the random environment. + +\begin{figure}[!t] + \begin{center} + \includegraphics[width=\figureWidth]{images/change_obstacleDensity} + \caption{Effect of Obstacle Density on Performance} + \label{f:obstacle_density} + \end{center} +\end{figure} + + +The effect of obstacle density can be seen in Fig.~\ref{f:obstacle_density}. Obstacle densities from 0\% -- 25\% were tested in increments of 5\%. As expected, the more complex the environment is, the longer planning takes and the longer the resulting path lengths. If the planning needs to be sped up, the values of $h_s,\, r_s,\, d_{\,r}$, and $t_{max}$ may be modified to decrease planning times, but this frequently comes with an increase in path cost. + +Recall that when increasing the heuristic $h_s$, the algorithm overestimates the distance to the goal and is more aggressive in pushing the search towards the goal. This results in following a path that may not be optimal, but in return it reduces the number of nodes expanded~\cite{astar}. This relationship is explored in Fig.~\ref{f:heuristic_scale}, where the heuristic is multiplied by a scale factor of $(1+\epsilon)$. The admissible heuristic is given by the case when $\epsilon=0$. The tested $\epsilon$ values were \(0, \,10^{-3}, \,10^{-2}, \,0.05, \,0.1, \,0.25, \,0.5,\) and 1. + +It is evident from the figure that the impact of $\epsilon$ diminishes as its value increases. The planning time and node expansions decrease until around $\epsilon=0.05$, at which point results remain fairly constant with a few fluctuations attributed to the random maps. Interestingly, there does not seem to be a correlation with the cost. This might be due to the random maps, as it was proved in~\cite{heuristicrule} that an increase in $\epsilon$ does result in longer paths. Therefore, it may be concluded that because the number of node expansions reaches a limit, the cost increase should also reach a limit. To confirm this, one of the randomly generated maps was used to repeat the test, with the results shown in Fig.~\ref{f:heuristic_scale2}. In this case, the maximum path cost is rapidly reached at $\epsilon = 0.001$, at which point computation time and the number of node expansions can be reduced without a corresponding cost increase. Above $\epsilon = 0.01$ the number of expansions remains constant, confirming that there is a limit to the trade-off experienced by inflating $\epsilon$. + +\begin{figure}[!t] + \begin{center} + \includegraphics[width=\figureWidth]{images/change_heuristicScale} + \caption{Effect of heuristic scale on performance with randomly generated maps.} + \label{f:heuristic_scale} + \end{center} +\end{figure} + +\begin{figure}[!t] + \begin{center} + \includegraphics[width=\figureWidth]{images/change_heuristicScale2} + \caption{Effect of heuristic scale on performance with each test performed on the same map.} + \label{f:heuristic_scale2} + \end{center} +\end{figure} + +The impact of $r_s$ and $d_{\,r}$ can be seen in Fig.~\ref{f:sr_v_rd}. The value tested for $r_s$ were 5 -- 40 in increments of five, and the values of $d_{\,r}$ were $r_s/4,\, r_s/2,\, r_s,\, 1.5r_s$, and $2r_s$. When the search radius and refinement distances are small, the splines frequently pass through obstacles. This problem was seen earlier when running the comparison tests to 3DF, and is elaborated upon in the following chapter. To maintain consistency between trials, splines were not used for any of the tests performed to generate Fig.~\ref{f:sr_v_rd}. + +There are a few insights gained from this figure. In the previous tests, the number of node expansions was directly correlated with computation time, but the opposite is true here. It is known that as $r_s$ and $d_{\,r}$ increase, less replanning is necessary because more of the map can be seen at any given time, resulting in fewer node expansions. However, these larger values of $r_s$ and $d_{\,r}$ also result in more time dedicated to the refinement stage. Thus, Fig.~\ref{f:sr_v_rd} leads to the conclusion that the refinement process dominates node expansions in regards to impact on planning time. +% As the number of node expansions decreases, planning time increases. + +\begin{figure}[!t] + \begin{center} + \includegraphics[width=\figureWidth]{images/sr_v_rd} + \caption{Effect of Search Radius and Refinement Distance on Performance} + \label{f:sr_v_rd} + \end{center} +\end{figure} + +Intuitively, it would be expected that larger values of $r_s$ and $d_{\,r}$ would result in shorter paths, but it appears there is no correlation between the two. This was also observed during the heuristic tests and is again suspected to be the result of the randomly generated maps that were used. It is possible that the layout of the maps results in similar paths being favored regardless of these parameters. This is tested below by comparing results on a map designed to represent a portion of a city. A $256\times 256\times 256$ environment designed to be representative of a city is used. The examples presented show a top-down view of the map and use $c_z=2$ and therefore the paths do not change elevation. Elevation changes in the paths would be observed for $c_z=1$, but for clarity of exposition paths of constant altitude are shown. + +Fig.~\ref{f:city_compare1} compares the resulting paths when varying $r_s$ and Fig.~\ref{f:city_compare2} shows the impact of varying $d_{\,r}$. Table~\ref{t:city_compare} provides the performance data for these maps. From the figures the correlation between both $r_s$ and $d_{\,r}$ with path length becomes clear. Figures~\ref{f:c1c} and~\ref{f:c2c} represent the shortest and most realistic paths, suggesting that a larger search radius and refinement distance are key to producing quality paths. + +\newcolumntype{C}{>{\centering\arraybackslash}m{2.5cm}} +\newcolumntype{D}{>{\centering\arraybackslash}m{1cm}} +\newcolumntype{E}{>{\centering\arraybackslash}m{3.5cm}} +\newcolumntype{F}{>{\centering\arraybackslash}m{1cm}} +\newcolumntype{B}{@{}m{0pt}@{}} % blank column at end +\renewcommand{\columnHeight}{0.5cm} % adjust column heights +\renewcommand{\columnHeightTwo}{0.2cm} +\setlength\belowcaptionskip{5pt} % fixes caption being too close to table +\begin{table}% order of placement preference: here, top, bottom +%\small + \begin{center} + \caption{Performance of Paths Shown in Figures~\ref{f:city_compare1} and \ref{f:city_compare2}} + \label{t:city_compare} + \begin{tabular}{EDDCCF} + +\hhline{======} +\textbf{Figure Number} & $\bm{r_s}$ & {$\bm{d_{\,r}}$} & \textbf{Expansions} & \textbf{Time (ms)} & \textbf{Cost} \\ \hline + \ref{f:c1a} & 20 & $^1/_2$ & 6049 & 14.20 & 443 \\ + \ref{f:c1b}, \ref{f:c2b} & 20 & 1 & 3684 & 16.40 & 429 \\ + \ref{f:c1c} & 20 & 2 & 4092 & 22.47 & 399 \\ + \ref{f:c2a} & 10 & 1 & 6434 & 13.32 & 423 \\ + \ref{f:c2c} & 30 & 1 & 3698 & 19.71 & 408 \\ + \hhline{======} + \end{tabular} + \end{center} +\end{table} + + + +\renewcommand{\figureWidth}{0.45\textwidth} + \begin{figure*}[!t] + \centering + + \subfigure[][$d_{\,r} = 1/2$; The short refinement distance leads to jagged paths.]{\includegraphics[width=\figureWidth]{images/visuals/fig_sr20_rd0p5_ex6049_t14-2_c443-4} \label{f:c1a}}\quad + \subfigure[][$d_{\,r} = 1$; Paths are smoother and shorter, but still contain unnecessary heading changes.]{\includegraphics[width=\figureWidth]{images/visuals/fig_sr20_rd1_ex3684_t16-4_c428-5}\label{f:c1b}}\quad + \subfigure[][$d_{\,r} = 2$; A larger refinement distance leads to ideal paths with no unnecessary heading changes.]{\includegraphics[width=\figureWidth]{images/visuals/fig_sr20_rd2_ex4092_t22-47_c398-9} \label{f:c1c}} + + \caption{Paths produced when $r_s = 20$ for varying values of $d_{\,r}$} + \label{f:city_compare1} + + \end{figure*} + + + \begin{figure*}[!t] + \centering + + \subfigure[][$r_s = 10$; A small sensor range results in a jagged traverse, as paths are suboptimal and frequently replanned.]{\includegraphics[width=\figureWidth]{images/visuals/fig_sr10_rd1_ex6434_t13-32_c423-1} \label{f:c2a}}\quad + \subfigure[][$r_s = 20$; The increased search radius produces more informed paths with less replanning, but still contains frequent heading changes.]{\includegraphics[width=\figureWidth]{images/visuals/fig_sr20_rd1_ex3684_t16-4_c428-5}\label{f:c2b}}\quad + \subfigure[][$r_s = 30$; Path quality is further improved, and can be made smoother by increasing sensor range or refinement distance.]{\includegraphics[width=\figureWidth]{images/visuals/fig_sr30_rd1_ex3698_t19-7_c408} \label{f:c2c}} + + \caption{Paths produced when $d_{\,r} = 1$ for varying values of $r_s$} + \label{f:city_compare2} + + \end{figure*} + + + + + +%The final parameter to examine is the maximum time limit $t_{max}$ applied to planning, which is shown in Fig.~\ref{f:time_limit}. A limit of zero milliseconds will only find the most coarse path, which is not refined before being passed on to the remainder of the path-finding process. As the limit increases, the planner has more time to refine the path, which is expected to result in a shorter path. From the figure, it appears the path length only begins to decrease after about 4 ms. By comparing the x-axis to the time plot in Fig.~\ref{f:time_limit}, the relationship between the configured limit and actual computation time can be seen. The figure indicates that HD* needs a minimum of about 6 ms to find a path to begin following. +% +% +%\begin{figure}[!t] +% \begin{center} +% \includegraphics[width=0.5\textwidth]{images/change_timeLimit} +% \caption{Performance Impact of Restrictions on Planning Time} +% \label{f:time_limit} +% \end{center} +%\end{figure} + + + +%The first is the lack of Catmull-Rom splines. These increase the path length, so small increases in path length would be compounded by the spline, resulting in more noticeable path length increases. To ensure splines would not cross into obstacles, the test was repeated with the obstacle density decreased to 10\%, with minimums of $r_s = 10$ and $d_r = r_s/2$. + + + + + + +%\subsection{Example Paths Produced by HD*} +%\label{sec:view_paths} + + + + +% Safety Margin + +%\renewcommand{\figureWidth}{0.23\textwidth} +%\begin{figure*}[!t] +% \centering +% +% \subfigure[][Safety Margin = 2; Here, the UAV goes past the first gap and makes a sharp turn to gain enough clearance between the two obstacles.]{\includegraphics[width=\figureWidth]{images/safetymargin/margin_2} \label{f:sm2}}\quad +% \subfigure[][Safety Margin = 3; In the top right, we see the UAV can no longer fit through the second gap and must take an alternative route.]{\includegraphics[width=\figureWidth]{images/safetymargin/margin_3}\label{f:sm3}}\quad +% \subfigure[][Safety Margin = 4; The first gap has a width of eight units, so the UAV abruptly turns around to follow a new path when it learns the gap is too narrow.]{\includegraphics[width=\figureWidth]{images/safetymargin/margin_4} \label{f:sm4}}\quad +% \subfigure[][Safety Margin = 5; Traveling around all of the obstacles is now the only route that provides sufficient clearance.]{\includegraphics[width=\figureWidth]{images/safetymargin/margin_5} \label{f:sm5}} +% +% \caption{Paths produced by various safety margins.} +% \label{f:safety_margin} +% +% \end{figure*} +% +%Fig.~\ref{f:safety_margin} shows how the paths vary for different safety margins. The use of a safety margin does not impact performance, and simply expands the footprint of obstacles by treating the surrounding nodes as if they had infinite cost. The same city map is used but at half the size to more clearly see the gap between the path and the obstacles. These paths used $r_s=20$ and $d_{\,r}=2r_s$, as this combination has been shown to produce high-quality paths for the examples above. The figure shows that the path can vary widely depending on the chosen safety margin. We can see that even with the addition of splines, the generated path may still result in sharp turns that may be difficult or impossible to execute. A revision to HD* that allows the current heading of the agent to be considered should resolve this issue and is discussed in the following chapter. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\FloatBarrier +%\section{Future Work} +%\label{chap:futurework} +% +%While HD* is capable of producing realistic, near-optimal paths in real-time, further improvements are in progress. As briefly discussed earlier, when using a small search radius or in an obstacle dense environment, the spline generation sometimes results in turns that pass through nearby obstacles or violate the safety margin. This is because they do not follow the path exactly, so the spline path cannot always be guaranteed to be free of obstacles. A possible solution is to inflate the selected safety margin, to ensure extra surrounding nodes are open to contain the spline path. Alternatively, another method for the splines can be used which allows a turning radius to be input. This could help keep tighter curves while also accounting for the actual turning radius of the vehicle. It has also been shown that splines are not sufficient to prevent all sharp turns, so factoring in the current direction of travel would further improve path quality. +% +%%\begin{figure}[!t] +%% \begin{center} +%% \includegraphics[width=0.45\textwidth]{images/jps} +%% \caption{A possible approach to reduce the number of successor nodes. After the red node is expanded, the blue node has the lowest priority and is expanded next. Nodes 1-17 are all accessible from the red node, so we can conclude that, if expanded, their priority will not be lower than the blue node's priority. Therefore, only nodes 18-26 need to be considered when expanding the blue node.} +%% \label{f:jps} +%% \end{center} +%%\end{figure} +% +% +%The time required to find the shortest path, whether coarse or fine, can be reduced if we can limit the number of successor nodes. Every time a node is expanded up to 26 successor nodes need to be examined, but only a few of them will bring the agent closer to the goal. A method of filtering the successor nodes to only include those that are expected to have a lower cost would reduce computation time. This concept is used by Jump Point Search (JPS) in \cite{jps} to speed up the path-finding process. This technique has only been used on 2D grids with uniform cost, so it remains to be seen how effective a 3D implementation would be, and if it can be modified to support directional cost scale factors. Application of this technique may also be used to help prevent sharp turns by restricting the backwards nodes from being considered successors. + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Conclusion} + +This paper presents a path-finding algorithm for use in unknown environments that improves upon current real-time algorithms. A new hierarchical planning approach is used to allow for rapid replanning without first requiring map corrections. It implements directional cost factors, path smoothing, and spline generation to create realistic paths that are not limited to transitions between node centers. The optimality of the produced paths depends on the sensor range, refinement distance, and planning time restrictions. In the best-case scenario, HD* can find paths within 7 milliseconds that are within 1\% of optimal, and in more complicated environments paths are found in under 35 milliseconds and are within 10\% of optimal. Larger sensor ranges and time limits allow for a greater refinement distance to be used, which can significantly improve path quality, but this comes at the cost of increased computation time. + + + +\section*{References} + +%\begin{thebibliography}{} + +% produces the bibliography section when processed by BibTeX +\bibliography{bibtex_journal} +\bibliographystyle{aiaa} + + +%\bibitem{1} Vatistas, G. H., Lin, S., and Kwok, C. K., ``Reverse Flow Radius in Vortex Chambers,'' \textit{AIAA Journal}, Vol. 24, No. 11, 1986, pp. 1872, 1873. doi: 10.2514/3.13046 +%\bibitem{2} Dornheim, M. A., ``Planetary Flight Surge Faces Budget Realities,'' \textit{Aviation Week and Space Technology}, Vol. 145, No. 24, 9 Dec. 1996, pp. 44--46. +%\bibitem{3} Terster, W., ``NASA Considers Switch to Delta 2,'' \textit{Space News}, Vol. 8, No. 2, 13--19 Jan. 1997, pp. 1, 18. +%\bibitem{4} Peyret, R., and Taylor, T. D., \textit{Computational Methods in Fluid Flow}, 2$^{{\rm nd}}$ ed., Springer-Verlag, New York, 1983, Chaps. 7, 14. +%\bibitem{5} Oates, G. C. (ed.), \textit{Aerothermodynamics of Gas Turbine and Rocket Propulsion}, AIAA Education Series, AIAA, New York, 1984, pp. 19, 136. +%\bibitem{6} Volpe, R., ``Techniques for Collision Prevention, Impact Stability, and Force Control by Space Manipulators,'' \textit{Teleoperation and Robotics in Space}, edited by S. B. Skaar and C. F. Ruoff, Progress in Astronautics and Aeronautics, AIAA, Washington, DC, 1994, pp. 175--212. +%\bibitem{7} Thompson, C. M., ``Spacecraft Thermal Control, Design, and Operation,'' \textit{AIAA Guidance, Navigation, and Control Conference}, CP849, Vol. 1, AIAA, Washington, DC, 1989, pp. 103--115 +%\bibitem{8} Chi, Y. (ed.), \textit{Fluid Mechanics Proceedings}, NASA SP-255, 1993. +%\bibitem{9} Morris, J. D., ``Convective Heat Transfer in Radially Rotating Ducts,'' \textit{Proceedings of the Annual Heat Transfer Conference}, edited by B. Corbell, Vol. 1, Inst. of Mechanical Engineering, New York, 1992, pp. 227--234. +%\bibitem{10} Chapman, G. T., and Tobak, M., ``Nonlinear Problems in Flight Dynamics,'' NASA TM-85940, 1984. +%\bibitem{11} Steger, J. L., Jr., Nietubicz, C. J., and Heavey, J. E., ``A General Curvilinear Grid Generation Program for Projectile Configurations,'' U.S. Army Ballistic Research Lab., Rept. ARBRL-MR03142, Aberdeen Proving Ground, MD, Oct. 1981. +%\bibitem{12} Tseng, K., ``Nonlinear Green's Function Method for Transonic Potential Flow,'' Ph.D. Dissertation, Aeronautics and Astronautics Dept., Boston Univ., Cambridge, MA, 1983. +%\bibitem{13} Richard, J. C., and Fralick, G. C., ``Use of Drag Probe in Supersonic Flow,'' \textit{AIAA Meeting Papers on Disc} [CD-ROM], Vol. 1, No. 2, AIAA, Reston, VA, 1996. +%\bibitem{14} Atkins, C. P., and Scantelbury, J. D., ``The Activity Coefficient of Sodium Chloride in a Simulated Pore Solution Environment,'' \textit{Journal of Corrosion Science and Engineering} [online journal], Vol. 1, No. 1, Paper 2, URL: \url{http://www.cp/umist.ac.uk/JCSE/vol1/vol1.html} [cited 13 April 1998]. +%\bibitem{15} Vickers, A., ``10-110 mm/hr Hypodermic Gravity Design A,'' \textit{Rainfall Simulation Database} [online database], URL: \url{http://www.geog.le.ac.uk/bgrg/lab.htm} [cited 15 March 1998]. +%\bibitem{16} TAPP, Thermochemical and Physical Properties, Software Package, Ver. 1.0, E. S. Microware, Hamilton, OH, 1992. +%\bibitem{17} Scherrer, R., Overholster, D., and Watson, K., Lockheed Corp., Burbank, CA, U.S. Patent Application for a ``Vehicle,'' Docket No. P-01-1532, filed 11 Feb. 1979. +%\bibitem{18} Doe, J., ``Title of Paper,'' \textit{Name of Journal} (to be published). +%\bibitem{19} Doe, J., ``Title of Chapter,'' \textit{Name of Book}, edited by\ldots , Publisher's name and location (to be published). +%\bibitem{20} Doe, J., ``Title of Work,'' Name of Archive, Univ. (or organization), City, State, Year (unpublished). +%\end{thebibliography} +\end{document} diff --git a/paper/mainjournalNotes.bib b/paper/mainjournalNotes.bib new file mode 100644 index 0000000..e69de29