- LiTime Speicher und Akkus         
Seite 33 von 35 ErsteErste ... 233132333435 LetzteLetzte
Ergebnis 321 bis 330 von 343

Thema: .: Vinculum :. - Hexabot

  1. #321
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Anzeige

    Powerstation Test
    Hallo Hanno!

    Ich mach sowas auf die schnelle Tour in MATLAB meistens folgendermaßen:

    Code:
    function irgendeinName
        ser = serial('COM14', 'BaudRate', 9600, 'DataBits', 8, 'Parity', 'none', 'StopBits', 1, ...
        'ReadAsyncMode', 'continuous', 'InputBufferSize', 64, 'OutputBufferSize', 64, ...
        'Terminator' , 'CR/LF', 'BytesAvailableFcnMode', 'Terminator', 'BytesAvailableFcn', @bav);
    
        vals = zeros(500, 1);
        h1 = plot(vals);
        set(h1, 'YDataSource', 'vals')
        
        fopen(ser); 
        
        function bav(obj, ~)
            dat = str2num(fgetl(obj));       
            vals(2:500) = vals(1:499);
            vals(1) = dat;
            refreshdata(h1, 'caller')
        end
        
    end
    Vielleicht "inspiriert" es dich etwas ...

    Gruß
    Malte

  2. #322
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    41
    Beiträge
    4.534
    Blog-Einträge
    1
    Inspirierend schon, aber ich muss gestehen ich versteh es nicht was du machst.

  3. #323
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Moin!

    Wo genau klemmt's denn? Also das Grundprinzip ist folgendes: Mit
    Code:
     ser = serial('COM14', 'BaudRate', 9600, 'DataBits', 8, 'Parity', 'none', 'StopBits', 1, ...
        'ReadAsyncMode', 'continuous', 'InputBufferSize', 64, 'OutputBufferSize', 64, ...
        'Terminator' , 'CR/LF', 'BytesAvailableFcnMode', 'Terminator', 'BytesAvailableFcn', @bav);
    wird ein serial-Objekt erzeugt, also eine Möglichkeit zum Senden oder Empfangen über die serielle Schnittstelle geschaffen. Im Beispiel ist es eben die COM14, die verwendet wird. Wenn du konkret eine andere "Datenquelle" hast - vermutlich nichtmal einen COM Port - musst du das natürlich entsprechend anpassen/ändern. So wie das Objekt erzeugt wird, triggert es einen sogenannten Callback, wenn immer im Datenstrom ein 'CR/LF' auftaucht. Der Callback heißt in diesem Falle bav (bytes available), ich übergebe dem serial-Objekt das Funktionshandle @bav der Funktion bav. Klingt vielleicht erstmal kompliziert, ist es überhaupt nicht. Was passiert ist einfach, dass die folgende Funktion bav immer aufgerufen wird, sobald Daten seriell angekommen sind (terminiert durch 'CR/LF')

    Code:
        function bav(obj, ~)
            dat = str2num(fgetl(obj));       
            vals(2:500) = vals(1:499);
            vals(1) = dat;
            refreshdata(h1, 'caller')
        end
    die Zeile "dat = str2num(fgetl(obj));" holt nun die ASCII Daten und wandelt sie in einen numerischen Typ um (double), die Daten stehen dann in dat. Die von dir angefragte Animation ist jetzt ganz simpel gemacht. 500 Datenpunkte stehen im Vektor "vals" (der Vektor wird mit 500 Nullen initialisiert), die ersten 499 Werte werden im Vektor um eine Stelle nach hinten geschoben "vals(2:500) = vals(1:499);" und an die erste Stelle der neue Wert geschrieben "vals(1) = dat;". Der Clou beim Plotten ist jetzt, dass für den Plot "h1 = plot(vals);" mittels "set(h1, 'YDataSource', 'vals')" als Datenquelle für die y-Werte der Vektor "vals" angegeben wurde. Das hat zur Folge, dass wann immer "refreshdata(h1, 'caller')" anufgerufen wird, die Daten im Diagramm upgedatet werden. Das hat den Effekt, dass mit jedem Eintreffen eines neuen Datums über die Schnittstelle der Graph um eine Stelle verschoben wird. Bei einem kontinuierlichen Datenstrom führt das natürlich dazu, dass der Graph quasi durchs Diagramm scrollt, links immer der aktuellste Wert. Die Daten als ASCII zu empfangen ist natürlich nicht sehr elegant, bei niedrigen Datenraten funktioniert das aber eben sehr einfach. Vermutlich ist genau der Teil aber auch eh anders bei dir, ich wollte nur eine einfache Varinate zeigen, um das Scrollen zu bewerkstelligen.

    Gruß
    Malte

  4. #324
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    41
    Beiträge
    4.534
    Blog-Einträge
    1
    Im Prinzip habe ich die Funktion ja schon, das einzige was ich nicht schaffe ist in der UI die x Achse zu verlänger. Soll heißen im Moment wird 5; 5.5; 6; 6,5; 7 angezeigt. Da ich nur zu allen vollen Zahlen einen neuen Wert abspeichere wird nur das x bei 6 angezeigt, denn 5 liegt genau auf der Achse und 7 ist noch nicht gemessen

  5. #325
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Ich weiß nicht genau ob ich dich verstehe. Grundsätzlich ist es eine gute Lösung alle Datenpunkte die du darstellen willst in einen Vektor zu nehmen und den dann zu plotten - und wenn sich das Dargestellte änderen soll eben den Vektor als Datenquelle zu ändern und ihn dann nach jeder Änderung neu zu plotten. Für das "neu plotten" bietet Matlab mit "DataSource" eine ganz elegante Lösung, das ist die Idee bei meinem Beispiel oben.

    Du kannst auch mit "hold on" dafür sorgen, dass die Datenpunkte des vormaligen Plottens erhalten bleiben. Dann müsstest du aber mit plot(x,y) plotten und x jeweils inkrementieren. Dann wird deine x-Achse aber einfach immer länger und es scrollt nicht.

  6. #326
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    41
    Beiträge
    4.534
    Blog-Einträge
    1
    Auch wenn es nicht so scheint, es geht weiter. Gerade in der letzten Zeit habe ich sehr viele Stunden damit verbracht drei weitere Platinen zu Layouten. Die benötige ich für die Verbindung zwischen Körper, Deckplatte und Sensorkopf. Da die Deckplatte mit dem Sensorkopf leicht zu entfernen sein soll, braucht es eine Adapterplatine um alle Anschlüsse auf ein Flachbandkabel (40pins) zu legen. Später kann man einfach dieses Kabel ausstecken und den "Deckel" abnehmen. Von dort wird ein weiteres Kabel zum Sensorkopf hinauf geführt.

    Dieser hat eine Platine mit I²C - AD Wandler (4Stück für die 3 IR Sensoren), die Steuerplatine für den Polaroid Sensor und eine Verteiler-Leiste für die 3 SRF03 US-Sensoren. Nichts kompliziertes, sieht man davon ab, dass ich alle Platinen einseitig layouten wollte.

    Den Aufbau zeige ich dann noch in Bildern, wenn ich alle Teile bekommen habe.

  7. #327
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    41
    Beiträge
    4.534
    Blog-Einträge
    1
    So die Platinen sind gekommen und zum Teil auch schon gelötet (zumindest alle das SMD Zeugs). Leider muss ich bei Reichelt noch ein paar Stecker bestellen bevor ich auch den Rest zusammenlöten kann.

    Nächste große Aufgabe wird es sein das gute Stück sicher für den Transport zu verpacken, da ich mit alle meinen Roboter und Co ende Mai umziehen werde. Mal sehen wie viel ich bis dahin noch basteln kann.

  8. #328
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    41
    Beiträge
    4.534
    Blog-Einträge
    1
    Nach dem Umzug bin ich jetzt endlich wieder dazu gekommen mich mit meinen Robotern zu beschäftigen. Da ich kurz vorher noch einen Robonova erstanden habe, wächst die Zahl der offenen Projekte auf drei! Im Moment überlege ich noch, was man lustiges aus dem Robonova machen könnte, natürlich bietet es sich an mit den 18 Servos einen weiteren Hexa aufzubauen, aber das wäre dann Nr. 5 und mit Vinculum bin ich noch gut beschäftigt.

    Bei diesen habe ich nun endlich die Zeit gefunden die Inverse Kinematik zu überprüfen. Alle Werte einzeln durchgegangen und mit meinen Berechnungen verglichen. Bis auf ein kleines, mir unerklärliches Problem stimmen alle Werte.
    Gebe ich nur eine translatorische Bewegung vor, dann werden die Y-Werte nicht korrekt berechnet, hier schleicht sich eine Abweichung vom Sollwert ein, die ich mir nicht erklären kann. Je weiter die Schritte von der Mitte entfernt sind um so größer wird sie.
    Ich vermute es liegt an der Sinus-Berechnung. Das allein wäre noch nicht erwähnenswert, aber sobald sich rotatorische und translatorische Bewegung überlagern, werden alle Werte korrekt berechnet.

  9. #329
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    36
    Beiträge
    1.937
    Hört sich so an, als ob sich da noch ein Fehler herumschleicht. Hast du die Formeln für translatorische und kombinierte Bewegung mal verglichen?
    AI - Artificial Idiocy

  10. #330
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    41
    Beiträge
    4.534
    Blog-Einträge
    1
    Eigentlich sollte da kein Fehler sein, denn beide verwenden die selben Code-Zeilen, später wird nur translatorisch und rotatorisch aufsummiert. Die Summe stimmt dann wieder. Was irgendwie schon merkwürdig ist. Macht aber zum Glück nicht viel aus, so dass ich damit kaum ein Problem sehe und erst mal weiter machen kann. Die maximale Abweichung beträgt im Moment 24mm von Soll zu Ist Position und auch nur für die Extremstellungen, ganz außen bzw. ganz innen, also für sehr wenige Zustände.

Seite 33 von 35 ErsteErste ... 233132333435 LetzteLetzte

Ähnliche Themen

  1. CFK Hexabot
    Von MichaF im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 14
    Letzter Beitrag: 19.08.2010, 23:03
  2. atmega und Vinculum
    Von elcomportal im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 27.05.2008, 23:47
  3. hexabot
    Von patrickgera im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 11
    Letzter Beitrag: 29.04.2008, 23:09
  4. LVProg - Linux Vinculum (USB Hostcontroller) Programmer
    Von Surveyor im Forum Open Source Software Projekte
    Antworten: 0
    Letzter Beitrag: 01.11.2007, 04:08
  5. Hexabot
    Von Derboss im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 36
    Letzter Beitrag: 22.09.2007, 12:32

Berechtigungen

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

LiFePO4 Speicher Test