<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Chris,</p>
    <p>This is certainly a valuable exercise as these are questions that
      get addressed all the time.  The progressive approach you outline
      here is as good as any.   I might tend to side with Carl that
      odometry and even PID controllers are later-stage achievements. 
      Lots can be accomplished and learned without either, and with just
      open loop control.   If nothing else, that will teach you why you
      need those things, and in what situations.  <br>
    </p>
    <p>At least that's the way I came up.  <br>
    </p>
    <p>cheers!<br>
    </p>
    <p>David</p>
    <p><br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 10/27/21 10:03 AM, Chris N via
      DPRGlist wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CA++ApaW+M66=kPeR+A3p8Z1c7-rMa+zCUgDJZ4bGb59J+D4ojQ@mail.gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p style="background-color: #f4eaa5;color: #000000
        ;margin:5px;padding: 2px;text-align: left !important;
        align-content: center; display: block; border: 1px solid
        #000000; font-size: large; font-family: sans-serif;"><strong><em
            style="font-size: 11px;"> [EXTERNAL SENDER]</em></strong></p>
      <div dir="ltr">
        <div dir="ltr">
          <div class="gmail_default" style="font-size:x-small"><font
              size="2">So in part because of questions along the line of
              "where do I get started" from Kumar, and others before
              him, that we occasionally get, I thought it might help to
              have some sort of capability model in mind that can be
              referenced.  <br>
            </font></div>
          <div class="gmail_default" style="font-size:x-small"><font
              size="2"><br>
            </font></div>
          <div class="gmail_default" style="font-size:x-small"><font
              size="2">That way one can ask "OK - what level are you at
              currently?  What level are you trying to reach in the near
              term?"<br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Below is what I
              mean.  For now this is focused on software and locomotion
              (but starting with Level 8,  perception comes into the
              picture)<br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">I have more
              explanation to go along with each item but wanted to keep
              it brief in this e-mail.  <br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">The idea is not to
              explain how to do these things.  This just represents
              milestones along the journey.  This is really more about
              having an agreed upon vocabulary.<br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Thoughts?   Is
              something like this helpful to have written down?  Is it
              already written down somewhere ? (I am sure that in some
              ways, this is captured in some of the material that David
              Anderson has published over the years)<br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"> <font size="2">
              Level 0: I have an API through which I can control the
              speed and direction of the individual wheels. My robot can
              move! <br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 1: I have an
              API through which I can reliably get the incremental
              encoder counts for each wheel.  When motors are commanded
              with a certain duty cycle, I can measure what that
              translates to in terms of encoder counts per time unit.<br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 2: I am
              keeping track of my Robot's X, Y and Theta via
              dead-reckoning / odometry <br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 3: I have
              taken at least basic steps to calibrate my robot's
              odometry calculations. <br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 4: I can
              command the robot to move, but using more abstract units
              such as "meters/second" or at least "encoder ticks per
              time unit" <br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 5: My robot
              actually moves at the linear and angular velocity I tell
              it to, even when battery voltage is lower or surface
              friction is higher.  And because I have completed Level 3,
              <font size="2">it can go in a somewhat straight line when
                I ask it to. </font></font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 6: My robot
              moves in a fairly smooth fashion, i.e. it changes speed
              and direction somewhat gradually. Movement is not
              "robotic" <br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 7:  I can
              command my robot to go to a certain X,Y coordinate aka
              waypoint relative to its current location,  and the robot
              more or less reaches that location provided nothing is in
              the way<br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 8:  My robot
              can reach the target location, even if there are obstacles
              in the way.</font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 9:  My robot
              can come back after reaching its destination.</font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2">Level 10: My robot
              can do all this, even if the obstacles are moving around
              quite a bit or if there are other sources of possible
              confusion<br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
          <div class="gmail_default"><font size="2"><br>
            </font></div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
DPRGlist mailing list
<a class="moz-txt-link-abbreviated" href="mailto:DPRGlist@lists.dprg.org">DPRGlist@lists.dprg.org</a>
<a class="moz-txt-link-freetext" href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a>
</pre>
    </blockquote>
  </body>
</html>