Add changes for e40b4d9dec

This commit is contained in:
GitHub Action
2022-09-27 12:51:28 +00:00
parent 40d1131aba
commit 7341eeacf7
91 changed files with 1261 additions and 17 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
_images/approximation1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
_images/basis_functions.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
_images/curvature_plot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
_images/interpolation1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View 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 &mdash; 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> &raquo;</li>
<li><a href="../../index.html">Module code</a> &raquo;</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">&quot;&quot;&quot;</span>
<span class="sd">Path Planner with B-Spline</span>
<span class="sd">author: Atsushi Sakai (@Atsushi_twi)</span>
<span class="sd">&quot;&quot;&quot;</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">-&gt;</span> <span class="nb">tuple</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</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&lt;= k &lt;= 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"> &quot;&quot;&quot;</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">-&gt;</span> <span class="nb">tuple</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</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&lt;= k &lt;= 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"> &quot;&quot;&quot;</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">&quot; start!!&quot;</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">&#39;-r&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Approximated B-Spline path&quot;</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">&quot;B-Spline approximation&quot;</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">&#39;-og&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;way points&quot;</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">&quot;equal&quot;</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">&#39;-b&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Interpolated B-Spline path&quot;</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">&quot;B-Spline interpolation&quot;</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">&#39;-og&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;way points&quot;</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">&quot;equal&quot;</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">&#39;__main__&#39;</span><span class="p">:</span>
<span class="n">main</span><span class="p">()</span>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>&#169; 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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
View 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 &mdash; 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> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</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">&quot;&quot;&quot;</span>
<span class="sd">Matplotlib based plotting utilities</span>
<span class="sd">&quot;&quot;&quot;</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">&quot;xr&quot;</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">&quot;r&quot;</span><span class="p">,</span> <span class="n">ec</span><span class="o">=</span><span class="s2">&quot;k&quot;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</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"> &quot;&quot;&quot;</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">&quot;-c&quot;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Curvature&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</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"> &quot;&quot;&quot;</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>&#169; 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>

View File

@@ -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

View File

@@ -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>`__

View 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

View File

@@ -0,0 +1,12 @@
.. _utils:
Utilities
==========
Common utilities for PythonRobotics.
.. toctree::
:maxdepth: 2
:caption: Contents
plot/plot

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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/>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 &amp; \text { if } \quad t_i \leq x&lt;t_{i+1} \\ 0 &amp; \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">&lt;=</span> <span class="n">x</span> <span class="o">&lt;</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">&#39;i = </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s1">&#39;</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">&#39;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">)&#39;</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">&#x2192;</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&lt;= k &lt;= 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">&#x2192;</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&lt;= k &lt;= 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View 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 &mdash; 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> &raquo;</li>
<li><a href="../utils.html">Utilities</a> &raquo;</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>&#169; 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
View 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 &mdash; 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> &raquo;</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>&#169; 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>

Binary file not shown.

View File

@@ -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>

File diff suppressed because one or more lines are too long