|
34 | 34 | <script src="../../../../_static/jquery.js"></script>
|
35 | 35 | <script src="../../../../_static/underscore.js"></script>
|
36 | 36 | <script src="../../../../_static/doctools.js"></script>
|
37 |
| - <script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script> |
38 |
| - <script type="text/x-mathjax-config">MathJax.Hub.Config({"TeX": {"Macros": {"presup": ["\\,{}^{\\scriptscriptstyle #1}\\!", 1], "SE": ["\\mathbf{SE}(#1)", 1], "SO": ["\\mathbf{SO}(#1)", 1], "se": ["\\mathbf{se}(#1)", 1], "so": ["\\mathbf{so}(#1)", 1], "vec": ["\\boldsymbol{#1}", 1], "dvec": ["\\dot{\\boldsymbol{#1}}", 1], "ddvec": ["\\ddot{\\boldsymbol{#1}}", 1], "fvec": ["\\presup{#1}\\boldsymbol{#2}", 2], "fdvec": ["\\presup{#1}\\dot{\\boldsymbol{#2}}", 2], "fddvec": ["\\presup{#1}\\ddot{\\boldsymbol{#2}}", 2], "norm": ["\\Vert #1 \\Vert", 1], "mat": ["\\mathbf{#1}", 1], "fmat": ["\\presup{#1}\\mathbf{#2}", 2], "sk": ["\\left[#1\\right]", 1], "skx": ["\\left[#1\\right]_{\\times}", 1], "vex": ["\\vee\\left( #1\\right)", 1], "vexx": ["\\vee_{\\times}\\left( #1\\right)", 1], "q": "\\mathring{q}", "fq": ["\\presup{#1}\\mathring{q}", 1]}}})</script> |
39 | 37 |
|
40 | 38 | <script type="text/javascript" src="../../../../_static/js/theme.js"></script>
|
41 | 39 |
|
@@ -170,6 +168,7 @@ <h1>Source code for roboticstoolbox.backends.Swift.Swift</h1><div class="highlig
|
170 | 168 | <span class="kn">import</span> <span class="nn">spatialmath</span> <span class="k">as</span> <span class="nn">sm</span>
|
171 | 169 | <span class="kn">import</span> <span class="nn">time</span>
|
172 | 170 | <span class="kn">from</span> <span class="nn">queue</span> <span class="kn">import</span> <span class="n">Queue</span>
|
| 171 | +<span class="kn">import</span> <span class="nn">json</span> |
173 | 172 |
|
174 | 173 | <span class="n">_sw</span> <span class="o">=</span> <span class="kc">None</span>
|
175 | 174 | <span class="n">sw</span> <span class="o">=</span> <span class="kc">None</span>
|
@@ -233,6 +232,12 @@ <h1>Source code for roboticstoolbox.backends.Swift.Swift</h1><div class="highlig
|
233 | 232 | <span class="bp">self</span><span class="o">.</span><span class="n">outq</span> <span class="o">=</span> <span class="n">Queue</span><span class="p">()</span>
|
234 | 233 | <span class="bp">self</span><span class="o">.</span><span class="n">inq</span> <span class="o">=</span> <span class="n">Queue</span><span class="p">()</span>
|
235 | 234 |
|
| 235 | + <span class="c1"># Number of custom html elements added to page for id purposes</span> |
| 236 | + <span class="bp">self</span><span class="o">.</span><span class="n">elementid</span> <span class="o">=</span> <span class="mi">0</span> |
| 237 | + |
| 238 | + <span class="c1"># Element dict which holds the callback functions for form updates</span> |
| 239 | + <span class="bp">self</span><span class="o">.</span><span class="n">elements</span> <span class="o">=</span> <span class="p">{}</span> |
| 240 | + |
236 | 241 | <span class="bp">self</span><span class="o">.</span><span class="n">realtime</span> <span class="o">=</span> <span class="n">realtime</span>
|
237 | 242 | <span class="bp">self</span><span class="o">.</span><span class="n">display</span> <span class="o">=</span> <span class="n">display</span>
|
238 | 243 |
|
@@ -544,6 +549,52 @@ <h1>Source code for roboticstoolbox.backends.Swift.Swift</h1><div class="highlig
|
544 | 549 | <span class="s2">"You must call swift.start_recording(file_name) before trying"</span>
|
545 | 550 | <span class="s2">" to stop the recording"</span><span class="p">)</span></div>
|
546 | 551 |
|
| 552 | +<div class="viewcode-block" id="Swift.add_slider"><a class="viewcode-back" href="../../../../arm_backend_swift.html#roboticstoolbox.backends.Swift.Swift.add_slider">[docs]</a> <span class="k">def</span> <span class="nf">add_slider</span><span class="p">(</span> |
| 553 | + <span class="bp">self</span><span class="p">,</span> <span class="n">cb</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s1">''</span><span class="p">):</span> |
| 554 | + <span class="sd">"""</span> |
| 555 | +<span class="sd"> Add a range-slider to the page</span> |
| 556 | + |
| 557 | +<span class="sd"> :param cb: A callback function which is executed when the value of the</span> |
| 558 | +<span class="sd"> slider changes. The callback should accept one argument which</span> |
| 559 | +<span class="sd"> represents the new value of the slider</span> |
| 560 | +<span class="sd"> :type cb: function</span> |
| 561 | +<span class="sd"> :param min: the minimum value of the slider, optional</span> |
| 562 | +<span class="sd"> :type min: float</span> |
| 563 | +<span class="sd"> :param max: the maximum value of the slider, optional</span> |
| 564 | +<span class="sd"> :type max: float</span> |
| 565 | +<span class="sd"> :param step: the step size of the slider, optional</span> |
| 566 | +<span class="sd"> :type step: float</span> |
| 567 | +<span class="sd"> :param desc: add a description of the slider, optional</span> |
| 568 | +<span class="sd"> :type desc: str</span> |
| 569 | +<span class="sd"> :param unit: add a unit to the slider value, optional</span> |
| 570 | +<span class="sd"> :type unit: str</span> |
| 571 | + |
| 572 | +<span class="sd"> ``env.add_slider()`` adds a slider to the graphical</span> |
| 573 | +<span class="sd"> environment.</span> |
| 574 | + |
| 575 | +<span class="sd"> """</span> |
| 576 | + |
| 577 | + <span class="nb">id</span> <span class="o">=</span> <span class="s1">'customelement'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">elementid</span><span class="p">)</span> |
| 578 | + <span class="bp">self</span><span class="o">.</span><span class="n">elementid</span> <span class="o">+=</span> <span class="mi">1</span> |
| 579 | + <span class="bp">self</span><span class="o">.</span><span class="n">elements</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span> <span class="o">=</span> <span class="n">cb</span> |
| 580 | + |
| 581 | + <span class="bp">self</span><span class="o">.</span><span class="n">_send_socket</span><span class="p">(</span> |
| 582 | + <span class="s1">'add_element'</span><span class="p">,</span> |
| 583 | + <span class="p">[</span><span class="s1">'slider'</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="nb">min</span><span class="p">,</span> <span class="nb">max</span><span class="p">,</span> <span class="n">step</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">desc</span><span class="p">,</span> <span class="n">unit</span><span class="p">])</span></div> |
| 584 | + |
| 585 | +<div class="viewcode-block" id="Swift.process_events"><a class="viewcode-back" href="../../../../arm_backend_swift.html#roboticstoolbox.backends.Swift.Swift.process_events">[docs]</a> <span class="k">def</span> <span class="nf">process_events</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| 586 | + <span class="sd">"""</span> |
| 587 | +<span class="sd"> Process the event queue from Swift, this invokes the callback functions</span> |
| 588 | +<span class="sd"> from custom elements added to the page. If using custom elements</span> |
| 589 | +<span class="sd"> (for example `add_slider`), use this function in your event loop to</span> |
| 590 | +<span class="sd"> process updates from Swift.</span> |
| 591 | +<span class="sd"> """</span> |
| 592 | + <span class="n">events</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_send_socket</span><span class="p">(</span><span class="s1">'check_elements'</span><span class="p">)</span> |
| 593 | + <span class="n">events</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">events</span><span class="p">)</span> |
| 594 | + |
| 595 | + <span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span> |
| 596 | + <span class="bp">self</span><span class="o">.</span><span class="n">elements</span><span class="p">[</span><span class="n">event</span><span class="p">](</span><span class="n">events</span><span class="p">[</span><span class="n">event</span><span class="p">])</span></div> |
| 597 | + |
547 | 598 | <span class="k">def</span> <span class="nf">_step_robots</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dt</span><span class="p">):</span>
|
548 | 599 |
|
549 | 600 | <span class="k">for</span> <span class="n">robot_object</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">robots</span><span class="p">:</span>
|
@@ -618,7 +669,7 @@ <h1>Source code for roboticstoolbox.backends.Swift.Swift</h1><div class="highlig
|
618 | 669 | <p>
|
619 | 670 | © Copyright 2020, Jesse Haviland and Peter Corke.
|
620 | 671 | <span class="lastupdated">
|
621 |
| - Last updated on 14-Feb-2021. |
| 672 | + Last updated on 22-Feb-2021. |
622 | 673 | </span>
|
623 | 674 |
|
624 | 675 | </p>
|
|
0 commit comments