- Beiträge
- 9.695
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
Habe es gefunden: im ersten Fall hatte ich cdyn=0,07 verwendet - sorry.104% ist?
Bei 20,8km ist dies der Fall:Zudem wird die berechnete Geschwindigkeit nicht ausgehend von der gemessenen Geschwindigkeit variiert, sondern ausgehend von der vorherigen berechneten Geschwindigkeit – außer, es wurde gebremst; dann wird von der gemessenen Geschwindigkeit ausgegangen.
Gibt es eine weitere Nebenbedingung?
var calc_speed = (P_brake === 0 && i > 0 && get_val(SPEED_CALC, i-1, 0) != null) ? get_val(SPEED_CALC, i-1, 0) : get_val(SPEED, i, 0);
var resid = Infinity, prev_resid;
var SPEED_INC = 0.1;
// compute difference between input and output power
do {
// store previous values
prev_resid = resid;
prev_calc_speed = calc_speed;
// compute output power from current calculated speed
[P_roll, P_air, P_up, P_down, P_accel, P_decel] = compute_power(calc_speed, i > 0 ? get_val(SPEED_CALC, i-1, calc_speed) : calc_speed, i);
// compute output power sum
P_out = P_roll + P_air + P_up + P_accel;
// compute input power sum: muscle (minus drivetrain losses), downhill, deceleration
P_in = get_in_val(IN_MUSCLE, i, 0) * (1 - params['dtr'] / 100) + P_down + P_decel;
// difference between input and output power
resid = P_in - P_out;
// increase or decrease calculated speed
calc_speed += resid > 0 ? +SPEED_INC : -SPEED_INC;
// continue until residual becomes larger again
} while (Math.abs(resid) < Math.abs(prev_resid));
Nun der Vergleich zwischen meinem Solver-Fit vor drei Jahren:
Vielen Dank. Mir ist in den letzten Tagen da auch nichts Besseres eingefallen.Am Anfang ist noch gute Übereinstimmung dem gerechneten Geschwindigkeitsverlauf der schwarzen Kurve mit der gemessenen blauen Kurve. Danach kommen immer wieder Bremsungen obwohl ich natürlich nicht gebremst habe. Auch die Maximalgeschwindigkeit von 75km/h nach ca. 340m wird nicht erreicht. Dort ist der waagrechte Übergang. In der Folge von ca. 0,45-1,8km werden immer wieder leichte Bremsungen angezeigt. Die Energie kommt hier ausschließlich durch die Geschwindigkeitsverminderung P_decel. Durch die ganzen "Bremsungen" ist die Endgeschwindigkeit natürlich niedriger.
Meine Interpretation: Man sieht abwechselnd irre Spitzen und Täler bei P_decel. Diese dürften genau im Sekundenabstand wechseln. Sie entstehen m.E. durchs interpolieren der Radumdrehungszeiten auf ganze Sekundenwerte.
Das hier muss natürlich so geändert werden, dass nicht die Tretleistung aus der Datei verwendet wird, sondern die möglicherweise geglättete Version, wie sie im Diagramm zu sehen ist.Javascript:P_in = get_in_val(IN_MUSCLE, i, 0) * (1 - params['dtr'] / 100) + P_down + P_decel;
Ohne Testumgebung ist es für mich halt schwierig für eine bestimmte Stelle nachzuvollziehen, ob der Algorithmus wirklich das macht was er soll. Hier wird doch wirklich gebremst - wieso wird dann nicht die gemessene Geschwindigkeit genommen:Hier mal der Ausschnitt aus dem Code; anfangs wird calc_speed auf den Wert des vorigen Punkts gesetzt, falls die Bremsleistung 0 ist; ansonsten auf den Wert der gemessenen Geschwindigkeit.
Ich habe auch keine andere Testumgebung. Ich weiß nur, wie es funktionieren sollte, und schaue mir die Ergebnisse nach Plausibilität an (d.h. wenn etwas nicht stimmt, habe ich einen guten Verdacht, wo ich suchen muss), und lese den Code noch einmal ganz genau.Ohne Testumgebung ist es für mich halt schwierig für eine bestimmte Stelle nachzuvollziehen, ob der Algorithmus wirklich das macht was er soll.
Das ist ja immer die Frage, ob wirklich gebremst wird – wir können es ja nicht wissen. Aber ja, die Simulation nimmt das hier an.Hier wird doch wirklich gebremst - wieso wird dann nicht die gemessene Geschwindigkeit genommen:
Meinst du meinen vorigen Post? Nein. Das bezieht sich nur, wenn man P_muscle glättet. Dann wurde nämlich die geglättete Version angezeigt, aber mit der rohen Version gerechnet – was nicht wirklich falsch ist, aber irreführend.Edit: sehe gerade, dass du auch etwas entdeckt hast - ist es dasselbe Problem?
Vielen Dank!Ich finde das klasse, was du da machst.
Ich sehe das schon als weitgehend fertig/stabil an. Technisch gesehen ist es ja nichts anderes als die Kreuzotter-Berechnung, angewendet auf jeden Datenpunkt.Ist das jetzt noch im Versuchsstadium und du versuchst es zu optimieren oder kann ich mit deinem Algorithmus bzw. Grafik schon an der Optimierung meines Fahrzeugs arbeiten?
Je genauer man hinschaut, desto komplizierter wird es. Und ich habe lediglich ein Werkzeug gebaut, mit dem man die Daten sehr genau anschauen kann.Ehrlich gesagt, weiß ich nicht so genau wie ich damit arbeiten kann und etwas verbessern. Z.B. verändert sich der Rollwiderstand sehr stark, obwohl ich meine, dass sich die Umstände garnicht so sehr verändern (Belag, Steigung, Kraft).
Ach so. Das hätte ich nicht vermutet. Meine Idee war eher auf einer gleichbleibende Strecke versuchen mit gleicher Leistung zu treten oder zu rollen und dann Dinge am VM zu verändern. Mit und ohne Visier. Helm auf und Helm ab. 1, 2 oder gar keine Außenspiegel. Verschiedene Mäntel. Spur verstellen usw. Luftdruck.Ich sehe mehr Potenzial in der Streckenplanung und der Leistungseinteilung; wenn man sieht, wo die Leistung eigentlich hingeht, kann man besser einteilen, wo es sich lohnt, Gas zu geben und wo nicht.
Du kannst es ja mal versuchen. Aber dann eher Rolltest; die Tretleistung zappelt so massiv herum, da kann ich mir nicht vorstellen, wie man das halbwegs reproduzierbar hinbekommt. Ich könnte mir vorstellen, dass ein Hochgeschwindigkeits-Rolltest für die Aerodynamik und ein Niedriggeschwindigkeits-Rolltest für den Rollwiderstand interessant sein könnten.Meine Idee war eher auf einer gleichbleibende Strecke versuchen mit gleicher Leistung zu treten oder zu rollen und dann Dinge am VM zu verändern. Mit und ohne Visier. Helm auf und Helm ab. 1, 2 oder gar keine Außenspiegel. Verschiedene Mäntel. Spur verstellen usw. Luftdruck.
Nein, sie nimmt es in meinem ersten Bild eben nicht an!Das ist ja immer die Frage, ob wirklich gebremst wird – wir können es ja nicht wissen. Aber ja, die Simulation nimmt das hier an.
Kannst du doch nicht wissen! (Jedenfalls nicht aus dem Bild.)Nein, sie nimmt es in meinem ersten Bild eben nicht an!
Ein Leistungsmesssystem im VM ist ja nun mal eine aufwändige und kostspielige Sache. Mein System mit der Aufzeichnung jeder einzelnen Radumdrehung per Smartphone könnte sich ja jeder selbst einfach basteln. Jedoch nützt es nur, wenn man dazu auch das genaue Höhenprofil der Strecke hat. Von meiner Hausrunde habe ich eine GPS-Aufzeichnung mittels Oregon mit barometrischer Höhenkorrektur durch den Luftdruck bzw. kann mehrere erstellen.Ich sehe das schon als weitgehend fertig/stabil an. Technisch gesehen ist es ja nichts anderes als die Kreuzotter-Berechnung, angewendet auf jeden Datenpunkt.
Was ich in letzter Zeit gemacht habe bzw. noch mache:
- Die Benutzung bequemer/interaktiver machen, damit man leichter herumprobieren kann.
- Die Darstellung intuitiver/verständlicher machen.
NeinZur Klarstellung: Dich irritiert, dass die berechnete Geschwindigkeit weiter ansteigt?
Eigentlich sind das ja alles lösbare Probleme. Man kann beispielsweise einen extra Geschwindigkeitssensor installieren; übliche Leistungsmesser können Sensoren, die via ANT+ oder Bluetooth senden, verwenden. Wenn man dabei einen Sensor nimmt, der via Reedkontakt misst, kann man mehrere Magneten an den Speichen installieren und einen entsprechend kleineren Radumfang angeben. Und eine im Leistungsmesser integrierte barometrische Höhenmessung, idealerweise via GPS kalibriert oder wo man dem Startpunkt eine feste Höhe zugewiesen hat, sollte auch brauchbare Daten liefern.Ein Leistungsmesssystem im VM ist ja nun mal eine aufwändige und kostspielige Sache. Mein System mit der Aufzeichnung jeder einzelnen Radumdrehung per Smartphone könnte sich ja jeder selbst einfach basteln. Jedoch nützt es nur, wenn man dazu auch das genaue Höhenprofil der Strecke hat. Von meiner Hausrunde habe ich eine GPS-Aufzeichnung mittels Oregon mit barometrischer Höhenkorrektur durch den Luftdruck bzw. kann mehrere erstellen.
Klar, man könnte schon überlegen, wie man mehrere Datenquellen darstellt. Mache ich ja z.B. bei Geschwindigkeit und GPS-Geschwindigkeit so; hilfreich für den Fall, wenn z.B. der Geschwindigkeitssensor ausfällt. Aber dann ist immer die Frage, welche Daten denn jetzt für die Berechnung verwendet werden sollen. Besser wäre es, die Leistungsmesser-Datei zu bearbeiten, und dort die Datenwerte aus mehreren Datenquellen zu kombinieren. Also nur eine Geschwindigkeit und nur ein Höhenwert als Eingabe, statt mehrere Werte, wo unklar ist, welcher denn was taugt und welcher nicht.Wenn man nun in deinem System diese beiden Datenquellen verfügbar hätte, könnte man in etwa zum einen auf die (eigene) Antriebsleistung an verschiedenen Stellen und auf die verfügbare Bremsenergie z.B. für Rekuperation schließen.
Doch, sie wird bereits dort auf die gemessene Geschwindigkeit gesetzt, und dann angesichts der Leistungsbilanz von dort ausgehend nach oben oder unten korrigiert. Und dabei landet sie nun einmal ungefähr dort, wo der vorige Wert der berechneten Geschwindigkeit ist.Mich irritiert, dass die berechnete Geschwindigkeit im Bild nicht bereits bei 18,27km auf die gemessene Geschwindigkeit gesetzt wird, sondern nicht nachvollziehbar erst ca. 110m danach.
Sie wird also bei 18,27km auf die gemessene Geschwindigkeit gesetzt, aber wie bereits gezeigt, wird dies nicht gezeichnet:Doch, sie wird bereits dort auf die gemessene Geschwindigkeit gesetzt
Du erinnerst dich was für ein Schrott beim Polar bei höheren Geschwindigkeiten heraus kam?Man kann beispielsweise einen extra Geschwindigkeitssensor installieren; übliche Leistungsmesser können Sensoren, die via ANT+ oder Bluetooth senden, verwenden. Wenn man dabei einen Sensor nimmt, der via Reedkontakt misst, kann man mehrere Magneten an den Speichen installieren und einen entsprechend kleineren Radumfang angeben.
Das könnte schon Einfluss gehabt haben: nun ist nämlich bei 18,27km P_muscle>10W und deshalb wird angenommen, dass nicht gebremst wird:Meinst du meinen vorigen Post? Nein. Das bezieht sich nur, wenn man P_muscle glättet. Dann wurde nämlich die geglättete Version angezeigt,
Jetzt schmeiß ich doch noch meine alten C-Gehirnzellen ananfangs wird calc_speed auf den Wert des vorigen Punkts gesetzt, falls die Bremsleistung 0 ist
var calc_speed = (P_brake === 0