|
|
Suche drigend Hilfe für ein Sortieralgorithmus |
|
cerarslan |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 13.12.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.12.2017, 12:21
Titel: Suche drigend Hilfe für ein Sortieralgorithmus
|
|
|
|
|
Hey,
ich habe ein Problem, was ich momentan nicht lösen kann. Und ich suche jemanden, der mir eventuell mir dabei helfen könnte. Ich bzw. meine Gruppe hatten bislang nie mit Matlab Simulink etwas gemacht.
Vorweg: Ein Roboter soll ein Tischtennisball jonglieren.
Der Ball wird aus einer gegebenen Höhe fallen gelassen und soll nachdem Aufprall mit der Platte auf eine gewollte Höhe fliegen.
Die Berechnungen wurden schon mit Simulink getätigt.
In der Realität gibt es eine Kamera die alle ??? Sekunden ein Bild aufnehmen kann.
Wir bekommen z-Werte (Höhe) und die dazugehörigen Zeiten.
Anschließend wurden die vielen z-werte diskretisiert mit einem zusätzlichen Block clock, um halt alle ?? Sekunden das Signal abzugreifen.
Anschließend wurden unit delays (1/z) Blöcke verwendet und zum Schieberegister verbunden. Von dort aus geht es in die Matlab FCN. Dort werden alle komplexen Nullstellen und Werte die kleiner 0 sind rausgenommen.
Das Problem ist jetzt, dass man einen "Vektor" mit vielen Werten in einer Spalte bekommt. Jedoch ist nicht jeder Wert zu gebrauchen.
Zahlen erfolgen zum Beispiel wie folgt:
1.7494
0.9484
0.1443
0.4933
0.322 <----- der wäre jetzt zu entnehmen
0.4343.
0.4234
0.5434
0.9488 <----- dann der
...
...
Wir können auch die Werte nicht einzeln ansprechen. Ich bzw. meine Gruppe kommen dabei echt nicht weiter.
Würde mich echt auf Hilfe freuen. Gerne kann ich per Email bei wirklichem Interesse zu helfen Bilder oder Sonstiges senden.
mfg
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.12.2017, 19:22
Titel:
|
|
Hallo,
nach welchen Kriterien entscheidet ihr, welche Werte zu gebrauchen oder nicht zu gebrauchen sind?
Grüße,
Harald
|
|
|
cerarslan |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 13.12.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.12.2017, 20:20
Titel:
|
|
|
|
|
Hey,
ich hab mich wohl heute morgen etwas verdaddelt beim Schreiben und Ausdrücken meines Problems. War wohl etwas müde.
Diese Werte die ich dort genannt habe sind geschätzte Aufprallzeiten.
Ich schreibe es nochmal um;
Bis zum ersen Aufprall sollen 3 z-Werte genommen werden und aus den z-Werten soll ein Aufprallzeitpuntk geschätzt werden. Zu beachten ist, dass die z-werte nicht zu spät zu der Steuerung geliefert werden, da sie Zeit benötigt um es zu regeln. Damit meine ich, dass z-Werte die kurz oberhalb des Aufpralls nicht relevant sind, also unbrauchbar sind.
Nachdem Aufprall hat der Ball eine zu hohe Geschwindigkeit, sodass die Kamera diese Punkte nicht richtig aufnehmen kann. Somit werden ab einer bestimmten Zeit die z-Werte wieder erfasst - insgesamt sollen es dann 5 z-werte sein. Danach soll wieder ein Aufprallzeitpunkt geschätzt werden etc. Die z-werte wurden in ein Vektor überführt.
Der erste Aufprallzeitpunkt müsste nach Rechnungen bei 0.32 liegen. Und wir wollen immer einen Abstand von 0.6s zum nächsten Aufprallzeitpunkt.
Ich hoffe ich habe mich besser ausgedrückt - bin nicht der beste Erklärer ^^
mfg
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.12.2017, 22:15
Titel:
|
|
Hallo,
es mag jetzt trivial klingen, aber um deine Frage beantworten zu können, muss man sie verstehen. Stell dir mal vor, du wüsstest nicht, um was es geht, und lies deine Frage. Würdest du sie verstehen?
So kann ich nur raten:
mit find kannst du den ersten Wert nahe bei 0.32 finden:
Genauso kannst du Werte bei 0.92 oder wo auch immer finden. Ob du nun diese Werte willst, nicht willst, oder irgendwelche 5 Werte dazwischen, verstehe ich beim besten Willen nicht.
Grüße,
Harald
|
|
|
cerarslan |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 13.12.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.12.2017, 22:39
Titel:
|
|
Hey,
ich danke dir schonmal für deine Hilfe. Sehr nett von dir.
Ich werde morgen nochmal alles ordentlich aufschreiben und werde Bilder anhängen. Vielleicht versteht man mich dann ein wenig besser :b.
mit freundlichen Grüßen
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.12.2017, 23:11
Titel:
|
|
Hallo,
bitte dann auch nicht vergessen, die Vorschläge auszuprobieren und ggf. zu beschreiben, inwiefern sie nicht das gewünschte machen.
Grüße,
Harald
|
|
|
cerarslan |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 13.12.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.12.2017, 15:08
Titel:
|
|
|
|
|
Also eigentlich hatten wir uns das jetzt so gedacht.
Simulationsdauer beträgt 10 Sekunden.
Wir haben es diskretisiert, sodass wir alle 40ms ein Z-wert erhalten.
Anschließend gehen diese Z-werte mit den Zeitwerten in ein Block. Siehe angehängtes Bild. Dort werden die Zeitwerte durch fünf Unit Delays als Vektor von 5 Elementen gespeichert. Im Ausgang gehen diese Werte in die Matlab FCN. Das gleiche geschieht für die jeweiligen Z-Werte.
Zu beachten ist: Nachdem die Simulation beginnt, also wo der Ball nach unten fliegt, sollen ANFANG 3-Z Werte entnommen werden bzw. der Schieberegister muss 3 z-Werte erhalten. Aus diesen 3 Werten soll dann mit den zusätzlichen zeitwerten ein Aufprallzeitpunkt geschätzt werden.
Wenn man die ersten 3 Zeiten bzw. z-Werte bekommen hat, soll die Simulation weiter laufen, aber keine neuen Werte aufnehmen. Erst nach einer bestimmten Zeit sollen neue Werte erfasst werden für die Schätzung. Diesmal müssen 5 Werte aufgenommen werden - oben ist es parabelförmig, also muss man schon relevante Zeiten aufnehmen.
Die Schätzungen sollen in der Matlab Function entstehen.
In der Matlab FCN hatten wir folgendes:
Was dort passiert: In der MAtlab FCN:
function y = fcn(u,t)
%
% Autor, Datum
Coeff = polyfit(t,u,2);
if (Coeff(2)^2-4*Coeff(1)*Coeff(3))<=0
y=0;
else
t_auf = roots(Coeff);
y =max(real(t_auf));
end
Ich hoffe ich habe mich diesmal etwas verständlicher ausgedrückt.
Beschreibung: |
|
Download |
Dateiname: |
Simulink1.PNG |
Dateigröße: |
22.42 KB |
Heruntergeladen: |
505 mal |
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|