-
        

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 37

Thema: ASURO Dunkel-Hell-Kantenverfolgung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    10.05.2007
    Alter
    33
    Beiträge
    31

    ASURO Dunkel-Hell-Kantenverfolgung

    Anzeige

    Hallo zusammen,

    ich bin neu hier und hätte auch erst mal eine Riesenbitte an euch!
    Nächste Woche muss ich an der Uni im Rahmen eines Mechatronik-Lehrganges mit dem ASURO arbeiten.
    Leider habe ich keinerlei Zugang zum Roboter, noch habe ich umfangreiche C Kenntnisse.

    Natürlich habe ich mich eingelesen, und ich habe natürlich auch eine Idee, wie das zu machen ist, allerdings mangelt es dann an den Programmierkenntnissen und daran, dass ich keinen ASURO habe.

    Die Aufgabe lautet genau:
    "Entwerfen Sie ein Verfahren, um mit Hilfe der Liniensensoren eine Hell-Dunkel-Kante (keine dünne dunkle Linie) zu verfolgen. Erstellen Sie hierfür ein geeignetes C-Programm."

    Da ich gesehen habe wie billig der ASURO ist, werd ich mir den auch zulegen, aber das klappt bis nächste Woche ja leider nicht mehr.


    Meine Idee bis jetzt (wie man das dann programmiert...keine Ahnung)
    Die 2 Liniensensoren fahren auf 2 versch. Unterlagen.
    Der rechte meinetwegen auf weiß, der linke auf schwarz.
    Also müssen auch die Sensorwerte verschieden sein.
    LineData[1] (der linke) so um die 600? und LineData[2] (der rechte) so um die 100?
    Das wars ja eigentlich denke ich...Motoransteuerung und so einfach konstante Geschwindigkeit(?)

    Achja, desweiteren soll man Umgebungslicht kompensieren.
    Meine Idee war da bis jetzt, dass man 2 Unterlagenmessungen (Schwarz,Weiß) mit der FrontLED macht. Die LineData Werte müssten zB auf Weiß mit und ohne LED immer einen konstanten Differenz-Wert haben.
    Denke ich zumindest, ob das stimmt weiss ich natürlich wieder nicht.
    Vielleicht könnt ihr mir da weiterhelfen??


    Ich weiss dass ich ziemlich viel fordere, aber nicht wirklich viel biete, ausser meinen bescheidenen Ideen.
    Aber da euch das hoffentlich Spaß macht, ASURO zu "beleben", hoffe ich auch dass ihr mir aus meiner Zwickmühle raushelfen könnt!!

    Gebt einfach mal euren Input an mich. Wäre echt nett!!

    Liebe Grüße

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    ich glaube, du solltest mal die suchfunktion benutzen. da gibts schon was...
    kleinschreibung ist cool!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    10.05.2007
    Alter
    33
    Beiträge
    31
    Jo hallo

    Ich habe die Suchfunktion schon benutzt, aber leider finde ich nur was zur Linienverfolgung und den "Trick" wie man das bereits mitgelieferte Linienverfolgungsprogramm ausnutzen kann um Kanten zu verfolgen, was allerdings nur bei best. Anordnung der Hell-Dunkel Bereiche funktioniert.
    Und ich denke das geht bestimmt noch anders.
    Habe übrigens gerade einen ASURO bei ebay ersteigert für 28,78€
    Aber bis zum Montag bekomme ich den eh nicht mehr, und am Dienstag muss ich das Projekt vorstellen

    Greift mir doch unter die Arme (ich weiss, das ist schon ziemlich viel was ich da verlange!! )

    Wünsche euch ein schönes WOchenende!

  4. #4
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    du hast schon recht, es macht spaß den kleinen zu beleben... aber fertige codes zu posten ist nicht der sinn des forums.

    was hast du denn für ideen, wie könnte man das problem angehen?
    kleinschreibung ist cool!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    10.05.2007
    Alter
    33
    Beiträge
    31
    Naja also wie gesagt, meine Grundideen habe ich ja in meinem ersten Post genannt.

    1) Ich weiss der ASURO hat 2 Liniensensoren. Einen mehr links und einen mehr rechts an der Unterseite (Weiss nicht so genau wo sich die befinden).
    Das heisst, wenn der ASURO einer Scharz-Weiß-Kante folgen soll, muss ein Sensor immer nur Schwarz und ein Sensor immer nur Weiß anzeigen!
    Falls meinetwegen der rechte Sensor aber nicht Weiß, sondern auch Schwarz anzeigt, dann soll er so lange nach rechts fahren, bis er wieder beide Farben an den Sensoren anzeigt.
    Ich denke das ist euch klarer als mir, dass das Gedankenkonstrukt sehr einfach ist, das zu programmieren um einiges schwerer ist, vor allem wenn man von C noch gar keine rechte Ahnung hat.

    2) Das mit dem Umgebungslicht hat sich anscheinend so bewahrheitet wie ich mir das gedacht habe. 2 Messungen des Unterbodens einmal mit LED und einmal ohne ergibt das reflektierte Licht, wenn man von den Messungen die Differenz bildet. Ein Code dafür war auch hier im Forum zu finden.

    Zu 1. würde ich das eigentlich versuchen, analog zum LineTest zu programmieren. Also die Sensoren scannen lassen, Daten einlesen, mit Referenzwerten für Weiss und Schwarz abgleichen, und dann dementsprechend die Motoren ansteueren, um Abkurs auszugleichen.


    Klar ist es Schei*e (sorry ) fertige Codes zu nutzen, aber es muss ja nicht perfekt funktionieren (hoffe ich zumindest).
    Deshalb hoffe ich ihr könnt mir schnell (für euch wahrscheinlich schnell weil iihr wisst in welche Richtung es geht und was ihr tun müsst) ein kleines Programm schreiben. Es wäre wirlkich dringend Oder halt nur ein Grundgerüst oder sowas?

    So, ich wünsche euch ein schönes Wochenende!!


    EDIT:
    Da fällt mir gerade ein, wenn ich das bei 1. so machen würde wie oben genannt, dann könnte der ASURO der Linie ja nur folgen wenn auch wirklich die bestimmte Farbe zB Weiß rechts ist. So sollte das aber nicht sein, weil es eigentlich egal sein sollte, wie die Farben gelegen sind.
    Deshalb meine Idee jetz grade, wenn die Liniensensoren abtasten mit LED und ohne, dann ergibt sich ja die besagt Differenz. Für Weiß-Schwarz muss das ja ein best. Wert sein...kA vielleicht 200 oder so.
    Dann könnte ich doch ASURO sagen, er soll so lange rumfahren, bis er eine "Farbdifferenz" von ~200 findet. Wie man das natürlich wieder programmiert.....

  6. #6
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    startet der roboter auf der kante? oder daneben? wenn er daraufsteht dann kann er am start versuchen zu erkennen ob links oder rechts schwarz ist.
    kleinschreibung ist cool!

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.08.2006
    Beiträge
    183
    ....vor allem wenn man von C noch gar keine rechte Ahnung hat.....


    die meisten machen vom asuro eh "copy" und "paste", weil das datenblatt vom AVR8 nicht gelesen wird und das winavr-c schlechthin kennen.

    hier kannst du sehen was winavr-c heißt :

    http://www.mikrocontroller.net/forum/2

    und die beißen sich ganz schön die zähne aus die studies. es ist nicht einfach zu proggen.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    10.05.2007
    Alter
    33
    Beiträge
    31
    Zitat Zitat von damaltor
    startet der roboter auf der kante? oder daneben? wenn er daraufsteht dann kann er am start versuchen zu erkennen ob links oder rechts schwarz ist.
    Hey Damaltor,
    also da in meiner Aufgabenstellung nichts drin steht, nehme ich den einfacheren Fall an...der Asuro steht also bereits auf der Kante.
    Das heisst doch also, wenn der schon drauf steht, und ich scanne, dann ist LineData[0] (zB Weiß mit dem Digitalwert der quantisierten Fototransistorspannung gefüllt, so ca. 600?) und LineData[1] müsste dann für schwarz so etwa 200 haben?
    Folglich muss man in einer while Schleife die Anweisung geben, so lange mit gleicher Geschwindigkeit weiter zu fahren, bis der Wert eines Sensors nicht mehr im Toleranzbereich liegt. Für Weiß würde das doch heissen: weiter rechts lenken, wenn zu viel schwarz auf dem rechten Liniensensor! Aber wie genau macht man das? Man hat doch nur die Möglichkeit mehr SPeed am rechten bzw linken Antrieb zu geben?! Ich will aber eigentlich dass der Asuro gleich schnell bleibt...muss ich nach der Richtungskorrektur also wieder die Variable SPEED initialiesieren, die ich vor dem HauotProgramm mit dem Wert zB 0Fh festlege?



    Zitat Zitat von robby-fant
    und die beißen sich ganz schön die zähne aus die studies. es ist nicht einfach zu proggen.
    Also ich finde ja den Kommentar persönlich nicht angebracht.
    Ich gebe ja freiweg zu, dass ich keine Ahnung habe von C, weil wir halt im Grundlagenstudium davon nichts mitgekriegt haben(leider nur Java und Pascal)
    Aber man kann von KEINEM verlangen, dass er den ASURO auf 1 1/2 Wochen (klar, vlt nur einfache Programme) programmiert, wenn man C noch nie zuvor benutzt hat.
    Und dass man dann auf alle "Studies" generalisiert, ist auch Quatsch. Wir müssen das ja auch erst lernen, wie jeder andere auch.

    Meine Antwort jetzt nicht böse auffassen, ich musste da nur schmunzeln

  9. #9
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    Bin auch Student...

    damit der asuro nicht immer schneller/langsamer wird, gibt es einen kleinen trick: man korrigiert nur an einem rad. so wird dieses immer wieder beschleunigt und gebremst, und im endeffekt wird der asuro nicht immer schneller.

    mach dir einen abluafplan:

    der asuro wird eingeschaltet. folgendes soll passieren:

    Code:
    // Korrekturvariable:
    speed=150
    WENN rechts > 550 UND links < 450 DANN
    {
    ENDLOSSCHLEIFE BEGINN
    
    BEIDE MOTOREN VORWÄRTS
    MOTORENGESCHWINDIGKEIT links 150, rechts "speed" //also zu beginn auch 150
    
    WENN LINKS>600 UND RECHTS>600 //also beide seiten weiss
    DANN speed=speed+10
    WENN LINKS<400 UND RECHTS < 400 //also beide seiten schwarz
    DANN speed=speed-10
    
    ENDLOSSCHLEIFE ENDE
    
    } // ende von WENN
    
    WENN links > 550 UND rechts < 450 DANN
    {
    ENDLOSSCHLEIFE BEGINN
    
    BEIDE MOTOREN VORWÄRTS
    MOTORENGESCHWINDIGKEIT links 150, rechts "speed" //also zu beginn auch 150
    
    WENN LINKS>600 UND RECHTS>600 //also beide seiten weiss
    DANN speed=speed-10
    WENN LINKS<400 UND RECHTS < 400 //also beide seiten schwarz
    DANN speed=speed+10
    
    ENDLOSSCHLEIFE ENDE
    
    } // ende von WENN
    
    Ende des programms
    so sollte das ganz grob funktionieren. am anfang wird geprüft wo schwarz und wo weiss ist, und dann wird je nachdem eine endlosschleife ausgeführt. wenn beide Sensoren die gleiche fareb sehen, dann wird die geschwindigkeit des rechten motors angepasst.

    das programm ist eben mal so entstanden, ob es funktioniert weiss ichnicht. korrekturen bitte posten...

    den programmCODE dazu kannst du ja mal selbst überlegen. wenn du ne idee hast dann poste mal.

    es könnte sein dass du deine zahlenwerte anpassen musst, weil die linedata werte bei jedem asuro stark variieren können.
    kleinschreibung ist cool!

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    10.05.2007
    Alter
    33
    Beiträge
    31
    Danke damaltor,

    ich weiß, dass du Student bist an der FH Jena
    Aber du hast ASURO bestimmt auch nicht nach einer Woche drauf gehabt, bzw C...denk ich doch mal

    Jedenfalls, danke für deinen Input. So habe ich mir das vorgestellt. Das Verfahren ist mir eigentlich klar.
    Ich werde heute nachmittag mal VERSUCHEN, nen code zu schreiben.
    ASURO soll also nur einer Kante nachfahren, das mit dem Umgebungslicht vernachlässige ich vorerst mal. Ich nehme mal deine Schwellenwerte 550 für weiß und 450 für schwarz!!

    Ich hoffe, dass ich da was einigermaßen brauchbares "hinzaubere".

    Danke für deine Hilfe damaltor!!

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •