ich glaube, du solltest mal die suchfunktion benutzen. da gibts schon was...
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
ich glaube, du solltest mal die suchfunktion benutzen. da gibts schon was...
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!
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?
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.....
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.
....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.
Hey Damaltor,Zitat von 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?
Also ich finde ja den Kommentar persönlich nicht angebracht.Zitat von robby-fant
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
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:
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.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
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.
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!!
Lesezeichen