- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: odometrie

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43

    odometrie

    Anzeige

    Praxistest und DIY Projekte
    hab mal ne frage,
    kann man mit der odometrie die gezählten "farbwechsel" in einem array speichern um später nochmal zu verwenden?? oder kann man mit d er odometrie nur angeben das er solange fahren soll bis er 200 farbwechsel gezählt hat?!

    bzw kann mal wer so ne art beispiel zeigen wir das mit dem array geht?

    mfg Toschtosch

    ps: hab nix im forum via such funktion über odometrie gefunden

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    Hi Toschtosch
    willst du eigentlich die zeit zwischen den farbenwechseln speichern, oder nur deren anzahl.
    Für zweiteres bräuchte man nur einen integer.

    Mit der odometrie kann man allgemein die helligkeit der reflexion des lichts messen.
    => man kann messen ob eine schwarze oder weiße scheibe gerade davor ist
    => man kann die zeit ziwschen den farbwechseln berechnen
    => man kann die drehzahl des rads bestimmen
    => man kann die geschwindikeit von asuro berechnen (dazu gibts hier glaubich irgendwo einen thread)
    natürlich kann man mit der odometri noch viel mehr machen. der fantasie sind keine grenzen gesetzt.

    mfg EDH

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    Für den Fall das du die Zeit zwischen den frabwechseln speichern willst, habe ich hier schnell ein kleines programm geschrieben. (jaja, ich weiß das man da noch vieles verbessern kann und das programmm ziemlich umstaändlich ist, aber das grundsätzliche prinzip sollte damit eigentlich klar werden).

    Code:
    /***************************************************************************
     *                                                                         *
     *   This program is free software; you can redistribute it and/or modify  *
     *   it under the terms of the GNU General Public License as published by  *
     *   the Free Software Foundation; either version 2 of the License, or     *
     *   any later version.                                                    *
     ***************************************************************************/
    #include "asuro.h"
    //misst Zeit in Millisekunden
    int messe_zeit(int seite) { //0 = Links		1 = Rechts
    	int odo_data[2];
    	int zeit;
    	zeit = 0;
    	if (seite==0) {
    		//Messung fr Links
    		OdometrieData(odo_data);
    		//Zeit messen bis andere farbe
    		if (odo_data[0]>512) {
    			while(odo_data[0]>512) {
    				OdometrieData(odo_data);
    				Sleep(72);
    				zeit++;
    			}
    		}
    		else {
    			while(odo_data[0]<512) {
    				OdometrieData(odo_data);
    				Sleep(72);
    				zeit++;
    			}
    		} 
    	}
    	else {
    		//Messung fr Rechts
    		OdometrieData(odo_data);
    		//Zeit messen bis andere farbe
    		if (odo_data[0]>512) {
    			while(odo_data[0]>512) {
    				OdometrieData(odo_data);
    				Sleep(72);
    				zeit++;
    			}
    		}
    		else {
    			while(odo_data[0]<512) {
    				OdometrieData(odo_data);
    				Sleep(72);
    				zeit++;
    			}
    		}
    	}
    	return zeit;
    }
    int main(void)
    {
    	Init();
    	int data_left[101];
    	int data_right[101];
    	int i;
    	int element;
    	int zeit_links;
    	int zeit_rechts;
    	//Alle Elemente im Arrey auf 0 setzen
    	element = 1;
    	for(i=0;i<100;i++) {
    		data_left[element]=0;
    		data_right[element]=0;
    		element++;
    	}
    	MotorDir(FWD,FWD);
    	MotorSpeed(150,150);
    	//Messen und Werte schreiben
    	element = 1;
    	for(i=0;i<100;i++) {
    		zeit_links = messe_zeit(0);
    		zeit_rechts = messe_zeit(1);
    		data_left[element] = zeit_links;
    		data_right[element] = zeit_rechts;
    		element++;
    	}
    	MotorSpeed(0,0);
    	while(1);
    	return 0;
    }
    nochmal mfg EDH

    ach ja noch was...
    ich hab heut einbisschen an der ultraschall erweiterung rumgebastelt und seitdem ähhh... spinnt mein asuro ein bisschen. (Ich hoffe, es ist kein alzuschlimmer fehler)
    was ich damit sagen will:
    Ich hab das programmnoch nicht ind er Praxis getestet(mangels testgerät)

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    also ich wollte die farbenwechsel zählen und in nem array speichern z.b. damit ich das später noch verrechnen kann, denn ich will via radius einen kreis fahren und wenn ich die odometrie daten auslesen kann, kann ich das rechte rad ja über eine hergeleitete formel erhöhen, damit er auch nen kreis fährt
    mfg toschtosch

    ps: ich will den asuro erstmal eine kleine zeit fahren lassen, um erstmal eine zahl zu haben die ich dann verarbeiten kann

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    22.11.2005
    Ort
    Stralsund
    Beiträge
    93
    Du willst also aus empirischen Daten eine Formel gewinnen.
    Warum setzt Du Dich nicht gleich mit Stift, Papier und Mathematik hin?
    Bis Du Dein Programm zum Speichern fertig geschrieben hast, bist Du vielleicht schon auf die mathematische Lösung gekommen, mit der Du Dich ja ohnehin beschäftigen mußt.
    viele Grüße
    Gast1234

    fressen und gefressen werden

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    ich hab ja schon die lösung^^ ich muss nur noch irgendwie odometrie daten auslesen und da hakt es, weil ich nich weiß wie ich das angehen soll


    ps:

    so grob hingeschrieben:

    kreis nach links:
    linkes rad = odometrie auslese
    rechtes rad = odometrie auslese*(1+(11.5/radius)) // radius wird natürlich in der rechnung angegeben... 11.5 ist die spannweite von rad zu rad

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    22.11.2005
    Ort
    Stralsund
    Beiträge
    93
    Mach es doch einfach mit der Funktion
    void OdometrieData(unsigned int *data) aus der asuro.h
    bzw. wandele sie ab und passe sie Deinen Bedürfnissen an.

    Wie Du Daten in ein Array schreibst, siehst Du im Kapitel 9.7.1.
    viele Grüße
    Gast1234

    fressen und gefressen werden

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    oki doki

    mfg

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    ich habe mal eine frage, wie kann ich meinem asuro sagen, das er nur 2sekunden lang die odometrie daten ausmessen soll, sodass ich das dann auswerten kann?

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    die frage ist, würde es dir ausreichen, wenn er jede millisekunde den wert ausliest
    (für computer ist eine millisekunde ziemlich lang). Da kämen dann zweitausend werte zusammen.

    Code:
    /***************************************************************************************************/
    //ACHTUNG UNGETESTETE INSTABILE VERSION (ICH HOFFE DER CODE FUNKTIONIERT ÜBERHAUPT KEINE GARANTIE)//
    /**************************************************************************************************/
    
    
    
    #include "asuro.h"
    
    int main(void) {
    	int data_links[2000];
    	int data_rechts[2000];
    	int temp_data[2];
    	int element;
    	int i;
    	
    	element = 0;
    	//2 Sekunden lang messen und in arrey schreiben 
    	for(i=0;i<2000;i++) {
    		OdometrieData(temp_data);
    		data_links[element] = temp_data[0];
    		data_rechts[element] = temp_data[1];
    		element++;
                    Sleep(72);
    	}
    	return 0;
    }
    wie gesagt ich hoffe, das das hier funktioniert keine garantie

    mfg EDH

Berechtigungen

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

Labornetzteil AliExpress