- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 23

Thema: RP6 - Schulprojekt: Ultraschall und Labyrinth

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2012
    Beiträge
    7
    Also, wenn ich den beschriebenen Algorithmus nutze, dann sollte das ja eigentlich wirklich nicht besonders schwer sein.

    Die andere Sache mit dem Summer.

    Ich habe hier einen Summer, wenn man den an 'ne Stromquelle hält, dann macht der "Mööp". Hat 2 Drähte und ist rund
    Das Ding soll jetzt ohne höheren Aufwand und für Laien verständlich auf meinen RP6 gefriemelt werden.


    Wenn ich das Labyrinth aber wirklich mit dem beschriebenen Algorithmus lösen lasse, dann brauche ich ja an und für sich keine Ultraschallsensoren sondern einfach 2 Seitenbumper, die nunmal auf "false" springen, sobald links oder rechts eine Öffnung ist. Obwohl es dann schwierig wäre, den RP6 dann zu drehen, es sei denn, er würde durch die Bumper praktisch kreisförmig gemacht, wenn ihr versteht, was ich meine...

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Jap. So einen Summer meine ich!
    Die beiden Kabel, das sind + und -.
    + Schließt du an deine VCC, das ist die 5V-Betriebsspannung des RP6 (vielleicht vorher noch rausfinden, ob der Summer 5V verträgt, oder weniger, oder ob er mehr braucht. Aber 5V sind denke ich gut).
    - schließt du über einen Transistor (bc547 zum Beispiel) an GND und an den I/O, den du verwenden möchtest. Bei der Base kann man z.B. wunderschön die I/Os 2 und 5 verwenden, das sind die mittleren LEDs in den 3er-Reihen (SL2 und SL5). Die werden nirgends gebraucht. Wenn du da Hilfe brauchst, sag bescheid.
    Deine zusätzlichen Bumper kann man an die LEDs SL1 und SL4 anschließen, an SL3 und SL6 sitzen schon die Standard-Bumper.
    SL4 ist glaube ich auch noch frei, SL1 ist die Blinke-LED, ist aber an sonsten auch verfügbar.

    Grüße

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    74
    Beiträge
    11.077
    @ Tim Hansen

    Wenn dein Summer nur ein paar mA (Strom) braucht, kannst du ihn direkt anschliessen (ohne Transistor, wie LED, aber ohne Vorwiderstand).
    Geändert von PICture (25.01.2012 um 17:25 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von masasibe
    Registriert seit
    21.01.2011
    Beiträge
    181
    Mit Bumper ist das sicher einfacher und billiger zu lösen als mit Ultraschall, aber eleganter sieht es natürlich mit Ultraschall aus, weil der Roboter dann nicht gegen eine Wand fährt wenn er in eine Sackgasse fährt.
    Aber man kann es ja zuerst mit Bumper und später als Erweiterung vielleicht mit Ultraschall realisieren.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2012
    Beiträge
    7
    Also, meine Überlegung ist jetzt momentan, ihn das ganze mit dem ACS machen zu lassen. Er soll sich auf jedem Feldchen einmal nach links umschauen und bei Möglichkeit abbiegen. Wenn vorne, links und rechts blockiert ist, soll er umdrehen.

    Jetzt habe ich aber ein Problem mit meinem Code.

    Wieso wird immer das aus "ELSE {}" gemacht?

    Code:
    // Includes:
    
    #include "RP6RobotBaseLib.h" 	
    
    uint8_t acs_bool = 0;
    
    // Main:
    
    void acsStateChanged(void)
    {
      //Nix.
    }
    
    int main(void)
    {
    	initRobotBase(); 
    	setLEDs(0b111111);
    	mSleep(2500);
    	
    	powerON(); // Strom für alle Systeme wie ACS, Bumper und die LEDs
    
    	ACS_setStateChangedHandler(acsStateChanged);
    	
    	// Main loop
    	while(true) 
    	{		
    		setLEDs(0b100100); 
    		
    		//LEDs setzen
    		setLEDs(0b111001);
    		updateStatusLEDs();
    		
    		// Prüfe, ob links eine Öffnung ist
    		if (obstacle_left && obstacle_right)
    		{
    			// LEDs setzen
    			setLEDs(0b001111);
    			updateStatusLEDs();
    			
    			// Rotiere wieder zurück in gerade Position
    			rotate(40, RIGHT, 90, BLOCKING);
    			
    			//LEDs setzen
    			setLEDs(0b001001);
    			updateStatusLEDs();
    				
    			// Prüfe, ob vorne ein Hindernis ist
    			if (obstacle_left && obstacle_right)
    			{
    				// LEDs setzen
    				setLEDs(0b001111);
    				updateStatusLEDs();
    				
    				// Rotiere rechts
    				rotate(40, RIGHT, 90, BLOCKING);
    				
    				//LEDs setzen
    				setLEDs(0b111001);
    				updateStatusLEDs();
    				
    				// Prüfe, ob rechts ein Hindernis ist
    				if (obstacle_left && obstacle_right)
    				{
    					// LEDs setzen
    					setLEDs(0b001111);
    					updateStatusLEDs();
    					
    					// Rotiere rechts
    					rotate(40, RIGHT, 90, BLOCKING);
    					
    					//LEDs setzen
    					setLEDs(0b111001);
    					updateStatusLEDs();
    				} else { move(50, FWD, DIST_MM(250), BLOCKING);}
    			} else { move(50, FWD, DIST_MM(250), BLOCKING);}
    		} else { move(50, FWD, DIST_MM(250), BLOCKING);}
    		
    		
    
    	}
    	return 0;
    }
    Das verstehe ich nicht :O

    Danke schonmal!
    Geändert von radbruch (26.01.2012 um 16:32 Uhr)

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von masasibe
    Registriert seit
    21.01.2011
    Beiträge
    181
    Wieso wird immer das aus "ELSE {}" gemacht?
    Was genau meinst du? Was soll aus dem else gemacht werden?
    Das else sieht doch ganz normal aus.
    Edit: Ah jetzt verstehe ich, du hast gemeint, dass immer der else-Block ausgeführt wird.
    Sorry war ein missverständnis
    Geändert von masasibe (26.01.2012 um 16:45 Uhr)

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    25.01.2012
    Beiträge
    7
    Die IF Abfrage scheint immer "false" zu sein, da immer das ELSE durchgeführt wird. Ich hab da meine Hand, 'ne Zeitung, etc. vorgehalten, aber der Roboter fährt ungeniert weiter. Der erkennt offensichtlich das Hindernis nicht.

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Es wird immer der else-Zweig ausgeführt, weil obstacle_left und obstacle_right vom Tasksystem gesetzt werden, wenn etwas im Blickfeld erscheint:

    Code:
    		// Prüfe, ob xxxx eine Öffnung ist
    		task_ACS();		
    		if (obstacle_left && obstacle_right)
    (ungetestet)

    Tasksystem direkt vor der Abfrage der Variablen könnte funktionieren. Das ACS muss man auch noch initialisieren:

    Code:
    enableACS();
    //setACSPwrLow();
    setACSPwrMed();
    //setACSPwrHigh();
    Das sollte noch irgendwo vor der While()-Schleife erledigt werden.

    Gruß

    mic

    [Edit]
    Das wird so auch nicht funktionieren, weil der ACS-Task mehrere Aufrufe benötigt. Der Task funktioniert wie eine Schrittkette:

    #define ACS_STATE_IDLE 0
    #define ACS_STATE_IRCOMM_DELAY 1
    #define ACS_STATE_SEND_LEFT 2
    #define ACS_STATE_WAIT_LEFT 3
    #define ACS_STATE_SEND_RIGHT 5
    #define ACS_STATE_WAIT_RIGHT 6

    Vermutlich mußt du auf das Blocking verzichten und die Bewegungen mit dem Tasksystem ausführen:
    https://www.roboternetz.de/community...eAtSpee-Befehl
    Geändert von radbruch (26.01.2012 um 17:01 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. Labyrinth
    Von asuro11 im Forum Sensoren / Sensorik
    Antworten: 14
    Letzter Beitrag: 10.05.2009, 12:02
  2. Beispielprogramm Labyrinth
    Von Joee im Forum Asuro
    Antworten: 10
    Letzter Beitrag: 07.07.2007, 16:45
  3. Hilfe für Labyrinth-Roboter?
    Von Scott im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 21
    Letzter Beitrag: 23.05.2005, 17:19
  4. [ERLEDIGT] Kugel Labyrinth
    Von sinclair im Forum Mechanik
    Antworten: 11
    Letzter Beitrag: 03.12.2004, 12:55
  5. Robby durch ein Labyrinth
    Von Maro im Forum Robby CCRP5
    Antworten: 1
    Letzter Beitrag: 13.08.2004, 19:29

Berechtigungen

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

Labornetzteil AliExpress