You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: clips_executive/plugins/index.html
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -98,7 +98,7 @@
98
98
</ul>
99
99
</dd>
100
100
</dl>
101
-
<p>See also the tutorial on <aclass="reference internal" href="../user_docs/tutorials/index.html#writing-a-plugin"><spanclass="std std-ref">Writing a Plugin</span></a> to learn how to write your own plugins.</p>
101
+
<p>See also the tutorial on <spanclass="xref std std-ref">Writing a Plugin</span> to learn how to write your own plugins.</p>
102
102
<p>The ROS2 CLIPS-Executive provides several plugins out-of-the-box that are described here.</p>
<liclass="toctree-l2"><aclass="reference internal" href="writing_a_plugin.html">Writing a Plugin</a></li>
62
55
</ul>
63
56
</li>
64
57
</ul>
@@ -89,23 +82,6 @@
89
82
90
83
<sectionid="tutorials">
91
84
<spanid="id1"></span><h1>Tutorials<aclass="headerlink" href="#tutorials" title="Link to this heading"></a></h1>
92
-
<divclass="admonition-todo admonition" id="id2">
93
-
<pclass="admonition-title">Todo</p>
94
-
<p>Add tutorials here</p>
95
-
</div>
96
-
<sectionid="controlling-a-turtle-via-clips">
97
-
<h2>Controlling a Turtle via CLIPS<aclass="headerlink" href="#controlling-a-turtle-via-clips" title="Link to this heading"></a></h2>
98
-
</section>
99
-
<sectionid="writing-a-plugin">
100
-
<spanid="id3"></span><h2>Writing a Plugin<aclass="headerlink" href="#writing-a-plugin" title="Link to this heading"></a></h2>
101
-
<sectionid="callbacks-and-mutexes">
102
-
<h3>Callbacks and Mutexes<aclass="headerlink" href="#callbacks-and-mutexes" title="Link to this heading"></a></h3>
103
-
<p>It can be tricky to interface between ROS callbacks and CLIPS environments, especially if locks are guarding said callbacks that are not visible to the end user.
104
-
As CLIPS environment access must also guarded by locks (as access is not thread-safe), this can easily create deadlocks in situations, where other functions can be called from clips that also try to acquire the lock held by a callback.</p>
105
-
<p>Example: The feedback callback for action clients is guarded by a mutex that is also used by client goal handles to access members in a thread-safe manner (such as get_status()).</p>
106
-
<p>A CLIPS rule that calls ClientGoalHandle::get_status() will therefore attempt to lock such a mutex while the clips lock is being held by the thread running the clips environment.
107
-
If a callback is received right before, then the clips environment will stall as the function call is stuck (mutex is held by the callback function), while the callback function is stuck because it tries to acquire the lock for the clips environment (because it wants to pass the callback content to the clips environment).</p>
108
-
<p>In these cases special care must be taken, e.g., by deferring CLIPS access out of scope of the mutexes guarding the callbacks.</p>
0 commit comments