Farben Erkennen in Robo Pro Coding

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Benutzeravatar
fishfriend
Beiträge: 2508
Registriert: 26 Nov 2010, 11:45

Farben Erkennen in Robo Pro Coding

Beitrag von fishfriend » 17 Mai 2026, 16:36

Hallo...
Ich gebe zu, ich bin gerade etwas frustriert.
Also momentan sehe ich das so, dass es 6 Möglichkeiten für die Farberkennung in Robo Pro Coding von fischertechnik gibt.
1. USB Kamera Kamerakonfiguration Color Detector RGB
2. USB Kamera KI-Modelle mit OpenCV HLS(HSV) Umrechnung von BGR(RGB)
3. USB Kamera Neuronale Netze BGR(RGB)
4. Gestensenor (I2C) RGB in HSV
5. Farbsensor (I2C) RGBW in HSV bzw HEX/RGB/HSV ( den SW/grauen (den ich nicht habe))
6. Farbsensor Analogwert über den I-Eingang
(7.) Farberkennung über „Pick Color“-Werkzeug (Ballerkennung)

Scheinbar ist die Auswertung beim SW/grauen I2C Sensor wieder anders.
Hier geht man scheinbar über rgbcolorsensor bzw rgbcolorsensorutil Module in den Beispielen von fischertechnik bzw. über dessen Blöcke.

Hat schon mal jemand die beiden I2C Sensoren miteinander verglichen? Ich kann es nicht, da ich den SW/garuen nicht habe.
Das Problem scheint zu sein, das man nicht einfach eine Tabelle nehmen kann um die Werte umzurechnen. Man muss es alles selber ausprobieren.
Was für ein Sensor ist denn in dem SW/grauen drinn?
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

Benutzeravatar
calliope
Beiträge: 170
Registriert: 11 Mär 2025, 12:02

Re: Farben Erkennen in Robo Pro Coding

Beitrag von calliope » 17 Mai 2026, 21:29

Auf dem Datenblatt https://fiproductmedia.azureedge.net/me ... SENSOR.pdf

ist rechts unten ein kleiner Link versteckt mit einer weiteren Dokumentation.

Das ist für mich der einzige ernst zu nehmende Farbsensor, weil der auch das Objekt beleuchtet und den richtigen Farbcode zurück gibt ohne irgendwas umzurechnen.

siehe: https://forum.ftcommunity.de/viewtopic. ... 273#p72062
I²C für Calliope, TXT 4.0 und RX Controller.
https://git.fischertechnik-cloud.com/users/i2c/projects

Benutzeravatar
fishfriend
Beiträge: 2508
Registriert: 26 Nov 2010, 11:45

Re: Farben Erkennen in Robo Pro Coding

Beitrag von fishfriend » 18 Mai 2026, 08:14

Hallo...
Ja, die beiden PDFs kannte ich schon. Es ist wohl so, dass ein µC dazwischen sitzt und man an den Sensor selbst per Programm nicht ran kommt. Aber OK ist halt so.
Sensor: "Knobloch" in der ft-Tabelle (da hatte wohl jemand Humor :-) )
Aber schon mal gut, dass man mit einem Block der "HSV"-Wert vom "RGB" Sensor holen kann. ;-)

Was als kurze Anmerkung über weitere Möglichkeiten der Farberkennung geplant war, muss wohl etwas ausführlicher beschrieben werden...

@Calliope
Einen Vergleich hattest du nicht gemacht?

Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

Benutzeravatar
calliope
Beiträge: 170
Registriert: 11 Mär 2025, 12:02

Re: Farben Erkennen in Robo Pro Coding

Beitrag von calliope » 24 Mai 2026, 20:51

Bauanleitungen mit Farberkennung gibt es nur mit dem RX Controller. In den Baukästen mit TXT40 Controller ist kein I2C Sensor drin.
In den Baukästen Smart Robots Max und STEM Coding Max wird Farberkennung mit dem Gestensensor gemacht. Allerdings nur in je einem Modell: 'Omniwheels mit Spur- und Gestensensor' und 'Ticketkontrolle'. Für STEM Coding MAX gibt es keine Beispielprogramme. Die Anleitung mit Blöcken ist nur in der App STEM Suite drin. Man kann das Programm dann z.B. mit Scratch machen.

So bleibt eine einzige Bauanleitung mit Farberkennung übrig: Omniwheels mit Spur- und Gestensensor https://fiproductmedia.azureedge.net/me ... df#page=76
und dort auch nur die Aufgabe 4 mit dem Parcours
parcours.png
parcours.png (16.91 KiB) 12 mal betrachtet
Vorher muss man den Gestensensor zwischen die Omniwheels nach unten umstecken. Das steht nicht in der Bauanleitung, nur in Aufgabe 4:
sensor.png
sensor.png (21.74 KiB) 12 mal betrachtet
Dann das fertige Programm https://git.fischertechnik-cloud.com/fi ... e_sensor_4 laden und das Modell fährt auf der Linie und .. tanzt.
Funktioniert es?

Das ist der Plan:
Wird eine farbige Fläche erreicht, soll jeweils ein Ereignis ausgeführt werden.
• Trifft der Sensor auf „Gelb“, fährt das Modell schneller.
• Trifft der Sensor auf „Rot“, führt das Modell Tanzbewegungen auf.
• Trifft der Sensor auf „Blau“, wird die Parkfunktion angefahren.
• Trifft der Sensor auf „Grün“, fährt das Modell langsamer.

Diese Farben wurden im Test tatsächlich erkannt:
• weißes Papier: White, (dunkel) Red
• schwarze Linie: Green, Red, White
• grüne Fläche: Red, Green
• blaue Fläche: Blue, Green, Red, White
• gelbe Fläche: Red
• rote Fläche: Red

Jetzt ist erkennbar, warum das Modell an allen möglichen und unmöglichen Stellen Tanzbewegungen aufführt: Als Rot kann jede Farbe, die schwarze Linie und der weiße Untergrund erkannt werden.

---

Der Gestensensor liefert folgende Werte:
Farbe: string (red, yellow, green, blue, black, unknown)
HEX string #000000
RGB Tupel [r, g, b]
RGB red int 16Bit 0 .. 65535
RGB green int 16Bit 0 .. 65535
RGB blue int 16Bit 0 .. 65535
HSV Tupel [h, s, v]
HSV hue (°) int 0° .. 360°
HSC Saturation (%) int 0% .. 100 %
HSV value (%) int 0% .. 100 %
Umgebungslicht int 16Bit 0 .. 65535
Entfernung
Geste

Den ersten Eintrag 'Farbe' gab es bei Erscheinen des Baukastens "Smart Robots Max" noch nicht. Die Farbe (als String) wird im Beispiel mit den Blöcken Calibrate() und Color_recognise() ermittelt.

Wahrscheinlich soll der neue Block 'hole Gestensensor Farbe' diese Funktionen ersetzen. Nur wenn dieser Block benutzt wird, erscheint im Python Code eine zusätzliche Funktion:

Code: Alles auswählen

async def get_gesture_sensor_color():
  hsv = controller.RX_I2C_1_gesture_sensor.get_hsv()
  white = controller.RX_I2C_1_gesture_sensor.get_ambient()
  if hsv == -1 or white == -1:
    raise Exception("Sensor is not initialized")
  if hsv[2] < 55 and white < 30:
    return 'black'
  else:
    if hsv[0] >= 0 and hsv[0] < 9 and white > 10:
      return 'red'
    elif hsv[0] >= 9 and hsv[0] < 35 and white > 10:
      return 'yellow'
    elif hsv[0] >= 35 and hsv[0] < 167 and white > 10:
      return 'green'
    elif hsv[0] >= 167 and hsv[0] < 340 and white > 10:
      return 'blue'
    elif hsv[0] >= 340 and hsv[0] < 360 and white > 10:
      return 'red'
  return 'unknown'
Mit dem Block 'hole Gestensensor Farbe' wurden im oben genannten Versuch diese Farben erkannt:
• blaue Fläche = blue
• grüne Fläche = green
• rote Fläche = red
• gelbe Fläche = yellow oder red
• schwarze Linie = yellow oder red oder blue, im dunklen Raum black
• weißes Papier = red oder blue (white ist im Code nicht definiert)

---

Zu den anderen Werten, die der Gestensensor liefert:

HEX ist der bekannte RGB String (3 Byte). Woraus der berechnet wird ist unklar, weil
RGB ist ein Tupel aus 3 16-Bit RGB Rohdaten. (Die Farbcodes R, G, B sind nur 8-Bit.)
RGB red, green, blue sind dann die 3 16-Bit Integer aus dem Tupel. Also nicht die erwarteten Farbcodes.
HSV ist ein Tupel mit den 3 Werten (h ,s, v).
HSV (hue) ist die Farbe auf dem 360° Farbkreis.
Sättigung und Helligkeit wird in 0% bis 100% angegeben.
Umgebungslcht ist wieder ein 16-Bit Integer.


Um eine Farbe zu erkennen, wertet man am besten den H Wert (0° .. 360°) aus. Allerdings gibt es auf dem Farbkreis kein Schwarz und Weiß. Die Werte dafür unterscheiden sich wenig und liegen bei gelb und grün. Um bei Schwarz und Weiß keine gültige Farbe zu bekommen, muss ein anderer Wert ausgewertet werden. Welcher genau ist nicht so sicher...


Das Wichtigste bei Farberkennung ist definiertes Licht. Und das fehlt beim Gestensensor.
---
Deshalb gibt es jetzt den RGBW Farbsensor mit 3 weißen Leuchtdioden, die das Objekt beleuchten.
Es werden genau die gleichen Werte von den Blöcken geliefert. Von den I2C Registern kommen 4 mal 16 Bit für rot, grün, blau, weiß.
Für den RX Controller gibt es in ROBO Pro Coding 6.5.2-beta.3 den RGBW Farbsensor noch nicht.
Der RGBW Farbsensor am TXT 4.0 Controller ist aber ein eigenes Thema.

FG Lutz
I²C für Calliope, TXT 4.0 und RX Controller.
https://git.fischertechnik-cloud.com/users/i2c/projects

Antworten