-
        

Seite 1 von 9 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 85

Thema: NIBO2 - Test Bodensensoren

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Hero_123
    Registriert seit
    29.08.2010
    Beiträge
    202

    NIBO2 - Test Bodensensoren

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo Achim

    Ich habe ein neues Thema bezgl Bodensensoren aufgemacht, denn dieses Thema hat ja mit dem initializer2.hex nicht so viel zu tun...

    Beim Test der Bodensensoren (die 2 vorderen Sensoren) habe ich festgestellt, daß der Nibo noch bis zu 4 cm weiter fährt nach dem Erkennen des "Absturzes" -> 4cm, da würde er auf jeden Fall abstürzen (2,4 cm sind das maximale ohne Absturz)

    Mein Programm ist ganz einfach gehalten; in einer while-schleife wird:

    copro_setSpeed(tspeed_l, tspeed_r);
    copro_update();
    if ((value_fl<0x20)||(value_fr<0x20)) {
    leds_set_status(2,4);
    copro_stop();}

    (das sind nur prinzipielle Codeschnipsel!) Die Sollwertvorgabe tspeed_l = 40 Ticks (14cm/s), ki = 15, kp = 20, kd = 10.
    Ich wollte auch die Zeit messen, die vergeht, bis der NIBO steht (vom Auslösen des copro_stop() bis copro_speed_l = 0, wollte das über einen interruptgesteuerten Timer/Zähler ISR(TIMER2_COMP_vect) machen, aber der Befehl copro_stop() schaltet die Interruptbehandlung aus (cli() und sei())..und somit geht mein Zähler nicht - es wäre schon interessant, die Zeit zu messen, die der Nibo braucht um zum stehen zu kommen..

    ich werde mal checken, ob der Nibo mit dem Befehl copro_setPWM() schneller zum Stillstand kommt, denn ich befürchte, daß er noch weiter fahren würde,wenn der Speedsetpoint größer wäre (z.B. statt 40 Ticks 80 Ticks, wobei die Frage ist - kann er diese Geschwindigkeit überhaupt fahren...

    Hero_123

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Hallo Hero
    bin am staunen. So habe ich die Sache noch nicht gesehen. Bin aber noch nicht so weit gekommen. Dein Codeschnipzel sieht ganz gut aus. Bin gespannt auf den Rest. Wenn der Abstand nur 2,4 cm betragen darf ist ja ein Absturz möglich. Komisch. Gerade die Sensoren sollen das doch verhindern.
    So wie das aussieht bist du doch in C ganz gut.
    Achim

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von Hero_123
    Registriert seit
    29.08.2010
    Beiträge
    202
    Hallo Achim

    wg Programmieren in C - bin noch ein Fledgling...zum Test der Bodensensoren - bin der Meinung, der Programmteil mit dem Check der Bodensensoren ("Absturzverhinderung") muß in einem EIGENSTÄNDIGEN Programmteil - Stichwort THREAD - laufen - also "parallel" zum normalen Programm, sodaß bei Absturzerkennung der copro_stop() sofort zum Beenden des Fahrens des NIBO führt - derzeit ist es ja ein sequentielles Abarbeiten und kein paralleles...werde versuchen, mich schlau zu machen, ob eine thread-programmierung beim atmega 128 möglich ist und es eine entsprechende library dafür gibt - und WIE man sie einsetzen kann...

    Hero_123

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von Hero_123
    Registriert seit
    29.08.2010
    Beiträge
    202
    Hi Achim

    Test Bodensensoren - habe in einer while - Schleife NUR die Bodensoren eingelesen und gecheckt, ob der eingelesene Wert zum Absturz führen würde:
    .
    .
    while(1){
    floor_update();
    if ((value_fl<0x20)||(value_fr<0x20)) {
    leds_set_status(2,4);
    copro_stop();}
    .
    .

    und dennoch fährt der NIBO noch ca 4 cm weiter (bei 40Ticks/s)...ist die Anzahl der Ticks 20/s, dann fährt er nur bis knapp zur Mitte der Teflonauflage...habe auch eine avr-thread lib gefunden, bin aber nicht sicher ob man damit den NIBO früher stoppen kann... anzunehmen ist, daß er NOCH weiter fährt, wenn die Anzahl der Ticks z.B 60/s oder 80/s ist... denke, man kann diese Absturzerkennung nicht sicher nutzen...muß noch checken, was passiert, wenn man den NIBO mittels copro_setPWM() zum stoppen bringt

    wie weit bist Du mit Deinen Untersuchungen?

    Hero_123

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332

    Nibo 2

    Hallo Hero
    bin noch nicht so weit gekommen wie ich wollte. Kämpfe immer noch mit meinem Rechner. Erläuft zwar aber einiges gefält noch nicht. Durch den Datenverlust musste ich auch erst die Teile vom Magazin zusammensuchen und baue gerade ein neues Teil. Dazu treibe ich mich im Moment viel im Netz rum um einiges zu suchen.
    Bis bald Achim

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.418
    probier mal nur mit dem stop befehl
    ob der eine so lange verzögerung hat
    bzw mal andere geschwindigkeiten

  7. #7
    Erfahrener Benutzer Begeisterter Techniker Avatar von Hero_123
    Registriert seit
    29.08.2010
    Beiträge
    202
    Hallo

    es kommt darauf an, welche Fkt in der while-schleife aufgerufen werden - wenn KEINE Grafikausgaben erfolgen, stoppt der NIBO bei 40 Ticks gerade noch rechtzeitig (ca 3mm vor Teflon-Rand -> kein Absturz), bei 60 Ticks fährt er ca 3 - 5mm über den Teflon-Rand hinaus -> Absturz.
    Ich hatte bei meinen ersten Versuchen mir immer die Drehzahl, Batt-spg und die Bodensensoren am Grafikdisplay anzeigen lassen, diese Anzeigen verursachen eine Verzögerung -> NIBO fährt weiter als gewünscht...
    bei den 40Ticks hat er bei mir immer gerade noch rechtzeitig gestoppt (Ubatt = 10V), wenn keine Anzeige erfolgte
    die Fkt copro_setPWM(0,0) führt auch nicht zu einem früheren Stopp.
    Fazit: 40 Ticks, keine Grafikausgaben - bei mir kein Absturz.

    habe mal mein c-file mit angehängt - alles mit NiboLib 2.7

    Hero_123
    Angehängte Dateien Angehängte Dateien

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    17.05.2010
    Beiträge
    37
    Hat sich Dein Problem erledigt? Ich habe zwar nur den "ausgestorbenen" NIBO (1), aber an den Bodensensoren hat sich ja nichts geändert. Innerhalb der while(1)-Schleife wird ja nur einmal ein Motorenbefehl abgesetzt. Wenn der "Abgrund" erkannt wird, sollte ja sofort angehalten werden. Allerdings scheint es so zu sein, dass erst noch ein Schleifendurchlauf gemacht wird. Leider antwortet der Hersteller auf solche Fragen nicht.
    Lisbeth

  9. #9
    Erfahrener Benutzer Begeisterter Techniker Avatar von Hero_123
    Registriert seit
    29.08.2010
    Beiträge
    202
    Hallo

    Nein, das Problem besteht (leider) immer noch; wie Du schon richtig bemerkst, sollte der NIBO nach dem Befehl copro_stop() unverzüglich anhalten (was er nicht macht); es ist schon vorgekommen, daß er ÜBERHAUPT nicht stoppt, obwohl er hätte stoppen müssen...ich habe dann aufgegeben, um ehrlich zu sein.
    Ich hatte auch den Hersteller diesbezüglich schon angeschrieben, aber leider keine Antwort erhalten; generell ist es schwer, eine Antwort zu erhalten.

    naja, ist schade, denn der NIBO ist eigentlich ganz nett. Es scheint auch keine große User-Community zu geben, sodaß man sich bei Problemen austauschen könnte.

    Der Hersteller hat nun ein Forum geschaffen (www.roboter.cc/), da kann man vielleicht/hoffentlich mal Fragen platzieren und hoffentlich(!!) verwertbare (!!) Antworten erhalten.

    mfg

    Hero_123
    Arroganz ist die Perücke auf der Glatze der Unwissenheit

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2007
    Ort
    Stolberg
    Beiträge
    111
    Hast Du schon mal versucht eine negative Geschwindigkeit zu setzen um der Trägheit entgegenzuwirken?

Seite 1 von 9 123 ... LetzteLetzte

Berechtigungen

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