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