<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 color="#000000" face="Times New Roman" size="3"><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">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">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">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">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">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">DPRGlist@lists.dprg.org</a></span><br>
                  <span><a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank">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">DPRGlist@lists.dprg.org</a><br>
          <a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" rel="noreferrer" target="_blank">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">DPRGlist@lists.dprg.org</a>
<a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank">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">DPRGlist@lists.dprg.org</a><br>
<a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" rel="noreferrer" target="_blank">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><br>
</blockquote></div>