본문 바로가기

전체 글330

두빈스 경로 (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.
[INS] 관성항법시스템 오차 방정식 (INS Error Equations) 관성항법시스템(INS)은 초기 위치, 속도 및 자세 정보와 가속도계 및 자이로스코프에서 얻어지는 측정 정보를 이용하여 현재의 위치, 속도 및 자세 정보를 제공하는 시스템이다. INS는 항법 좌표계에서 가속도를 적분하여 속도와 위치를 결정하는데, 가속도 신호는 동체 좌표계에서 측정되므로 이 값을 동체 좌표계에서 항법 좌표계로 변환해야 한다. 그런데 동체 좌표계와 항법 좌표계간에는 자세 변화가 있으므로 두 좌표계간의 자세각을 알아야 하고, 이를 위해서는 동체 좌표계에서 측정된 자이로스코프 신호를 적분해야 한다.    따라서 INS는 위치 결정을 위해서는 세 번의 수치적분, 속도 결정을 위해서는 두 번의 수치적분, 자세 결정을 위해서는 한 번의 수치적분이 수행되어야 한다. 이와 같은 수치적분 때문에 INS의 .. 2024. 3. 15.
[INS] 관성항법 방정식 (Kinematics of Inertial Navigation) 관성항법시스템 (INS, inertial navigation system)은 관성센서인 가속도계와 자이로스코프에서 측정된 가속도(specific force, 단위 질량당 힘)와 각속도를 이용하여 운동체의 위치, 속도, 자세를 추정하는 항법시스템의 한 종류다. 관성항법시스템은 단독으로 위치, 속도, 자세를 추정할 수 있기 때문에 외부 센서나 신호를 사용할 수 없거나 또는 신뢰할 수 없는 상황, 예를 들면 수중이나 지하에서 특히 유용하다. 관성항법의 구현 방식에는 운동체의 회전 운동과 기계적으로 분리된 짐벌(Gimbal)에 관성센서를 장착하는 짐벌 (Gimbaled INS) 방식과, 운동체에 관성센서를 직접 부착하는 스트랩다운 (Strapdown INS) 방식으로 나눌 수 있다. 최신 관성항법시스템은 대부분.. 2024. 3. 3.
[LLM] Ollama Web-UI 설치 Ollama 는 Llama2, Mistral, Gemma 등 대규모언어모델 (LLM)을 개인용 컴퓨터에 설치하고 쉽게 실행할 수 있게 해주는 오픈소스다. 공식 사이트는 다음과 같다. https://ollama.com/ Ollama를 이용하여 명령창에서 언어모델과 대화할 수도 있지만, chatGPT 처럼 웹브라우저에서 주고받는 대화가 더 익숙하다. Open WebUI (구 Ollama WebUI)는 Ollama를 위한 chatGPT 스타일의 웹 인터페이스로서 오픈소스 중에서 가장 인기가 많다고 한다. 윈도나 Mac 노트북에 Open WebUI 를 설치하는 방법은 아래 사이트나 여러 블로그 또는 유튜브에 자세히 나와 있으니 참고하기 바란다. GitHub - open-webui/open-webui: User-.. 2024. 2. 25.
연속시간 상태공간 방정식의 이산화 (Discretization) 보통 제어기는 디지털 방식으로 구현되고 있다. 이 방식에서는 제어기의 출력도 디지털 신호이기 때문에 일정한 시간 간격에서만 사용할 수 있다. 즉 이산시간(discrete-time) 단계에서만 새로운 제어입력 값을 사용할 수 있다. 하지만 제어 대상 시스템이 연속시간(continuous-time) 시스템이라면 연속적인 입력이 필요하기 때문에 간헐적으로 계산되는 제어 입력을 사용할 수는 없다. 이 때 일반적으로 사용하는 방법은 다음 샘플링 시간까지 제어입력 값을 일정하게 유지시키는 것이다. 이를 0차홀드(ZOH, zero-order hold) 방식이라고 한다. 물론 더 복잡한 유형의 홀드 연산도 가능하지만, ZOH가 가장 널리 사용된다. 연속시간 (continuous-time) 선형 시불변 (LTI, lin.. 2024. 2. 12.