본문 바로가기

전체 글324

텐서와 변수 - 2 Tensorflow의 텐서는 일정한 데이터 타입(dtype이라고 함)을 가진 다차원 배열이다. numpy의 ndarray과 매우 유사하지만 변경이 불가능하다. 즉, 텐서는 생성된 후에는 변경할 수 없는 상수(constant)다. 모델에서 텐서를 추출할 수도 있지만 모델에 관계없이 직접 텐서를 생성할 수도 있다. 먼저 몇 가지 Tensorflow 함수를 이용해서 텐서를 생성해 보자. 다음은 tf.constant를 이용한 텐서의 생성 예다. a0 = tf.constant(2) a1 = tf.constant([1.0, 2.0]) a2 = tf.constant([[1, 2, 3], [4, 5, 6]]) a3 = tf.constant([ [ [1.0], [2.0] ], [ [3.0], [4.0] ], [ [5.0.. 2021. 2. 10.
텐서와 변수 - 1 신경망은 일종의 수학 함수다. 입력 데이터를 신경망에 주면 각 레이어를 거치면서 여러가지 연산을 거쳐서 출력 데이터가 산출된다. 신경망 모델에 입력과 출력이 있듯이 모델 내부의 각 레이어에도 입력과 출력이 있다. 각 레이어의 입력은 신경망의 가중치(weight) 또는 파라미터와 벡터/행렬 연산을 거쳐서 출력을 산출하게 된다. 신경망의 파라미터는 학습을 시작하면 최적화 알고리즘에 의해서 그 값이 변경되고 반복적으로 업데이트 된다. 이와 같은 반복적인 업데이트를 통해서 목적함수를 최적화하도록 신경망의 파라미터를 계산하는 것이 딥러닝의 핵심이다. 텐서(tensor)는 Tensorflow에서 사용하는 데이터 구조로서 다차원 배열(n-dimensional array)이다. Tensorflow 프로그램에서는 모든 .. 2021. 2. 9.
좌표변환 방법 비교 좌표변환 방법으로서 방향코사인행렬(DCM), 오일러각, 그리고 쿼터니언에 대해서 알아보았다. 이제 각각의 장단점을 비교해 보자. 먼저 DCM은 9개의 파라미터로 좌표변환을 표현한다. 그 중 6개는 구속조건을 만족해야 한다. 구속조건은 DCM이 단위직교 행렬(orthonormal matrix)이어야 한다는 것이었다. 이 구속 조건을 맞추기가 쉽지 않다는 것이 DCM의 큰 단점이다. 시간이 흐름에 따라서 좌표계의 자세가 달라질 경우 DCM의 미분 방정식을 세우고 이 방정식을 적분하여 매시간 마다 DCM을 계산해야 하는데, 이 때 수치 오차 때문에 계산된 DCM이 단위직교 행렬이 안될 수가 있다. DCM은 반드시 단위직교 행렬이어야 하므로 강제적으로 단위직교 행렬로 만들어야 할 필요가 있는데, 이것이 쉽지 않.. 2021. 2. 8.
쿼터니언 (Quaternions) 오일러의 회전 정리(Euler's rotation theorem)에 의하면 모든 좌표변환은 어떤 회전축과 그 회전축을 중심으로 하는 한번의 회전을 통해서 가능하다. 쿼터니언(quaternions)의 정의는 이 회전축과 회전각에 기반을 두고 있다. 좌표계 \(\{a\}\)를 회전축 \(\hat{p}\) 를 중심으로 회전각 \(\beta\) 만큼 회전하여 좌표계 \(\{b\}\)로 변환했다고 하면, 좌표계 \(\{a\}\)에서 좌표계 \(\{b\}\)로의 쿼터니언 \(q_b^a\)는 다음과 같이 정의된다. \[ q_b^a= \begin{bmatrix} q_0 \\ q_1 \\ q_2 \\ q_3 \end{bmatrix} = \begin{bmatrix} \cos \left( \frac{\beta}{2} \ri.. 2021. 2. 8.
짐벌락 (Gimbal Lock) 3자유도 짐벌 시스템에는 3개의 고리가 있다. 각각의 고리는 자신이 가진 단일 회전축을 중심으로만 회전할 수 있다. 한 고리의 회전축은 다른 두 고리의 회전축과 서로 직각을 이루도록 만들어졌다. 가장 바깥쪽 고리(빨강색)는 짐벌 시스템의 외부에 지지되어 있는 축을 중심으로 회전한다. 중간에 있는 고리(녹색)는 가장 바깥 쪽 고리에 회전축이 부착되어 있다. 가장 안쪽 고리(파랑색)는 회전축이 중간 고리에 부착되어 있다. 따라서 가장 바깥쪽 고리(빨강색)가 회전하면 안쪽에 있는 두개의 고리도 함께 움직이지만, 가장 안쪽에 있는 고리(파랑색)가 회전하더라도 그 바깥 쪽 고리는 영향을 받지 않는다. 이와 같이 3개의 고리가 서로 직각인 회전축을 갖는 구조를 3자유도 짐벌 시스템이라고 한다. 이러한 짐벌 시스템의.. 2021. 2. 7.
오일러각 (Euler Angles) 오일러각 좌표변환 방법은 좌표계 \(\{a\}\)에서 좌표계 \(\{b\}\)로의 좌표변환을 단 3개의 파라미터로 표현하는 방법이다. 좌표변환은 3개의 파라미터만으로 표현할 수 있으므로 오일러각 방법은 가장 경제적인 좌표변환 방법이라고 말할 수 있다. 오일러각 방법은 좌표계 \(\{a\}\)의 특정 좌표축을 시작으로 3번의 연속적인 회전을 통해서 좌표계 \(\{a\}\)를 좌표계 \(\{b\}\)로 변환한다. 먼저 공학의 여러 분야에서 통상적으로 사용되는 3-2-1 오일러각에 대해서 설명해 본다. 3-2-1 방식은 좌표계 \(\{a\}\)의 \(z\)축을 중심으로 회전하여 좌표변환하고, 다시 변환된 좌표계의 \(y\)축을 중심으로 회전하여 좌표변환하며, 마지막으로 변환된 좌표계의 \(x\)축을 중심으로 .. 2021. 2. 7.
방향코사인행렬 (DCM) DCM은 Direction Cosine Matrix의 약자다. 방향코사인행렬 또는 회전행렬(rotation matrix)이라고 한다. 기호로는 \(C_b^a\) 라고 쓰고 위 첨자와 아래 첨자에 각각 좌표계를 표시한다. 그리고 좌표계 \(\{a\}\)에서 좌표계 \(\{b\}\)로의 DCM이라고 읽는다. DCM은 \(3 \times 3\) 행렬이다. 그러면 9개의 행렬 성분(element)이 있는데, 각각은 다음과 같이 정의한다. \[ C_b^a = \begin{bmatrix} \hat{a}_1 \cdot \hat{b}_1 & \hat{a}_1 \cdot \hat{b}_2 & \hat{a}_1 \cdot \hat{b}_3 \\ \hat{a}_2 \cdot \hat{b}_1 & \hat{a}_2 \cdot.. 2021. 2. 6.
벡터를 직교 좌표계로 표현하기 스칼라(scalar)는 크기만 가진 어떤 양이다. 반면에 벡터(vector)는 크기와 방향을 갖는 양이다. 벡터는 통상적으로 영문 소문자위에 화살표로 표기한다. 즉 벡터 \(u\)는 \(\vec{u}\)로 표기한다. 또한 벡터는 화살표로 그린다. 화살표의 크기는 벡터의 크기를 나타내며, 화살표의 방향은 벡터의 방향을 나타낸다. 벡터의 크기는 벡터의 절대값으로 표기한다. 벡터 \(\vec{u}\)의 크기는 \(\left\vert \vec{u} \right\vert\)다. 두 개의 벡터는 크기와 방향이 모두 같으면 '같다'고 한다. 아래 그림에서 두 벡터 \(\vec{u}\)와 \(\vec{w}\)는 출발점이 다르지만 크기와 방향이 같으므로 같다. 즉, \(\vec{u}=\vec{w}\) 이다. 벡터는 특정.. 2021. 2. 5.
직교 좌표계 물체의 위치와 운동을 표현하기 위해서는 기준점과 기준 좌표계(reference frame)가 필요하다. 기준점을 좌표계의 원점이라고 하며 물체의 위치를 기준점으로부터 좌표계의 각 축 방향으로 얼마큼 떨어져 있는지 숫자로 나타낸다. 좌표계로는 좌표계의 각 축이 직각을 이루는 직교 좌표계(Cartesian coordinate system)가 주로 사용되지만, 원통 좌표계(cylindrical coordinate system)와 구 좌표계(spherical coordinate system)등도 많이 사용된다. 직교 좌표계에서는 3차원 공간의 경우 통상적으로 각 축을 \(x, y, z\)축이라고 하든가 아니면 \(\hat{i}, \hat{j}, \hat{k}\) 축이라고 표기한다. 하지만, 좌표계가 여러 개가 .. 2021. 2. 5.
주파수 응답 주파수 응답(frequency response)은 안정한 LTI(선형 시불변) 시스템에 싸인 또는 코사인 파형(sinusoids) 입력을 가했을 때 나오는 정정상태 응답(steady-state response)이다. 입력 \(u(t)\) 가 시스템에 가해지는 시간이 \(t=0\) 이라면 초기값이 \(0\) 이라는 가정하에서 인과(causal) LTI 시스템의 출력은 다음과 같다. \[ \begin{align} y(t) &= \int_0^t h(t-\tau) u(\tau) \ d\tau \tag{1} \\ \\ &= \int_0^t h(\tau) u(t-\tau) \ d\tau \end{align} \] 여기서 \(h(t)\) 는 LTI 시스템의 임펄스 반응(impulse response)이다. 이제 입력.. 2021. 2. 5.
정정상태 응답과 과도 응답 영어로 steady-state response를 정정상태 응답, transient response를 과도 응답이라고 번역한다. 정정상태는 시스템의 출력이 안정되어서 시간이 흘러도 같은 값을 유지하거나 같은 패턴의 출력이 나오는 상태를 말한다. 과도 응답이란 출력이 \(0\)부터 시작하여 정정상태 응답으로 가는 동안의 과도기 응답을 말한다. 영어를 한자로 번역하고 표기는 한글로만 하기 때문에 오해하기 쉬운 용어가 됐다. 정정 행렬이라는 용어도 있는데 이 때 '정정' 은 영어로 positive-definite이다. '양의 값으로 규정된' 이라는 뜻이다. 아무튼 둘 다 정정이라고 번역한다. ‘과도’는 일상 용어로는 과일 깍는 칼을 말한다. 응답은 response를 번역한 것인데 '반응' 이라고 하기도 한다. .. 2021. 2. 5.
포텐셜 필드 방법 포텐셜 필드(potential field)의 아이디어는 목표점으로 이끄는(attractive) 인공적인 포텐셜 필드와 장애물로부터 멀어지게 내보내는(repulsive) 인공적인 포텐셜 필드를 형상공간에 구축하여, 로봇이나 비행체가 장애물을 피하면서 목표점에 다가갈 수 있는 운행 방향을 찾아보자는 것이다. 인력(attractive) 포텐셜은 로봇이나 비행체를 목표점으로 끄는 목적을 지니고 있으며 보통 파라볼릭(parabolic) 형태와 원추(conical) 형태, 그리고 이 둘을 결합한 형태를 사용하고 있다. 파라볼릭 형태의 포텐셜 필드는 다음 식으로 주어진다. \[ U_{att1} (\mathbf{q})= \frac{1}{2} k_a \left\vert \mathbf{q}_{goal} - \mathbf{.. 2021. 1. 29.
RRT* (RRT Star) 알고리즘 RRT* 알고리즘은 RRT 알고리즘과 기본 뼈대는 동일하다. 다만 RRT와 두 가지 차이점이 있는데, 첫째는 부모(parent) 노드의 재선정이고 둘째는 트리의 재구성(rewire)이다. RRT에서는 \(\mathbf{q}_{new}\)와 가장 가까운 노드 \(\mathbf{q}_{near}\)가 부모(parent) 노드가 되었지만, RRT*에서는 \(\mathbf{q}_{new}\)를 중심으로 일정 반경에 있는 노드(그림에서 \(\mathbf{q}_1, \mathbf{q}_2, \mathbf{q}_3, \mathbf{q}_4, \mathbf{q}_5, \mathbf{q}_{near}\))를 뽑고, 그 노드들을 \(\mathbf{q}_{near}\)와의 비용(cost) 비교를 통해 가장 적은 비용을 가진.. 2021. 1. 29.
진동 모드 해석 복소수는 실수부와 허수부를 갖는 수체계다. 실수부를 \(x\)축에, 허수부를 \(y\)축에 표시하면 복소수를 복소 평면상에 표시할 수 있다. 복소수는 보통 실수부와 허수부로 표현하지만 다음과 같이 크기와 위상각으로도 표현할 수 있다. \[ \begin{align} z &=x+jy \\ \\ &= r \cos \theta +j r \sin \theta \end{align} \] 여기서 \(r\)은 복소수의 크기, \(\theta\)는 위상각이며 각각 다음과 같이 계산할 수 있다. \[ r= \sqrt{x^2+y^2 }, \ \ \ \theta =\tan^{-1} \left( \frac{y}{x} \right) \] 오일러 공식(Euler formula)에 의하면 다음 식이 성립하므로, \[ e^{j \th.. 2021. 1. 26.