<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>