Add changes for e40b4d9dec
|
Before Width: | Height: | Size: 22 KiB |
BIN
_images/approx_and_curvature.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
_images/approximation1.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
_images/basis_functions.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
_images/bspline_path_planning.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
_images/curvature_plot.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
_images/interp_and_curvature.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
_images/interpolation1.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
278
_modules/PathPlanning/BSplinePath/bspline_path.html
Normal file
@@ -0,0 +1,278 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>PathPlanning.BSplinePath.bspline_path — PythonRobotics documentation</title>
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/plot_directive.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> PythonRobotics
|
||||
<img src="../../../_static/icon.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9612347954373886"
|
||||
crossorigin="anonymous"></script>
|
||||
<!-- PythonRoboticsDoc -->
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-9612347954373886"
|
||||
data-ad-slot="1579532132"
|
||||
data-ad-format="auto"
|
||||
data-full-width-responsive="true"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../getting_started.html">Getting Started</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/localization/localization.html">Localization</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/mapping/mapping.html">Mapping</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/slam/slam.html">SLAM</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/path_planning/path_planning.html">Path Planning</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/path_tracking/path_tracking.html">Path Tracking</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/arm_navigation/arm_navigation.html">Arm Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">PythonRobotics</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
<li>PathPlanning.BSplinePath.bspline_path</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for PathPlanning.BSplinePath.bspline_path</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
|
||||
<span class="sd">Path Planner with B-Spline</span>
|
||||
|
||||
<span class="sd">author: Atsushi Sakai (@Atsushi_twi)</span>
|
||||
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">pathlib</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">pathlib</span><span class="o">.</span><span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span><span class="p">))</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">scipy.interpolate</span> <span class="k">as</span> <span class="nn">interpolate</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">utils.plot</span> <span class="kn">import</span> <span class="n">plot_curvature</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="approximate_b_spline_path"><a class="viewcode-back" href="../../../modules/path_planning/bspline_path/bspline_path.html#PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path">[docs]</a><span class="k">def</span> <span class="nf">approximate_b_spline_path</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span>
|
||||
<span class="n">y</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span>
|
||||
<span class="n">n_path_points</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
||||
<span class="n">degree</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
|
||||
<span class="n">s</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Approximate points with a B-Spline path</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> x : array_like</span>
|
||||
<span class="sd"> x position list of approximated points</span>
|
||||
<span class="sd"> y : array_like</span>
|
||||
<span class="sd"> y position list of approximated points</span>
|
||||
<span class="sd"> n_path_points : int</span>
|
||||
<span class="sd"> number of path points</span>
|
||||
<span class="sd"> degree : int, optional</span>
|
||||
<span class="sd"> B Spline curve degree. Must be 2<= k <= 5. Default: 3.</span>
|
||||
<span class="sd"> s : int, optional</span>
|
||||
<span class="sd"> smoothing parameter. If this value is bigger, the path will be</span>
|
||||
<span class="sd"> smoother, but it will be less accurate. If this value is smaller,</span>
|
||||
<span class="sd"> the path will be more accurate, but it will be less smooth.</span>
|
||||
<span class="sd"> When `s` is 0, it is equivalent to the interpolation. Default is None,</span>
|
||||
<span class="sd"> in this case `s` will be `len(x)`.</span>
|
||||
|
||||
<span class="sd"> Returns</span>
|
||||
<span class="sd"> -------</span>
|
||||
<span class="sd"> x : array</span>
|
||||
<span class="sd"> x positions of the result path</span>
|
||||
<span class="sd"> y : array</span>
|
||||
<span class="sd"> y positions of the result path</span>
|
||||
<span class="sd"> heading : array</span>
|
||||
<span class="sd"> heading of the result path</span>
|
||||
<span class="sd"> curvature : array</span>
|
||||
<span class="sd"> curvature of the result path</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">distances</span> <span class="o">=</span> <span class="n">_calc_distance_vector</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="n">spl_i_x</span> <span class="o">=</span> <span class="n">interpolate</span><span class="o">.</span><span class="n">UnivariateSpline</span><span class="p">(</span><span class="n">distances</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="n">degree</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="n">s</span><span class="p">)</span>
|
||||
<span class="n">spl_i_y</span> <span class="o">=</span> <span class="n">interpolate</span><span class="o">.</span><span class="n">UnivariateSpline</span><span class="p">(</span><span class="n">distances</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="n">degree</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="n">s</span><span class="p">)</span>
|
||||
|
||||
<span class="n">sampled</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">distances</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">n_path_points</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">_evaluate_spline</span><span class="p">(</span><span class="n">sampled</span><span class="p">,</span> <span class="n">spl_i_x</span><span class="p">,</span> <span class="n">spl_i_y</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="interpolate_b_spline_path"><a class="viewcode-back" href="../../../modules/path_planning/bspline_path/bspline_path.html#PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path">[docs]</a><span class="k">def</span> <span class="nf">interpolate_b_spline_path</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span>
|
||||
<span class="n">n_path_points</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
||||
<span class="n">degree</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Interpolate x-y points with a B-Spline path</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> x : array_like</span>
|
||||
<span class="sd"> x positions of interpolated points</span>
|
||||
<span class="sd"> y : array_like</span>
|
||||
<span class="sd"> y positions of interpolated points</span>
|
||||
<span class="sd"> n_path_points : int</span>
|
||||
<span class="sd"> number of path points</span>
|
||||
<span class="sd"> degree : int, optional</span>
|
||||
<span class="sd"> B-Spline degree. Must be 2<= k <= 5. Default: 3</span>
|
||||
|
||||
<span class="sd"> Returns</span>
|
||||
<span class="sd"> -------</span>
|
||||
<span class="sd"> x : array</span>
|
||||
<span class="sd"> x positions of the result path</span>
|
||||
<span class="sd"> y : array</span>
|
||||
<span class="sd"> y positions of the result path</span>
|
||||
<span class="sd"> heading : array</span>
|
||||
<span class="sd"> heading of the result path</span>
|
||||
<span class="sd"> curvature : array</span>
|
||||
<span class="sd"> curvature of the result path</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">approximate_b_spline_path</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">n_path_points</span><span class="p">,</span> <span class="n">degree</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_calc_distance_vector</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="n">dx</span><span class="p">,</span> <span class="n">dy</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">distances</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cumsum</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">hypot</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">idy</span><span class="p">)</span> <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">idy</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">)])</span>
|
||||
<span class="n">distances</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(([</span><span class="mf">0.0</span><span class="p">],</span> <span class="n">distances</span><span class="p">))</span>
|
||||
<span class="n">distances</span> <span class="o">/=</span> <span class="n">distances</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">distances</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_evaluate_spline</span><span class="p">(</span><span class="n">sampled</span><span class="p">,</span> <span class="n">spl_i_x</span><span class="p">,</span> <span class="n">spl_i_y</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">spl_i_x</span><span class="p">(</span><span class="n">sampled</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">spl_i_y</span><span class="p">(</span><span class="n">sampled</span><span class="p">)</span>
|
||||
<span class="n">dx</span> <span class="o">=</span> <span class="n">spl_i_x</span><span class="o">.</span><span class="n">derivative</span><span class="p">(</span><span class="mi">1</span><span class="p">)(</span><span class="n">sampled</span><span class="p">)</span>
|
||||
<span class="n">dy</span> <span class="o">=</span> <span class="n">spl_i_y</span><span class="o">.</span><span class="n">derivative</span><span class="p">(</span><span class="mi">1</span><span class="p">)(</span><span class="n">sampled</span><span class="p">)</span>
|
||||
<span class="n">heading</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arctan2</span><span class="p">(</span><span class="n">dy</span><span class="p">,</span> <span class="n">dx</span><span class="p">)</span>
|
||||
<span class="n">ddx</span> <span class="o">=</span> <span class="n">spl_i_x</span><span class="o">.</span><span class="n">derivative</span><span class="p">(</span><span class="mi">2</span><span class="p">)(</span><span class="n">sampled</span><span class="p">)</span>
|
||||
<span class="n">ddy</span> <span class="o">=</span> <span class="n">spl_i_y</span><span class="o">.</span><span class="n">derivative</span><span class="p">(</span><span class="mi">2</span><span class="p">)(</span><span class="n">sampled</span><span class="p">)</span>
|
||||
<span class="n">curvature</span> <span class="o">=</span> <span class="p">(</span><span class="n">ddy</span> <span class="o">*</span> <span class="n">dx</span> <span class="o">-</span> <span class="n">ddx</span> <span class="o">*</span> <span class="n">dy</span><span class="p">)</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">dx</span> <span class="o">*</span> <span class="n">dx</span> <span class="o">+</span> <span class="n">dy</span> <span class="o">*</span> <span class="n">dy</span><span class="p">,</span> <span class="mf">2.0</span> <span class="o">/</span> <span class="mf">3.0</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">y</span><span class="p">,</span> <span class="n">heading</span><span class="p">,</span> <span class="n">curvature</span><span class="p">,</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="vm">__file__</span> <span class="o">+</span> <span class="s2">" start!!"</span><span class="p">)</span>
|
||||
<span class="c1"># way points</span>
|
||||
<span class="n">way_point_x</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">3.0</span><span class="p">,</span> <span class="mf">4.0</span><span class="p">,</span> <span class="mf">2.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">]</span>
|
||||
<span class="n">way_point_y</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">,</span> <span class="o">-</span><span class="mf">3.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">3.0</span><span class="p">]</span>
|
||||
<span class="n">n_course_point</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># sampling number</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
||||
<span class="n">rax</span><span class="p">,</span> <span class="n">ray</span><span class="p">,</span> <span class="n">heading</span><span class="p">,</span> <span class="n">curvature</span> <span class="o">=</span> <span class="n">approximate_b_spline_path</span><span class="p">(</span>
|
||||
<span class="n">way_point_x</span><span class="p">,</span> <span class="n">way_point_y</span><span class="p">,</span> <span class="n">n_course_point</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">rax</span><span class="p">,</span> <span class="n">ray</span><span class="p">,</span> <span class="s1">'-r'</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"Approximated B-Spline path"</span><span class="p">)</span>
|
||||
<span class="n">plot_curvature</span><span class="p">(</span><span class="n">rax</span><span class="p">,</span> <span class="n">ray</span><span class="p">,</span> <span class="n">heading</span><span class="p">,</span> <span class="n">curvature</span><span class="p">)</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"B-Spline approximation"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">way_point_x</span><span class="p">,</span> <span class="n">way_point_y</span><span class="p">,</span> <span class="s1">'-og'</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"way points"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">"equal"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
||||
<span class="n">rix</span><span class="p">,</span> <span class="n">riy</span><span class="p">,</span> <span class="n">heading</span><span class="p">,</span> <span class="n">curvature</span> <span class="o">=</span> <span class="n">interpolate_b_spline_path</span><span class="p">(</span>
|
||||
<span class="n">way_point_x</span><span class="p">,</span> <span class="n">way_point_y</span><span class="p">,</span> <span class="n">n_course_point</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">rix</span><span class="p">,</span> <span class="n">riy</span><span class="p">,</span> <span class="s1">'-b'</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"Interpolated B-Spline path"</span><span class="p">)</span>
|
||||
<span class="n">plot_curvature</span><span class="p">(</span><span class="n">rix</span><span class="p">,</span> <span class="n">riy</span><span class="p">,</span> <span class="n">heading</span><span class="p">,</span> <span class="n">curvature</span><span class="p">)</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"B-Spline interpolation"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">way_point_x</span><span class="p">,</span> <span class="n">way_point_y</span><span class="p">,</span> <span class="s1">'-og'</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"way points"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">"equal"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
|
||||
<span class="n">main</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2018-2021, Atsushi Sakai.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -64,6 +64,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
@@ -92,8 +93,10 @@
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>All modules for which code is available</h1>
|
||||
<ul><li><a href="PathPlanning/CubicSpline/cubic_spline_planner.html">PathPlanning.CubicSpline.cubic_spline_planner</a></li>
|
||||
<ul><li><a href="PathPlanning/BSplinePath/bspline_path.html">PathPlanning.BSplinePath.bspline_path</a></li>
|
||||
<li><a href="PathPlanning/CubicSpline/cubic_spline_planner.html">PathPlanning.CubicSpline.cubic_spline_planner</a></li>
|
||||
<li><a href="PathPlanning/DubinsPath/dubins_path_planner.html">PathPlanning.DubinsPath.dubins_path_planner</a></li>
|
||||
<li><a href="utils/plot.html">utils.plot</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
212
_modules/utils/plot.html
Normal file
@@ -0,0 +1,212 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>utils.plot — PythonRobotics documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/plot_directive.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> PythonRobotics
|
||||
<img src="../../_static/icon.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9612347954373886"
|
||||
crossorigin="anonymous"></script>
|
||||
<!-- PythonRoboticsDoc -->
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-9612347954373886"
|
||||
data-ad-slot="1579532132"
|
||||
data-ad-format="auto"
|
||||
data-full-width-responsive="true"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting_started.html">Getting Started</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/localization/localization.html">Localization</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/mapping/mapping.html">Mapping</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/slam/slam.html">SLAM</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/path_planning/path_planning.html">Path Planning</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/path_tracking/path_tracking.html">Path Tracking</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/arm_navigation/arm_navigation.html">Arm Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">PythonRobotics</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
<li><a href="../index.html">Module code</a> »</li>
|
||||
<li>utils.plot</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for utils.plot</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Matplotlib based plotting utilities</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">plot_arrow</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">yaw</span><span class="p">,</span> <span class="n">arrow_length</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
|
||||
<span class="n">origin_point_plot_style</span><span class="o">=</span><span class="s2">"xr"</span><span class="p">,</span>
|
||||
<span class="n">head_width</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">fc</span><span class="o">=</span><span class="s2">"r"</span><span class="p">,</span> <span class="n">ec</span><span class="o">=</span><span class="s2">"k"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Plot an arrow or arrows based on 2D state (x, y, yaw)</span>
|
||||
|
||||
<span class="sd"> All optional settings of matplotlib.pyplot.arrow can be used.</span>
|
||||
<span class="sd"> - matplotlib.pyplot.arrow:</span>
|
||||
<span class="sd"> https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.arrow.html</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> x : a float or array_like</span>
|
||||
<span class="sd"> a value or a list of arrow origin x position.</span>
|
||||
<span class="sd"> y : a float or array_like</span>
|
||||
<span class="sd"> a value or a list of arrow origin y position.</span>
|
||||
<span class="sd"> yaw : a float or array_like</span>
|
||||
<span class="sd"> a value or a list of arrow yaw angle (orientation).</span>
|
||||
<span class="sd"> arrow_length : a float (optional)</span>
|
||||
<span class="sd"> arrow length. default is 1.0</span>
|
||||
<span class="sd"> origin_point_plot_style : str (optional)</span>
|
||||
<span class="sd"> origin point plot style. If None, not plotting.</span>
|
||||
<span class="sd"> head_width : a float (optional)</span>
|
||||
<span class="sd"> arrow head width. default is 0.1</span>
|
||||
<span class="sd"> fc : string (optional)</span>
|
||||
<span class="sd"> face color</span>
|
||||
<span class="sd"> ec : string (optional)</span>
|
||||
<span class="sd"> edge color</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">i_x</span><span class="p">,</span> <span class="n">i_y</span><span class="p">,</span> <span class="n">i_yaw</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">yaw</span><span class="p">):</span>
|
||||
<span class="n">plot_arrow</span><span class="p">(</span><span class="n">i_x</span><span class="p">,</span> <span class="n">i_y</span><span class="p">,</span> <span class="n">i_yaw</span><span class="p">,</span> <span class="n">head_width</span><span class="o">=</span><span class="n">head_width</span><span class="p">,</span>
|
||||
<span class="n">fc</span><span class="o">=</span><span class="n">fc</span><span class="p">,</span> <span class="n">ec</span><span class="o">=</span><span class="n">ec</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">arrow</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span>
|
||||
<span class="n">arrow_length</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">yaw</span><span class="p">),</span>
|
||||
<span class="n">arrow_length</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">yaw</span><span class="p">),</span>
|
||||
<span class="n">head_width</span><span class="o">=</span><span class="n">head_width</span><span class="p">,</span>
|
||||
<span class="n">fc</span><span class="o">=</span><span class="n">fc</span><span class="p">,</span> <span class="n">ec</span><span class="o">=</span><span class="n">ec</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">origin_point_plot_style</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">origin_point_plot_style</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="plot_curvature"><a class="viewcode-back" href="../../modules/utils/plot/plot.html#utils.plot.plot_curvature">[docs]</a><span class="k">def</span> <span class="nf">plot_curvature</span><span class="p">(</span><span class="n">x_list</span><span class="p">,</span> <span class="n">y_list</span><span class="p">,</span> <span class="n">heading_list</span><span class="p">,</span> <span class="n">curvature</span><span class="p">,</span>
|
||||
<span class="n">k</span><span class="o">=</span><span class="mf">0.01</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="s2">"-c"</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"Curvature"</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Plot curvature on 2D path. This plot is a line from the original path,</span>
|
||||
<span class="sd"> the lateral distance from the original path shows curvature magnitude.</span>
|
||||
<span class="sd"> Left turning shows right side plot, right turning shows left side plot.</span>
|
||||
<span class="sd"> For straight path, the curvature plot will be on the path, because</span>
|
||||
<span class="sd"> curvature is 0 on the straight path.</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> x_list : array_like</span>
|
||||
<span class="sd"> x position list of the path</span>
|
||||
<span class="sd"> y_list : array_like</span>
|
||||
<span class="sd"> y position list of the path</span>
|
||||
<span class="sd"> heading_list : array_like</span>
|
||||
<span class="sd"> heading list of the path</span>
|
||||
<span class="sd"> curvature : array_like</span>
|
||||
<span class="sd"> curvature list of the path</span>
|
||||
<span class="sd"> k : float</span>
|
||||
<span class="sd"> curvature scale factor to calculate distance from the original path</span>
|
||||
<span class="sd"> c : string</span>
|
||||
<span class="sd"> color of the plot</span>
|
||||
<span class="sd"> label : string</span>
|
||||
<span class="sd"> label of the plot</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">cx</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">+</span> <span class="n">d</span> <span class="o">*</span> <span class="n">k</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">yaw</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">yaw</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span>
|
||||
<span class="nb">zip</span><span class="p">(</span><span class="n">x_list</span><span class="p">,</span> <span class="n">y_list</span><span class="p">,</span> <span class="n">heading_list</span><span class="p">,</span> <span class="n">curvature</span><span class="p">)]</span>
|
||||
<span class="n">cy</span> <span class="o">=</span> <span class="p">[</span><span class="n">y</span> <span class="o">+</span> <span class="n">d</span> <span class="o">*</span> <span class="n">k</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">yaw</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">yaw</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span>
|
||||
<span class="nb">zip</span><span class="p">(</span><span class="n">x_list</span><span class="p">,</span> <span class="n">y_list</span><span class="p">,</span> <span class="n">heading_list</span><span class="p">,</span> <span class="n">curvature</span><span class="p">)]</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">cx</span><span class="p">,</span> <span class="n">cy</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">ix</span><span class="p">,</span> <span class="n">iy</span><span class="p">,</span> <span class="n">icx</span><span class="p">,</span> <span class="n">icy</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">x_list</span><span class="p">,</span> <span class="n">y_list</span><span class="p">,</span> <span class="n">cx</span><span class="p">,</span> <span class="n">cy</span><span class="p">):</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="n">ix</span><span class="p">,</span> <span class="n">icx</span><span class="p">],</span> <span class="p">[</span><span class="n">iy</span><span class="p">,</span> <span class="n">icy</span><span class="p">],</span> <span class="n">c</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2018-2021, Atsushi Sakai.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -44,6 +44,7 @@ See this paper for more details:
|
||||
modules/aerial_navigation/aerial_navigation
|
||||
modules/bipedal/bipedal
|
||||
modules/control/control
|
||||
modules/utils/utils
|
||||
modules/appendix/appendix
|
||||
how_to_contribute
|
||||
|
||||
|
||||
@@ -1,14 +1,146 @@
|
||||
B-Spline planning
|
||||
-----------------
|
||||
|
||||
.. image:: Figure_1.png
|
||||
.. image:: bspline_path_planning.png
|
||||
|
||||
This is a path planning with B-Spline curse.
|
||||
This is a B-Spline path planning routines.
|
||||
|
||||
If you input waypoints, it generates a smooth path with B-Spline curve.
|
||||
|
||||
The final course should be on the first and last waypoints.
|
||||
This codes provide two types of B-Spline curve generations:
|
||||
|
||||
Ref:
|
||||
1. Interpolation: generate a curve that passes through all waypoints.
|
||||
|
||||
2. Approximation: generate a curve that approximates the waypoints. (Not passing through all waypoints)
|
||||
|
||||
Bspline basics
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
BSpline (Basis-Spline) is a piecewise polynomial spline curve.
|
||||
|
||||
It is expressed by the following equation.
|
||||
|
||||
:math:`\mathbf{S}(x)=\sum_{i=k-p}^k \mathbf{c}_i B_{i, p}(x)`
|
||||
|
||||
here:
|
||||
|
||||
* :math:`S(x)` is the curve point on the spline at x.
|
||||
* :math:`c_i` is the representative point generating the spline, called the control point.
|
||||
* :math:`p+1` is the dimension of the BSpline.
|
||||
* :math:`k` is the number of knots.
|
||||
* :math:`B_{i,p}(x)` is a function called Basis Function.
|
||||
|
||||
The the basis function can be calculated by the following `De Boor recursion formula <https://en.wikipedia.org/wiki/De_Boor%27s_algorithm>`_:
|
||||
|
||||
:math:`B_{i, 0}(x):= \begin{cases}1 & \text { if } \quad t_i \leq x<t_{i+1} \\ 0 & \text { otherwise }\end{cases}`
|
||||
|
||||
:math:`B_{i, p}(x):=\frac{x-t_i}{t_{i+p}-t_i} B_{i, p-1}(x)+\frac{t_{i+p+1}-x}{t_{i+p+1}-t_{i+1}} B_{i+1, p-1}(x)`
|
||||
|
||||
here:
|
||||
|
||||
* :math:`t_i` is each element of the knot vector.
|
||||
|
||||
This figure shows the BSpline basis functions for each of :math:`i`:
|
||||
|
||||
.. image:: basis_functions.png
|
||||
|
||||
Note that when all the basis functions are added together, summation is 1.0 for any x value.
|
||||
|
||||
This means that the result curve is smooth when each control point is weighted addition by this basis function,
|
||||
|
||||
This code is for generating the upper basis function graph using `scipy <https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.BSpline.html>`_.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from scipy.interpolate import BSpline
|
||||
|
||||
def B_orig(x, k, i, t):
|
||||
if k == 0:
|
||||
return 1.0 if t[i] <= x < t[i + 1] else 0.0
|
||||
if t[i + k] == t[i]:
|
||||
c1 = 0.0
|
||||
else:
|
||||
c1 = (x - t[i]) / (t[i + k] - t[i]) * B(x, k - 1, i, t)
|
||||
|
||||
if t[i + k + 1] == t[i + 1]:
|
||||
c2 = 0.0
|
||||
else:
|
||||
c2 = (t[i + k + 1] - x) / (t[i + k + 1] - t[i + 1]) * B(x, k - 1, i + 1, t)
|
||||
return c1 + c2
|
||||
|
||||
|
||||
def B(x, k, i, t):
|
||||
c = np.zeros_like(t)
|
||||
c[i] = 1
|
||||
return BSpline(t, c, k)(x)
|
||||
|
||||
|
||||
def main():
|
||||
k = 3 # degree of the spline
|
||||
t = [0, 1, 2, 3, 4, 5] # knots vector
|
||||
|
||||
x = np.linspace(0, 5, 1000, endpoint=False)
|
||||
t = np.r_[[np.min(t)]*k, t, [np.max(t)]*k]
|
||||
|
||||
n = len(t) - k - 1
|
||||
for i in range(n):
|
||||
y = np.array([B(ix, k, i, t) for ix in x])
|
||||
plt.plot(x, y, label=f'i = {i}')
|
||||
|
||||
plt.title(f'Basis functions (k = {k}, knots = {t})')
|
||||
plt.show()
|
||||
|
||||
Bspline interpolation planning
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
:meth:`PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path` generates a curve that passes through all waypoints.
|
||||
|
||||
This is a simple example of the interpolation planning:
|
||||
|
||||
.. image:: interpolation1.png
|
||||
|
||||
This figure also shows curvatures of each path point using :ref:`utils.plot.plot_curvature <plot_curvature>`.
|
||||
|
||||
The default spline degree is 3, so curvature changes smoothly.
|
||||
|
||||
.. image:: interp_and_curvature.png
|
||||
|
||||
API
|
||||
++++
|
||||
|
||||
.. autofunction:: PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path
|
||||
|
||||
|
||||
Bspline approximation planning
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
:meth:`PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path`
|
||||
generates a curve that approximates the waypoints, which means that
|
||||
the curve might not pass through waypoints.
|
||||
|
||||
Users can adjust path smoothness by the smoothing parameter `s`. If this
|
||||
value is bigger, the path will be smoother, but it will be less accurate.
|
||||
If this value is smaller, the path will be more accurate, but it will be
|
||||
less smooth.
|
||||
|
||||
This is a simple example of the approximation planning:
|
||||
|
||||
.. image:: approximation1.png
|
||||
|
||||
This figure also shows curvatures of each path point using :ref:`utils.plot.plot_curvature <plot_curvature>`.
|
||||
|
||||
The default spline degree is 3, so curvature changes smoothly.
|
||||
|
||||
.. image:: approx_and_curvature.png
|
||||
|
||||
API
|
||||
++++
|
||||
|
||||
.. autofunction:: PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path
|
||||
|
||||
|
||||
References
|
||||
~~~~~~~~~~
|
||||
|
||||
- `B-spline - Wikipedia <https://en.wikipedia.org/wiki/B-spline>`__
|
||||
- `scipy.interpolate.UnivariateSpline <https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.UnivariateSpline.html>`__
|
||||
16
_sources/modules/utils/plot/plot_main.rst.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
.. _plot_utils:
|
||||
|
||||
Plotting Utilities
|
||||
-------------------
|
||||
|
||||
This module contains a number of utility functions for plotting data.
|
||||
|
||||
.. _plot_curvature:
|
||||
|
||||
plot_curvature
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
.. autofunction:: utils.plot.plot_curvature
|
||||
|
||||
.. image:: curvature_plot.png
|
||||
|
||||
12
_sources/modules/utils/utils_main.rst.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
.. _utils:
|
||||
|
||||
Utilities
|
||||
==========
|
||||
|
||||
Common utilities for PythonRobotics.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Contents
|
||||
|
||||
plot/plot
|
||||
@@ -64,6 +64,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
@@ -96,10 +97,20 @@
|
||||
<h1 id="index">Index</h1>
|
||||
|
||||
<div class="genindex-jumpbox">
|
||||
<a href="#C"><strong>C</strong></a>
|
||||
<a href="#A"><strong>A</strong></a>
|
||||
| <a href="#C"><strong>C</strong></a>
|
||||
| <a href="#I"><strong>I</strong></a>
|
||||
| <a href="#P"><strong>P</strong></a>
|
||||
|
||||
</div>
|
||||
<h2 id="A">A</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="modules/path_planning/bspline_path/bspline_path.html#PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path">approximate_b_spline_path() (in module PathPlanning.BSplinePath.bspline_path)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="C">C</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
@@ -126,10 +137,22 @@
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="I">I</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="modules/path_planning/bspline_path/bspline_path.html#PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path">interpolate_b_spline_path() (in module PathPlanning.BSplinePath.bspline_path)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="P">P</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="modules/path_planning/dubins_path/dubins_path.html#PathPlanning.DubinsPath.dubins_path_planner.plan_dubins_path">plan_dubins_path() (in module PathPlanning.DubinsPath.dubins_path_planner)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="modules/utils/plot/plot.html#utils.plot.plot_curvature">plot_curvature() (in module utils.plot)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">How To Contribute</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#adding-a-new-algorithm-example">Adding a new algorithm example</a><ul>
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
@@ -207,6 +208,10 @@ algorithms</a> (<a class="reference external" href="https://github.com/AtsushiSa
|
||||
<li class="toctree-l2"><a class="reference internal" href="modules/control/move_to_a_pose_control/move_to_a_pose_control.html">Move to a Pose Control</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/utils/utils.html">Utilities</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="modules/utils/plot/plot.html">Plotting Utilities</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/appendix/appendix.html">Appendix</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="modules/appendix/Kalmanfilter_basics.html">KF Basics - Part I</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="modules/appendix/Kalmanfilter_basics_2.html">KF Basics - Part 2</a></li>
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="appendix.html">Appendix</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">KF Basics - Part I</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#introduction">Introduction</a><ul>
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="appendix.html">Appendix</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="Kalmanfilter_basics.html">KF Basics - Part I</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">KF Basics - Part 2</a><ul>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<link rel="next" title="KF Basics - Part I" href="Kalmanfilter_basics.html" />
|
||||
<link rel="prev" title="Move to a Pose Control" href="../control/move_to_a_pose_control/move_to_a_pose_control.html" />
|
||||
<link rel="prev" title="Plotting Utilities" href="../utils/plot/plot.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
@@ -67,6 +67,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Appendix</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Kalmanfilter_basics.html">KF Basics - Part I</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="Kalmanfilter_basics_2.html">KF Basics - Part 2</a></li>
|
||||
@@ -132,7 +133,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../control/move_to_a_pose_control/move_to_a_pose_control.html" class="btn btn-neutral float-left" title="Move to a Pose Control" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="../utils/plot/plot.html" class="btn btn-neutral float-left" title="Plotting Utilities" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="Kalmanfilter_basics.html" class="btn btn-neutral float-right" title="KF Basics - Part I" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
<li class="toctree-l2"><a class="reference internal" href="move_to_a_pose_control/move_to_a_pose_control.html">Move to a Pose Control</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
<li class="toctree-l2"><a class="reference internal" href="../move_to_a_pose_control/move_to_a_pose_control.html">Move to a Pose Control</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
<link rel="next" title="Appendix" href="../../appendix/appendix.html" />
|
||||
<link rel="next" title="Utilities" href="../../utils/utils.html" />
|
||||
<link rel="prev" title="Inverted Pendulum Control" href="../inverted_pendulum_control/inverted_pendulum_control.html" />
|
||||
</head>
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
@@ -301,7 +302,7 @@ p102</a></p></li>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../inverted_pendulum_control/inverted_pendulum_control.html" class="btn btn-neutral float-left" title="Inverted Pendulum Control" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="../../appendix/appendix.html" class="btn btn-neutral float-right" title="Appendix" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
<a href="../../utils/utils.html" class="btn btn-neutral float-right" title="Utilities" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
<script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
@@ -72,7 +73,19 @@
|
||||
<li class="toctree-l2"><a class="reference internal" href="../vrm_planner/vrm_planner.html">Voronoi Road-Map planning</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../rrt/rrt.html">Rapidly-Exploring Random Trees (RRT)</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../cubic_spline/cubic_spline.html">Cubic spline planning</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">B-Spline planning</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">B-Spline planning</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#bspline-basics">Bspline basics</a></li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#bspline-interpolation-planning">Bspline interpolation planning</a><ul>
|
||||
<li class="toctree-l4"><a class="reference internal" href="#api">API</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#bspline-approximation-planning">Bspline approximation planning</a><ul>
|
||||
<li class="toctree-l4"><a class="reference internal" href="#id1">API</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#references">References</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../clothoid_path/clothoid_path.html">Clothoid path planning</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../eta3_spline/eta3_spline.html">Eta^3 Spline path planning</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="../bezier_path/bezier_path.html">Bezier path planning</a></li>
|
||||
@@ -90,6 +103,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
@@ -121,14 +135,171 @@
|
||||
|
||||
<section id="b-spline-planning">
|
||||
<h1>B-Spline planning<a class="headerlink" href="#b-spline-planning" title="Permalink to this headline"></a></h1>
|
||||
<img alt="../../../_images/Figure_11.png" src="../../../_images/Figure_11.png" />
|
||||
<p>This is a path planning with B-Spline curse.</p>
|
||||
<img alt="../../../_images/bspline_path_planning.png" src="../../../_images/bspline_path_planning.png" />
|
||||
<p>This is a B-Spline path planning routines.</p>
|
||||
<p>If you input waypoints, it generates a smooth path with B-Spline curve.</p>
|
||||
<p>The final course should be on the first and last waypoints.</p>
|
||||
<p>Ref:</p>
|
||||
<p>This codes provide two types of B-Spline curve generations:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><p>Interpolation: generate a curve that passes through all waypoints.</p></li>
|
||||
<li><p>Approximation: generate a curve that approximates the waypoints. (Not passing through all waypoints)</p></li>
|
||||
</ol>
|
||||
<section id="bspline-basics">
|
||||
<h2>Bspline basics<a class="headerlink" href="#bspline-basics" title="Permalink to this headline"></a></h2>
|
||||
<p>BSpline (Basis-Spline) is a piecewise polynomial spline curve.</p>
|
||||
<p>It is expressed by the following equation.</p>
|
||||
<p><span class="math notranslate nohighlight">\(\mathbf{S}(x)=\sum_{i=k-p}^k \mathbf{c}_i B_{i, p}(x)\)</span></p>
|
||||
<p>here:</p>
|
||||
<ul class="simple">
|
||||
<li><p><span class="math notranslate nohighlight">\(S(x)\)</span> is the curve point on the spline at x.</p></li>
|
||||
<li><p><span class="math notranslate nohighlight">\(c_i\)</span> is the representative point generating the spline, called the control point.</p></li>
|
||||
<li><p><span class="math notranslate nohighlight">\(p+1\)</span> is the dimension of the BSpline.</p></li>
|
||||
<li><p><span class="math notranslate nohighlight">\(k\)</span> is the number of knots.</p></li>
|
||||
<li><p><span class="math notranslate nohighlight">\(B_{i,p}(x)\)</span> is a function called Basis Function.</p></li>
|
||||
</ul>
|
||||
<p>The the basis function can be calculated by the following <a class="reference external" href="https://en.wikipedia.org/wiki/De_Boor%27s_algorithm">De Boor recursion formula</a>:</p>
|
||||
<p><span class="math notranslate nohighlight">\(B_{i, 0}(x):= \begin{cases}1 & \text { if } \quad t_i \leq x<t_{i+1} \\ 0 & \text { otherwise }\end{cases}\)</span></p>
|
||||
<p><span class="math notranslate nohighlight">\(B_{i, p}(x):=\frac{x-t_i}{t_{i+p}-t_i} B_{i, p-1}(x)+\frac{t_{i+p+1}-x}{t_{i+p+1}-t_{i+1}} B_{i+1, p-1}(x)\)</span></p>
|
||||
<p>here:</p>
|
||||
<ul class="simple">
|
||||
<li><p><span class="math notranslate nohighlight">\(t_i\)</span> is each element of the knot vector.</p></li>
|
||||
</ul>
|
||||
<p>This figure shows the BSpline basis functions for each of <span class="math notranslate nohighlight">\(i\)</span>:</p>
|
||||
<img alt="../../../_images/basis_functions.png" src="../../../_images/basis_functions.png" />
|
||||
<p>Note that when all the basis functions are added together, summation is 1.0 for any x value.</p>
|
||||
<p>This means that the result curve is smooth when each control point is weighted addition by this basis function,</p>
|
||||
<p>This code is for generating the upper basis function graph using <a class="reference external" href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.BSpline.html">scipy</a>.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">scipy.interpolate</span> <span class="kn">import</span> <span class="n">BSpline</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">B_orig</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="mf">1.0</span> <span class="k">if</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o"><=</span> <span class="n">x</span> <span class="o"><</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="k">else</span> <span class="mf">0.0</span>
|
||||
<span class="k">if</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="n">k</span><span class="p">]</span> <span class="o">==</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span>
|
||||
<span class="n">c1</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">c1</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">/</span> <span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="n">k</span><span class="p">]</span> <span class="o">-</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">*</span> <span class="n">B</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="n">k</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]:</span>
|
||||
<span class="n">c2</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">c2</span> <span class="o">=</span> <span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="n">k</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">x</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="n">k</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="o">*</span> <span class="n">B</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">c1</span> <span class="o">+</span> <span class="n">c2</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">B</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
<span class="n">c</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="n">BSpline</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">k</span><span class="p">)(</span><span class="n">x</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
|
||||
<span class="n">k</span> <span class="o">=</span> <span class="mi">3</span> <span class="c1"># degree of the spline</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">]</span> <span class="c1"># knots vector</span>
|
||||
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span> <span class="n">endpoint</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">r_</span><span class="p">[[</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">t</span><span class="p">)]</span><span class="o">*</span><span class="n">k</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">t</span><span class="p">)]</span><span class="o">*</span><span class="n">k</span><span class="p">]</span>
|
||||
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">-</span> <span class="n">k</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">B</span><span class="p">(</span><span class="n">ix</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">ix</span> <span class="ow">in</span> <span class="n">x</span><span class="p">])</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s1">'i = </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Basis functions (k = </span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s1">, knots = </span><span class="si">{</span><span class="n">t</span><span class="si">}</span><span class="s1">)'</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="bspline-interpolation-planning">
|
||||
<h2>Bspline interpolation planning<a class="headerlink" href="#bspline-interpolation-planning" title="Permalink to this headline"></a></h2>
|
||||
<p><a class="reference internal" href="#PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path" title="PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path"><code class="xref py py-meth docutils literal notranslate"><span class="pre">PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path()</span></code></a> generates a curve that passes through all waypoints.</p>
|
||||
<p>This is a simple example of the interpolation planning:</p>
|
||||
<img alt="../../../_images/interpolation1.png" src="../../../_images/interpolation1.png" />
|
||||
<p>This figure also shows curvatures of each path point using <a class="reference internal" href="../../utils/plot/plot.html#plot-curvature"><span class="std std-ref">utils.plot.plot_curvature</span></a>.</p>
|
||||
<p>The default spline degree is 3, so curvature changes smoothly.</p>
|
||||
<img alt="../../../_images/interp_and_curvature.png" src="../../../_images/interp_and_curvature.png" />
|
||||
<section id="api">
|
||||
<h3>API<a class="headerlink" href="#api" title="Permalink to this headline"></a></h3>
|
||||
<dl class="py function">
|
||||
<dt class="sig sig-object py" id="PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path">
|
||||
<span class="sig-prename descclassname"><span class="pre">PathPlanning.BSplinePath.bspline_path.</span></span><span class="sig-name descname"><span class="pre">interpolate_b_spline_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_path_points</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">degree</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">3</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">tuple</span></span></span><a class="reference internal" href="../../../_modules/PathPlanning/BSplinePath/bspline_path.html#interpolate_b_spline_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#PathPlanning.BSplinePath.bspline_path.interpolate_b_spline_path" title="Permalink to this definition"></a></dt>
|
||||
<dd><p>Interpolate x-y points with a B-Spline path</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>x</strong> (<em>array_like</em>) – x positions of interpolated points</p></li>
|
||||
<li><p><strong>y</strong> (<em>array_like</em>) – y positions of interpolated points</p></li>
|
||||
<li><p><strong>n_path_points</strong> (<em>int</em>) – number of path points</p></li>
|
||||
<li><p><strong>degree</strong> (<em>int</em><em>, </em><em>optional</em>) – B-Spline degree. Must be 2<= k <= 5. Default: 3</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p><ul class="simple">
|
||||
<li><p><strong>x</strong> (<em>array</em>) – x positions of the result path</p></li>
|
||||
<li><p><strong>y</strong> (<em>array</em>) – y positions of the result path</p></li>
|
||||
<li><p><strong>heading</strong> (<em>array</em>) – heading of the result path</p></li>
|
||||
<li><p><strong>curvature</strong> (<em>array</em>) – curvature of the result path</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
<section id="bspline-approximation-planning">
|
||||
<h2>Bspline approximation planning<a class="headerlink" href="#bspline-approximation-planning" title="Permalink to this headline"></a></h2>
|
||||
<p><a class="reference internal" href="#PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path" title="PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path"><code class="xref py py-meth docutils literal notranslate"><span class="pre">PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path()</span></code></a>
|
||||
generates a curve that approximates the waypoints, which means that
|
||||
the curve might not pass through waypoints.</p>
|
||||
<p>Users can adjust path smoothness by the smoothing parameter <cite>s</cite>. If this
|
||||
value is bigger, the path will be smoother, but it will be less accurate.
|
||||
If this value is smaller, the path will be more accurate, but it will be
|
||||
less smooth.</p>
|
||||
<p>This is a simple example of the approximation planning:</p>
|
||||
<img alt="../../../_images/approximation1.png" src="../../../_images/approximation1.png" />
|
||||
<p>This figure also shows curvatures of each path point using <a class="reference internal" href="../../utils/plot/plot.html#plot-curvature"><span class="std std-ref">utils.plot.plot_curvature</span></a>.</p>
|
||||
<p>The default spline degree is 3, so curvature changes smoothly.</p>
|
||||
<img alt="../../../_images/approx_and_curvature.png" src="../../../_images/approx_and_curvature.png" />
|
||||
<section id="id1">
|
||||
<h3>API<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h3>
|
||||
<dl class="py function">
|
||||
<dt class="sig sig-object py" id="PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path">
|
||||
<span class="sig-prename descclassname"><span class="pre">PathPlanning.BSplinePath.bspline_path.</span></span><span class="sig-name descname"><span class="pre">approximate_b_spline_path</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_path_points</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">degree</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">s</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">tuple</span></span></span><a class="reference internal" href="../../../_modules/PathPlanning/BSplinePath/bspline_path.html#approximate_b_spline_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#PathPlanning.BSplinePath.bspline_path.approximate_b_spline_path" title="Permalink to this definition"></a></dt>
|
||||
<dd><p>Approximate points with a B-Spline path</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>x</strong> (<em>array_like</em>) – x position list of approximated points</p></li>
|
||||
<li><p><strong>y</strong> (<em>array_like</em>) – y position list of approximated points</p></li>
|
||||
<li><p><strong>n_path_points</strong> (<em>int</em>) – number of path points</p></li>
|
||||
<li><p><strong>degree</strong> (<em>int</em><em>, </em><em>optional</em>) – B Spline curve degree. Must be 2<= k <= 5. Default: 3.</p></li>
|
||||
<li><p><strong>s</strong> (<em>int</em><em>, </em><em>optional</em>) – smoothing parameter. If this value is bigger, the path will be
|
||||
smoother, but it will be less accurate. If this value is smaller,
|
||||
the path will be more accurate, but it will be less smooth.
|
||||
When <cite>s</cite> is 0, it is equivalent to the interpolation. Default is None,
|
||||
in this case <cite>s</cite> will be <cite>len(x)</cite>.</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p><ul class="simple">
|
||||
<li><p><strong>x</strong> (<em>array</em>) – x positions of the result path</p></li>
|
||||
<li><p><strong>y</strong> (<em>array</em>) – y positions of the result path</p></li>
|
||||
<li><p><strong>heading</strong> (<em>array</em>) – heading of the result path</p></li>
|
||||
<li><p><strong>curvature</strong> (<em>array</em>) – curvature of the result path</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
<section id="references">
|
||||
<h2>References<a class="headerlink" href="#references" title="Permalink to this headline"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference external" href="https://en.wikipedia.org/wiki/B-spline">B-spline - Wikipedia</a></p></li>
|
||||
<li><p><a class="reference external" href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.UnivariateSpline.html">scipy.interpolate.UnivariateSpline</a></p></li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -95,6 +95,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -100,6 +100,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
@@ -172,7 +173,13 @@
|
||||
<li class="toctree-l2"><a class="reference internal" href="cubic_spline/cubic_spline.html#references">References</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="bspline_path/bspline_path.html">B-Spline planning</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="bspline_path/bspline_path.html">B-Spline planning</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="bspline_path/bspline_path.html#bspline-basics">Bspline basics</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="bspline_path/bspline_path.html#bspline-interpolation-planning">Bspline interpolation planning</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="bspline_path/bspline_path.html#bspline-approximation-planning">Bspline approximation planning</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="bspline_path/bspline_path.html#references">References</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="clothoid_path/clothoid_path.html">Clothoid path planning</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="clothoid_path/clothoid_path.html#step1-solve-g-function">Step1: Solve g function</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="clothoid_path/clothoid_path.html#step2-calculate-path-parameters">Step2: Calculate path parameters</a></li>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -105,6 +105,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -95,6 +95,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -98,6 +98,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
169
modules/utils/plot/plot.html
Normal file
@@ -0,0 +1,169 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Plotting Utilities — PythonRobotics documentation</title>
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/plot_directive.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
<link rel="next" title="Appendix" href="../../appendix/appendix.html" />
|
||||
<link rel="prev" title="Utilities" href="../utils.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> PythonRobotics
|
||||
<img src="../../../_static/icon.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9612347954373886"
|
||||
crossorigin="anonymous"></script>
|
||||
<!-- PythonRoboticsDoc -->
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-9612347954373886"
|
||||
data-ad-slot="1579532132"
|
||||
data-ad-format="auto"
|
||||
data-full-width-responsive="true"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../getting_started.html">Getting Started</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../localization/localization.html">Localization</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../mapping/mapping.html">Mapping</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../slam/slam.html">SLAM</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../path_planning/path_planning.html">Path Planning</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../path_tracking/path_tracking.html">Path Tracking</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../arm_navigation/arm_navigation.html">Arm Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="../utils.html">Utilities</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Plotting Utilities</a><ul>
|
||||
<li class="toctree-l3"><a class="reference internal" href="#plot-curvature">plot_curvature</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">PythonRobotics</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
<li><a href="../utils.html">Utilities</a> »</li>
|
||||
<li>Plotting Utilities</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/AtsushiSakai/PythonRobotics/blob/master/docs/modules/utils/plot/plot_main.rst" class="fa fa-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="plotting-utilities">
|
||||
<span id="plot-utils"></span><h1>Plotting Utilities<a class="headerlink" href="#plotting-utilities" title="Permalink to this headline"></a></h1>
|
||||
<p>This module contains a number of utility functions for plotting data.</p>
|
||||
<section id="plot-curvature">
|
||||
<span id="id1"></span><h2>plot_curvature<a class="headerlink" href="#plot-curvature" title="Permalink to this headline"></a></h2>
|
||||
<dl class="py function">
|
||||
<dt class="sig sig-object py" id="utils.plot.plot_curvature">
|
||||
<span class="sig-prename descclassname"><span class="pre">utils.plot.</span></span><span class="sig-name descname"><span class="pre">plot_curvature</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x_list</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y_list</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">heading_list</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">curvature</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">k</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.01</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">c</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'-c'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">label</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'Curvature'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/utils/plot.html#plot_curvature"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#utils.plot.plot_curvature" title="Permalink to this definition"></a></dt>
|
||||
<dd><p>Plot curvature on 2D path. This plot is a line from the original path,
|
||||
the lateral distance from the original path shows curvature magnitude.
|
||||
Left turning shows right side plot, right turning shows left side plot.
|
||||
For straight path, the curvature plot will be on the path, because
|
||||
curvature is 0 on the straight path.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>x_list</strong> (<em>array_like</em>) – x position list of the path</p></li>
|
||||
<li><p><strong>y_list</strong> (<em>array_like</em>) – y position list of the path</p></li>
|
||||
<li><p><strong>heading_list</strong> (<em>array_like</em>) – heading list of the path</p></li>
|
||||
<li><p><strong>curvature</strong> (<em>array_like</em>) – curvature list of the path</p></li>
|
||||
<li><p><strong>k</strong> (<em>float</em>) – curvature scale factor to calculate distance from the original path</p></li>
|
||||
<li><p><strong>c</strong> (<em>string</em>) – color of the plot</p></li>
|
||||
<li><p><strong>label</strong> (<em>string</em>) – label of the plot</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<img alt="../../../_images/curvature_plot.png" src="../../../_images/curvature_plot.png" />
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../utils.html" class="btn btn-neutral float-left" title="Utilities" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="../../appendix/appendix.html" class="btn btn-neutral float-right" title="Appendix" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2018-2021, Atsushi Sakai.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
147
modules/utils/utils.html
Normal file
@@ -0,0 +1,147 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Utilities — PythonRobotics documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/plot_directive.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
<link rel="next" title="Plotting Utilities" href="plot/plot.html" />
|
||||
<link rel="prev" title="Move to a Pose Control" href="../control/move_to_a_pose_control/move_to_a_pose_control.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> PythonRobotics
|
||||
<img src="../../_static/icon.png" class="logo" alt="Logo"/>
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9612347954373886"
|
||||
crossorigin="anonymous"></script>
|
||||
<!-- PythonRoboticsDoc -->
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-9612347954373886"
|
||||
data-ad-slot="1579532132"
|
||||
data-ad-format="auto"
|
||||
data-full-width-responsive="true"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../getting_started.html">Getting Started</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../localization/localization.html">Localization</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../mapping/mapping.html">Mapping</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../slam/slam.html">SLAM</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../path_planning/path_planning.html">Path Planning</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../path_tracking/path_tracking.html">Path Tracking</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../arm_navigation/arm_navigation.html">Arm Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../control/control.html">Control</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Utilities</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="plot/plot.html">Plotting Utilities</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">PythonRobotics</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
<li>Utilities</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="https://github.com/AtsushiSakai/PythonRobotics/blob/master/docs/modules/utils/utils_main.rst" class="fa fa-github"> Edit on GitHub</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<section id="utilities">
|
||||
<span id="utils"></span><h1>Utilities<a class="headerlink" href="#utilities" title="Permalink to this headline"></a></h1>
|
||||
<p>Common utilities for PythonRobotics.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="plot/plot.html">Plotting Utilities</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="plot/plot.html#plot-curvature">plot_curvature</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||||
<a href="../control/move_to_a_pose_control/move_to_a_pose_control.html" class="btn btn-neutral float-left" title="Move to a Pose Control" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||||
<a href="plot/plot.html" class="btn btn-neutral float-right" title="Plotting Utilities" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2018-2021, Atsushi Sakai.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
BIN
objects.inv
@@ -67,6 +67,7 @@
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/aerial_navigation/aerial_navigation.html">Aerial Navigation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/bipedal/bipedal.html">Bipedal</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/control/control.html">Control</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/utils/utils.html">Utilities</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="modules/appendix/appendix.html">Appendix</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="how_to_contribute.html">How To Contribute</a></li>
|
||||
</ul>
|
||||
|
||||