-

+ Antworten
Seite 2 von 9 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 85

Thema: RP6Control M32: Library für 8 Servos

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    27
    Beiträge
    220
    also, das mit dem initSERVO() hatte ich schon mal im main teil. allerdings hatte ich da das problem, dass bei allen servos wo über das programm gerade keine servox_psition = ... zugewiesen wurde wegen dem initSERVO() auf den linken anschlag getaktet haben.

    manche servos in meinem arm habe ich aber leider so verbaut, dass sie in der grundposition im rechten anschlag sind, d.h. sich (unerwünscht) bewegt haben, sobald ich sie in der main mit initSERVO(...) initialisiert habe.

    darum wollte ich diesem problem aus dem weg gehen, in dem ich sie erst dann initialisiere, wenn sie auch gebraucht werden.

    bist du dir sicher, dass man die servoinitialisierung nicht auch so machen kann, wie bei mir?

    mfg

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.644
    ... bist du dir sicher, dass man die servoinitialisierung nicht auch so machen kann, wie bei mir?
    Ja, da bin ich 100% sicher.

    Wenn du einige Servos am Anfang schon an den rechten Anschlag bringen willst, kannst du ja in Main (vor der while(1)-Schleife) diese Servos mit servoX_position = RIGHT_TOUCH auf den rechten Anschlag stellen.
    Da bleiben sie dann, bis du einen anderen Wert einstellst.

    Gruß Dirk

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    27
    Beiträge
    220
    danke dirk, ja stimmt, das ist ne gute idee. warum bin ich da bisher noch nicht selber darauf gekommen... wenn mein arm komplett läuft stell ich ein video für dich online. bist ja dann daran nicht ganz unbeteiligt^^.

    danke nochmal

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2009
    Ort
    In der Knüste zwischen PS und KL
    Alter
    41
    Beiträge
    13
    Hallo Dirk,

    mein erster Post hier, daher erstmal Hallo und Danke ans Roboternetz
    viele Super Ideen und Tipps hier.

    Nun zu meinem Problem: Ich probiere gerade meinem brand neuen RP6 mit M32 Modul das bewegen eines Servos beizubringen.

    Der Servo (Conrad Modelcraft ES-05) ist wie im Quellcode der Lib vorgeschlagen am korrekten Port auf dem M32 board angeschlossen und hat ein eigenes Akku Pack für die 4,6V Versorgungs Spannung.

    Das Demo Programm von Dirk fährt den Servo aber leider nur zum Anschlag und "zuckt" dann da.
    Wenn ich den Servo vorher manuell zum anderen Anschlag drehe, dann seh ich den auch tatsächlich sauber rüber takten da bleibt er dann aber wieder zuckend stehen.

    Ich habe schon versucht die Timings für LEFT und RIGHT Touch zu modifizieren, leider erfolglos, als letztes habe ich noch eine ultra light Version der Demo erzeugt:
    Code:
    // Uncommented Version of RP6ControlServo.c
    // written by Dirk
    // ------------------------------------------------------------------------------------------
    
    #include "RP6ControlServoLib.h"
    
    int main(void)
    { 
       initRP6Control();
    
       setLEDs(0b111111);
       mSleep(500);
       setLEDs(0b000000);
       
       /* Servo1 in die Mittlere Stellung vordefiniert */
       servo1_position = RIGHT_TOUCH; 
       
       initSERVO(SERVO1);
     
       while(true) 
       {
         writeString("Servopos: MIDDLE \n");
    	  
    	  servo1_position = MIDDLE_POSITION;
    	  
          task_SERVO();
    	  
          mSleep(500);
    	  
    	  writeString("Servopos: LEFT \n");
    	  
    	  servo1_position = LEFT_TOUCH;
    	  
    	  task_SERVO();
    	  
    	  mSleep(500);
    	  
    	  writeString("Servopos: RIGHT \n");	  
    	  
    	  servo1_position = RIGHT_TOUCH;
    	  
    	  task_SERVO();
    	  
    	  mSleep(500);
       }
       return 0;
    }
    Aber bei der passiert leider genau das selbe. Ich hab schon die Forum Suche beschäftigt, aber leider keinen Ansatz gefunden, warum der Servo nur in eine Richtung dreht.
    Könnt Ihr mir eventuell sagen was ich da falsch mache?
    Danke schon mal für die Mühe!

    Uwe

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    27
    Beiträge
    220
    hallo Tzimovo,
    glückwunsch zum RP6 erst mal. ich habe mich mittlerweile schon öfter mit Dirks Servo Lib beschäftigt und mit hilfe ihr auch schon meinen Roboterarm angesteuert. darum hoffe ich dir helfen zu können.

    bei deinem programm fallen mir einige offensichtliche fehler ein (die bei einem anfänger auch recht normal sind):

    1. mSleep(500); in deiner while(true) schleife: mSleep ist eine voll blockierende zeitfunktion. d.h. dein roboter macht während der 500 ms von mSleep(500) nichts anderes mehr als zu warten. das ist besonders dann extrem nachteilig, wenn du zusätzlich zur servobewegung noch andere funktionen wie Z.b. fahren willst.
    darum immer eine der Stopwatches nehmen (siehe anleitung), diese sind nämlich nicht blockierende funktionen.

    2. das task_SERVO() reicht, wenn es nur einmal in der while- schleife aufgerufen wird.


    damit es für dich leichter wird hier ein kurzes beispielprogramm:



    Code:
    #include "RP6ControlServoLib.h"
    
    
    
     
    
    int main(void)
    {
       initRP6Control();
       
       
       
       /* Servo1 in die Mittlere Stellung vordefiniert */
       
       
       initSERVO(SERVO1);
     servo1_position = RIGHT_TOUCH;
    startStopwatch1();
    
       while(true)
       {
         
    	 
        if (getStopwatch1() >100 && getStopwatch1() <1000)
        {servo1_position = MIDDLE_POSITION;
         writeString("Servopos: MIDDLE \n");}
    
     if (getStopwatch1() > 1000 && getStopwatch1() <2000)
    	{servo1_position = LEFT_TOUCH;
    	writeString("Servopos: LEFT \n");}
    
    if (getStopwatch1() >2000 && getStopwatch1() <3000)
    	{servo1_position = RIGHT_TOUCH;
    	writeString("Servopos: RIGHT \n");
    	}
    
    if (getStopwatch1() > 3000)
    		{setStopwatch1(0);}
         
        task_SERVO();
         mSleep(3);
       }
       return 0;
    }
    hab das programm jetzt nicht getestet. aber so auf die art sollte es funktioneren.

    mfg andi

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2009
    Ort
    In der Knüste zwischen PS und KL
    Alter
    41
    Beiträge
    13
    Danke für den Versuch, leider passiert mit deinem Programm exact das gleiche.
    Servo zittert am Anschlag bzw. dreht vom anderen Anschlag da hin und zittert dann weiter, als ob er den Anschlag durchbrechen will. .
    Ich habs auch mit einem zweiten baugleichen Servo probiert, leider genauso erfolglos.
    Ein RS-2 Servo bewegt sich gar nicht, Ich vermute jedoch dass der mehr als die 4.8Volt des Akku Packs braucht.
    Cheers,

    Uwe

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.644
    Hallo Uwe,

    hast du auch GND (Minuspol) des Akkupacks mit GND des RP6 verbunden?

    Gruß Dirk

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2009
    Ort
    In der Knüste zwischen PS und KL
    Alter
    41
    Beiträge
    13
    Upps, das sollte ich nochmal ausprobieren.
    Da mein haupt Rechner momentan zicken macht, werde ich mir auf meinem Laptop erstmal die Programmier Umgebung installieren.
    Danke für den Hinweis!

    Edit: *haut sich selbst vor den Schädel!*
    Ticker ticker ticker Schnarr...
    es laufen jetzt alle 3 Servos... Notitz an sich selbst: ZUMINDEST MASSE mit dem Board verbinden.

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    26.02.2009
    Beiträge
    81
    Hallo Dirk,

    Hab jetzt dein Example versucht zu kompilieren bekomme aber diese Fehlermeldung:
    Code:
    RP6Control_ServoTest.c:1: error: stray '\377' in program
    RP6Control_ServoTest.c:1: error: stray '\376' in program
    RP6Control_ServoTest.c:1:3: warning: null character(s) ignored
    RP6Control_ServoTest.c:1: error: expected identifier or '(' before '/' token
    RP6Control_ServoTest.c:1:6: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:8: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:12: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:14: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:16: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:18: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:20: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:22: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:24: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:26: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:28: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:30: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:32: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:36: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:38: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:40: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:42: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:44: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:46: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:48: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:52: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:54: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:58: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:60: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:62: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:64: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:66: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:68: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:70: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:72: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:74: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:76: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:78: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:80: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:82: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:84: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:86: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:88: warning: null character(s) ignored
    RP6Control_ServoTest.c:1:90: warning: null character(s) ignored
    RP6Control_ServoTest.c:2:1: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:1: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:3: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:5: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:9: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:11: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:13: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:15: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:17: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:19: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:21: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:25: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:27: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:31: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:33: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:35: warning: null character(s) ignored
    RP6Control_ServoTest.c:3:37: warning: null character(s) ignored
    RP6Control_ServoTest.c:4:1: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:1: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:3: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:5: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:9: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:11: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:13: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:15: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:17: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:19: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:21: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:23: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:25: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:27: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:29: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:31: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:33: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:35: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:37: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:39: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:41: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:43: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:45: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:47: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:49: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:51: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:53: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:55: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:57: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:59: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:61: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:63: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:65: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:67: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:69: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:71: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:73: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:75: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:77: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:79: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:81: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:83: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:85: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:87: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:89: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:91: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:93: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:95: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:97: warning: null character(s) ignored
    RP6Control_ServoTest.c:5:99: warning: null character(s) ignored
    ... Geht dann so weiter und dann:
    RP6Control_ServoTest.c:103:3: warning: null character(s) ignored
    RP6Control_ServoTest.c:104:1: warning: null character(s) ignored
    RP6Control_ServoTest.c:105:1: warning: null character(s) ignored
    make: *** [RP6Control_ServoTest.o] Error 1
    Im Makefile ist alles eingetragen.
    Was mach ich falsch?

    vielen Dank schonmal,
    David

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    26.02.2009
    Beiträge
    81
    Keiner eine Idee was ich machen könnte?

+ Antworten
Seite 2 von 9 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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