Skip to content

Commit 1094ab2

Browse files
committed
Update documentation
1 parent 68e60a0 commit 1094ab2

54 files changed

Lines changed: 103 additions & 232 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎2d_ellipse.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ <h1>2D ellipse<a class="headerlink" href="#d-ellipse" title="Link to this headin
129129
<span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="n">perim</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
130130
<span class="go">(2, 20)</span>
131131
<span class="gp">&gt;&gt;&gt; </span><span class="n">Ellipse</span><span class="o">.</span><span class="n">FromPerimeter</span><span class="p">(</span><span class="n">perim</span><span class="p">)</span>
132-
<span class="go">Ellipse(radii=[1.+0.j 2.-0.j], centre=[3. 4.], theta=0.785398163397435)</span>
132+
<span class="go">Ellipse(radii=[1.+0.j 2.-0.j], centre=[3. 4.], theta=0.7853981633974343)</span>
133133
</pre></div>
134134
</div>
135135
<dl class="field-list simple">

‎2d_pose_twist.html‎

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -866,11 +866,14 @@ <h1>se(2) twist<a class="headerlink" href="#se-2-twist" title="Link to this head
866866
Twist <code class="docutils literal notranslate"><span class="pre">S</span></code>.</p></li>
867867
</ul>
868868
<p>Example:</p>
869-
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span><span class="w"> </span><span class="nn">spatialmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">SE2</span><span class="p">,</span> <span class="n">Twist2</span>
870-
<span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">SE2</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="mf">0.3</span><span class="p">)</span>
871-
<span class="gp">&gt;&gt;&gt; </span><span class="n">S</span> <span class="o">=</span> <span class="n">Twist2</span><span class="p">(</span><span class="n">T</span><span class="p">)</span>
872-
<span class="gp">&gt;&gt;&gt; </span><span class="n">S</span><span class="o">.</span><span class="n">unit</span><span class="p">()</span>
873-
<span class="go">Twist2([4.3083, 6.1166, 1])</span>
869+
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gt">Traceback (most recent call last):</span>
870+
File <span class="nb">"&lt;input&gt;"</span>, line <span class="m">1</span>, in <span class="n">&lt;module&gt;</span>
871+
File <span class="nb">"/opt/hostedtoolcache/Python/3.12.14/x64/lib/python3.12/site-packages/spatialmath/twist.py"</span>, line <span class="m">1634</span>, in <span class="n">unit</span>
872+
<span class="w"> </span><span class="k">return</span> <span class="n">Twist2</span><span class="p">(</span><span class="n">smb</span><span class="o">.</span><span class="n">unitvec</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">v</span><span class="p">),</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">])</span>
873+
<span class="w"> </span><span class="pm">^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</span>
874+
File <span class="nb">"/opt/hostedtoolcache/Python/3.12.14/x64/lib/python3.12/site-packages/spatialmath/twist.py"</span>, line <span class="m">1297</span>, in <span class="n">__init__</span>
875+
<span class="w"> </span><span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"bad twist value"</span><span class="p">)</span>
876+
<span class="gr">ValueError</span>: <span class="n">bad twist value</span>
874877
</pre></div>
875878
</div>
876879
</dd></dl>
@@ -957,11 +960,14 @@ <h1>se(2) twist<a class="headerlink" href="#se-2-twist" title="Link to this head
957960
homogeneous transformation.</p></li>
958961
</ul>
959962
<p>Example:</p>
960-
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span><span class="w"> </span><span class="nn">spatialmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">SE2</span><span class="p">,</span> <span class="n">Twist2</span>
961-
<span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">SE2</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="mf">0.3</span><span class="p">)</span>
962-
<span class="gp">&gt;&gt;&gt; </span><span class="n">S</span> <span class="o">=</span> <span class="n">Twist2</span><span class="p">(</span><span class="n">T</span><span class="p">)</span>
963-
<span class="gp">&gt;&gt;&gt; </span><span class="n">S</span><span class="o">.</span><span class="n">unit</span><span class="p">()</span>
964-
<span class="go">Twist2([4.3083, 6.1166, 1])</span>
963+
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gt">Traceback (most recent call last):</span>
964+
File <span class="nb">"&lt;input&gt;"</span>, line <span class="m">1</span>, in <span class="n">&lt;module&gt;</span>
965+
File <span class="nb">"/opt/hostedtoolcache/Python/3.12.14/x64/lib/python3.12/site-packages/spatialmath/twist.py"</span>, line <span class="m">1634</span>, in <span class="n">unit</span>
966+
<span class="w"> </span><span class="k">return</span> <span class="n">Twist2</span><span class="p">(</span><span class="n">smb</span><span class="o">.</span><span class="n">unitvec</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">v</span><span class="p">),</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">])</span>
967+
<span class="w"> </span><span class="pm">^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</span>
968+
File <span class="nb">"/opt/hostedtoolcache/Python/3.12.14/x64/lib/python3.12/site-packages/spatialmath/twist.py"</span>, line <span class="m">1297</span>, in <span class="n">__init__</span>
969+
<span class="w"> </span><span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"bad twist value"</span><span class="p">)</span>
970+
<span class="gr">ValueError</span>: <span class="n">bad twist value</span>
965971
</pre></div>
966972
</div>
967973
<dl class="field-list simple">
@@ -1058,14 +1064,12 @@ <h1>se(2) twist<a class="headerlink" href="#se-2-twist" title="Link to this head
10581064
<dd class="field-even"><p>ndarray(2)</p>
10591065
</dd>
10601066
</dl>
1061-
<p><code class="docutils literal notranslate"><span class="pre">X.pole</span></code> is a point on the twist axis. For a pure translation
1067+
<p><code class="docutils literal notranslate"><span class="pre">X.pole()</span></code> is a point on the twist axis. For a pure translation
10621068
this point is at infinity.</p>
10631069
<p>Example:</p>
1064-
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span><span class="w"> </span><span class="nn">spatialmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">SE2</span><span class="p">,</span> <span class="n">Twist2</span>
1065-
<span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">SE2</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="mf">0.3</span><span class="p">)</span>
1066-
<span class="gp">&gt;&gt;&gt; </span><span class="n">S</span> <span class="o">=</span> <span class="n">Twist2</span><span class="p">(</span><span class="n">T</span><span class="p">)</span>
1067-
<span class="gp">&gt;&gt;&gt; </span><span class="n">S</span><span class="o">.</span><span class="n">pole</span>
1068-
<span class="go">array([-1.83497745, 1.29248873])</span>
1070+
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gt">Traceback (most recent call last):</span>
1071+
File <span class="nb">"&lt;input&gt;"</span>, line <span class="m">1</span>, in <span class="n">&lt;module&gt;</span>
1072+
<span class="gr">TypeError</span>: <span class="n">'numpy.ndarray' object is not callable</span>
10691073
</pre></div>
10701074
</div>
10711075
</dd></dl>

‎3d_orient_SO3.html‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -505,9 +505,9 @@ <h1>SO(3) matrix<a class="headerlink" href="#so-3-matrix" title="Link to this he
505505
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span><span class="w"> </span><span class="nn">spatialmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">SO3</span>
506506
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">SO3</span><span class="o">.</span><span class="n">Rand</span><span class="p">()</span>
507507
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span>
508-
<span class="go">SO3(array([[ 0.0084743 , 0.33165172, 0.94336383],</span>
509-
<span class="go"> [ 0.95279317, 0.28365518, -0.10828164],</span>
510-
<span class="go"> [-0.30350183, 0.89974823, -0.31359171]]))</span>
508+
<span class="go">SO3(array([[ 0.80291147, 0.34725109, 0.48450991],</span>
509+
<span class="go"> [ 0.58155051, -0.27783983, -0.76459403],</span>
510+
<span class="go"> [-0.13088996, 0.8956683 , -0.42502484]]))</span>
511511
</pre></div>
512512
</div>
513513
<dl class="field-list simple">

‎3d_orient_unitquaternion.html‎

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -467,11 +467,11 @@ <h1>Unit quaternion<a class="headerlink" href="#unit-quaternion" title="Link to
467467
<p>Example:</p>
468468
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span><span class="w"> </span><span class="nn">spatialmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">UnitQuaternion</span> <span class="k">as</span> <span class="n">UQ</span>
469469
<span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="n">UQ</span><span class="o">.</span><span class="n">Rand</span><span class="p">())</span>
470-
<span class="go"> 0.5187 &lt;&lt; 0.7907, 0.2955, -0.1357 &gt;&gt;</span>
470+
<span class="go"> 0.7312 &lt;&lt; 0.0748, -0.5543, -0.3905 &gt;&gt;</span>
471471
<span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="n">UQ</span><span class="o">.</span><span class="n">Rand</span><span class="p">(</span><span class="mi">3</span><span class="p">))</span>
472-
<span class="go"> 0.3798 &lt;&lt; 0.1501, 0.6617, -0.6288 &gt;&gt;</span>
473-
<span class="go"> 0.4844 &lt;&lt; -0.4088, -0.1961, -0.7482 &gt;&gt;</span>
474-
<span class="go"> 0.6645 &lt;&lt; -0.3094, 0.6709, -0.1122 &gt;&gt;</span>
472+
<span class="go"> 0.1084 &lt;&lt; -0.6115, 0.7367, 0.2678 &gt;&gt;</span>
473+
<span class="go"> 0.5411 &lt;&lt; 0.5484, 0.4907, 0.4071 &gt;&gt;</span>
474+
<span class="go"> 0.0913 &lt;&lt; -0.2950, 0.7966, -0.5197 &gt;&gt;</span>
475475
</pre></div>
476476
</div>
477477
<dl class="field-list simple">
@@ -1530,44 +1530,10 @@ <h1>Unit quaternion<a class="headerlink" href="#unit-quaternion" title="Link to
15301530
</dl>
15311531
<p><code class="docutils literal notranslate"><span class="pre">q.conj()</span></code> is the quaternion <code class="docutils literal notranslate"><span class="pre">q</span></code> with the vector part negated, ie.
15321532
<span class="math notranslate nohighlight">\(q = s \langle -v_x, -v_y, -v_z \rangle\)</span></p>
1533-
<div class="admonition note">
1534-
<p class="admonition-title">Note</p>
1535-
<p>For a <code class="docutils literal notranslate"><span class="pre">UnitQuaternion</span></code> this deliberately does <strong>not</strong>
1536-
canonicalize the result’s scalar part to be non-negative, unlike
1537-
normal <code class="docutils literal notranslate"><span class="pre">UnitQuaternion</span></code> construction. <code class="docutils literal notranslate"><span class="pre">UnitQuaternion</span></code>
1538-
construction canonicalizes because <span class="math notranslate nohighlight">\(q\)</span> and <span class="math notranslate nohighlight">\(-q\)</span>
1539-
represent the same rotation, which is the right behaviour when
1540-
building a unit quaternion from arbitrary data. But conjugation
1541-
is an algebraic operation, not a re-representation of a
1542-
rotation: it must satisfy <span class="math notranslate nohighlight">\(q \cdot \bar{q} = 1\)</span> for any
1543-
downstream algebra to be correct (e.g. dual-quaternion
1544-
translation extraction, which relies on exactly this identity).
1545-
Re-canonicalizing the conjugate would silently return
1546-
<span class="math notranslate nohighlight">\(-\bar{q}\)</span> whenever <code class="docutils literal notranslate"><span class="pre">q</span></code> has negative scalar part,
1547-
breaking that identity. See the example below: the scalar part
1548-
of the result matches the input’s sign, it is not forced
1549-
positive.</p>
1550-
</div>
1551-
<div class="versionchanged">
1552-
<p><span class="versionmodified changed">Changed in version 1.1.18: </span>Fixes a bug present in 1.1.17 and earlier: <code class="docutils literal notranslate"><span class="pre">UnitQuaternion.conj()</span></code>
1553-
re-canonicalized its result’s sign, silently returning
1554-
<span class="math notranslate nohighlight">\(-\bar{q}\)</span> instead of the true conjugate whenever <code class="docutils literal notranslate"><span class="pre">q</span></code> had
1555-
negative scalar part. This broke any algebra relying on
1556-
<span class="math notranslate nohighlight">\(q \cdot \bar{q} = 1\)</span>, including <code class="xref py py-class docutils literal notranslate"><span class="pre">DualQuaternion</span></code>
1557-
translation extraction (<code class="docutils literal notranslate"><span class="pre">SE3()</span></code>), <code class="docutils literal notranslate"><span class="pre">norm()</span></code> (which could raise
1558-
<code class="docutils literal notranslate"><span class="pre">ValueError</span></code> from taking the square root of a small negative
1559-
float), and point transformation via <code class="docutils literal notranslate"><span class="pre">dq</span> <span class="pre">*</span> <span class="pre">v</span></code>.</p>
1560-
</div>
15611533
<p>Example:</p>
1562-
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span><span class="w"> </span><span class="nn">spatialmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">Quaternion</span><span class="p">,</span> <span class="n">UnitQuaternion</span>
1563-
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
1534+
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span><span class="w"> </span><span class="nn">spatialmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">Quaternion</span>
15641535
<span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="n">Quaternion</span><span class="o">.</span><span class="n">Pure</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="o">.</span><span class="n">conj</span><span class="p">())</span>
15651536
<span class="go"> 0.0000 &lt; -1.0000, -2.0000, -3.0000 &gt;</span>
1566-
<span class="gp">&gt;&gt;&gt; </span><span class="n">q</span> <span class="o">=</span> <span class="n">UnitQuaternion</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">]]),</span> <span class="n">norm</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1567-
<span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="n">q</span><span class="p">)</span>
1568-
<span class="go">-0.5000 &lt;&lt; 0.5000, 0.5000, 0.5000 &gt;&gt;</span>
1569-
<span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="n">q</span><span class="o">.</span><span class="n">conj</span><span class="p">())</span>
1570-
<span class="go">-0.5000 &lt;&lt; -0.5000, -0.5000, -0.5000 &gt;&gt;</span>
15711537
</pre></div>
15721538
</div>
15731539
<dl class="field-list simple">

‎3d_pose_SE3.html‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -606,13 +606,13 @@ <h1>SE(3) matrix<a class="headerlink" href="#se-3-matrix" title="Link to this he
606606
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span><span class="w"> </span><span class="nn">spatialmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">SE3</span>
607607
<span class="gp">&gt;&gt;&gt; </span><span class="n">SE3</span><span class="o">.</span><span class="n">Rand</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
608608
<span class="go">SE3([</span>
609-
<span class="go">array([[-0.46089598, -0.80245139, 0.37900747, 0.54273952],</span>
610-
<span class="go"> [ 0.16714989, -0.49792306, -0.85096036, 0.86201404],</span>
611-
<span class="go"> [ 0.87157088, -0.32885316, 0.3636204 , 0.23208914],</span>
609+
<span class="go">array([[ 0.79842012, 0.56002555, 0.22112597, 0.8167405 ],</span>
610+
<span class="go"> [ 0.60186902, -0.75252828, -0.26731044, 0.2258387 ],</span>
611+
<span class="go"> [ 0.01670287, 0.3465149 , -0.93789575, 0.76957197],</span>
612612
<span class="go"> [ 0. , 0. , 0. , 1. ]]),</span>
613-
<span class="go">array([[-0.41759189, -0.67119638, 0.61246423, 0.55408443],</span>
614-
<span class="go"> [-0.5851296 , 0.71432788, 0.38387371, 0.8073223 ],</span>
615-
<span class="go"> [-0.69515492, -0.1980684 , -0.6910344 , 0.43448602],</span>
613+
<span class="go">array([[ 0.55184684, -0.83364037, -0.02255668, 0.43068057],</span>
614+
<span class="go"> [ 0.76523045, 0.49543915, 0.41105038, 0.93803726],</span>
615+
<span class="go"> [-0.33149273, -0.24409791, 0.91133352, -0.04372957],</span>
616616
<span class="go"> [ 0. , 0. , 0. , 1. ]]) ])</span>
617617
</pre></div>
618618
</div>

0 commit comments

Comments
 (0)