Skip to content

Commit

Permalink
deploy: 6d244ed
Browse files Browse the repository at this point in the history
  • Loading branch information
tgurriet committed May 22, 2024
1 parent c4b15d0 commit 9af64fa
Show file tree
Hide file tree
Showing 11 changed files with 36 additions and 46 deletions.
5 changes: 0 additions & 5 deletions en/latest/_sources/sources/changelog.md.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@

This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 1.0.4 (13th May 2024)

Test CI, DO NOT download these packages.
New update available soon !

## 1.0.3 (7th May 2024)

Fix omnidirectional dynamics not working when using input mask.
Expand Down
4 changes: 2 additions & 2 deletions en/latest/_sources/sources/getting_started.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ The initial view of the Control Panel is the "Configuration" page, which consist
4. Interface with your stack
*****************************

In order to perform collision avoidance maneuvers, the Supervisor must be able to send commands to your robot actuators. These commands will be published on the ``/lll/ram/filtered_input`` topic.
In order to perform collision avoidance maneuvers, the Supervisor must be able to send commands to your robot actuators. These commands will be published by default on the ``/lll/ram/filtered_input`` topic (this is a customizable name via the Control Panel.

Your low-level controller therefore needs to subscribe to this topic and apply the commands to your robot:

Expand All @@ -106,7 +106,7 @@ Your low-level controller therefore needs to subscribe to this topic and apply t
:width: 600px
:alt: Operations page showing a configured robot that does not yet have sensor or planning data.

For that, you can either create an extra dedicated subscriber in your low-level control stack to receive the commands from the Supervisor, or you can use ROS topic remapping feature to remap the low-level controller subscription from ``/cmd`` to ``/lll/ram/filtered_input``:
For that, you can either create an extra dedicated subscriber in your low-level control stack to receive the commands from the Supervisor, or you can use ROS topic remapping feature to remap the low-level controller subscription from ``/cmd`` to ``/lll/ram/filtered_input`` (default):

.. tabs::
.. tab:: ROS1
Expand Down
2 changes: 1 addition & 1 deletion en/latest/_sources/sources/troubleshooting.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Try launching Supervisor from a terminal to see what error messages appear. Supe

Supervisor may also keep the platform stationary if the LIDAR data or the list of obstacles is not delivering data quickly enough. This design ensures that if Supervisor does not have sufficient information about surrounding collision candidates, it does not allow the platform to proceed. A good strategy is to start up the Operations tab for Control Panel (with Rosbridge) and see if any of the input blocks (desired input, state, perception) is a color other than green.

Another cause of platform failing to move is that the topic routing is not correct. The ROS ``rqt`` tool with the Node Graph can visually display the routing well. Verify that the desired inputs (e.g. cmd_vel_plan) are coming into Supervisor, and that Supervisor's outputs (e.g. /lll/ram/filtered_input) is properly mapped to the signal that the lower layer is expecting (e.g. cmd_vel).
Another cause of platform failing to move is that the topic routing is not correct. The ROS ``rqt`` tool with the Node Graph can visually display the routing well. Verify that the desired inputs (e.g. cmd_vel_plan) are coming into Supervisor, and that Supervisor's outputs (e.g. /lll/ram/filtered_input by default) is properly mapped to the signal that the lower layer is expecting (e.g. cmd_vel).

My robot doesn't move when I send a command
============================================
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ General Parameters

* **Desired control input**: This is the set of commands requesting speed and rotation (or speed and steering) that the autonomy stack is publishing. The ROS message type is needed so that Supervisor knows what to monitor in order to calculate the barrier function value. The message quality and receipt rate are monitored as part of the aggregated metrics, and if it fails to arrive within the expected time [1/(signal rate) * Timeout factor], an event will be created and the Run-time Assurance Module will transition to the failure command mode.

* **Computed safe control input**: The right side of this area is purely informational. However, if the robot is to be controlled by the run-time assurance signal, it needs to subscribe to the message that is presented here. Alternatively, the launch file for Supervisor can be modified so that */lll/ram/filtered_input* is remapped to the command signal expected by the platform.
* **Computed safe control input**: This is the output of the supervisor Run-time Assurance Module. This topic configuration can mirror the Desired control input one or have a different message type and QoS (the rate is set by the :ref:`filter rate <config_sup_filter_rate>`). The message type can be: the same as received on the Desired control input, an equivalent one (You can convert from timestamped message to non timestamped, with or without covariance for example) or a dynamic type like lll_msgs/Float64VectorStamped or std_msgs/Float[32/64]MultiArray. This limitations are due to the fact that converting types to others can lead to loss of message information. ROS has semantic messages and converting message from a type to another can lead to various errors and misinterpretations.

* **Parameters > Activate**: This checkbox controls whether the run-time assurance intercepts and modifies commands from the planner/trajectory generator and forwards modified versions to the vehicle. The Run-time Assurance Module will only modify the outputs if the option is activated. If it is not activated, the unmodified "desired control input" will be transmitted on the designated "Computed safe control" message. Additionally, when activated the Run-time Assurance Module passes the unmodified desired input through to the platform except when a corrective action is needed.

Expand Down Expand Up @@ -126,6 +126,6 @@ Supervisor activation logic
.. image:: ../../data/supervisor_activation_logic.png
:width: 800px

The bottom section relates to republishing the control commands to the robot that are being sent from the autonomy stack. The values will be published on the *lll/ram/filtered_input* channel if the Run-time Assurance Module is activate or not. However, the values will only be different from the *Desired control input* if the Run-time Assurance Module is active.
The bottom section relates to republishing the control commands to the robot that are being sent from the autonomy stack. The values will be published on the *lll/ram/filtered_input* (default topic name, can be customized) channel if the Run-time Assurance Module is activate or not. However, the values will only be different from the *Desired control input* if the Run-time Assurance Module is active.

* **Finite States** are messages that the Diagnostics can listen to and issue events when the value of the finite state matches a predefined value.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Run-time Assurance Module

When the Supervisor filter (Run-time Assurance Module) is enabled, the following additional topics are published:

- ``/lll/ram/filtered_input``: The filtered velocity command that is sent to the robot's actuators when the Supervisor receives inputs from the planner/upstream. Note that this signal may be remapped to match the name of the input the downstream systems expects.
- ``/lll/ram/filtered_input`` (default): The filtered velocity command that is sent to the robot's actuators when the Supervisor receives inputs from the planner/upstream. Note that this signal may be remapped or renamed to match the name of the input the downstream systems expects.

- ``/lll/ram/markers``: Visualization tools such as RVIZ and FoxGlove can subscribe to this signal in order to display the illustrated vectors between the robot and obstacles that the Supervisor uses to make decisions on modifications to the input signal. The image below shows an rviz2 display where the red box represents the robot, the blue vectors represent the vector between a sensed laser point and the closest point on the robot's boundary, and the green dots represent laser scan points that are being actively monitored by Supervisor. These values are all embedded into the ``/lll/ram/metadata``. The white dots are the 2D laser scan points that are subscribed-to separately.

Expand Down
2 changes: 1 addition & 1 deletion en/latest/searchindex.js

Large diffs are not rendered by default.

51 changes: 23 additions & 28 deletions en/latest/sources/changelog.html
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,7 @@
<h1>Changelog<a class="headerlink" href="#changelog" title="Link to this heading"></a></h1>
<p>This project adheres to <a class="reference external" href="https://semver.org/spec/v2.0.0.html">Semantic Versioning</a>.</p>
<section id="th-may-2024">
<h2>1.0.4 (13th May 2024)<a class="headerlink" href="#th-may-2024" title="Link to this heading"></a></h2>
<p>Test CI, DO NOT download these packages.
New update available soon !</p>
</section>
<section id="id1">
<h2>1.0.3 (7th May 2024)<a class="headerlink" href="#id1" title="Link to this heading"></a></h2>
<h2>1.0.3 (7th May 2024)<a class="headerlink" href="#th-may-2024" title="Link to this heading"></a></h2>
<p>Fix omnidirectional dynamics not working when using input mask.</p>
<section id="added">
<h3>Added<a class="headerlink" href="#added" title="Link to this heading"></a></h3>
Expand All @@ -111,61 +106,61 @@ <h3>Removed<a class="headerlink" href="#removed" title="Link to this heading">
<p>N/A</p>
</section>
</section>
<section id="id2">
<h2>1.0.2 (4th May 2024)<a class="headerlink" href="#id2" title="Link to this heading"></a></h2>
<section id="id1">
<h2>1.0.2 (4th May 2024)<a class="headerlink" href="#id1" title="Link to this heading"></a></h2>
<p>Fix objects map perception modality that was not working in certain circumstances.</p>
<section id="id3">
<h3>Added<a class="headerlink" href="#id3" title="Link to this heading"></a></h3>
<section id="id2">
<h3>Added<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Objects now show up in RAM markers</p></li>
</ul>
</section>
<section id="id4">
<h3>Changed<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
<section id="id3">
<h3>Changed<a class="headerlink" href="#id3" title="Link to this heading"></a></h3>
<p>N/A</p>
</section>
<section id="id5">
<h3>Removed<a class="headerlink" href="#id5" title="Link to this heading"></a></h3>
<section id="id4">
<h3>Removed<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
<p>N/A</p>
</section>
</section>
<section id="st-may-2024">
<h2>1.0.1 (1st May 2024)<a class="headerlink" href="#st-may-2024" title="Link to this heading"></a></h2>
<p>Fix documentation coherence.</p>
<section id="id6">
<h3>Added<a class="headerlink" href="#id6" title="Link to this heading"></a></h3>
<section id="id5">
<h3>Added<a class="headerlink" href="#id5" title="Link to this heading"></a></h3>
<p>N/A</p>
</section>
<section id="id7">
<h3>Changed<a class="headerlink" href="#id7" title="Link to this heading"></a></h3>
<section id="id6">
<h3>Changed<a class="headerlink" href="#id6" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Renaming Supervisor parameters sections to fit with the documentation. “Copilot” renamed in Run-time Assurance Module</p></li>
<li><p>Default port set to 8000 for every Control Panel entry point (server and CLI)</p></li>
</ul>
</section>
<section id="id8">
<h3>Removed<a class="headerlink" href="#id8" title="Link to this heading"></a></h3>
<section id="id7">
<h3>Removed<a class="headerlink" href="#id7" title="Link to this heading"></a></h3>
<p>N/A</p>
</section>
</section>
<section id="id9">
<h2>1.0.0 (1st May 2024)<a class="headerlink" href="#id9" title="Link to this heading"></a></h2>
<section id="id8">
<h2>1.0.0 (1st May 2024)<a class="headerlink" href="#id8" title="Link to this heading"></a></h2>
<p>This is the first version of the supervisor product.</p>
<section id="id10">
<h3>Added<a class="headerlink" href="#id10" title="Link to this heading"></a></h3>
<section id="id9">
<h3>Added<a class="headerlink" href="#id9" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>A ROS node that perform out of the box collision avoidance for any simple robot that has a lidar or an obstacle map.</p></li>
<li><p>A Control Panel as a web server running on the robot to configure the supervisor and provide realtime feedback.</p></li>
<li><p>A Command Line Client to manage the Control Panel server and check for updates.</p></li>
<li><p>A documentation available <a class="reference external" href="https://docs.3laws.io/">here</a>.</p></li>
</ul>
</section>
<section id="id11">
<h3>Changed<a class="headerlink" href="#id11" title="Link to this heading"></a></h3>
<section id="id10">
<h3>Changed<a class="headerlink" href="#id10" title="Link to this heading"></a></h3>
<p>N/A</p>
</section>
<section id="id12">
<h3>Removed<a class="headerlink" href="#id12" title="Link to this heading"></a></h3>
<section id="id11">
<h3>Removed<a class="headerlink" href="#id11" title="Link to this heading"></a></h3>
<p>N/A</p>
</section>
</section>
Expand Down
4 changes: 2 additions & 2 deletions en/latest/sources/getting_started.html
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,10 @@ <h2><a class="toc-backref" href="#id3" role="doc-backlink">3. Configure Supervis
</section>
<section id="interface-with-your-stack">
<h2><a class="toc-backref" href="#id4" role="doc-backlink">4. Interface with your stack</a><a class="headerlink" href="#interface-with-your-stack" title="Link to this heading"></a></h2>
<p>In order to perform collision avoidance maneuvers, the Supervisor must be able to send commands to your robot actuators. These commands will be published on the <code class="docutils literal notranslate"><span class="pre">/lll/ram/filtered_input</span></code> topic.</p>
<p>In order to perform collision avoidance maneuvers, the Supervisor must be able to send commands to your robot actuators. These commands will be published by default on the <code class="docutils literal notranslate"><span class="pre">/lll/ram/filtered_input</span></code> topic (this is a customizable name via the Control Panel.</p>
<p>Your low-level controller therefore needs to subscribe to this topic and apply the commands to your robot:</p>
<a class="reference internal image-reference" href="../_images/ram_interfacing.png"><img alt="Operations page showing a configured robot that does not yet have sensor or planning data." class="align-center" src="../_images/ram_interfacing.png" style="width: 600px;" /></a>
<p>For that, you can either create an extra dedicated subscriber in your low-level control stack to receive the commands from the Supervisor, or you can use ROS topic remapping feature to remap the low-level controller subscription from <code class="docutils literal notranslate"><span class="pre">/cmd</span></code> to <code class="docutils literal notranslate"><span class="pre">/lll/ram/filtered_input</span></code>:</p>
<p>For that, you can either create an extra dedicated subscriber in your low-level control stack to receive the commands from the Supervisor, or you can use ROS topic remapping feature to remap the low-level controller subscription from <code class="docutils literal notranslate"><span class="pre">/cmd</span></code> to <code class="docutils literal notranslate"><span class="pre">/lll/ram/filtered_input</span></code> (default):</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" role="tablist"><button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">ROS1</button><button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">ROS2</button></div><div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0"><p>When running the control node:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>rosrun<span class="w"> </span>controller<span class="w"> </span>controller<span class="w"> </span>/cmd:<span class="o">=</span>/lll/ram/filtered_input
Expand Down
2 changes: 1 addition & 1 deletion en/latest/sources/troubleshooting.html
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ <h2><a class="toc-backref" href="#id2" role="doc-backlink">Messages appear in st
<h2><a class="toc-backref" href="#id3" role="doc-backlink">Platform fails to move even when there are no objects nearby</a><a class="headerlink" href="#platform-fails-to-move-even-when-there-are-no-objects-nearby" title="Link to this heading"></a></h2>
<p>Try launching Supervisor from a terminal to see what error messages appear. Supervisor will typically color fatal errors with “red” text. If a critical error occurs, Supervisor will stop operating. None of the commands will get forwarded to the platform.</p>
<p>Supervisor may also keep the platform stationary if the LIDAR data or the list of obstacles is not delivering data quickly enough. This design ensures that if Supervisor does not have sufficient information about surrounding collision candidates, it does not allow the platform to proceed. A good strategy is to start up the Operations tab for Control Panel (with Rosbridge) and see if any of the input blocks (desired input, state, perception) is a color other than green.</p>
<p>Another cause of platform failing to move is that the topic routing is not correct. The ROS <code class="docutils literal notranslate"><span class="pre">rqt</span></code> tool with the Node Graph can visually display the routing well. Verify that the desired inputs (e.g. cmd_vel_plan) are coming into Supervisor, and that Supervisor’s outputs (e.g. /lll/ram/filtered_input) is properly mapped to the signal that the lower layer is expecting (e.g. cmd_vel).</p>
<p>Another cause of platform failing to move is that the topic routing is not correct. The ROS <code class="docutils literal notranslate"><span class="pre">rqt</span></code> tool with the Node Graph can visually display the routing well. Verify that the desired inputs (e.g. cmd_vel_plan) are coming into Supervisor, and that Supervisor’s outputs (e.g. /lll/ram/filtered_input by default) is properly mapped to the signal that the lower layer is expecting (e.g. cmd_vel).</p>
</section>
<section id="my-robot-doesn-t-move-when-i-send-a-command">
<h2><a class="toc-backref" href="#id4" role="doc-backlink">My robot doesn’t move when I send a command</a><a class="headerlink" href="#my-robot-doesn-t-move-when-i-send-a-command" title="Link to this heading"></a></h2>
Expand Down
Loading

0 comments on commit 9af64fa

Please sign in to comment.