본문 바로가기

분류 전체보기350

두빈스 경로 (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.
오일러 운동방정식 (Euler’s Equation of Motion) 질량중심을 기준으로 한 강체의 운동방정식은 다음과 같았다 (https://pasus.tistory.com/191).  \[ \begin{align} \vec{M}_G &= \frac{ ^bd \vec{H}_G}{dt}+ \ ^i\vec{\omega} ^b \times \vec{H}_G \tag{1} \\ \\ &= \bar{I}_G \cdot \frac{ ^b d \ ^i\vec{\omega} ^b }{dt} + \ ^i\vec{\omega} ^b \times (\bar{I}_G \cdot \ ^i\vec{\omega} ^b ) \end{align} \]   여기서 \( ^i \vec{\omega} ^b\) 는 관성 좌표계 \(\{i\}\) 에 대한 강체 좌표계 \(\{b\}\) 의 각속도벡터, \(\b.. 2024. 3. 22.