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