본문 바로가기

전체 글349

[Continuous-Time] 안정성과 리야프노프 방정식 행렬 \(A\) 의 모든 고유값이 음의 실수부를 갖는다면 행렬 \(A\) 는 안정(stable)하다고 한다. 만약 행렬 \(A\) 가 안정하다면 다음 리야프노프 방정식(Lyapunov equation),  \[ A^T P+PA=-N \tag{1} \]   은 모든 행렬 \(N\) 에 대해서 유일해를 갖고, 그 해는 다음과 같다.  \[ P= \int_0^\infty e^{A^T t} N e^{At} \ dt \tag{2} \]   증명은 다음과 같다. 먼저 식 (2)를 (1)에 대입한다.  \[ \begin{align}A^T P+PA &= \int_0^\infty A^T e^{A^T t} N e^{At} \ dt + \int_0^\infty e^{A^T t} N e^{At} .. 2024. 7. 25.
[Continuous-Time] 제어가능성과 PBH 테스트 다음과 같은 선형 시불변(LTI) 시스템이 있다.  \[ \dot{\mathbf{x}}=A\mathbf{x}+B\mathbf{u} \tag{1} \]   여기서 \(\mathbf{x}(t) \in \mathbb{R}^n\) 는 상태변수, \(\mathbf{u}(t) \in \mathbb{R}^p\) 는 제어입력이다. 이 시스템이 제어불가능하다면 제어불가능한 고유값(uncontrollable eigenvalue)이 존재한다 (https://pasus.tistory.com/337). 그렇다면 구체적으로 \(A\) 의 고유값 중 어떤 값이 제어불가능한 고유값일까. 이를 판별하기 위한 방법으로 PBH 테스트(Popov-Belevitch-Hautus test)가 있다.    PBH 테스트에 의하면, 어떤 복소수 .. 2024. 7. 24.
[Continuous-Time] 제어가능한 부분공간 다음과 같은 선형 시불변(LTI) 시스템이 있다.  \[ \begin{align} \dot{\mathbf{x}}=A \mathbf{x}+B \mathbf{u} \tag{1} \end{align} \]   여기서 \(\mathbf{x}(t) \in \mathbb{R}^n\) 는 상태변수, \(\mathbf{u}(t) \in \mathbb{R}^p\) 는 제어입력이다. 이 시스템의 제어가능한 부분공간(controllable subspace) \(\chi_c\) 는 제어가능성 행렬(controllability matrix)의 레인지(range, 치역)로 정의한다.  \[ \begin{align} \chi_c=range(Q_c) \tag{2} \end{align} \]  여기서 제어가능성 행렬 \(Q_c\) 는.. 2024. 7. 23.
[Continuous-Time] 제어가능성 (Controllability) 다음과 같은 선형 시불변(LTI) 시스템이 있다.  \[ \begin{align} \dot{\mathbf{x}} =A \mathbf{x}+B \mathbf{u} \tag{1} \end{align} \]   여기서 \( \mathbf{x}(t) \in \mathbb{R}^n \) 는 상태변수, \( \mathbf{u}(t) \in \mathbb{R}^p \) 는 제어입력이다. 만약 유한 시간 \( t_1 \lt \infty \) 안에 임의의 초기 상태 \(\mathbf{x}(0)=\mathbf{x}_0\) 에서 임의의 목표 상태(target state) \( \mathbf{x}(t_1 )=\mathbf{x}_1\) 으로 시스템의 상태를 움직이도록 하는 제어입력 \(\mathbf{u}(t), \ t \in .. 2024. 7. 16.
케일리-해밀톤 정리 (Cayley-Hamilton Theorem) 정방 행렬 또는 정사각형 행렬 (square matrix) \(A \in \mathbb{R}^{n \times n}\) 의 특성 다항식(characteristic polynomial)은 다음과 같이 정의된다.  \[ \begin{align} \Delta (\lambda)= \det (\lambda I-A)= \lambda^n+c_{n-1} \lambda^{n-1}+ \cdots +c_1 \lambda+c_0 \tag{1} \end{align} \]   참고로 특성 방정식 \(\Delta (\lambda)=0\) 의 해는 행렬 A의 고유값(eigenvalue)이다. 행렬 \(A\) 의 특성 다항식은 식 (1)과 계수가 똑같은 행렬 다항식으로서 다음과 같이 정의된다.  \[ \begin{align} \Del.. 2024. 7. 14.
두빈스 경로 (Dubins Path) - 2 RSL 경로는 시작점 \(\mathbf{p}_1\) 에서 오른쪽 원을 타고 우회전한 다음 직진하고 끝점 \(\mathbf{p}_2\) 에 도착할 때까지 왼쪽에 접한 원에서 다시 좌회전하는 것으로 구성된다. 아래 그림에는 원호에서 직선으로의 전환점인 풀아웃(pull-out) 지점 \(\mathbf{q}_1\) 과 직선에서 원호로 전환점인 휠오버(wheel-over) 지점 \(\mathbf{q}_2\) 와 이를 연결하는 직선을 각각 보여준다.    풀아웃 지점 \(\mathbf{q}_1\) 과 휠오버 지점 \(\mathbf{q}_2\) 는 다음과 같이 계산할 수 있다.  \[ \begin{align} \mathbf{q}_1 &= \mathbf{c}_1 + ( \mathbf{q}^\prime_1 - \math.. 2024. 5. 25.
두빈스 경로 (Dubins Path) - 1 평면상에서 시작점과 끝점을 연결하는 최단거리 경로를 구하려고 한다. 단 시작점과 끝점에서 각각 출발 방향과 도착 방향이 정해져 있고 경로가 가질 수 있는 최대 곡률(curvature)에 제한이 있는 경우다. 이 문제는 제약조건이 있는 최적화 문제로서 최단거리 경로는 최대 곡률을 갖는 원형 호와 직선을 결합하여 만들어진다는 것이 증명되었다. 이 최단거리 경로를 두빈스 경로 (Dubins path)라고 한다. 두빈스 경로는 기하학적인 방법으로 간단히 생성할 수 있기 때문에 이동 로봇, 드론, 무인 잠수정 등의 운동체 경로 계획 방법으로 널리 사용되고 있다. 두빈스 경로는 CSC 또는 CCC 경로 중 하나다. 여기서 C는 원호(circular arc), S는 직선(straight line)을 나타낸다. CCC.. 2024. 5. 25.
다중 슈팅방법 (Multiple Shooting Method) 예제 Ascher의 책 'Computer Methods for Ordinary Dierential Equations and Dierential-Algebraic Equations' 에 나와 있는 예제를 다중 슈팅방법(multiple shooting method)을 이용하여 풀어보고자 한다. 미분방정식은 다음과 같다.  \[ \begin{align} \dot{\mathbf{x}} = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ -2 \lambda^3 & \lambda^2 & 2 \lambda \end{bmatrix} \mathbf{x}+ \begin{bmatrix} 0 \\ 0 \\ q(t) \end{bmatrix} \tag{1} \end{align} \]   여기서 \(\math.. 2024. 5. 14.
다중 슈팅방법 (Multiple Shooting Method) 다음과 같은 비선형 미분방정식이 있다.  \[ \begin{align} \dot{\mathbf{x}} (t) = \mathbf{f}(\mathbf{x}(t)) \tag{1} \end{align} \]   여기서 초기값 \(\mathbf{x}(t_0 )\) 는 일부만 주어지거나 또는 주어지지 않았다고 가정한다. 대신 최종 시간 \(t_f\) 에서 경계값 \(\mathbf{x}_f\) 가 주어졌다고 가정한다. 이와 같은 경계값 문제의 경우 초기값이 다 주어지지 않았으므로 시간 전파를 통해 수치적분을 수행할 수가 없다. 슈팅방법(shooting method)은 경계값 문제를 초기값 문제로 바꾸어 푼다 (https://pasus.tistory.com/276). 주어지지 않은 초기값을 적당히 추정한 다음에 수치적.. 2024. 5. 14.
[Continuous-Time] 경로 제약조건이 있는 최적제어 문제 일반적인 최적제어 문제 (https://pasus.tistory.com/231)는 초기 및 최종 상태변수 등식 제약조건과 운동방정식을 만족하면서 목적함수를 최소화하는 제어입력을 결정하는 문제였다.  \[ \begin{align} \min J = \phi ( & \mathbf{x}(t_0 ), \mathbf{x}(t_f ), t_0, t_f ) + \int_{t_0}^{t_f} g(\mathbf{x}(t), \mathbf{u}(t), t) \ dt \tag{1} \\ \\ \mbox{ subject to : } \ & \dot{\mathbf{x}} (t)= \mathbf{f}( \mathbf{x}(t), \mathbf{u}(t), t) \\ \\ & \psi (\mathbf{x}(t_0 ), \mathbf.. 2024. 5. 7.
화성 착륙 과정과 진입 운동방정식 NASA가 지금까지 화성에 착륙시킨 착륙선은 1976년 바이킹 1호부터 시작하여 2021년 2월 18일에 착륙에 성공한 Mars2020/퍼서비어런스에 이르기까지 모두 9개다. 초창기에는 무유도(unguided) 탄도 대기권 진입 방식을 사용했는데, 이는 착륙 지점의 과학적 가치를 고려하지 않고 화성에 안전하게 착륙하는 것을 목표로 한 이른바 1세대 시스템이었다. 1세대 화성 진입, 하강 및 착륙(EDL, entry, descent and landing) 시스템의 착륙 오차(landing uncertainty ellipse)는 \(150 \times 20 ~ km\) 정도로서 위험한 지형과 과학적 가치가 높은 지역에 착륙할 수 있는 능력이 없었다.    2012년 8월 게일(Gale) 크레이터에 착륙한 M.. 2024. 4. 28.
섭동력을 받는 램버트 문제의 보정 해 램버트 문제의 해(https://pasus.tistory.com/316)는 두 위치 \(\mathbf{r}_1\) 과 \(\mathbf{r}_2\) 사이를 비행하는 데 걸리는 시간 \(\Delta t\) 가 주어졌을 때, 두 위치를 연결하는 이체문제 (two-body problem) 궤적(trajectory)을 계산한다. 하지만 램버트 문제에서 고려하지 않았던 섭동력(perturbation)으로 인하여 궤적이 목표로 한 위치 \(\mathbf{r}_2\) 에 도달하지 못할 때는 어떻게 해야 할까.    일반적인 섭동력 (J2 섭동력, 태양복사압력, 항력, 달 또는 태양 등의 제3의 중력 등)의 경우 이러한 오차 거리(miss distance)가 크지 않기 때문에, 출발 위치 \(\mathbf{r}_1\).. 2024. 4. 12.
PINN을 이용한 램버트 문제의 해 램버트 문제(https://pasus.tistory.com/316)를 풀기 위한 알고리즘은 여러가지가 제안되어 있지만 여기서는 물리 정보 신경망(PINN, physics-informed neural network)을 이용하여 이 문제를 풀어보고자 한다. 수치 데이터는 이전 게시글(https://pasus.tistory.com/297)에서 사용했던 것을 다시 사용한다. 먼저 램버트 문제의 운동 방정식은 다음과 같다.  \[ \begin{align} \frac{d^2 \mathbf{r}}{dt^2 }+ \frac{\mu}{ \left( \sqrt{\mathbf{r} \cdot \mathbf{r}} \right)^3} \mathbf{r}=0 \tag{1} \end{align} \]   여기서 \(\mu\) 는.. 2024. 4. 10.
넘파이 데이터를 매트랩에서 시각화하기 파이썬에서 matplotlib 라이브러리를 사용하면 데이터를 다양하게 시각화 할 수 있지만, 오랜 세월 매트랩(Matlab)을 사용하다 보니 익숙치가 않다. 그래서 편한 길을 쫓아 파이썬 프로그래밍으로 만든 결과 데이터를 매트랩으로 옮겨서 그래프로 그리곤 한다. 간단한 예제를 통해서 이 과정을 설명하겠다. 먼저 파이썬에서 넘파이 데이터를 생성하고 이를 딕셔너리로 변환한다. 그리고 scipy.io의 savemat을 이용하여 이 값을 매트랩의 mat 파일로 저장한다. 다음은 \(t \in [0, 10]\) 구간에서 \(y=\sin⁡(2\pi t)\) 를 계산하여 result.mat 파일로 저장하는 코드다. 시간은 t 로, 결과는 y 로 key를 설정했다. # savemat # coded by st.water.. 2024. 4. 7.