<div dir="ltr">Chris,<br><br>I think you've described a rational and typical path most of us have taken. You've kept the language simple and clean. Easy for beginners to follow. Nice job of creating a framework for thinking about these things.<br><br>Maybe think about rephrasing "API" in levels 0 and 1. <br><br>Might want to point out that not everyone passes through these steps in this order.  For example, odometry is typical but not necessary in all circumstances. <br><br>And some might describe their path as more tree-like than a linear progression. For example, how would you insert certain other capabilities:<br><br><ul><li>I have access to a live visualization of my robot's sensor readings and internal state.</li><li>My robot can transform locations between different relative and absolute(ish) coordinate systems.</li><li>My robot can identify specific objects as targets/beacons to assist with navigation.</li><li>My robot can grasp, manipulate or transport certain objects from point A to point B.</li><li>My robot has an internal kinematic model of itself.</li><li>My robot can charge itself because it fears death. :)</li></ul><br>Granted you were probably setting out to describe a straight forward model for getting started in robotics and not intended to encompass extended capabilities.<br><br>I just read Carl's response. There might be room for both a robot CMM and a roboticists CMM. "These go to 11"<br><a href="https://www.youtube.com/watch?v=KOO5S4vxi0o&ab_channel=pmw8000">https://www.youtube.com/watch?v=KOO5S4vxi0o&ab_channel=pmw8000</a><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 27, 2021 at 11:04 AM Carl Ott 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">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" target="_blank">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" target="_blank">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>
_______________________________________________<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>