From d5fbb60dea3fe6912e606eff976bf7474887b0e7 Mon Sep 17 00:00:00 2001 From: RickGelhausen Date: Tue, 25 Jun 2024 16:20:23 +0200 Subject: [PATCH] fix --- exercise-sheet-5.Rmd | 51 +------------------------------------------- 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/exercise-sheet-5.Rmd b/exercise-sheet-5.Rmd index 8ee4488..ddd6598 100644 --- a/exercise-sheet-5.Rmd +++ b/exercise-sheet-5.Rmd @@ -241,58 +241,9 @@ CasADi's symbolische Variablen definieren, welches auch zur Berechnung von Ablei ### Pendel auf einem Wagen -Als Beispielproblem betrachten wir ein Pendel, das auf einem Wagen befestigt ist, siehe Abb. 5. Der Mittelpunkt des Wagens hat die horizontale Position $p_x$, welche wir durch Ausüben einer Kraft $ F $ beeinflussen können. +Als Beispielproblem betrachten wir ein Pendel, das auf einem Wagen befestigt ist, siehe Abb. 5. Der Mittelpunkt des Wagens hat die horizontale Position $p_x$, welche wir durch Ausüben einer Kraft $F$ beeinflussen können. Die Auslenkung des Pendels, welches die Länge $l$ hat, ist durch den Winkel $\beta$ beschrieben. Der Wagen hat die Masse $M$, und an der Spitze des Pendels ist ein Ball mit Masse $m$ befestigt. Auf die Pendelmasse wirkt außerdem die Erdbeschleunigung $g$. Die horizontale Geschwindigkeit des Wagens ist $v_x$ und die Winkelgeschwindigkeit des Pendels ist $\omega$. Durch Zusammenfassen der (Winkel)positionen und -geschwindigkeiten im Zustandsvektor $x$ können wir das System durch folgende Differentialgleichung beschreiben: - -$$ -\dot{x} = -\begin{bmatrix} -v_x \\ -\omega -\end{bmatrix} = -\begin{bmatrix} --m \omega^2 \sin \theta + m \omega \cos \theta \sin \theta + F \\ --\frac{m \omega^2 \cos^2 \theta + M (1 - \cos^2 \theta) + \frac{(m + M) g \sin \theta}{l (1 - F \cos \theta)}}{M + \frac{F \cos^2 \theta}{m}} -\end{bmatrix}. -$$ - -Unser Ziel ist es nun das Pendel aus einer herabhängenden Position in eine aufrechte Position ($\beta = 0$) zu schwingen, während der Wagen am Ende die Position $p_x = 0$ haben soll. -Unser Steuerungseingang ist hierbei $u = F$. Dies soll innerhalb des Zeitintervalls $t \in [0, T]$ passieren. -Wir drücken dies als das folgende Optimalsteuerungsproblem aus, - -$$ -\min_{x(\cdot), u(\cdot)} \int_0^T \frac{1}{2} x(t)^T Q x(t) + \frac{1}{2} u(t)^T R u(t) dt + \frac{1}{2} x(T)^T Q_e x(T) -$$ - -unter den Nebenbedingungen - -$$ -\begin{aligned} -x(0) &= x_0, \\ -\dot{x}(t) &= f(x(t), u(t)), \quad t \in [0, T], \\ --u_{\text{max}} &\leq u(t) \leq u_{\text{max}}, \quad t \in [0, T]. -\end{aligned} -$$ - -wo bei $\hat{x}_0$ der gegebene initiale Zustand des Systems ist. -Anders als wir es bisher in der Vorlesung gesehen haben, sind in dem obigen Optimalsteuerungsproblem die Entscheidungsvariablen $x(\cdot)$ und $u(\cdot)$ Funktionen der Zeit. -Es handelt es sich deshalb nicht um ein NLP, und wir können es auch nicht ohne weiteres auf einem Computer repräsentieren. -Hierfür muss es erst durch numerische Integration in der Zeit diskretisiert werden, wie wir es bereits in der vorherigen Aufgabe mit dem RK4-Verfahren gemacht haben. -Da allerdings acados dies für uns übernimmt und eine Vielzahl effizienter Integrationsverfahren hierfür bereitstellt, übergeben wir das Optimalsteuerungsproblem in kontinuierlicher Zeit. - -**Aufgaben:** - -1. Installieren Sie acados sowie das zugehörige Python-Interface. -Die Links dafür sind weiter oben gegeben. Versichern Sie sich, dass Ihre Installation funktioniert, indem Sie das Minimalbeispiel `minimal_example_ocp.py` ausführen (vgl. Installationsanleitung Python-Interface). -2. Das Optimalsteuerungsproblem ist für Sie bereits in `cartpole.py` implementiert. Machen Sie sich kurz mit dem Code vertraut und führen Sie ihn dann aus. -3. Wir wollen eine zusätzliche Nebenbedingung auf die Geschwindigkeit $v_x$ einführen. Diese ist - -$$ --u_{\text{max}} \leq u(t) \leq u_{\text{max}}, \quad t \in [0, T], -$$ - -mit $v_x = 5 \, \text{m/s}$. Erweitern Sie `minimal_example_ocp.py` um diese Nebenbedingung, und lösen Sie das Optimalsteuerungsproblem erneut.