- 12V Akku mit 280 Ah bauen         
Seite 3 von 9 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 85

Thema: Kurve fahren

  1. #21
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Anzeige

    Powerstation Test
    Hallo ihr Beiden,

    wenn ihr schon auf dem Wege seid eine Funktion zu schreiben, die 'alles' kann, dann wäre es nicht schlecht, wenn ihr euch ein bisschen an die bestehende Lib anlehnen würdet bei den Parametern.

    Aktuell heißt deine Funktion hai1991:
    Code:
    void kurve(
      int radius,
      int winkel,
      int speed)
    {
      ..
    }
    Die Funktion in der Lib heißt aktuell:
    Code:
    void GoTurn (
      int distance,
      int degree,
      int speed)
    {
     ..
    }
    Ich benenne mal deine Funktionsparameter um, und nehme noch den Parameter distance aus der Lib dazu:
    Code:
    void kurve(
      int distance, /* aus der Lib */
      int radius,   /* dein int radius, */
      int degree,  /* dein int winkel, */
      int speed)   /* dein int speed) */
    {
      ..
    }
    Nun sind immer noch deine Parameter vorhanden, und aus der Lib ist nur distance hinzugekommen.

    Und jetzt der 'Trick', damit deine Funktion komplett in der Lib eingesetzt werden könnte und die GoTurn()-Funktion ersetzt.
    Mit dem Trick könnten dann nämlich alle geschriebenen Programm, die die 'Funktionen' Go() und Turn() nutzen, weiterhin funktionieren, und es braucht dann nur noch ein weiterer #define für Arc hinzukommen, der dann eben für deine Bogenfahrt benutzt wird.

    --> Diese beiden Defines sind schon in der Lib und würden ersetzt.
    #define Go(distance,speed) GoTurn(distance,0,speed)
    #define Turn(degree,speed) GoTurn(0,degree,speed)

    --> durch diese hier:
    #define Go(distance,speed) kurve(distance,0,0,speed)
    #define Turn(degree,speed) kurve(0,0,degree,speed)

    --> und neu hinzu kommt:
    #define Arc(radius,degree,speed) kurve(0,radius,degree,speed)


    Wenn die hier gebaute Funktion also so gut wird, dass sie als Ersatz für die Lib taugt, dann solltest es den Lib-Benutzern leicht gemacht werden einfach umzusteigen.
    Mit den #defines laufen jedenfalls alle alten Programme weiter und sie bekämen dann halt noch die Bogenfahrt über Arc() hinzu dazu.

    Und als letztes I-Tüpfelchen wäre eine Änderung von kurve() in GoTurnArc() ein heißer Kandidat für die Lib.



    Und dann wäre da noch meine Anfrage an mausi_mick.
    So richtig folgen kann ich deiner Erklärung nicht.
    Hmm, eine Bearbeitung von Tiks zum richtigen Zeitpunkt hatte ich ja schon oben bei https://www.roboternetz.de/phpBB2/vi...=393258#393258 als Vorschlag gegeben.
    Dort wird unabhängig von einer Zeit für Msleep(), ja immer dann geregelt, wenn ein Tik aufgetreten ist.
    Klar, zu Anfang ist der Unterschied zwischen beiden Seiten ja auf alle Fälle mit: 1 Tik hier und 0 Tik dort, ziemlich falsch. Aber genau deshalb hatte ich schon zu Anfang im Thread vorgeschlagen, dass die encoder-Werte eben nicht mit jeder Reglerbearbeitung wieder auf (0,0) gesetzt werden. Nach ein paar Tiks Fahrt wird das Verhältnis rechts/links ja auch bei einer Abweichung von nur einem Tik auf einer Seite ja nicht mehr so gravierend falsch.

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    hi Sternthaler,

    ja ich glaub, wenn das mal soweit ist oder sein sollte, müsste man das so anpassen, dass es möglichst aufwärtskompatibel ist.
    Aber - ich hab Probleme mit dem MY_ODO_... Werten -
    Dein Windows-Programm krieg ich nicht zum Laufen (Der Rechner unter XP hängt sich auf) und ich hab dann mal die Werte über das Programm von Gruber /Hoffmann (Mehr Spass mit Asuro Band II S.23 -24) ermittelt.
    Die Mittelwerte der Kurve liegen dann bei 600 bzw. 500.
    Damit scheinen meine Programme besser zu gehen.
    Hab aber Probleme mit den Encoder-Werten. Meiner Ansicht nach
    sollte man die encoder[2] auf volatile unsigned long setzen.
    (z.Zt. wohl in ASURO.h und Globals.c (müssen die eigentlich in beiden angegeben werden ?) als volatile definiert, da bekommt man bei 32xxx bereits einen Überlauf ( bei max speed und 8-Segmentscheibe bei ca 110 sec ) .
    Sonst muss man wohl - in Abhängigkeit von der Fahrzeit und von der Drehzahl des Encoderrades und der Anzahl der s/w Segmente - öfters mal EncoderSet(0,0) aufrufen.

    Gruss mausi_mick

  3. #23
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo mausi_mick,

    das ist aber sehr merkwürdig mit dem XP-Hänger. Ich hatte deshalb mal meinem Asuro mit in die Firma genommen und den dortigen PC auch mal mit dem Proggi 'versorgt'. Keine Probleme. Schade, dass es bei dir erst mal nicht läuft.
    Kommt noch irgendeine Reaktion nach dem Start vom Programm? Oberfläche sichtbar? Schnittstelle noch wählbar? ...?

    Ja, das mit der 2.fachen Angabe von Variablen ist sehr lästig. Und birgt auch das Risiko von unterschiedlichen Angaben.
    In der Firma hatte ich vor ca. 100 Jahren mal folgendes eingeführt:
    ------
    In asuro.h:
    #ifdef MAIN
    #define EXTERN
    #else
    #define EXTERN extern
    #endif

    EXTERN typ variable;
    ------

    ------
    In dem Source mit der main()-Funktion: (bei uns i.d.R. test.c)
    #define MAIN
    #include "asuro.h"
    ------

    ------
    In allen anderen Sourcen:
    #include "asuro.h"
    ------

    Da es nur einen Source mit MAIN gibt, wird dann in asuro.h bei
    EXTERN typ variable;
    ein
    typ variable;

    und alle anderen Sourcen machen dann in dem asuro.h bei
    EXTERN typ variable;
    ein
    extern typ variable;

    Alle sind glücklich, haben entweder die Variable definiert, oder als extern declariert, und ich als Programmierer muss die Variable nur genau einmal schreiben, an genau nur einer Stelle.


    Ob man die Variable aber nun von signed auf unsigned, und dann noch long machen sollte, weiss ich nicht so recht. Das signed würde ich eher drin lassen, da man ja eventuell auch mal eine Rückwärtzfahrt berücksichtigen sollte/möchte.
    Und bei 110 Sekunden mit 50 cm/s dann also 5500 cm = 55 m. Da passen sowiso keine Tiks mehr zu dem tatsächlich gefahrenen Weg. Sind ja viel zu viele Fehler unterwegs zusammengekommen. ?????

    Schönes Wochenende
    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    Hallo Sternthaler,

    die long Werte hat ich mir eigentlich für so Spiralfahrten überlegt, wo mein
    Sauroboter Robertina den Boden z.B. in Spiralen abfährt.

    Habe mich etwas ernsthafter mit den Encoderwerten beschäftigt.
    Da das Programm aus Asuro Band II recht hohe Maximal-Werte (600-850) ausgab, bin ich dann irgendwie/wann daraufgekommen, dass im Gegensatz zu Odometry/ie(data) die neuen Encoderfunktionen (EncoderInit(),IsrEnc, ...) mit eiem 8-bit ADC arbeiten. (in irgendwelchen Doku's hab ich nichts dazu gefunden, hab's dann an dem ADLAR beim ADMUX erkannt und daran, dass nur ADCH dem Encoder/tmp - Wert zugewiesen wird (in IsrEnc().
    Hab dann ein eigenes Programm geschrieben, um an die 8-bittigen Werte meiner Encoder zu kommen. (Dein Win-Programm machte bei der Installation gar-nichts, nur hängte sich der Rechner auf. (Vielleicht liegt das aber daran, dass meine Systempartition nicht die C: , sondern seit einer dubiosen (fast Neu) Installation die E: Partition ist.) Auch verwende ich die Asuro-Bib 2,80 , da ich auch mit dem ATmega168 experimentiere.

    Parallel dazu hab ich, da die Kurven doch sehr lichtempfindlich und auch geschwindigkeitsabhängig waren, die Hardware vom Asuro leicht modifiziert: Den R22 Widerstand (470 Ohm) - er befindet sich in der Nähe Pin 1-3 vom Atmega8 - hab ich entfernt bzw. den Draht durchgekniffen, auf der Rückkseite von der +5V Versorgung eine Schottky-Diode gelötet und an deren Kathode (Strich) einen Elko/Tantal gelötet. Von dem Pukt aus hab ich die Anoden der Encoder Leds D13/D14 mit je einem 349 Ohm Widerstand verbunden. Die Kathoden der Leds hab ich direkt an Masse angeschlossen (Verbindungsleiterbahn Kathode D12 nach Anode D13 hab ich unterbrochen (etwa da, wo auf dem Foto der Widerstand den schwarzen Kabelbinder "untertunnelt").
    Mit der separaten Versorgung hab ich mehrere Vorteile:
    - Betrieb der Backleds parallel zum Encoder möglich
    - stabilere / störungsfreiere Versorgung der EncoderLeds (entkoppelt über Diode und Elko)
    - freie Wahl der Ströme durch die Encoderdioden unabhängig von der Belastbarkeit des ATmega-Ports (bei hohen Diodenströmen schalten die FotoTransistoren T11/T12 besser durch (gegen 0V).
    - Anpassungsmöglichkeit der Encoderkennlinie durch unterschiedliche Ströme durch entsprechende Widerstandswahl. (Hab ich (noch?) nicht gemacht, könnte aber vielleicht in sehr heller Umgebung was bringen).
    Ich denke aber - einfacher und vielleicht auch besser wäre es, die Dioden in Reihe geschaltet zu lassen und nur den Widerstand nach + VCC (je nach Batteriezustand 5V-6V) so zu dimensionieren, dass ein höherer Strom fliesst ( bei mir z.Z. ca 2 x 12 mA : (5V - 2*1,1V) = 3,8V.
    Ein Betrieb mit 20mA ist wohl sinnvoll (bei IRL80 max. 60mA möglich),
    dann würde ich die Dioden aber in Reihe geschaltet lassen mit einem 154 Ohm Widerstand, besser noch mit einer Fet-Konstantstromquelle (z.B. FET BF245 oder besser BBS129 (Depletion Mode-Mosfet)), die ich auf 20 mA einstelle.

    Mit diesen Hardwareänderungen und den neu ermittelten 8-Bit Parametern My_ODO... hab ich jetzt saubere Encoderwerte auch bei wechselnden Lichtverhältnissen (wenn gar nichts mehr geht, kann man auch die Encoder-Transistoren/Dioden gegen Fremdlicht kapseln oder gleich bessere Reflexlichtschranken (z.B. CNY70) einbauen).

    Vielleicht komm ich auch nochmal dazu, das Programm von hai1991 zu testen/ändern, aber zumindest gehen bei mir jetzt die Go/Turn Funktionen.

    Gruss mausi_mick
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken cimg0922-1.jpg  

  5. #25
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo Mausi_mick,

    willkommen im Club der Odo-Geschädigten.
    Ich gehöre da mehr oder weniger seit meinem ersten Kontakt mit dem Asuro dazu. Begonnen hatte es bei dem Thread von stochri Asuro ... ein kleiner Wettbewerb, den er schon im Juni 2005 eingetragen hatte. Meine Antwort auf die Odometrieprobleme konnte ich dann immerhin schon 9 Monate später hinzufügen . (Ist schon/erst auf Seite 3 vom Thread zu finden.)

    Du solltest mal die Rechschreibüberprüfung einschalten bevor du auf absenden drückst:
    Zitat Zitat von mausi_mick
    ... mein
    Sauroboter Robertina ...
    Hier kann es sich doch bestimmt nur um einen Saug-Roboter handeln. Ich würde den eher im Quadrat, als in Spiralen saugen oder springen lassen. Ansonsten bring die Sau zum Metzger und schmeiß den Grill an.

    Ja, ja, die 8- und 10-Bit-Ergebnisse in den einzelnen ADC-Messungen. Ist immer wieder ein irreführendes Thema.

    Windoof-Installation auf E: ist ja seeeehhhhr ungewöhnlich.
    Falls du Zeit, und noch Interesse an meinem Programm hast, gebe ich dir mal alle Teile aus dem Installer hier zum download an:
    - cmctlde.dll 112 kByte
    - comctl32.ocx 608 kByte
    - dbgrdde.dll 35 kByte
    - dbgrid32.ocx 519 kByte
    - mscomde.dll 13 kByte
    - mscom32.ocx 97 kByte
    - MSVBVM50.dll 1355 kByte
    - VB5StKit.dll 29 kByte
    - VB5DE.dll 100 kByte
    - StdOle2.tlb 18 kByte
    - OleAut32.dll 553 kByte
    - OlePro32.dll 83 kByte
    - AsycFilt.dll 65 kByte
    - Ctl3d32.dll 27 kByte
    - ComCat.dll 3 kByte
    - Sensoren.exe 100 kByte

    Alles bis auf Sensoren.exe liegen bei mir unter C:\WINDOWS\SYSTEM32.
    Ob das alles tatsächlich benötigt wird kann ich leider nicht sagen.
    Falls du dir die Dateien holst, solltest du neuere Dateien auf deiner E:-Platte NICHT überschreiben. Sicher deine Original-Dateien auf alle Fälle bevor du dir dein System plättest. Wäre aber eine schöne Gelegenheit noch mal zu üben ein Windoof zu installieren .
    Sensoren.exe in ein beliebiges Verzeichnis und einfach starten. Daumen drück.


    Deinen Umbau an der Odo-Beleuchtung habe ich mal im Schaltplan nachvollzogen. Die Idee ist nicht schlecht.
    Deine Änderung ermöglicht ja nun tatsächlich die Benutzung beider Hardware-Teile (Brems-LED und Odo-Sensoren).
    Natürlich habe ich da sofort etwas dran auszusetzen. (Ist bei mir so üblich, da ich das in der Firma unter anderem als Aufgabe habe. Also bitte keinesfalls übel nehmen. Meine Frau hat sich da auch nach vielen Jahren noch nicht so richtig dran gewöhnt )
    - Durch Software kann man Beides ohne Umbau erreichen. Allerdings leuchten die Brems-LEDs dann aber nie zu 100%.
    - Du hast nun keine Möglichkeit mehr, auch an den ODO-Scheiben eine Messung ohne Beleuchtung zu machen und somit eine Differenzmessung zu erhalten (Beleuchtet - Unbeleuchtet). Ja, auch wenn es eigentlich unmöglich scheint, geht es doch auch ohne Umbau.
    - Du bist ein Energieverschwender. Bau bitte zum Ausgleich sofort eine Solarzelle auf den Asuro. Und natürlich: Gehe nicht über Los und ziehe nicht 4000 Mark ein.

    Ansonsten halte ich vor allem aber deine Idee eine Konstantstromquelle einzubauen für sehr erfolgversprechend. Genau hier vermute ich auch eine gute Möglichkeit das Umgebungslicht eventuell doch auszutricksen. Obwohl ich mir da nicht so sicher bin ob es funktionieren könnte. Je heller es wird, um so schlechter werden die Differenzen zwischen schwarzer und weißer Odofläche. Und wenn nun auch eine gute, konstante LED-Beleuchtung vorhanden ist, so scheint die Sonne immer noch dazu. Eine Abdeckung halte ich hier für sehr sinnvoll. (Ist bei mir 'natürlich' auch schon vorhanden. Pappe)

    So, genug zum Umbau und zu Windoofprogrammen.

    @hai1991
    Kannst du dein jetziges Programm mal posten. Mal sehen, ob ich dann meine Trägheit überwinden kann und es auf meinem Asuro laufen lasse.

    Eine schöne, fleißige Woche wünsche ich euch.
    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    hallo hai1991,
    hallo Sternthaler,

    1. Win-Programm von Sternthaler für My_asuro.h

    - Ich hab zwar die Oberfläche des Programm's mit den DLL's zum Laufen ?
    gebracht, zumindest kann ich die schöne Oberfläche bewundern, aber auf die Tasten reagiert es nicht. Ist vielleicht doch ein Problem mit der Installation auf E:

    2. Kurvenprogramm von hai1991

    - das modifiz. Programm Kurven-Programm läuft bei mir jetzt stabil und relativ genau, man sollte aber mit der speed möglichst oberhalb von 170 bleiben, da sonnst das innere Rad zu langsam wird und das eher ein Rucken auf der Stelle wird.

    Den (Winkel == 0) hab ich noch nicht realisiert (für geradeaus) ebenso fehlt noch der Teil mit (speed < 0).

    Es verträgt jetzt auch recht hohe Winkel ( durch (int) begrenzt: 32... < w < 32... ) , ich habe bei mir encoder [] als unsigned long definiert, wobei das unsigned vielleicht doch etwas überflüssig ist, sodass man dortso leicht keinen Überlauf bekommt.

    als Anhang noch mein Programmbeispiel (weder optimiert noch Schnittstelle an andere ASURO-Programme (Turn/Go/GoTurn...) angepasst)

    Gruss
    mausi_mick
    Angehängte Dateien Angehängte Dateien

  7. #27
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    Hallo Sternthaler,

    hab jetzt mal die Kurvenfunktion (links,rechts,vorwärts,rückwärts)
    realisiert und den Aufruf in der Form
    char GoTurnArc(int distance,int radius, int degree, int speed)
    gebracht. Scheint zu funzen. (Bisher nur mit distance 0)

    Hardwaremässig hab ich die beiden Encoder gegen Fremdlicht (von hinten und oben ) mit einem Plastikgehäuse ( PVC-Rechteckkrohr für Aufputz Kabelmontage) gekapselt. Von vorne werde ich noch testen, ob die Schwarzfärbung der Encoderscheibe/rades (natürlich von der Rückseite)
    was bringt (werd sie wohl vorsichtshalber erstmal mit schwarzer Folie / Tesa bekleben).

    Im Anhang der Code des GoTurnArc-Programms.

    PS: Sorry betreff SauRoboter, er verhält sich aber zur Zeit so, hat auf den Encoderkurven jede Menge Peaks (von Motor/H-Brücke), die von 0 bis 255 gehen. Entstörung in Arbeit.
    Gruss

    mausi_mick
    Angehängte Dateien Angehängte Dateien

  8. #28
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Grüß dich mausi_mick,

    da warst du ja echt fleißig.
    Aufgefallen sind mir folgende Stellen:

    - Keine Prüfung, ob Parameter "radius" negativ ist. Soll das gehen?
    Zumindest wird ja nur mit "if (radius > 0)" wirklich weiter gemacht.

    - Dann hier:
    Code:
           while (weg_s < weg_as)              // Ist-Tiks < Soll-Tiks
          {
             zist = (int)(Gettime () - zista);
    
             //Msleep (5);                      // 2 ??? 4 und 6 Problem kleiner Durchmesser
             //Odometrie einlesen
             if (degree > 0)                  // Rechtskurve: im Uhzeigersinn
             {
                MotorSpeed (speed_ac, speed_ic); // links = aussen , rechts = innen
                count_an = encoder [0];       // links schneller als rechts
                count_in = encoder [1];
                count_ai = count_ai + count_an;
             }
             else
             {
                count_an = encoder [1];       // rechts schneller als links
                count_in = encoder [0];
                count_ai = count_ai + count_an;
             }
    Hier müsste doch eigentlich auch ein MotorSpeed() in den else-Zweig, oder?

    - Was bedeutet der Kommentar hinter dem auskommentierten Msleep (5)?
    " //Msleep (5); // 2 ??? 4 und 6 Problem kleiner Durchmesser"

    - Merkwürdig: Wenn "60Tik/U" bedeutet, dass pro Radumdrehung 60 ODO-Tiks erzeugt werden (Ich bin sicher, dass es dies bedeutet). Bei meinem Asuro sind es 80 Tiks pro Radumdrehung.

    - Last and least
    Warum unterscheidest du beim Sammeln der Daten in Variable dax[][] über "if (degree > 0)" in Rechts- bzw. Linkskurve?


    Ansonsten macht mir das Ganze einen soliden Eindruck.
    Die von mir aufgeführten Punkte sind ja ohne Auswirkung zum gewünschten Programmablauf.
    Dass es aktuell 'etwas' lang und mit sehr vielen float-Berechnungen versehen ist, stört im Moment nicht so dolle. Optimierungspotential habe ich jedenfalls an einigen Stellen entdeckt. Aber wer weiß schon, ob es danach noch gehen würde ?

    Auch hier wieder: Es war noch nicht in meinem Asuro. Ich schaue nähhhhmlich gerade auf die Uhr.

    Gruß Sternthaler
    P.S.: Die Parameter, so wie ich vorgeschlagen hatte sind jedenfalls gut geeignet, um die Lib-Macros Go und Turn weiterhin erhalten zu können. Klasse!
    Sauroboter haben immer die Angewohnheit zu quicken. Nicht peaken
    Wermutstropfen: Deine Formatierung ist echt grottig.
    Angehängte Dateien Angehängte Dateien
    Lieber Asuro programieren als arbeiten gehen.

  9. #29
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    Hi Sternthaler,

    Dank für Deine frühe Mühe,

    Mit dem Radius hab ich mir das so vorgestellt:
    - radius ==0 : erlaubt für Geradeausfahrt (noch nicht realisiert)
    sonst:
    - radius < halbe Spurweite: Abbruch mit Fehler 1 (err_fl).

    Mit der Motorspeed hast Du wohl recht, wobei ich denke, dass ich die Zeile oben deaktivieren werde, da ich am Ende der Schleife MotorSpeed für beide Winkel anpasse. Hab wohl anfangs die MotorSpeed am Anfang der while Schleife für +-Winkel anpassen wollen , hat aber irgendwie (ich weiss echt nicht warum) nicht geklappt und hab dann die Zeilen nach unten kopiert und wohl oben nur eine gelöscht. Muss das aber testen, ob's dann auch noch funktioniert.
    Mit den auskommentierten Msleep - Werten : waren alles Tests ,
    fährt aber z.Z. ohne Msleep.
    Auch noch unsauber ist die Abbruchbedingung, da die letzten counts wohl noch gemacht werden, auch wenn die Ist-Wegstrecke über der Sollstrecke ist. (Fährt dann immer etwas zu weit.)
    Mit den 60 Tiks : Ich hab eine Encoderscheibe mit 6 schwarzen und 6 weissen Segmenten, also 12 s-w-Wechseln , macht 12 Tiks pro Encoderrad. Die Über/Untersetzung zum Laufrad beträgt 5 . Ergibt 5* 12 = 60 Tiks pro Laufradumdrehung. Du hast vermutlich eine Encoderscheibe mit 2 * 8 Segmenten .
    Das Sammeln der DAX-Werte (hat vermutlich nicht direkt was mit dem Index zu tun) für links und rechts separat ist eigentlich nicht nötig, ich wollte nur in dax[0] die Daten des linken Motors und in [1] die des rechten.
    Der Code ist wohl echt etwas kotig, zuviele Casts und zum Teil zu genau (float/double), auch wenig ++. Da sollte man (nicht umbedingt ich ) was tun, wenn die Sache sauber läuft.

    Muss mir mal gleich Deine Formatierung ansehen.

    Ok, hab mal Deine anders formatierte Version genommen und obige MotorSpeed-Zeile entfernt und die DAX-Tab-Füllung etwas modifiziert.

    Erste Tests ok, meist fährt ASURO etwas zu weit / lang,
    auch Probleme mit kleiner Speed (z.B. 170) und engen Kurven, da dann das Innenrad je nach Schmierung etc. eventuell steht.

    Im Anhang noch der neuste Code

    Gruß

    mausi_mick
    Angehängte Dateien Angehängte Dateien

  10. #30
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    Hi Sternthaler,

    hab nochmal ein paar Sachen geändert und auch für Geradeausfahrt
    (distance > 0, radius =0) getestet, wobei mein Asuro vorwärts recht gut die Richtung hält, rückwärts zieht er nach rechts (ein Kreis mit ca 2 m Durchmesser).

    Gruss
    mausi_mick
    Angehängte Dateien Angehängte Dateien

Seite 3 von 9 ErsteErste 12345 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen