Let's Make Robots!

Robot Musings: Robotic Complexity Rating (RCR)

I have been thinking for a while about how one might rate a robot for its level of complexity or sophistication, perhaps assigning it a number or code that classifies it based on its advancement.  If they can assign colors bands to resistors, there should be some way to rate a robot as well.

What first got me thinking about this was the blog on robot tricks/skills.  My first thought was that the more tricks a robot could perform then the higher its “Robot Complexity Rating” (RCR) would be.  At first this seemed great.  Dumbbot can do 2 tricks and thus is a RCR 2.  Smartbot can do 8 tricks and is an RCR 8.  MegaBrilliantbot can cook you dinner, balance your check book and apply the Heimlich maneuver if you choke on a hot dog, RCR 136 at maybe.

But when you look through the robots on LMR it quickly becomes clear this is too simple an approach.  For one thing, some tricks/skills are harder than others.  STOP, WANDER, GUARD, none of those are exceptionally hard.  On the other hand walking on legs, or walking on two legs, or balancing on two wheels are much more advanced skills or challenges than just standing there trying not to catch on fire.

Robotix 5 - http://letsmakerobots.com/node/32281

EquipoiseBot - http://letsmakerobots.com/node/32012

Red Dragon - http://letsmakerobots.com/node/32012

Are just a few examples from many of robots I consider demonstrating advanced features.  Perhaps tricks/skills should be rated by difficulty and the highest level trick a robot can perform becomes part of its RCR code?  For instance:

STOP, WANDER, GUARD – all examples of Class 1 or perhaps Class A tricks, simple tricks.

WALK, FIND (object), FOLLOW (person or object) – are Class B tricks.

BALANCE (on two feet or wheels) is a Class C trick.

Using this, a walking robot that can do 5 tricks one of which is FOLLOW would become categorized as a RCR 5-B robot.

But is that enough?  Just controlling a lot of actuators should count for something, as some of these robots are like watching a Swiss watch in motion, graceful, sophisticated, and amazingly well crafted.  Perhaps the number of actuators should be part of the rating.  In that case, a hexapod with 3 servos per leg that can do 5 tricks would be a 5-B-18 robot.

I can’t say I have come to a complete idea formed on this.  Might craftsmanship or finish be a forth rating factor?

Anyway this is all of my thoughts on this for now.  What ideas, comments, or suggestions might the rest of you have?

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I was asked to comment here, but I really have very little to say on the subject.  Several people have made some very good points.  Basically, I feel that even though it is possible to create a rating system, as vishu said, it is hard to make one that is fair to everyone. Programming needs to be taken into account but simply counting the number of lines of code is not fair, inasmuch as you can have code that simply switches outputs high or low, or you can have code that does complex calculations, which is hard to do, but still possible, in a microcontroller.

If the rating system is desired, perhaps the self rating would be the way to go.

But only because we are still treading down the old "why don't we have a rating system for lmr bots". I wish I'd never included that in my reply to Kingart. I absolutely agree Dan that rating someone's project on the number of lines of code would be stupid. But as an inclusion in the description it would be an interesting metric for comparison as to what amount of work one would need to undertake to complete a similar project. Even though we have the hours to build section it is like when I fill out my tax return I hate having to estimate the number of hours taken to collect information and lodge the form (requirement here for business owners) as you always lose track of the time when your having fun   ; - )

In fact I think number of lines of code would be an interesting statistic to include with the description. In all but extreme cases the number of lines of code is directly related to the complexity and number of functions the robot would be capable of.
So where people can't post the code for one reason or another, lost it or afraid of criticism on style or it's proprietry they could fill this out.

I can't see too many people writing 1000 lines of code to repeatedly switch an output. If you've written a thousand lines of code then it's obviously doing a hell of a lot. Because I've found even 300 lines on a pic in assembly can move a servo, read an adc, drive 2 motors and switch 5 leds and do some basic decision making.

300 lines of c code is going to do more.

Doing complex calculations on an 8 bit micro is for the masochistic but you forget we now have available very cheap 32 bit  Arm processors and Microchips's own 32mx series.

I know we have two types here the Arties and the Techies, I guess I fall into the latter category and this is why I'm passionate about metrics.

What I was thinking of when I mentioned simply switching on and off leads, would be something like a 'bot that has an LED matrix onboard for artistic design. Many lines might be used up making various different patterns appear. Nothing too hard about it, mostly just repetitious, as opposed to someone who was working out an artificial intelligence program (for one example), or calculating inverse kinematic movements (for another).

But I still think it would be a nice detail to include in the description where the user cannot post any code.

Oh, absolutely. All I am saying is that the number of lines of code is only of general use in judging a robot. It would be very hard if not impossible to come up with a grading system that fairly covers all types and varieties of robots.

I got swept into interest in this idea like the rest of the group it seems but I wanted to reserve judgement on it until I'd had some time to mull it over.  I kind of like the idea of a simple coding system that tells you at a glance what the capabilities and features of a given machine are, but then I realized that you really can't get much simpler than what we already have, eg:

Cost to build: 
$xx
Time to build: 
40 hours
  • Control method: X
  • CPU: x,
  • Operating system: ya
  • Power source: b
  • Programming language: C
  • Sensors / input devices: d
  • Target environment: e

 

I took this list from one of the Tank bots that was on the front page as I write this.  I think there are some features that are missing here that usually show up-locomotion, for instance.

Now imagine we narrowed that down to a resistor like coding system and you've got another set of values or acronyms to memorize. The thing is, I've lost my ability to read resistors over time.  I wouldn't remember the order of the planets without using a dirty mnemonic.

I don't know if it's a good or bad idea, but the current system maybe could use just a little fine-tuning, and we may see that in LMRv4 as a matter of course.  However, in view of that, now is a good time to have these discussions.

 

Of course, didn't really think about that. You are spot on. Now all we need to do is persuade admins to make entering information in these sections compulsory. Like the red asterisk system. and error message "You have not filled out CPU" etc.
I would even  go so far as to suggest a minimum number of words in description.

It really would be more helpful to others reading the post and I find it annoying when people post robots and all they submit is a picture and I'll tell you about it later.

Yes after thinking more about merser's SAC system, I realized its not too different that what LMR does not with robot entries.  Now back to fembots....

I totally agree with you Max. The current system with a bit of fine tuning so that it represents the maximum information in minimum space is probably the best system that can be adopted. For one reason, it is not unfair like community rating or self rating can be. It gives a good idea about the objective of the bot in a glance and you can extend it quite easily to represent more information.

How about a system where the builder can rate his or her own robot using some sort of questionaire?

That way, the rating will not be based on how much other members like certain parts and designs. Also: because no voting is involved, the builder can just add the rating in the robot page without the need to change the LMR website.

It will have to be well thought out questions, but it can be done. With the answers from questions like

are the movements PID or PD controlled? rated from 0="what do you mean" to 5="more then 3 PID controlled routines" in a few major categories like:

  • mechanics and movement
  • electronics
  • programming
  • bodywork and craft

Everybody will be able to see that a certain robot has a 3.2 complexity rating for mechanics and a 2.0 for programming. (or something like that)