<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Karim,</p>
<p>How flattering! :)<br>
</p>
<p>Well, yes. But this gets in deep.</p>
<p>Most of the subsumption machine is reactive, even the
navigation. Ballistic behaviors are the exception. They can of
course be subsumed like any others. The question becomes what
happens to them while subsumed? Remember from their point of view
they are continuing to run and output controls to the robot. They
are ballistic.<br>
</p>
<p>So suppose you have a ballistic behavior to rotate in place some
number of degrees. Half way through the robot bumps into
something. So the ballistic bumper behavior subsumes the rotate
behavior and moves the robot to a new position and angle, and
releases control. So what is the correct action for the ballistic
rotate behavior at that point? You really need to start over and
recalculate the angle, you can't just complete the angle you have
ballistically , or you'll be pointing in the wrong direction.<br>
</p>
<p> Further during the bump behavior the rotate continued to run and
output it's commands, but it was subsumed. So depending on how
long the bumper behavior took, the ballistic maneuver may or may
not have actually completed before the control is even returned to
it.. <br>
</p>
<p>This is what is meant by "ballistic behaviors can't be
interrupted," the source of so much confusion. It's not that
they can't be. It's that it screws them up. In that sense they
break the subsumption paradigm. Recalling that this is all in the
context of subsumption, and not perhaps more generalized use of
the terms.<br>
</p>
<p>I've found the best option is usually just to abort. So the
rotate aborts if subsumed. Let higher levels start things over if
they want. <br>
</p>
<p>But this only re-enforces, I think, that ballistic behaviors in
the context of subsumption are differentiated from servoing
behaviors in that they continue executing after the signal that
triggered them has ceased. (and they should generally be
avoided.) <br>
</p>
<p>The subsumption of servoing behaviors does not have this problem</p>
<p>cheers!</p>
<p>dpa</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 10/31/21 11:00 PM, Karim Virani
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAKtnkiztignb89pdUgiDg7aQJmtgA01XWg-2_WbM6dbaJJoRUg@mail.gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div dir="ltr">I agree, that's the problem. Crossover. Subsumption
is not the only architecture in use. Behavior-based is a broad
concept and there are many arbitration schemes that can be
employed. I was trying to carefully constrain my comments to "my
vote", in other words, just my own words, my own opinion - not
trying to represent or denigrate any other point of view or
approach. <br>
<br>
Maybe the term "ballistic behavior" belongs exclusively to
subsumption architectures ... and I've mistakenly heard it
applied more broadly. I'm certainly no expert in subsumption.
We use explicit state machines to control our double-digit DOF
robots. So I try not to comment directly on subsumption.<br>
<br>
But It can be confusing. When you google:<br>
<br>
"ballistic behavior" robot subsumption<br>
<br>
The first thing that comes up is this excerpt from an expert in
Dallas:<br>
<br>
<span
style="color:rgb(32,33,36);font-family:Roboto,arial,sans-serif;font-size:16px">Ballistic
behaviors </span><b
style="color:rgb(32,33,36);font-family:Roboto,arial,sans-serif;font-size:16px">cannot
be subsumed</b><span
style="color:rgb(32,33,36);font-family:Roboto,arial,sans-serif;font-size:16px">:
they must run to completion. 2. Ballistic behaviors are
therefore usually assigned highest priority.</span><br>
<br>
Yup, the excerpt stops right there even though you continue in
your article:<br>
<br>
<span style="color:rgb(0,0,0);font-family:"Times New
Roman";font-size:medium">3. Ballistic behaviors can,
however, be aborted.</span><br
style="color:rgb(0,0,0);font-family:"Times New
Roman";font-size:medium">
<br style="color:rgb(0,0,0);font-family:"Times New
Roman";font-size:medium">
<span style="color:rgb(0,0,0);font-family:"Times New
Roman";font-size:medium">In fact, abort is really the
only reasonable response of a ballistic task when subsumed.
For the SR04 robot, the only task that can subsume a ballistic
bumper behavior, which is the highest priority behavior, is
another ballistic bumper behavior.</span>
<div><font size="3" face="Times New Roman" color="#000000"><br>
</font></div>
<div><br>
</div>
<div>So can they be subsumed or not? The language is tricksy.</div>
<div><br>
</div>
<div><a
href="http://www.geology.smu.edu/dpa-www/robo/subsumption/#:~:text=Ballistic%20behaviors%20cannot%20be%20subsumed,therefore%20usually%20assigned%20highest%20priority"
moz-do-not-send="true">http://www.geology.smu.edu/dpa-www/robo/subsumption/#:~:text=Ballistic%20behaviors%20cannot%20be%20subsumed,therefore%20usually%20assigned%20highest%20priority</a>.<br>
</div>
<div><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sun, Oct 31, 2021 at 9:59
PM David P. Anderson via DPRGlist <<a
href="mailto:dprglist@lists.dprg.org" moz-do-not-send="true">dprglist@lists.dprg.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p>Well, Karim, now that you mention it...</p>
<p><br>
</p>
<div>On 10/31/21 5:26 PM, Karim Virani via DPRGlist wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">I agree with Doug, you should never have
blocking code unless you can dedicate a separate thread
to it apart from your main loop's thread.<br>
<br>
And not to start up the whole debate again, I personally
vote that there is no use for ballistic behaviors. I
treat them as an academic construct. There are plenty of
uses of objective-oriented and terminating behaviors -
including those where the objective is to last for a
certain amount of time. But they should still be
interruptible and cancellable by higher priority
behaviors. <br>
</div>
</blockquote>
<p>I believe this is a misunderstanding of what ballistic
behaviors are in the context of subsumption. For some
reason the idea has taken root that what makes a behavior
ballistic is that it for some reason cannot be
interrupted. That is a red herring. What make a
behavior a ballistic behavior <b><i><u>in the context of
subsumption</u></i></b> is that it continues to
execute after the signal that triggered it has ceased. <br>
</p>
<p>That's all. <tt><br>
</tt></p>
<p>I don't understand why such a simple concept has turned
out to be so hard to communicate. I consider this a major
failing on my part.<br>
</p>
<p>cheers!</p>
<p>David</p>
<p><br>
</p>
<p><br>
</p>
<blockquote type="cite"><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sun, Oct 31, 2021
at 5:08 PM Doug Paradis via DPRGlist <<a
href="mailto:dprglist@lists.dprg.org"
target="_blank" moz-do-not-send="true">dprglist@lists.dprg.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px
0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div dir="auto">Kumar,
<div> I always pass through the loop. So a 1 sec
backwards maneuver would use a loop counter with a
disengage value of 50 for a loop time of 20 mS. I
am not using a multitasking framework, which opens
up other possibilities. </div>
<div><br>
</div>
<div>Regards </div>
<div>Doug P.<br>
<br>
<div dir="ltr">Sent from my iPhone</div>
<div dir="ltr"><br>
<blockquote type="cite">On Oct 31, 2021, at 4:54
PM, Thalanayar Muthukumar via DPRGlist <<a
href="mailto:dprglist@lists.dprg.org"
target="_blank" moz-do-not-send="true">dprglist@lists.dprg.org</a>>
wrote:<br>
<br>
</blockquote>
</div>
<blockquote type="cite">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr"><a
href="https://secure-web.cisco.com/12R-xW2iM6X1mtZ6lGWZ2cU_V7WhrcVFmrYppQ5_RFJAtuHcumxuYD4t8YW_aGm011_ipOLIKUMPmlNlXLKe0mDeZ5NILZd__YuRF_kKIzyxN8EiJErAuYE-OcebwmywmyJ7SoBG9yB3Oyna9Z9RUY7kwZdTuI-sO3UWkVWgVNhYiwT1_tphO9qAaoFdwYrgHVEynVcBz9QhIC_xYutA9B-8OhKAWWEGvh-8EqTFHmW8H5ZsvYDMLEZNwPag9e3p4bO7y-E8y4CehSNJJRVtWHgi8hUB2z2KYLDpQOUR9fxk/https%3A%2F%2Fyoutu.be%2FfuFamNWyXc4"
target="_blank" moz-do-not-send="true">https://youtu.be/fuFamNWyXc4</a> (~15
sec)</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">20 times per sec</div>
<div dir="ltr">- default behavior - go
straight forward, green headlights</div>
<div dir="ltr">- higher priority behavior -
light sensed, turn left, red headlights</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">My understanding of BBR is
that there should be no state maintained.</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">Question - If we trigger a
ballistic behavior (e.g. go straight
backward for one sec), is it ok to not
return to the loop every 50 msec?</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">Or is it preferable to
maintain state and count 20 times for
getting duration of 1 sec?</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">Regards.</div>
<div dir="ltr">- Kumar<br>
<br>
</div>
<br>
<br>
<div dir="ltr">Sent from my iPhone</div>
</div>
<span>_______________________________________________</span><br>
<span>DPRGlist mailing list</span><br>
<span><a href="mailto:DPRGlist@lists.dprg.org"
target="_blank" moz-do-not-send="true">DPRGlist@lists.dprg.org</a></span><br>
<span><a
href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org"
target="_blank" moz-do-not-send="true">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a></span><br>
</div>
</blockquote>
</div>
</div>
_______________________________________________<br>
DPRGlist mailing list<br>
<a href="mailto:DPRGlist@lists.dprg.org"
target="_blank" moz-do-not-send="true">DPRGlist@lists.dprg.org</a><br>
<a
href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org"
rel="noreferrer" target="_blank"
moz-do-not-send="true">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><br>
</blockquote>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
DPRGlist mailing list
<a href="mailto:DPRGlist@lists.dprg.org" target="_blank" moz-do-not-send="true">DPRGlist@lists.dprg.org</a>
<a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank" moz-do-not-send="true">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a>
</pre>
</blockquote>
</div>
_______________________________________________<br>
DPRGlist mailing list<br>
<a href="mailto:DPRGlist@lists.dprg.org" target="_blank"
moz-do-not-send="true">DPRGlist@lists.dprg.org</a><br>
<a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org"
rel="noreferrer" target="_blank" moz-do-not-send="true">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><br>
</blockquote>
</div>
</blockquote>
</body>
</html>