PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche dringend Hilfe. Einfache Programmierung von Folgen einer schwarzen Linie



sproe
28.08.2014, 19:21
Hallo liebe Asuro Fan :-),

ich bin jetzt auch ein stolzer Asuro Besitzer. Ich bin aber total am verzweifeln mit dem Programmieren. Habe jetzt 2 Tage lang gegoogelt, wie man den Asuro einfach eine schwarze Linie folgen kann. Leider komm ich nie zu einem Resultat. *heul*

Ich wäre euch zu tiefst DANKBAR, wenn ihr für mich ein eine einfache Programmierung zur Folgen einer schwarze Linie mir zeigen könnt.

DANKE DANKE

Sisor
28.08.2014, 20:09
Guckst du hier! (http://igtfy.com/?q=Robots+ASURO+Linienerkennung)

Valen
28.08.2014, 20:32
Auch hier in das Asuro Forum sollte Benutzung der Suchfunktion Erfolg haben.

sproe
29.08.2014, 11:20
Habe schon das Forum durchgestöbert. Aber das war nicht so hilfreich bezogen auf mein Problem :-(

Sisor
29.08.2014, 11:33
hier klicken (http://www.elektronik.nmp24.de/?Robots:ASURO:Linienerkennung)

RoboHolIC
30.08.2014, 16:58
Lieber sproe.

Keine Programmiersprache der Welt wird dir einen Befehlsaufruf "folge_schwarzer_Linie(highest_speed)" liefern, aber das weißt du hoffentlich.
Was hättest du auch davon, ein übertragbares hex-File für den Asuro zu finden, dass tut was es soll, und dann doch nicht zu wissen, wie das letztlich funktioniert.

Splitte doch erst mal auf, welche elementaren Aktionen für das Nachverfolgen einer Linie nötig sind. Nein, ich wollte das gerade aufzählen, aber ich machs doch nicht, denn sonst mach ich dir deinen Lernerfolg zunichte.

Wenn du weisst, was der Asuro können muss, um die gestellte Aufgabe zu lösen, hast du bereits kleine Lektionen, anhand derer du das Programmieren erlernen kannst.
Mach klein(st)e Schritte von Null weg. Erobere Komponente für Komponente des Asuro.Damit lernst du Grundlegendes der Materie. Von dem, was du dabei lernst, wird (fast) nichts für deine Hobbyzukunft vergebens sein.

Gruß
RoboHolIC

Ferdinand
30.08.2014, 21:10
Hi in welcher sprache programirst du?
ich weiss das es zum teil grosse schwirigkeiten mit dem compeliren und flahen (Brenen) des Controler gibt, geht das den bei dir was benutzt du für eine programir umgebung und was für ein programer nimst du.
by Ferdinand.

RoboHolIC
30.08.2014, 21:27
Als Vorredner fühle ich mich jetzt mal angesprochen:
- PIC16F877-Conrtoller von Microchip
- Assembler
- MPLAB-X-Entwicklungsumgebung
- PICkit3 Programmiergerät
- selbstgebaute Controllerplatinen und selbstgebaute Hardware

Ferdinand
31.08.2014, 07:06
ne ich meite eigentlich den tehmen starter, aber trotzdem cool:cool:

sproe
31.08.2014, 13:04
danke für eure Stellungnahme. ich mache das mit c/c++ mit dem Programmer Notepad und einem Flash tool, die bei der CD vom Asuro dabei waren.

Ferdinand
31.08.2014, 18:09
ok und das ganze funktioniert bei dir, ich meine hast du mal ein programm geschrieben wen ja was den?

sproe
10.09.2014, 09:06
Komisch bei meinem Asuro ist, dass er manchmal die Linien folgt und manchmal kommt er von der Bahn ab. In der Art wie, wann er mal lust hat folgt er die Linie und wenn nicht dann nicht. Ich muss halt auch dazu sagen, dass meine Linien nicht immer genau die gleiche Breite haben.
Wie breit muss denn schwarze Linie sein, damit der Asuro perfekt die Linie befolgt?

oberallgeier
10.09.2014, 09:44
... stolzer Asuro Besitzer ... total am verzweifeln ... wie man den Asuro einfach eine schwarze Linie folgen ...
Komisch bei meinem Asuro ist, dass er manchmal die Linien folgt und manchmal kommt er von der Bahn ab ...Die üblichen Programme hier im Netz gehen ja davon aus, dass "alles" störungsfrei läuft. Diese Annahme trifft nicht immer zu.

Ne ganze Menge Testprogramme hat Henk auf seiner Homepage (http://home.kpn.nl/h.van.winkoop/Asuro/Software/AsuSfwPagFrm.htm), Switch Test, Datalogging Odometer, LineDemo etc. Vielleicht hilft Dir das bei der systematischen Analyse der Funktionen bei Deinem asuro. Ansonsten - klingt das nach geringen Abweichungen, die sind meist ein Optimierungsproblem. Manche Funktionen (hard- und softwareseitig) verlangen eben eine gute Anpassung.

Viel Geduld, Glück und Erfolg!

sproe
10.09.2014, 10:44
dankeschön :).

Und wie breit die schwarze Linie sein soll? Hast du da ein Tipp? Z.b. die gleiche breite von dem linken Sensor bis zum rechten Sensor. Oder etwas breiter oder schmäler? :Strahl

sproe
13.09.2014, 11:03
Hat da keiner einen Tipp oder Rat wie breit die schwarze Linie ideal für eine Linienverfolgung sein soll?

PICture
13.09.2014, 11:32
Eben, weil nur du mit deinem realem Asuro das ermitteln könntest._.

Valen
13.09.2014, 15:08
Las das entlang die Linie fahren erst mal liegen. Erforsche erst mal was eigentlich aus den Sensoren herauskommt wenn du es von Links nach Rechts über eine Linie zieht. Schreib ein Programm das die gemessene Werten der Sensoren zu deinem Computer sendet. (Hint: https://fresh2refresh.com/c/c-type-casting/c-itoa-function/) Achte dann darauf was die Werten sind über ein Weißes oder Schwarze ober-flache. Gibt es bei gleiche Beleuchtung schon ein unterschied zwischen Links und Rechts? Welcher Einfluss ein Beleuchtung von einer Lampe hat (oder Sonnenlicht). Welcher Änderung das anschalten der Linien led macht zu dem Sensorwerten. Und wie ändern sie wen es ein schmalen oder dicken Linien neben, unter oder zwischen den Fototransistoren steht.

Jeder Asuro, mit seiner eigene Sensoren, ist verschieden in sein Messwerten durch Umgebung und Sensor-empfindlichkeit.

Wenn du das verfahren richtig verstehst kannst du den Sensoren besser auswerten und darauf basieren wo den Linie sich befindet. Danach kommt das steuern der Motoren.

PICture
14.09.2014, 09:55
@ sproe

Wie mein Vorredner erklärt hat, man könnte in einer Hand den Asuro halten und mit zweiter Hand eine kurze gezeichnete Linie bewegen, damit es schneller geht. ;)

sproe
14.09.2014, 13:50
Also, ich habe hier das Standard-Programm zur Linienverfolgung

#include "asuro.h"

int main(void)
{ unsigned int data[2];
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
while(1){

LineData(data);

if (data [0] > data [1] )
{MotorSpeed(160,80);}
else
{MotorSpeed(50,200);}
}
return 0;
}


Ich habe unterschiedliche Drehzahlen, weil die Motoren auch iwie unterschiedlich schnell sind. So macht er die Kurven am besten. Ein Video habe ich hinzugefügt:

http://www.vidup.de/v/DYFEC/


Folgendes Problem:

Der Asuro schafft meist nur knapp eine Runde, dann hängt sich der Asuro auf ( wie im Video zu sehen). Und wenn ich denn abschalte und wieder neu anmache, um die Strecken verfolgung zu starten, passiert nix mehr. Ich muss dann immer wieder neu die Codes drauf flashen. Es ist, wie als würde er Prozessor die Codes nach jeder Störung löschen.

Ich bin wirklich am verzweifel, weil ich schon 2 Wochen daran bin, um den Asuro mal richtig zum laufen zu kriegen ohne Probleme. Das soll eine Hausarbeit sein. Und die Zeit läuft mir weg :cry:
Am liebsten würde ich einfach ein fertigen Asuro kaufen, der schon alles kann. Ehrlich gesagt würde ich wirklich schon ein fertigen Asuro kaufen, der sowas kann. Das ist nämlich schon mein 2. Asuro den ich gekauft habe, weil der 1. Asuro überhaupt nicht funktioniert hat :Haue
Ich bin absolut ein Laie auf diesem Gebiet.
Ich hoffe es kann mir jemand helfen. ICH WÄRE EUCH SEHR SEHR DANKBAR DARÜBER:pray:
Ist der Prozessor evtl. defekt ? oder hat jemand eine Idee?

Valen
14.09.2014, 14:23
...Folgendes Problem:

Der Asuro schafft meist nur knapp eine Runde, dann hängt sich der Asuro auf ( wie im Video zu sehen). Und wenn ich denn abschalte und wieder neu anmache, um die Strecken verfolgung zu starten, passiert nix mehr. Ich muss dann immer wieder neu die Codes drauf flashen. Es ist, wie als würde er Prozessor die Codes nach jeder Störung löschen....
Vergessen kann er es nicht. Nur wenn du ein neues Programm versucht zu flashen. Was passiert mit den StatusLED wenn du ihnen neu anmacht? Vielleicht sind den Batterien nach das fahren zu leer, und entscheidet den Bootloader das es nicht weiter arbeiten soll. Dann wird den StatusLed Rot, und fangt er an "VL" uber den IR verbindung zu senden.

Und Kaputt geht er nicht durch verlieren seiner Linie.

[edit]Oops, Batterien, kein Motoren.

sproe
14.09.2014, 14:36
Also wie am Ende des Videos zu sehen dreht sich der Asuro als um seine eigene Achse und die StatusLED leuchtet grün. Wenn ich dann abschalte und wieder einschalte leuchtet nur die grüne LED und es passiert nix

Sisor
14.09.2014, 14:40
Softwareseitig ist so ein Fehler imho nur möglich, wenn das Programm im PROGMEM (also im Flashspeicher) den Programmcode überschreibt.
Das ist aber in deinem Programm nicht der Fall.

Also wohl Hardware.

Ist die Zeit, bis der Roboter aussetzt, immer die gleiche?

sproe
14.09.2014, 14:52
Habe gerade das Programm nochmal drauf geflasht und jetzt hat er 3 Runden geschafft ohne Probleme bis er wieder abgestürzt ist.
Also ich benutze zum flashen: Asuro Flash Tool Version 1.55

Aber die Codes sind richtig? Nur leider schafft er nicht so kleine Radien , da fährt er vorbei. oder kann man das auch iwie in die Codes mit einbringen?

Valen
14.09.2014, 14:58
In deinem Video sehe ich nicht das du den Asuro an oder ausschaltet mit dem Schalter. Den Video endet wenn es von den Linie abweicht. Also können wir nicht sehen was den Bootloader (das fest eingebaut Programm das Flashen möglich macht) beim anschalten tut.

Könnte es vielleicht sein das den Rädern und Motoren zu viel Bremsung haben? Blockiert es irgendwo an die Wellen oder Zahnrädern? Und weicht es immer ab nach eine bestimmte Seite?

Das Programm sollte einfach los gehen. Vielleicht könntest du dein Programm anpassen und mit den BackLEDs anzeigen lassen in welcher Richtung er entscheidet zu drehen.

sproe
14.09.2014, 15:31
Habe gerade nochmal ein Video gemacht:
http://www.vidup.de/v/wILlr/

Der Asuro kreist immer im Uhrzeigersinn. Also bewegt sich nur das linke Rad. Wie im ersten Video und jetzt hier in diesem Video.
Ich habe auch mal den Motor-test ( Datalogging Odometer values) gemacht von http://home.kpn.nl/h.van.winkoop/Asuro/Software/AsuSfwPagFrm.htm

das kam raus:

Left min/max,

+00206
+00238

right min/max values
+00145
+00224

Wie kann ich mein Programm mit den BackLEDs anpassen? Bin wirklich absoluter anfänger :)

Valen
14.09.2014, 18:20
Habe gerade nochmal ein Video gemacht:
http://www.vidup.de/v/wILlr/ Ich höre das er ein summ-Ton macht. Stimmt das? Es könnte sein das er sehr Schnell wechselt zwischen Links oder Rechts. Das könte den Messungen der Linien sensoren beinflussen. Oder das den Motorspeed Wert zu wenig (durch entladung der batteriespannung) ist den Motoren wieder in Bewegung zu bringen. Wie die BackLEDs leuchten in diesen Fallen (sehe am ende) könnte einiges Ausschließen. Wenn beiden Backleds dimm leuchten wechselt es ganz schnell zwischen Links und Recht. Wenn nur einer Hell leuchtet wenn er fest steht, wolltet er ganz bestimmt in diesen Richtung drehen, aber den Motorkraft reichst irgendwie nicht mehr.



Der Asuro kreist immer im Uhrzeigersinn. Also bewegt sich nur das linke Rad. Wie im ersten Video und jetzt hier in diesem Video.
Ich habe auch mal den Motor-test ( Datalogging Odometer values) gemacht von http://home.kpn.nl/h.van.winkoop/Asuro/Software/AsuSfwPagFrm.htm

das kam raus:

Left min/max,

+00206
+00238

right min/max values
+00145
+00224
Diesen Odometer-werten sagen nichts über dein Problem. Das sind die max und min werten der Helligkeit von den Fototransistoren an beiden Encoderscheiben.

Wie kann ich mein Programm mit den BackLEDs anpassen? Bin wirklich absoluter anfänger :)Steht doch in den Anleitung ( 9.2.4) wie man den BackLED-funktion anrufen muss? Oder irre ich mich? Wenn es Links gehen muss, schaltest du den Linken LED ein und Rechts aus. Rechts drehen anders herum.