본문 바로가기

전체 글151

홀로노믹 구속 (Holonomic Constraint)과 가상 변위 어떤 시스템을 구성하고 있는 질점들이 자유롭게 움직이지 못하고 운동학적으로 제약을 받고 있다면 그 시스템은 구속(constraint)되어 있다고 한다. 그리고 운동학적인 제약사항을 위치, 속도, 시간 등의 함수로 표현한 것을 구속조건 식이라고 한다. 예를 들면 3차원 공간 상에 두 질점이 길이가 \(L\) 인 막대기로 연결되어 있을 경우, 두 질점은 자유롭게 운동하지 못하고 다음 구속조건 식을 만족하면서 운동해야 한다. \[ (x_1-x_2 )^2+(y_1-y_2 )^2+(z_1-z_2 )^2=L^2 \tag{1} \] 구속조건은 구속조건식의 형태에 따라 크게 홀로노믹 구속(holonomic constraint)과 비홀로노믹 구속(nonholonomic constraint)으로 분류된다. 홀로노믹 구속은.. 2021. 8. 4.
포텐셜 에너지 (Potential Energy) 직교 좌표계(Cartesian frame)에서 어떤 질점 \(m\) 에 힘 \(\mathbf{F}\) 가 가해지고 이로 인하여 아주 짧은 시간 \(dt\) 동안에 질점의 위치가 \(\mathbf{r}\) 에서 \(\mathbf{r}+d\mathbf{r}\) 로 변화했을 때, 힘 \(\mathbf{F}\) 가 한 일(work)은 다음과 같이 정의된다. \[ dW = \mathbf{F} \cdot d\mathbf{r} \] 여기서 \(d\mathbf{r}\) 을 극소 변위(infinitesimal displacement)라고 하고 \(dW\) 를 극소 일이라고 한다. 뉴턴 운동 법칙에 의해서 \(\mathbf{F}=m \ddot{\mathbf{r}}\) 이므로 위 식에 대입하면 일 \(dW\) 는 다음과 같.. 2021. 8. 3.
TensorFlow2에서 1차, 2차 편미분 계산 자동으로 미분을 계산하려면 Tensorflow는 순방향 패스 과정에서 어떤 순서로 어떤 연산을 했는지 기억해야 한다. 그런 다음, 역방향 패스 중에 이 연산 목록을 역순으로 이동해 가며 미분(derivative)을 계산한다. Tensorflow는 자동으로 미분을 계산하기 위해서 tf.GradientTape API를 제공한다. Tensorflow는 tf.GradientTape의 컨텍스트 내에서 실행 된 관련 연산을 '테이프'에 '기록'한다. 그런 다음 해당 테이프를 거꾸로 돌려서 기록된 연산의 미분을 계산한다. tf.Variable로 생성된 변수에 대해서만 미분할 수 있는데 상수인 경우에도 watch() 메쏘드를 이용하면 미분을 계산할 수 있다. 예를 들어서 \(y(x,t)=x^3+2t\) 를 \(x\) .. 2021. 7. 25.
[PF-2] SIS에서 파티클 필터로 전체 조건부 확률밀도함수 \(p(\mathbf{x}_{0:t} | \mathbf{z}_{0:t}, \mathbf{u}_{0:t-1})\) 를 순차 샘플링 \(\mathbf{x}_{0:t}^{(i) }\) 로 다음과 같이 근사화 할 수 있었다. \[ p(\mathbf{x}_{0:t} | \mathbf{z}_{0:t}, \mathbf{u}_{0:t-1}) \approx \sum_{i=1}^N w_t^{(i)} \delta ( \mathbf{x}_{0:t} - \mathbf{x}_{0:t}^{(i)} ) \tag{1} \] 베이즈 필터는 상태변수 \(\mathbf{x}_t\) 의 조건부 확률밀도함수인 사후 확률밀도함수 \(p(\mathbf{x}_t | \mathbf{z}_{0:t}, \mathbf{u}_{0:.. 2021. 7. 11.
Tensorflow2로 만든 DDPG 코드: BipedalWalker-v3 OpenAI Gym에서 제공하는 BipedalWalker-v3 환경을 대상으로 DDPG 알고리즘을 Tensorflow2 코드로 구현하였다. BipedalWalker-v3는 DDPG로 학습하기에는 난해한 문제로 알려져 있다. 하이퍼파라미터에 매우 민감하기 때문이다. 학습결과는 다음과 같다. 500회의 에피소드로 학습한 결과다. 추세를 볼 때 그 이상 학습한다면 더 좋은 결과를 얻을 수도 있을 것 같다. 학습하기 전 워커의 움직임은 다음과 같다. 아래는 학습 중간에 얻은 결과다. 다음은 학습이 끝난 후 워커의 움직임이다. DDPG 코드는 액터-크리틱 신경망을 구현하고 학습시키기 위한 ddpg_learn.py, 이를 실행시키기 위한 ddpg_main.py, 학습을 마친 신경망 파라미터를 읽어와 에이전트를 구동.. 2021. 7. 9.
가치 이터레이션 (Value Iteration)과 LQR 이번에는 벨만 최적 방정식을 이용하여 이산시간(discrete-time) LQR을 유도해 보도록 하자. 정책 이터레이션과 마찬가지로 마르코프 결정 프로세스(MDP)는 결정적(deterministic) 프로세스로 가정하고 환경 모델도 다음과 같다고 가정한다. \[ \mathbf{x}_{t+1}=A \mathbf{x}_t+B \mathbf{u}_t \tag{1} \] 보상(reward)도 동일하게 다음과 같이 정의한다. \[ r(\mathbf{x}_t, \mathbf{u}_t)= -\frac{1}{2} \left( \mathbf{x}_t^T Q \mathbf{x}_t+ \mathbf{u}_t^T R \mathbf{u}_t \right) \ \tag{2} \] 여기서 \( Q=Q^T \ge 0\), \(R=R.. 2021. 6. 23.
정책 이터레이션 (Policy Iteration)과 LQR 벨만 방정식을 이용하여 이산시간(discrete-time) LQR을 유도해 보도록 하자. 여기서 마르코프 결정 프로세스(MDP)는 결정적(deterministic) 프로세스로 가정한다. 결정적 프로세스이므로, 특정 상태변수에서 행동이 정해지면 다음(next) 상태변수를 확정적으로 계산할 수 있다. 환경 모델은 다음과 같이 표현된다. \[ \mathbf{x}_{t+1}=A \mathbf{x}_t+B \mathbf{u}_t \tag{1} \] 보상(reward)도 확률변수가 아닌 확정된 값으로 주어지며 다음과 같이 정의한다. \[ r(\mathbf{x}_t, \mathbf{u}_t)= -\frac{1}{2} \left( \mathbf{x}_t^T Q \mathbf{x}_t+ \mathbf{u}_t^T R \.. 2021. 6. 22.
[CR3BP-4] 자코비 적분 (Jacobi Integral) CR3BP의 무차원화된 운동방정식은 다음과 같았다. \[ \begin{align} & \ddot{x}-2 \dot{y} - x = - \frac{ (1-\mu)(x+\mu) }{r_{13}^3 } - \frac{ \mu (x+\mu-1) }{ r_{23}^3 } \tag{1} \\ \\ & \ddot{y}+2 \dot{x} - y = - \frac{ (1-\mu) y }{r_{13}^3 } - \frac{ \mu y }{ r_{23}^3 } \\ \\ & \ddot{z} = - \frac{ (1-\mu) z }{r_{13}^3 } - \frac{ \mu z }{ r_{23}^3 } \end{align} \] 여기서 \[ \begin{align} & r_{13}= \sqrt{ (x+\mu)^2+y^2+z^.. 2021. 6. 16.
[PF-1] 순차 중요 샘플링 (Sequential Importance Sampling) 베이즈 필터(Bayes filter) 문제는 측정값의 시퀀스 \(\mathbf{z}_{0:t}\) 와 제어입력의 시퀀스 \(\mathbf{u}_{0:t-1}\) 을 조건으로 한 상태변수 \(\mathbf{x}_t\) 의 조건부 확률밀도함수 \(p(\mathbf{x}_t | \mathbf{z}_{0:t}, \mathbf{u}_{0:t-1})\) 을 계산하는 문제였다. 상태변수 \(\mathbf{x}_t\) 의 사후(posterior) 조건부 확률밀도함수\(p(\mathbf{x}_t | \mathbf{z}_{0:t}, \mathbf{u}_{0:t-1})\) 이 주어지면 다양한 종류의 상태변수 추정이 가능하다. 예를 들어 칼만필터(Kalman filter)는 최적 MMSE(minimum mean-square .. 2021. 6. 13.
베이즈 필터 (Bayes Filter) 베이즈 필터(Bayes filter)는 이산시간(discrete-time) 확률 동적 시스템(stochastic dynamical system)의 상태변수를 추정하기 위한 확률론적인 방법으로서 칼만필터를 비롯한 대부분의 상태변수 추정 알고리즘의 근간을 이룬다. 베이즈 필터 문제는 초기 시간 \(0\) 부터 시간스텝 \(t\) 까지의 측정값 시퀀스 \[ \mathbf{z}_{0:t} = \{\mathbf{z}_0, \mathbf{z}_1, ... , \mathbf{z}_t \} \tag{1} \] 와 초기 시간 \(0\) 부터 시간스텝 \(t\) 까지의 제어입력(또는 행동)의 시퀀스 \[ \mathbf{u}_{0:t} = \{\mathbf{u}_0, \mathbf{u}_1, ... , \mathbf{u}_.. 2021. 6. 8.