This page is sourced from an email from Chris N in the DRPG mailing list and is included below, only slightly edited. He sets out to create a series of "levels" corresponding to goals or capabilities you can set for your robot to accomplish. This could be considered one way to approach your journey within the world of robotics; there are many, this is a good one.

[Dprglist] Robotics "Capability Maturity Model" - Thoughts?#

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.

That way one can ask "OK - what level are you at currently? What level are you trying to reach in the near term?"

Below is what I mean. For now this is focused on software and locomotion (but starting with Level 8, perception comes into the picture)

I have more explanation to go along with each item but wanted to keep it brief in this e-mail.

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.

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)

  • Level 0: I have an API through which I can control the speed and direction of the individual wheels. My robot can move!
  • 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.
  • Level 2: I am keeping track of my Robot's X, Y and Theta via dead-reckoning / odometry
  • Level 3: I have taken at least basic steps to calibrate my robot's odometry calculations.
  • 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"
  • 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, it can go in a somewhat straight line when I ask it to.
  • Level 6: My robot moves in a fairly smooth fashion, i.e. it changes speed and direction somewhat gradually. Movement is not "robotic"
  • 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
  • Level 8: My robot can reach the target location, even if there are obstacles in the way.
  • Level 9: My robot can come back after reaching its destination.
  • 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

original from DPRG mailing list:

See also: Capability Maturity Model on Wikipedia