- 12V Akku mit 280 Ah bauen         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 33

Thema: Der Robby und LabView

  1. #21
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2011
    Beiträge
    8
    Anzeige

    Powerstation Test
    Ja, bei dem Virtual Frontal Surrouding ändern sich Farbe und Positon. Im Anhang ist ein Bild. Das mittlere rote Objekt wird angezeigt, wenn beide ACS ein Hindernis erkennen und die linken und rechten roten Objekte werden je nachdem angezeigt, welche ACS-Seite ein Hindernis erkennt. Wobei die Entfernung und Position natürlich nur grob geschätzt sind Wenn das ACS kein Hindernis erkennt, wird das grüne Objekt "Freie Bahn" angezeigt.
    Das weiße Ding in der Mitte ist normalerweise das Bild von meiner Cam (aber das VI läuft ja gerade nich). Bisher ist es eine USB Cam, aber ab morgen dann hoffentlich eine Funk-Cam. Das ganze geht mit der Vision Acquisition Software (VAS) von LabView sehr einfach. Allerdings sollte man darauf achten, zwei parallele While-Schleifen (eine für Cam, eine für RP6 Control) zu haben, da es ansonsten zu heftigen Verzögerungen beim Senden/Empfangen von Daten gibt.

    Gruß
    Ari
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken RP6_control_ACS.jpg  

  2. #22
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Cool. Wie machst du das, dass sich der Schriftzug ändert?
    Ich schätze mal, der Hintergrund besteht aus "normalen" boolschen LEDs, oder?
    Und ich hoffe, du hast nicht auch die Funk-Cam vom Pollin geholt, ist ziemlicher Misst.
    Geht nicht mal auf 2 Meter halbwegs

  3. #23
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2011
    Beiträge
    8
    Alle 4 Objekte sind Boolesche LEDs. Mit Eigentschaftsknoten im Blockdiagramm und den Bool-Werten des ACS wird dann die Sichtbarkeit gesteuert.
    Ich habe mir eine Mini-Funk-Cam mit extra Empfänger geholt, deren Reichweite selbst mit Akku 16m sein soll. Der Empfänger ist ein richtige Empfänger für 2,4GHz Kameras und liefert ein Video-Out-Signal, welches dann über einen USB Video-Grabber an den PC geschickt wird. So zumindest in der Theorie. Ich hoffe, dass ich morgen das in der Realität testen kann. Der Video-Grabber wird auf jeden Fall schon mal erkannt in LabView...

  4. #24
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hmmm... und wie machst dus, dass die eine LED hinter der anderen LED verschwindet?
    Bin schon gespannt, ob das mit deiner Cam besser geht, als mit meiner.
    Wenn ja: Wo gibts die, was kostet die, was braucht die Strom???
    Grüße

  5. #25
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2011
    Beiträge
    8
    Das geht über den Eigentschaftsknoten, wie oben beschrieben. Dadurch sind die LEDs wirklich nur sichtbar, wenn ich es will.
    Kamera ist da und wird nun getestet...

    EDIT: So Kamera geht. Allerdings ist das eine 2.4GHz Kamera und man merkt deutlich die WLANs hier in der Umgebung Immerhin 3 Zimmer weiter war der Empfang noch da, aber mit etwas Rauschen. Dafür ist die Cam mit 2x2cm sehr schön klein (aber die Antenne leider auch). Getestet war das mit einer 9V Block Batterie. Mit Netzteil ist es evtl. besser.

    EDIT2: Kamera am RP6 angebracht, Joystick-Steuerung integriert...alles funzt
    Ist sehr lustig mit dem Joystick zu steuern (und dessen Schubregler), hab aber noch massig ungenutzte Joystick Tasten, dafür muss ich mir noch was überlegen. Der Coolie Hat soll später die Kamera drehen und schwenken.
    Jetzt fehlt nur noch das Bluetooth-Modul, das sollte eigentlich heute ankommen...

    PS: Die Justierung der Encoder am RP6 ist leider nicht so optimal. Meiner fährt immer leicht im Kreis, aber bekomme das irgendwie nicht besser eingestellt (bin froh wenn der überhaupt Drehungen misst).
    Geändert von Arigocan (14.12.2011 um 16:47 Uhr)

  6. #26
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Klingt toll
    Vielleicht gibts ja mal ein Video?
    Oder so was

    Grüße

  7. #27
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2011
    Beiträge
    8
    Jo, mal schauen. Morgen kommt wohl endlich mein Bluetooth-Modul und wenn das dann eingebaut ist, ist ja soweit erstmal alles fertig.

  8. #28
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    So, nach viel, viel Arbeit bin ich schon ganz gut vorangekommen mit dem Programm.
    Nun habe ich aber folgendes Problem: Ich sende einen Befehl an meine M128 "Setze ACS auf (aus, low, mid, high)", je nachdem.
    Der Befehl kommt bei der M128 an und wird verarbeitet.
    Jedoch nicht in der Base, und ich weiß nicht, woran das liegen kann. Hier mal ein Auszug aus dem Slave auf der Base, vielleicht könnt ihr mir helfen. Oder ihr sagt, dort muss alles in Ordnung sein, es muss vielleicht doch an der M128 liegen.
    Alle anderen Befehle werden jedoch immer auch ausgeführt, nur eben das ACS nicht.
    Danke euch!

    Code:
    /*****************************************************************************/
    // Command Registers - these can be written by the Master.
    // The other registers (read registers) can NOT be written to. The only way to
    // communicate with the Robot is via specific commands. 
    // Of course you can also add more registers if you like...
    
    // ----------------------
    
    #define I2C_REGW_CMD 0
    #define I2C_REGW_CMD_PARAM1 1
    #define I2C_REGW_CMD_PARAM2 2
    #define I2C_REGW_CMD_PARAM3 3
    #define I2C_REGW_CMD_PARAM4 4
    #define I2C_REGW_CMD_PARAM5 5
    #define I2C_REGW_CMD_PARAM6 6
    
    // ----------------------
    
    uint8_t cmd;
    uint8_t param1;
    uint8_t param2;
    uint8_t param3;
    uint8_t param4;
    uint8_t param5;
    uint8_t param6;
    
    /**
     * Checks if a new Command has been received and also reads all 
     * paramters associated with this command.
     * It returns true if a new command has been received.
     */
    uint8_t getI2CCommand(void)
    {
        if(I2CTWI_writeRegisters[I2C_REGW_CMD] && !I2CTWI_writeBusy) 
        {
            cmd = I2CTWI_writeRegisters[I2C_REGW_CMD]; // store command register
            I2CTWI_writeRegisters[I2C_REGW_CMD] = 0; // clear command register (!!!)
            param1 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM1]; // parameters 1-6...
            param2 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM2];
            param3 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM3];
            param4 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM4];
            param5 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM5];
            param6 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM6];
            return true;
        }
        return false;
    }
    
    /*****************************************************************************/
    // Command processor:
    
    
    uint8_t leds = 1;
    
    // Commands:
    #define CMD_POWER_OFF             0
    #define CMD_POWER_ON             1
    #define CMD_CONFIG                 2
    #define CMD_RP6_SETLEDS         3
    #define CMD_RP6_STOP               4
    #define CMD_MOVE_AT_SPEED       5
    #define CMD_CHANGE_DIR            6
    #define CMD_MOVE                 7
    #define CMD_ROTATE                 8
    #define CMD_RP6_SET_ACS_POWER    9 
    #define CMD_SEND_RC5            10 
    #define CMD_SET_WDT                11 
    #define CMD_SET_WDT_RQ            12
    
    
    
    /**
     * This function checks if commands have been received and processes them.
     */ 
    void task_commandProcessor(void)
    {
        if(getI2CCommand()) 
        {
            switch(cmd) 
            {
                case CMD_POWER_OFF:    powerOFF(); status.powerOn = false; break;
                case CMD_POWER_ON:  powerON(); status.powerOn = true; break;
                case CMD_CONFIG: break;
                case CMD_RP6_SETLEDS: setLEDs(param1); break;
                case CMD_RP6_STOP: stop(); break;
                case CMD_MOVE_AT_SPEED: moveAtSpeed(param1, param2); break;
                case CMD_CHANGE_DIR: changeDirection(param1); break;
                case CMD_MOVE: move(param1, param2, ((param3<<8)+param4), false); break;
                case CMD_ROTATE: rotate(param1, param2, ((param3<<8)+param4), false); break;
                case CMD_RP6_SET_ACS_POWER: 
                    switch(param1)
                    {
                        case ACS_POWER_OFF: 
                            disableACS(); setACSPwrOff(); status.ACSactive = false;
    setLEDs(0b000000);                                   //Die LEDS sollen nur anzeigen, ob der Befehl ausgeführt wurde
                        break;
                        case ACS_POWER_LOW: 
                            enableACS(); setACSPwrLow();  status.ACSactive = true;
    setLEDs(0b100100);                                   //Die LEDS sollen nur anzeigen, ob der Befehl ausgeführt wurde
                        break;
                        case ACS_POWER_MED: 
                            enableACS(); setACSPwrMed();  status.ACSactive = true;
    setLEDs(0b010010);                                   //Die LEDS sollen nur anzeigen, ob der Befehl ausgeführt wurde
                        break;
                        case ACS_POWER_HIGH: 
                            enableACS(); setACSPwrHigh(); status.ACSactive = true;
    setLEDs(0b111111);                                   //Die LEDS sollen nur anzeigen, ob der Befehl ausgeführt wurde
                        break;
                    }
                break;
                case CMD_SEND_RC5: IRCOMM_sendRC5(param1, param2); break;
                case CMD_SET_WDT: status.watchDogTimer = param1 ? true : false; break;
                case CMD_SET_WDT_RQ: status.wdtRequestEnable = param1 ? true : false; break;
            }
        }
    }
    ____________
    EDIT: Hat sich erledigt, ich hab zweimal denselben Funktionsnamen verwendet.
    So gehts:
    Code:
    case CMD_SET_NEW_ACS_POWER:
                RP6_writeCMD_1param(RP6_BASE_ADR, CMD_SET_ACS_POWER, params[1]);
    und oben eben noch das "#define CMD_SET_ACS_POWER..." in "#define CMD_SET_NEW_ACS_POWER..." ändern.


    EDIT2:
    Wenn ich fertig bin mit dem Programm, kann ich gern mal ein paar Bilder/Videos zeigen.
    Der RP6 kann bisher ferngesteuert werden, alle ADCs, LEDs, Bumper und Taster-Werte werden dargestellt. LEDs sind allesamt schaltbar, an einigen Hängen auch andere Verbraucher dran: Kamera, Snakevision, 2x ACS hinten, 2x Bumper hinten, Scheinwerfer. Außerdem wurde eine Funkkamera eingebunden, die momentan immerhin 2-Euro-Münzen erkennen und anzeigen kann. Und man kann den RP6 entweder mit der Tastatur fernsteuern, oder mit einer TV-Remote. Oder er kann eine Lichtquelle suchen oder aber eine Wärmequelle (Mit SnakeVision). Auch das herumfahren und auf Gegenstände achten geht.

    Danke an euch alle, habt mir schon viel geholfen. Vor allem FabianE. mit seinen Programmen für die drei Plattformen! Danke euch!!!

    Grüße!!!
    Geändert von fabqu (16.01.2012 um 16:07 Uhr)

  9. #29
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2012
    Beiträge
    5
    hallo zusammen, bin heute per Zufall über den RP6 gestolpert und war total begeistert. Obwohl ich mich gerne mit der C-Programmiersprache auseinandersetzen würde arbeite ich zurzeit mit LabVIEW.
    Nun hätte ich aber noch 2 oder 3 Fragen welche ich hoffe dass ihr sie mir beantworten könnt. Steuert ihr den RP6 ausschliesslich über Bluetooth wen ihr das labview benutzt, oder gibt es eine Möglichkeit das Programm auf den RP6 zu laden. Ist der RP6 schon standartmässig mit Bluetooth ausgestattet? Habe leider in der Auflistung keine Angabe darüber gefunden.
    Vielen Dank für eure Hilfe

  10. #30
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.065
    Der RP5 bzw der Nachfolger RP6 kann kein Labview Programm ausführen. Dafür sind diese zu schwach. Du kannst nur ein Programm (in C, Bascom, teilweise Java o.Ä.) auf den Robby laden der die Daten vom Labview auswertet. Du kannst in beide Richtungen übertragen. Als Beispiel kannst du vom PC (Labview) das Kommando "Fahre geradeaus" an den Robby senden. Du kannst aber auch Daten vom Robby zum PC senden wie z.B. den Akkustand.

    Das Programm musst du, soweit ich weiß, mit einem eigenem Programmer übertragen. Es gibt auch eigene Programme dafür (nicht Labview).

    Standartmäßig ist der RP5 bzw RP6 nicht mit Bluetooth ausgestattet.

    Hier die Seite des Herstellers http://www.arexx.com/rp6/html/de/docs.htm

    MfG Hannes

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. Labview mit Datenbankanbindung
    Von seppo1903 im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 02.01.2008, 11:32
  2. Labview und K8061
    Von JollyJumper im Forum Software, Algorithmen und KI
    Antworten: 1
    Letzter Beitrag: 09.11.2007, 11:34
  3. Microcontroller mit LabView???
    Von Mc_Loyd im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 1
    Letzter Beitrag: 15.08.2006, 14:43
  4. SRF08 und Labview
    Von Seber im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 15.07.2006, 12:05
  5. 3D Grafik im Labview
    Von doolitle15 im Forum Software, Algorithmen und KI
    Antworten: 0
    Letzter Beitrag: 26.05.2006, 16:59

Berechtigungen

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

12V Akku bauen