hi!
es geht mein Projekt. ich muss mit Arduino mega 256 und die CMUCAM4 forme und Farbe von drei unterschiedliche Objekten in drei behälter sortieren können.
zum beispiel: objekt von type1:gelb und dreieckig form geht zum behälter 1
objekt von type2:rot und rechteckige form geht zum behälter 2
objekt von type3:blau und rund geht zum behälter 3
-objekten bezüglich der form zu unterscheiden habe ich keine Ahnung
Ich brauch diese Funktion, keine Ahnung wie ihr es machen wollt, ist mir auch egal, ich brauchs einfach.
Bitte das ganze Projekt fertig aufgebaut mit Code auf einem USB Stick und auf dem Arduino mega 256 an diese Adresse verschicken:
Max Mustermann
Maxpaderborn Str. 256
25698 Paderborn
ich habe erstmal ein programm geschrieben, die die Farbe unterscheiden kann.es funktioniert auch nicht so richtig, wegen die tagelicht von Umgebung, die ständig variieren.
#include <CMUcam4.h> // Bibliothèques #include <CMUcom4.h> #define LED_BLINK 5 // 5 Hz #define WAIT_TIME 5000 // 5 seconds #define LED_UP 11 // Les nombres correspondent à la sortie sur la #define LED_MID 10 Arduino. #define LED_DOWN 12 #define LED_DEBUG 13
CMUcam4 cam(CMUCOM4_SERIAL);
void setup()
{
cam.begin();
cam.LEDOn(LED_BLINK);
delay(WAIT_TIME);
cam.autoGainControl(false);
cam.autoWhiteBalance(false);
cam.LEDOn(CMUCAM4_LED_ON);
// Déclaration des sorties numériques
pinMode(LED_UP, OUTPUT);
pinMode(LED_MID, OUTPUT);
pinMode(LED_DOWN, OUTPUT);
pinMode(LED_DEBUG, OUTPUT);
}
void loop()
{
CMUcam4_tracking_data_t data;
// l'état des LED.
int lightUp, lightMid, lightDown, lightDebug;
for(;
{
// par défaut, on reset toutes les valeurs
lightUp = LOW;
lightMid = LOW;
lightDown = LOW;
lightDebug = LOW;
// ROUGE
cam.trackColor(120,255,0,60,0,60); // chercher dans le rouge
22
cam.getTypeTDataPacket(&data); // récupérer les infos transmises par la cam
if(data.pixels > 1) { // si on détecte des pixels de cette couleur
lightUp = HIGH; // on allumera la LED UP
}
// VERT
cam.trackColor(0,60,0,255,0,120);
cam.getTypeTDataPacket(&data);
if(data.pixels > 1) {
lightMid = HIGH;
}
// BLEU
cam.trackColor(0,60,0,60,120,255);
cam.getTypeTDataPacket(&data);
if(data.pixels > 1) {
lightDown = HIGH;
}
digitalWrite(LED_UP, lightUp);
digitalWrite(LED_MID, lightMid);
digitalWrite(LED_DOWN, lightDown);
digitalWrite(LED_DEBUG, lightDebug);
}
}
ich habe gelesen dass man mit dem parameters von die data struktur data (cam.getTypeTDataPacket(&data) die funktion von formerkennung von diesen Objekten schreiben kann.
joecole:
ich habe erstmal ein programm geschrieben, die die Farbe unterscheiden kann.es funktioniert auch nicht so richtig, wegen die tagelicht von Umgebung, die ständig variieren.
.....
ich brauche bitte ihre tipps
Raum abdunkeln und konstante Lichtquelle einsetzen die möglichst ein breites lichtspektrum abdeckt.
Ansonsten wäre es schon klasse mehr über das Projekt zu erfahren.
@scorpi08, bist Du dir sicher mit Padaborn ? Ich hätte da ehr auf eine ausserdeutsche Postleitzahl getipp.
joecole:
hi!
es geht mein Projekt. ich muss mit Arduino mega 256 und die CMUCAM4 forme und Farbe von drei unterschiedliche Objekten in drei behälter sortieren können.
zum beispiel: objekt von type1:gelb und dreieckig form geht zum behälter 1
objekt von type2:rot und rechteckige form geht zum behälter 2
objekt von type3:blau und rund geht zum behälter 3
-objekten bezüglich der form zu unterscheiden habe ich keine Ahnung
ich bitte um ihre beitrag
Falls es Dir bei der beschriebenen Aufgabenstellung nicht aufgefallen ist: Du brauchst Deine drei verschiedenen Objekte nicht nach zwei Kriterien sortieren, sondern nur nach einem einzigen!
D,h. Du kannst Dir aussuchen, ob Du die Objekte nach Farbe ODER nach Form sortierst, aber Du brauchst nicht beides.
Sobald Du Deine drei Objekttypen nach Farbe sortiert hast, sind sie gleichzeitig auch nach Form sortiert. Und umgekehrt.
Wenn es so ist wie Du schreibst "bezüglich der form zu unterscheiden habe ich keine Ahnung", dann brauchst Du davon auch überhaupt keine Ahnung haben, solange Du wenigstens Ahnung davon hast, wie Du die Objekte nach Farbe sortieren kannst. Das reicht bei der Aufgabenstellung aus!
danke erstmal für deine analyse.
ich habe eine probleme wenn ich zum beispiel nur bezüglich der Farbe einsortieren, wird z.b für
ein gelbes und runde objekt als objekt von typ1 betraten und in der behälter1 geworfen.
joecole:
danke erstmal für deine analyse.
ich habe eine probleme wenn ich zum beispiel nur bezüglich der Farbe einsortieren, wird z.b für
ein gelbes und runde objekt als objekt von typ1 betraten und in der behälter1 geworfen.
Gemäß Deiner Aufgabenstellung hast Du aber gar keine gelben und runden Objekte!
Du hast die Aufgabe beschrieben mit: "drei unterschiedliche Objekten in drei behälter sortieren können."
Und diese Objekte hast Du bschrieben:
objekt von type1:gelb und dreieckig form geht zum behälter 1
objekt von type2:rot und rechteckige form geht zum behälter 2
objekt von type3:blau und rund geht zum behälter 3
Sind es jetzt doch mehr als drei verschiedene Objekte?
Objekt vom Typ4: gelb und rund
???
Geht dann zum Behälter 4, oder wie?
hi!
objekten wie gelb und rund will ich nicht betrachten, weil sie unspezifizeirt sind.es könnte sein dass solche objekten vorhanden und ich will bei der Sortierung vermeiden.sie gehört nicht zur behälter 1 und 2 noch 3
joecole:
hi!
objekten wie gelb und rund will ich nicht betrachten, weil sie unspezifizeirt sind.es könnte sein dass solche objekten vorhanden und ich will bei der Sortierung vermeiden.sie gehört nicht zur behälter 1 und 2 noch 3
Ah, jetzt verstehe ich: Zusätzlich zu den drei Objekten, die erkannt werden sollen, gibt es auch "falsche" Objekte. Die falschen Objekte müssen ebenfalls erkannt werden, und zwar als falsch erkannt werden, und sollen bei der weiteren Verarbeitung dann ignoriert werden.
Das habe ich aus der ganz oben geposteten Aufgabenstellung so nicht herausgelesen.
Wie laufen denn die zu erkennenden Objekte vor der Kamera vorbei?
Sind die irgendwie auf einem Fließband aufgereiht?
Sind sie vereinzelt? Oder können sie dicht zusammenliegen?
Sind die Objekte ausgerichtet, also die Dreiecke immer mit der Spitze nach oben oder so?
Oder müßtest Du das auch realisieren?
Oder liegen einfach 100 Teile auf einen Haufen geschüttet da, womöglich auch übereinander, und sollen erkannt werden?
die form und die farbe den Objekten ist mein eigene Erfindung. ich möchte nur drei unterschiedliche Objekten bezüglich der Farbe und Form.
ich muss programmieren, sodass wenn die objekten von typ1 an der camera vorbeigehen (CMUCAM4) muss LED Rot einschalten.
wenn die objekten von typ2 an der camera vorbeigehen (CMUCAM4) muss LED Gelb einschalten.
wenn die objekten von typ3 an der camera vorbeigehen (CMUCAM4) muss LED Green einschalten
joecole:
die form und die farbe den Objekten ist mein eigene Erfindung. ich möchte nur drei unterschiedliche Objekten bezüglich der Farbe und Form.
ich muss programmieren, sodass wenn die objekten von typ1 an der camera vorbeigehen (CMUCAM4) muss LED Rot einschalten.
wenn die objekten von typ2 an der camera vorbeigehen (CMUCAM4) muss LED Gelb einschalten.
wenn die objekten von typ3 an der camera vorbeigehen (CMUCAM4) muss LED Green einschalten
Die Art des Objekts läßt sich im einfachsten Fall dann ggf. anhand der Pixel abzählen. Mal angenommen, die Seitenlänge des Rechtecks, des Dreiecks und der Durchmesser der runden Form sei jeweils 30 Pixel.
Dann belegt das Rechteck 30x30 = 900 farbige Pixel
Dann belegt das Dreieck 30x30/2 = 450 farbige Pixel
Dann belegt der Kreis 3030PI/4 = 707 farbige Pixel
Im einfachsten Fall könnte man also einfach versuchen zu erkennen, wie viele farbige Pixel ein Objekt im Bild erzeugt, um dann Rückschlüsse auf das Objekt zu ziehen.
Richtige Bildverarbeitung geht natürlich anders und ist viel aufwändiger beim Postprocessing der Bilddaten.
Da wirst Du wohl etwas experimentieren müssen.
Tut mir Leid, mehr kann ich anhand der einsehbaren Dokumentation zu der Kamera auch nicht sagen.