+1 Daumen
1k Aufrufe

Ungleichseitiges Dreieck als Grundfläche, Scheitelpunkt liegt nicht im Höhenmittelpunkt der Grundfläche aber über Grundfläche.

Gegeben sind Seitenlängen der Grundfläche sowie Kantenlängen der Pyramide. Gesucht wird Höhe der Pyramide.

Avatar von

Hast du Daten vorliegen oder soll das ganze allgemein gültig als Formel hergeleitet werden?

Ich bräuchte das Ganze allgemein gültig als Formel. Anwendung wäre: 3 Seilwinden, die ein kleines Teil nach oben ziehen. Mit 3 Seilwinden kann das kleine Teil in einem gewissen Bereich auf jeden Punkt positioniert werden. Länge der Pyramidenseiten wird über Längenmesssystem erfasst, die Punkte wo Seile runtergehen werden ausgemessen. Das Teil soll aber nicht zu nah an die Decke gezogen werden. Damit wäre optimal, wenn wir aus den vorliegenden Daten die Höhe ermitteln könnten, damit wir programmtechnisch die Fahrt stoppen können, wenn das Teil zu nahe an die Decke kommt.

Man könnte das eventuell mit Lastbegrenzung realisieren, wenn das Teil konstante Masse hat.

Hintergrund: Je höher das Teil gezogen wird, umso flacher sind die Seilwinkel und ums ungünstiger das Verhältnis der Seilkräfte zur Gewichtskraft. Bei 30° muss schon die doppelte Kraft aufgewendet werden und das wird immer ärger, je flacher die Winkel werden.

Vermutlich hauts also bereits vorher schon die Überlastsicherung, bevor das Teil überhaupt weit genug oben ist. Schon mal darüber nachgedacht ?

Überlastsensor ist natürlich eingebaut, sämtliche steuerungstechnischen und mechanischen Normen werden erfüllt. Die Nutzlast ist wie erwähnt sehr gering ... maximal ca. 5 kg auf 3 Winden.  Es geht nur darum, die Höhe zu begrenzen. Da man einen möglichst großen Bereich unter den 3 Punkten der Seilabgänge abdecken möchte, kann ja theoretisch eine Kantenlänge der Pyramide kurz sein, die anderen beiden lang. Wenn nun eine Automatikfahrt von der einen Seite zur anderen Seite erfolgen soll, möchte ich verhindern, dass durch die Fahrt eine Überlast ausgelöst wird. Eine Überlastauslösung bedeutet eine Störung, welche wieder mit geeigneten Schaltungen bzw. Fahrt behoben werden muss. Eine Steuerung sollte so aufgebaut werden, dass Störungen nicht Teil des normalen Betriebsablaufes sind.

" Länge der Pyramidenseiten wird über Längenmesssystem erfasst, die Punkte wo Seile runtergehen werden ausgemessen."

Die Höhe lässt sich nicht messen? :O

Punkte, wo die Seile runtergehen = Grundfläche der Pyramide -> wird einmalig ausgemessen - ändert sich im Betrieb und während einer Fahrt ja nicht. Die Höhe ändert sich bei jeder Fahrt und könnte demnach ja nur mit einem zusätzlichen Längenmesssystem ausgelesen werden. Der Scheitelpunkt ändert sich ja auch jedes mal. Ein Messsystem für die Höhe wäre keine einfache Standardaufgabe. Sicher wäre auch ein gangbarer Weg, wenn Kosten, Zeitaufwand, Liefertermine usw. keine Rolle spielen würden.

Eine einfache Antwort in Richtung mathematischer Lösbarkeit wäre hilfreich: ist mathematisch lösbar ja / nein oder ..ist mathematisch zwar lösbar, aber der Aufwand ist zu hoch.

Äääh, der Scheitelpunkt ändert sich? Da hatte ja ich völlig andere Vorstellungen!
Könnte man vielleicht eine Skizze der Gegebenheiten sehen?

1 Antwort

+1 Daumen

Hallo Schwaiger,

Bevor ich auf Deine eigentliche Frage antworte - nur soviel: Wenn ich Deinen Fall richtig verstanden habe, so brauchst Du diese Berechnung gar nicht zu machen.

Es wäre doch nur natürlich, die Position der Last (der Pyramidenspitze) in 3D vorzugeben - die Z-Koordinate wäre dabei die gewünschten Höhe. Dann werden die drei notwendigen Seillängen berechnet und diese dann mit den Winden einzustellen. Sei \(p\) die Position der Last, bzw. des Schnittpunkts der drei Seile, und \(s_i\) mit \(i \in {1;2;3}\) die Positionen der Seilwinden bzw. der Punkte, wo die Seile einlaufen, so kann man jede notwendige Seillänge \(l_i\) aus einem einfachen Pythagoras berechnen:

$$l_i = \left| p - s_i\right| = \sqrt{(p - s_i)^2}$$

Wenn es technisch möglich ist, auch die Geschwindigkeit \(\dot {l_i}\) der Seilwinden zu steuern, so kann man auch kontrolliert Wege fahren:

$$\dot{ l_i } = \frac{(p - s_i) \cdot \dot{p}}{ \sqrt{(p - s_i)^2}}$$

D.h. so kann zu jedem Zeitpunkt die Seillänge und Seilgeschwindigkeit der Winden berechnet werden, um mit der Last einen beliegen Weg im Raum zu fahren. Und es ist Sache der Steuerung, dass dabei eine Maximalhöhe nicht überschritten wird.


Der Kern der ursprünglichen Frage besteht darin, von drei gegebenen Punkte \(s_i\) aus, einen  Punkt \(p\) zu finden, der von jedem der drei Punkte jeweils den Abstand \(l_i\) hat. Dies ist gleichbedeutend mit dem Problem den (bzw. die) Schnittpunkte dreier Kugeln zu finden. Diese Berechnung ist ein wenig aufwendig, sonst hätte längst jemand geantwortet ;-) Ein Verfahren besteht darin, zunächst die Schnittgerade von zwei Schnittebenen jeweils eines Kugelpaars zu bestimmen und dann die beiden Schnittpunkte dieser Geraden mit einer der Kugeln zu berechnen. Eine Kugelgleichung der \(i\)'ten Kugel mit Mittelpunkt \(m_i=s_i\) und Radius \(R_i=l_i\) sieht so aus:

$$| x - m_i| = R_i$$

und weil diese Betragsbildung wegen der Wurzelfunktion immer ein wenig lästig ist, quadriert man das ganze

$$(x - m_i)^2 = {R_i}^2$$

und um das Quadrat loszuwerden, zieht man nun die Gleichungen zweier Kugeln \(i\) und \(j\) von einander ab. man erhält

$$(x - m_i)^2 - (x - m_j)^2= {R_i}^2 - {R_j}^2$$

$$ -2x(m_i - m_j) = {R_i}^2 - {R_j}^2- ({m_i}^2  -{m_j}^2)$$

das ist eine Ebenengleichung in der Normalenform. Existiert ein Punkt \(x\), der beide Kugelgleichungen erfüllt, und somit auf dem Schnittkreis liegt, so erfüllt er auch diese Ebenengleichung. Daraus folgt, dass diese Ebene die Ebene ist, in der der Schnittkreis der beiden Kugeln \(i\) und \(j\) liegt - falls(!) dieser existiert. Dasselbe macht man nun für ein zweites Paar \(j\) und \(k\) und erhält die zweite Ebene. Anschließend wird die Schnittgerade der beiden Ebenen berechnet. Den Richtungsvektor \(d\) der Geraden bekommt man aus dem Kreuzprodukt der beiden Normalenvektoren:

$$d = (m_i - m_j) \times (m_j - m_k)$$

Bem.: Liegen die \(s_i\) in der XY-Ebene, so ist \(d=( 0; 0; d_z)\) - und \(d_z\) kann man dann zu 1 setzen. Der Betrag von \(d\) spielt für das folgende keine Rolle.

Einen Aufpunkt \(a\) der Geraden findet man als eine Lösung für \(x\) von folgendem unterbestimmten Gleichungssysten:

$$2 \begin{pmatrix} (m_j - m_i)^T \\ (m_k - m_j)^T  \end{pmatrix} x = \begin{pmatrix} {R_i}^2 - {R_j}^2 \\ {R_j}^2 - {R_k}^2\end{pmatrix}$$

programmtechnisch ist das etwas tricky, da man durch die Wahl eines Pivotelements vermeiden muss, durch sehr kleine Werte bzw. 0 zu teilen. Wenn Du dazu mehr wissen möchtest, so frage nochmal nach.

Einsetzen der Geradengleichung \(a + d\cdot t\) in die quadrierte Kugelgleichung (s.o.) der Kugel \(j\) gibt:

$$( a + d \cdot t - m_j )^2 = {R_j}^2$$

$$ d^2 \cdot t^2 + (a- m_j) \cdot d \cdot t + (a- m_j)^2-   {R_j}^2 = 0$$

letzteres ist eine quadratische Gleichung mit den beiden Lösungen \(t_{1,2}\). Setzt man diese \(t_{1,2}\) in die Geradengleichung ein, erhält man schließlich die beiden Schnittpunkte \(p_{1,2}\) der drei Kugeln.  Existiert keine Lösung, so schneiden sich zwei der Kugeln nicht. Wichtig dabei ist, dass der letzte Schritt mit der Kugel (hier \(j\)) vorgenommen wird, die in beiden Paaren vorkommt - nur dann kann man sicher sein, dass dieser Schnittpunkt auch existiert. Legt man die Koordinaten \(s_i\) so, dass sie alle in der XY-Ebene liegen, so ist die gesuchte Höhe \(h\) die Z-Koordinate der Punkte \(p_{1,2}\), die sich in diesem Fall nur durch das Vorzeichen unterscheiden.

Falls Du noch den Algorithmus suchst, der die Koordinaten der dritten Seilwinde aus den Abständen der Seilwinden unter einander berechnet, so geht das genauso - nur eben im 2-dimensionalen.

Fragen und sonstiges Feedback erwünscht.

Gruß Werner

Avatar von 48 k

Danke !

Warum ich die Position nicht in 3D Koordinaten vorgebe hat eigentlich einen Hintergrund in der Bedienungspraxis. Im Prinzip fährt der Kunde mit den Winden per Hand (mit Tasten Auf/Ab) auf die gewünschte Position. In der Regel werden diese Positionen auch nicht ausgemessen, speziell bei alten Gebäuden, wo teilweise nicht einmal digitale Pläne vorhanden sind. Die Positionen werden einfach aufgrund von Erfahrungswerten bzw. mit eingeschalteter Nutzlast per Hand einjustiert. Dann speichert man die Position. Auf diese Weise werden mehrere Positionen gespeichert. Es geht nun darum, dass man diese gespeicherten Positionen so genau wie möglich wieder anfahren kann. Als Maßsystem sind Längenmesssysteme im Einsatz, Absolutwertgeber am Motor - sie zählen in Prinzip die Umdrehungen, Absolutwertgeber behalten dabei den Wert auch bei Stromausfall/Wiedereinschalten. Absolutwertgeber gibt es dabei in Multi oder Singleturn - wir werden Multiturn im Einsatz haben, sie zählen dann 13 Bit Umdrehungen und 12 Bit pro Umdrehung. Somit habe ich für jede gespeicherte Position die Länge der drei Seile = im Prinzip wenn man Umlenkung usw. abrechnet die Seitenlängen der Pyramide. Wenn ich nun in der Praxis eine abgespeicherte Position wieder anfahren möchte, Fahre ich von der Istposition auf die Zielposition indem ich bei den Winden Seile auf- bzw. abwickle. Nun wäre aber theoretisch möglich, dass die Ziel- und Startpositionen so ungünstig liegen, dass bei der Fahrt das Teil zu nahe an die Decke kommt und somit eine Überlast ausgelöst werden würde. Um dies zu Verhindern, hätte ich mir gedacht, dass es das einfachste ist, die Höhe zu überprüfen. Somit kann von der Steuerung so gearbeitet werden, dass vorerst die Winden abrollen und dann die andere aufrollt. Dass man es grundsätzlich so macht, dass zuerst die Winden nachgelassen werden und dann die andere anzuziehen ... theoretisch klingt das gut. Ist praktisch aber wahrscheinlich nicht machbar, da ja nicht nur dieses eine Teil unter der Decke hängt. Somit wäre wieder die Gefahr zu hoch, dass man dieses Teil irgendwo auflegt oder verhängt (z.B. auf Kulissen oder ähnlichem).

Nochmals vielen Dank für die Lösung.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community