<div dir="ltr">Chris,<div><br></div><div>What a really great idea! Borrow from the CMM - I love it. <a href="https://en.wikipedia.org/wiki/Capability_Maturity_Model">https://en.wikipedia.org/wiki/Capability_Maturity_Model</a></div><div><br></div><div>Will take a little time to respond with better suggestions -</div><div>but as quick feedback - </div><div>That maturity path leans heavily on odometry to measure progress - and presumes a certain set of objectives.</div><div>But I can show that my robot can reach a destination and return 'more or less' to start completely without odometry- using only timed motor commands - or a little more accurately by using motor velocity control loops. </div><div>I think the CMM is/ should be more about range of skills, and ability to produce consistent results and data driven process and performance improvement...</div><div><br></div><div>So I'm going to chew on this, and come back with something a little more abstracted, along the lines of</div><div><br></div><div>Level 0</div><div>no technical background</div><div>never wrote a program</div><div>never built mechatronics</div><div><br></div><div>Level 1</div><div>scattered technical skills or some experience</div><div>* changing an existing program or writing a program from scratch</div><div>* building a kit with software / mechanics and electronics</div><div><br></div><div>Levels 2..10 <needs more thought> ...</div><div><br></div><div><br></div><div>Level 11</div><div>claims personal responsibility for developing best-in-class robots and robot technologies from scratch at Boston Dynamics / Tesla / CMU Robotics / etc...</div><div><br></div><div>why 11 levels? simple: This Is Spinal Tap</div><div><br></div><div><br></div><div>- Carl</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 27, 2021 at 10:04 AM Chris N 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 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>
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>