0

I am trying to write an extension in netlogo for Nxt brick . To connect the brick , I am using Lejos. I have a problem with color sensor. I want to write a simple method which returns sensor color as a number such as yellow : 1, red :2 etc. But sensor motor always returns different RGB colors on the same surface. For example I put it over a yellow paper , rgb colors are : [236 189 104] ,[247 202 108].. if it was returning unique RGB numbers for same surface colors, I would classify them according to RGB colors range and give a unique number for each color. Do you have any idea how i can do it ? Also , it won't run on different surfaces. only doing this for my paper colors( yellow, blue, green) will be enough for me. Thanks.

Ecrin
  • 246
  • 5
  • 21

1 Answers1

0

If I understood correctly what you mean, the method java.awt.Color.RGBtoHSB might help you. Java code like this:

float[] hsb = Color.RGBtoHSB(red, green, blue, null);  
float hue = hsb[0];

(where red, green and blue are variables containing the sensor result)

...will give you the "hue" of your color as a float between 0 and 1, which should be sufficient to see if it's a shade of yellow, blue, green, or something else, if you define appropriate ranges. That should be very approximatively something like:

Yellow: 0.1  < hue < 0.2
Blue:   0.5  < hue < 0.7
Green:  0.25 < hue < 0.45

...but don't take my word for it! You should experiment to see in what range your sensor stays when over yellow paper, etc.

Nicolas Payette
  • 14,847
  • 1
  • 27
  • 37
  • Thank you Nicolas. By using hue range and rgb diffrences of each color , I solved my problem. – Ecrin May 28 '12 at 12:59