PACE

Cover Image for PACE
#RL#Paper

sim-real gap 을 줄이기 위한 로봇의 동역학적 파라미터들을 탐색에 대한 알고리즘

파라미터 탐색 알고리즘은 CMA-Es 를 사용하고, 로봇의 config 에 들어가는 동역학 파라미터 값들을 찾는 것이 목표이다. (time delay, damping, 마찰계수 등등)

데이터 자체는 실제 데이터를 수집하고, Trajectory residual 이 가장 작은 파라미터 set 을 iterative 하게 찾으면서 population 을 정교화하는 방식을 이용한다.

PACE

  • Pricese Adaption through Continuous Evolution

PACE 는 sim-to-real gap 을 줄이기 위해서 PMSM 모터 액츄에이터의 모델링을 통해서 locomotion 학습을 real 로 전이가능 + 에너지 효율적이게끔 하는 것이 주된 목적

PMSM 에 의해 동작하는 로봇을 기반으로 연구가 진행되었는데, PMSM 모터의 효율성과 조작편의성 때문에 대부분의 보행로봇이 이 모터를 사용한다.

Physics-Grounded Energy Model

empirical 한 방법이 아닌, first-principle, 기초적원 원리들을 기반으로 로봇의 물리적 에너지 소비를 모델링한 것을 의미

image1

  • Actuator Modeling 이후에 실제와 시뮬레이션의 로봇 움직임 궤적이 유사함을 보여주는 것

  • 맨 아래 그래프는, 실제-시뮬레이션 로봇 간의 joint position, joint velocity 오차 (차이) 를 3가지 메소드별로 시각화한 것.

    • No model / SOTA Actuator model / PACE

모델링

모델링 방식의 접근법은 크게 2가지가 존재

물리적 이론지식을 기반으로 한 (1) Physics-based modeling, 실제 데이터를 기반으로 한 (2) Data-driven modeling

최근 로보틱스 분야에서는 자유도가 큰 로봇에 대해 정교하게 동역학 기반의 Model based 구동에서 인공신경망을 이용한 Data-drven 방식으로의 보행의 트렌드를 가지고 있다.

대부분의 빅테크 로봇들 모두가 data-driven 방식으로 구동된다.

(1) Physics-based modeling

  • 로봇의 물리 모델을 간략화하고, 도메인 랜덤화를 적용해 적은 real world data 를 이용한다.
    • Rigid Body dynamcis 의 정교함을 요구하기 때문에 튜닝하는것이 매우 어렵다.

(1) 방식에 (2) 를 결합해, 로봇의 모델링 에러들을 보완하는 방식이 Residual Dynamics 접근법이다.

Residual Dynamics 는 동역학 물리모델이 설명하지 못하는 Gap=Residual 을 신경망을 이용해서 학습하는 방식이다.

Fully Dynamics model 은 복잡한 물리적 가정을 최소화하고 데이터를 믿고 시스템에 대한 역학들을 학습하는 방법을 의미한다.

외에도 다양한 접근법들이 존재한다.

Online adaption

  • offline training 이후에 실제 로봇을 deploy 이후, online fine-tuning 을 통해서 discrepancies(차이) 를 계산해 신경망을 업데이트한다.

+Domain Randomization

  • 실제 로봇과 시뮬레이션 로봇을 동일하게 세팅하는 것은 불가능하다.
  • 시뮬레이션 환경을 Random 하게 초기화
    • 로봇 관절 stiffness, damping : 관절의 뻑뻑한 정도
    • 질량 mass : 무게중심 변경 등
    • 마찰력 : 지면의 마찰력을 변경
    • 시각적 파라미터 : 조명 온도, 카메라 노이즈 등 센서

PACE introduction

PACE sim-real gap 을 capture 할 수 있는 자그만 parameter set 를 제안

실제 로봇은 drive dynamics 는 모터+기어+제어기 등 마찰과 백래시, 전압강하 등의 요인으로 인해 비선형적 특징을 가질 것이다. 이런 비선형적 패턴을 이해하고 구현하기 위해서는 복잡한 신경망 구조를 사용하는 것이 필연적이다.

하지만, PACE 논문에서는 로봇의 관절 움직임 자체는 명령에 기반하여 선형적으로 동작한다는 것을 기반으로해, 간단한 파라미터 set 을 제안한 것이다.

먼저, 나는 휴머노이드 로봇을 처음 접하다보니, 관절들이 어떻게 동작하는 것인지에 대해서 공부해보았다.

Joint Position 기반 로봇의 관절을 움직일때, 명령으로 내려주는 값들은 관절의 각도 (Radian) 값이다. 관절 각도를 몇도 만큼 움직여라. 라는 식이다.

  • Target:qˊ,Actual:qTarget : \acute{q}, Actual: q

그리고 대부분의 모터 제어에 사용되는 PID 제어기는 (Target - Actual) 을 줄이게끔 모터를 제어한다.

  • 그리고 여기서 오차가 클 수록 목표지점까지 움직이는 속도가 빨라진다.

    • 만약 Target 과 Actual 각도 차이가 크면, 모터가 급격하게 움직이게 된다.
  • P proportional : 오차의 비례하여 속도 제어

  • I Integral : Steadystate error 를 제거하기 위해서, 오차의 적분텀 = 누적오차에 의해 조작

    • 과거부터 오차를 누적한다. 단순 Postion 차이만큼 로봇 팔을 움직인다고하면 중력의 영향으로 인해 실제로는 로봇 팔이 움직이지 않을 수도 있음. 이럴때, 오차를 계속 누적해서 누적된 값만큼의 힘을 추가로 조작하는데 이용함.
    • 이때 발생할 수 있는 문제 Overshoot : 중력의 힘을 거스를 정도로 힘이 생길때의 I 값이 중력 힘과 정확히 일치하는 크기가 되는데, 로봇 팔이 목표지점까지 움직이는 동안에도 I 에는 오차가 쌓이게됨. 목표지점에 도달하고 나서도 I 값에 의해서 살짝 넘어가는 상황이 발생하고 이를 overshoot 라고 함. 목표지점을 넘어가고 난 후, 음수 (-) 크기의 오차에 의해서 I 값도 보정되면서 안정화되긴한다.
  • D Differential : 오차의 변화율, 미분값에 의해 조작

  • Steadystate error : 시스템이 목표지점에 도달하여 정상 상태에 있지만, 실제로는 약간의 오차가 존재하는 상태

pid

위 이미지처럼, 실제 로봇의 제어를 위한 PID 제어기는 비선형 요소들이 많이 존재한다.

PACE 에서는 로봇 제어에 대한 특성이 선형적임을 empirical 하게 제시하고, 로봇 시스템을 Linear Spring-Damper 시스템으로 가정한다.

  • Spring : P term 이 오차에 비례해 힘을 내므로 Spring 같다

    • 용수철의 관성력을 생각해보면, Δx\Delta x 에 비례해 힘이 세진다. 즉, Δq\Delta qΔx\Delta x 라고 치부하면, 일종의 스프링 시스템과 동치이다.
  • Damper : 속도에 비례해 저항하는 힘을 내는 Damping

  • 선형임을 가정함으로써, 최적화에서의 이점을 가진다.

    • 비선형 수식의 경우에는 최적화 수식을 사실상 풀어내지 못해서 Approximation 하는 경우가 많다.

+복잡한 Terrain(바닥 접촉이 불균형한 지형, 미끄러운 지형 등) 에서의 최신 Legged robot 제어는 MPC (model predictive control) 과 PPO (Proximal Policy Optimization), IPO, TRPO 등등을 사용한다.

+실제 Real world 에서의 Environment 의 경우에는 현재 state 에 대해 전체적인 정보를 알 수 없다. 이를 Partially Observable Markov Decision Process = POMDP 라고 한다.

  • POMDP 는 policy 가 제한적인 정보를 사용하면서 Fully Observable MDP 에 비해 학습이 어렵다.
    • POMDP 에서의 학습 한계점들을 발전시킨 RL 학습 메소드
      • 대용량 RL 학습
      • teacher-student distill 기반 학습
      • 비대칭 actor-critic

Reward

RL 에서의 가장 어려운 부분이 Reward Term 설계이다. 대부분 hand-crafted 10개 이상의 Reward term 을 만들어야하는데, 튜닝하는게 어렵다.

  • Constraint-based 형태들도 있는데, 얘네들은 Reward term 복잡도를 contraints choice + scaling 으로 옮기는 것에 불과하기 때문에, 어려운 것은 마찬가지이다.

PACE 에서는 Actuator 의 Energy Loss 에서 Reward term 을 구성함. (총 4개 term 으로 구성)

에너지 손실 모델링은 크게 3가지로 분류 가능

  • Low fidelity : 모터의 열손실 등 일부 physics term 만을 도입
  • High fidelity : 공기저항, 열손실 등 다수 physics term 도입
  • Pseudo-approximation 의사근사모델 : total losses 중 20% 를 열손실 가정하는 등의 방법

*PACE 에서 만든 Reward 는 PMSM 모터 기반 로봇에 특화된 에너지 손실의 지배적 source 를 잘 표현할 수 있는 식이다.

PACE Pipeline

크게 보면 3가지 단계로 구성된다.

  1. Data 수집 : PD 제어기를 이용해서 (Joint Impedence control) 다리 움직이기 (in-air, 물리적 영향을 줄이기 위해 공중에서 관절 움직임.)
  2. 수집 데이터로 PD Gain 에 해당하는 K,D 하이퍼파라미터 튜닝 → Real-Sim 로봇의 궤적 맞추기
  3. Policy 학습 이후 zero-shot inference

Collection

데이터 수집의 전제조건은 다음과 같다.

(1) base 를 고정시킨 상태에서 데이터를 수집한다. (motion-cross coupling 을 무시한 상태)

4족보행 로봇의 경우와같이 대칭 plane 을 가진 로봇의 경우 좌측 발과 우측 발의 이동 궤적이 수학적으로 대칭을 이루게된다.

즉, wrench (힘 + 토크) 기반의 net force 를 상쇄할 수 있다.

위 이유로 인해서, net force 가 상쇄되니 base 를 fixed 한 상태에서 데이터를 수집해도 무방하다.

(2) contact 없이 공중 (in air) 상태에서 데이터를 수집한다.

in stance (지면과 맞닿아있는 경우) 에서는 base 관성이 joint 역학을 지배해버리기 때문에 공중에 띄워 leg,drive dynamics 를 isolate 시킨다

(3) gait frequency

로봇의 걸음과 관련된 주파수와 Sampling 주파수 사이의 관계를 추가로 공부하였다.

관련하여 공부한 내용들을 적고, 실험에서 이 내용을 어떻게 다루는지 후술하였다.

Continuous 한 실제 세계의 신호들을 읽기 위해서는 이 신호를 Sampling 해서 읽어야한다. 이때, 이 샘플링 주기와 신호의 주기의 관계가 신호 해석에서 주요하게 다루어진다.

나이퀴스트 주파수 : 샘플링 hz 가 신호의 hz 의 2배 이상이면, 신호가 왜곡되어 읽힌다.

만약, Sampling hz = 10Hz, 0.1s, 원본 신호인 sin 신호를 해석 가능

신호의 hz = 1Hz

signal1

신호의 Hz = 5Hz = 나이퀴스트 주파수 = 샘플링 Hz / 2, 아무 신호도 나오지 않는다.

signal2

신호의 Hz = 7Hz > 나이퀴스트 주파수 : 신호가 왜곡된다.

  • 사진을 보면, 원래 신호와는 전혀 관계없어 보이는 신호가 샘플링된다.

signal3

위 이론을 로보틱스에 적용해보자. 로봇에게 명령을 내리는 것은 policy 가 담당하고,

로봇 모터에 명령을 내리는 신호의 Hz 가 f_policy 라고 했을때, f_policy 는 일종의 신호 역할을 하는 것이다.

그리고 이 신호를 이용해서 실제 모터에서 사용할 신호를 reproduction 해야하는데, 이 과정에서 sampling 을 하게 된다. 이 sampling 주기를 fmotorf_{motor} 라고 했을때,

fmotorf_{motor} 는 나이퀴스트 주파수인 fpolicy/2f_{policy} /2 보다 작아야한다.

신호의 Hz 는 아래 수식을 만족해야한다.

fmotorfnyquist=fpolicy/2f_{motor} \le f_{nyquist} = f_{\text{policy}}/2

즉, 상위제어기에서 아무리 빠르게 명령을 내리더래도, 모터에서 사용하는 신호 주기의 관계에 의해서 의도한대로 모터가 동작하지 않을 수도 있다.

논문에서는 ANIMAL bot 을 이용해서 실험을 진행할때, 이 주파수를 아래와 같이 설정했다.

  • fpolicy=400Hzf_{policy} = 400Hz : 1초에 400번 action 을 출력한다. (2.5ms)
  • fANIMAL=2Hzf_{ANIMAL} = 2Hz : ANIMAL bot 에 대해 gait frequency 가 1초에 2번
    • gain frequency : 1초에 2번씩 걸음
  • 400Hz 로 쏟아지는 Action 을 이용해서 2Hz 에 해당하는 cycle 을 만들어 걷는다.
  • nyquist 주파수에 한참 모자라는 값을 설정했다. 따라서 원본 신호가 왜곡되지 않을 것이다.

로봇의 transfer function

Hq(s)=esTdPτIas2+(d+Dτ)s+PτH_q(s) = e^{-sT_d}\frac{P_\tau}{I_as^2+(d+D_\tau)s+P_\tau}
  • Pτ,DτP_\tau, D_\tau : joint level PD gains (gain : 신호(오차) 를 얼마나 증폭시킬 것인가)

  • PτP_\tau 를 강성 (Stiffness) 라고 표현하는데, 그 이유는 다음과 같다.

회로이론에서 배운 Transfer Function + 위 수식에 대해 간단한 설명을 첨부한다.

Time 도메인에서 회로를 해석할때, 회로 내에 미분텀들이 섞여있으면, 이 식을 풀어내는게 매우 어렵다. 그래서 Time -> Frequency 도메인으로 회로를 변환해 해석하는 경우가 대부분이다. 이 과정에서 라플라스 변환을 이용해서 f(t)라플라스변환F(s)f(t) \rightarrow_{라플라스변환} F(s) 과 같이 변환한다.

위 Transfer function 은 Time domain 에서의 관절 움직임 명령 q~(t)\tilde q(t) 와 동역학 방정식을 라플라스 변환으로 변환 후 계산해낸 식이다.

먼저, 동역학 방정식을 구해보면, 로봇의 관절을 움직이기 위해서 필요한 하드웨어 기반 힘, PD 제어기를 통해 만들어내는 소프트웨어 기반 힘 이 평형을 이루는 식을 아래와 같이 작성할 수 있다.

Iaq¨토크+dq˙마찰저항력=Kp(q~q)Kdq˙\underbrace{I_a \ddot q}_{토크} + \underbrace{d \dot q}_{마찰저항력} = K_p (\tilde q - q) - K_d \dot q
  • PD 제어기에서는 거리 차이에 비례한 힘 + 속도에 비례한 힘으로 모터 출력을 계산한다.

위 식을 한번 정리하면 다음과 같다.

Iaq¨+(d+Kd)q˙+Kpq=Kpq~라플라스변환Ias2+(d+Kd)s+KpQ(s)=KpQ~(s)I_a \ddot q + (d+K_d) \dot q + K_p q = K_p \tilde q \\ \rightarrow_{라플라스변환} I_a s^2 + (d+K_d)s + K_p Q(s) = K_p \tilde Q(s)

Transfer Function 은 입출력의 비 를 의미하므로,

H(s)=OutputInput=KpIas2+(d+Kd)s+KpH(s) = \frac{Output}{Input} = \frac{K_p}{I_as^2 + (d+K_d)s+ K_p}

논문에서 제시한 식은 Time delay term 을 곱해주어서 수식을 계산한다.

이 Transfer function 은 입력이 출력에 제대로 전달되는지, 얼마나 빠르게 전달되는지 등에 대한 정보를 담고 있다.

여기서 Gain 을 높이면 폴값을 고주파로 만드는 경향이 있고, 검증과 policy 훈련을 위해서 작은 gain 을 사용햇다고 한다.

Gain (PτP_\tau) 는 Spring 시스템의 강성 역할을 하는데, 휴머노이드의 다관절 구조에서 동역학 방정식을 떠올려보자.

F=ma=질량 * 가속도F=ma = \text{질량 * 가속도} 뉴턴 제 2법칙은 직선 운동 기준으로 적용되는 힘이고, 회전운동을 하는 경우 돌림힘은 τ=Iα=강성 * 각가속도\tau = I\alpha = \text{강성 * 각가속도} 의 공식을 사용한다. (관성은 회전 운동을 방해하는 역할의 질량과 동일한 역할을 한다.)

즉, 정지 상태에서의 동역학 방정식은 아래와 같이 표현할 수 있다. 이 방정식을 풀면 마찰이 없을때 그 물체가 갖고있는 고유한 궤적의 형태를 계산할 수 있다.

mx¨+kx=0m\ddot x + kx = 0
  • 위 식을 풀면 x=Asin(ωt)x = A\sin(\omega t) 형태의 값을 얻을 수 있고, 이를 통해 고유진동수 ω\omega 를 알아낼 수 있다.

그리고, 결론적으로 고유진동수를 계산하는 수식은 다음과 같다.

fn=12πKmf_n = \frac{1}{2\pi}\sqrt{\frac{K}{m}}
  • 고유진동수는 그 물체의 강성 KK 에 비례해 증가하고, 무게 mm 에 반비례한다.

즉, Transfer function 에서의 Gain 인 PτP_\tau 는 강성 역할을 하는데, Gain 을 증가시키면 PD제어기와 로봇몸체 전체가 결합된 시스템이 갖는 고유진동수가 증가하게 된다.

  • 전체 시스템 = closed loop system

  • 공진 현상 때문에, 고유진동수보다 외력 (명령의 주파수) 은 훨씬 큰 주파수를 가지게끔 설정한다.

  • 고유진동수가 높아지면, 외력의 주파수도 그에 맞추어 훨씬 높아지게 된다. 그리고 외력의 주파수가 빠르다는 것은 2초마다 골대 찍고오기1초마다 골대 찍고오기 를 시키는 것과 같은 것이다. 따라서, 외력의 주파수가 빨라지면, 하드웨어에도 과부하가 걸리고 하드웨어의 구조적 한계로 인해서 문제가 발생할 수 있다.

위 이유로 인해서 논문에서는 Gain 을 낮게 설정해 고유진동수를 낮출 수 있게끔 하였고, 외력의 주파수 또한 낮추어 하드웨어의 구조적 한계를 고려한 설정을 하였다.

  • 여기서, Gain 을 낮추어서 고유진동수의 boundary 를 낮추었다는 것이다. 여기서 아직 고유진동수는 구할 수 있는 값이 아니다. CMA-ES 알고리즘을 통해서 IaI_a 관성 값을 추정한 이후 시스템의 고유진동수를 계산할 수 있다.

최종적으로 사용한 파라미터는 다음과 같다.

  • IaI_a : 조인트별 관성
  • dd : viscous damping
  • τf\tau_f : coulomb friction
  • q~b\tilde q_b : joint bias
  • TdT_d : 명령 지연시간

Parameter Identification

PD gain 파라미터들은 상수 취급하고 최적화를 진행한다.

위 파라미터들에 대해서 추후 RL 에 사용될 simulation rate 와 같은 수치로 촬영된 joint target 을 replay 한다.

병렬적으로 environment 를 설정하고, 각 환경 ee 에 대해 joint trajetcory 를 측정한다. joint trajectory 는 seqential 하게 수집된 joint position , 궤적이다.

측정된 sim 상에서의 trajectory 와의 residual 에 대해 mean squared error 를 적용해서 loss 를 계산한다. (time averaged 를 적용한다.)

le=1ki=1kqirealq(i,e)sim2l_e = \frac{1}{k}\sum_{i=1}^k||q_i^{real} - q_{(i,e)}^{sim}||^2

그리고 모든 Env 에 대해 평균을 계산하고, loss 를 최소화하는 parameter set 를 CMA-ES 알고리즘을 이용해서 최적화한다.

CMA-ES 는 Env 갯수만큼 parameter set 를 산출하고, 이를 loss 함수에 넣어서 가장 loss 가 작은 파라미터를 찾아 parameter set 의 분포를 optimal 에 가깝게 좁혀나가는 알고리즘이다.

  • iteration 하게 parameter set 의 분포를 좁혀나간다.
  • *CMA-ES 알고리즘은 추후 따로 다루어보려고한다.

관절의 동작 가능 범위를 설정해두고, 명령 각도와 현재 각도 사이의 함수를 만들어, 명령 가능한 최대 각도를 qjhardq_j^{hard} 로 강제한다.

Reward term 은 4가지를 사용한다. 동역학 파라미터를 고정해두었기 때문에 4개 텀만 사용한다.

  • 속도 트래킹
  • 에너지
    • Ptotal=Pel+Pmechanical+PpotetialP_{total} = P_{el} + P_{mechanical} + P_{potetial}
    • 전기적 손실, 기계학적 힘, 중력퍼텐셜 힘
    • joint 속도가 base speed 에 비례해 커지기 때문에, normalization 을 진행해서
    • re=γvPtotalr_e = \gamma_v P_{total}
  • 충돌
  • 발의 착지속도

로봇들의 구조를 단순화하면, Mass (몸체, 다리링크, 등) 와 스프링 (관절의 탄성) 의 연결이라고 볼 수 있다.

이를 통해 로봇 다리의 고유 진동수를 계산할 수 있다. fn=12πkmf_n = \frac{1}{2\pi}\sqrt{\frac{k}{m}}

로봇들은 여러 관절과 여러 링크가 연결된 시스템이므로 아래와 같이 행렬로 표현이 가능하다.

q=[q1q2q3],M(q)=[m11m12m13m21m22m23m31m32m33],K=[k1000k2000k3]q= \begin{bmatrix} q_1 \\ q_2 \\ q_3 \end{bmatrix}, M(q) = \begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \end{bmatrix} , K = \begin{bmatrix} k_1 & 0& 0 \\ 0 & k_2 & 0 \\ 0 & 0& k_3 \\ \end{bmatrix}

  • q 는 각 관절의 joint position 을 의미. 관절의 각도를 radian 을 표현 Δθ\Delta\theta
  • M 은 질량행렬, m12m_{12} 는 2번 관절이 1번 관절에 가속도를 가하기 위해 필요한 관성을 의미
  • K 는 각 관절에 대한 강성을 의미

따라서, 용수철의 복원력 관점에서 보았을때, F=kΔx=Kq=[k1q1k2q2k3q3]F= k\Delta x = Kq = \begin{bmatrix} k_1q_1 \\ k_2q_2 \\ k_3q_3 \end{bmatrix} 모터의 회전운동 측면에서 보면, 이는 각 관절이 평형위치로 되돌아가려는 토크를 의미한다.

모터 자체는 평형위치로 되돌아가려는 성질을 가지고 있는 것은 아니고, 모터 제어에서 사용하는 PD 제어기에 의해서 이런 토크가 생성된다.

PD 제어기의 토크는 아래 수식에 의해서 정해진다.

τ=Kp(qqd)Kdq˙\tau = -K_p(q-q_d)-K_d\dot{q}
  • 위치변화량과 속도에 비례해 토크를 낸다. PID제어

  • 여기서 KpK_p 를 강성, qqdq-q_dΔx\Delta x 라고 바라보면, PID 제어기는 일종의 스프링 시스템이 된다.

    • 여기서 속도 텀은 스프링 시스템에는 포함되지 않는다. (Damping 역할이기 때문)

뉴턴 법칙에서, 토크는 각가속도와 회전의 힘에 저항하는 관성의 곱에 의해 표현된다.

τ=Iα\tau = I\alpha
  • II : 관성
  • α\alpha : 각 가속도

따라서, 위 가정에서 MM 각 관절끼리의 적용되는 관성, q¨\ddot{q} 이 관절 각도의 가속도이므로

M(q)q¨=Kq=>M(q)q¨+Kq=0M(q)\ddot{q} = -Kq \\ => M(q)\ddot{q} + Kq = 0
  • M(q)q¨=[q1(m11+m12+m13)..]M(q)\ddot{q} = \begin{bmatrix} q_1(m_{11}+m_{12}+m_{13}) \\. \\ . \end{bmatrix} 각 관절에 적용된 토크들의 합을 의미

그리고, 진동 시스템에서 q(t)=Asin(ωt)q(t) = A\sin(\omega t) 라고 가정하면,

q(t)¨=ω2Asin(ωt)\ddot{q(t)} = -\omega^2A \sin(\omega t)

이를 등식에 적용하면,

ω2M(q)Asin(ωt)+KAsin(ωt)=0(ω2M+K)Asin(ωt)=0-\omega^2 M(q) A\sin(\omega t) + KA\sin(\omega t)=0 \\ (-\omega^2 M +K)A \sin(\omega t) = 0

자명하지않은 해가 존재하려면, det(ω2M+K)=0\det(-\omega^2 M + K)=0 을 만족해야하는데,

이는 고유값 분해와 같다.

Ax=λx(AλI)x=0det(AλI)=0Ax = \lambda x \rightarrow (A-\lambda I)x = 0 \\ det(A-\lambda I) = 0
  • xx : eigen vector
  • λ\lambda : eigen value

즉, diagonal matrix 인 MM 과 결합된 ω2\omega^2 이 eigen value, AA 는 eigen vector

고유값 분해를 완료하면 구할 수 있는 ω\omega 는 각 관절의 고유진동수가 된다.

  • DoF 가 n 개인 로봇은 고유진동수도 n개 이다.

결론적으로, 로봇의 각 링크와 Joint 들은 하나의 스프링 시스템처럼 동작한다는 것이고, 수식에 의해서 각 관절에 적용되는 고유진동수를 구할 수가 있게 된다.

이제, 휴머노이드에 이를 적용해보자.

q(t)=Asin(ωt)q(t) = A \sin(\omega t) 에서, q(t) 는 시간에 따른 관절의 각도를 의미한다.

각 관절에 대해 고유값 ω\omegaAA 가 존재하고, 이를 통해서 mass 의 움직임을 생각해보면, AA 의 부호는 관절의 움직임 방향을 결정한다.

즉, 오른쪽 다리는 앞으로 가고, 왼쪽 다리는 뒤로 갈때, 부호는 반대가 되어야한다.

그리고, ω\omega 는 진동의 속도를 결정한다.

용어

전기자 Armature

  • 모터 내부의 전기자가 회전할때 발생하는 관성을 Armature 라고 부른다. 모터가 전기를 내는 원리가 전기자가 회전하면서 발생한다.
  • 모터
    • 전기자가 회전하면서 AC 교류가 발생하고, Commutator (정류자) 가 이를 직류로 바꾼다.
    • 정류자는 전기자랑 같이 회전하면서, 브러쉬와 마찰을 한다. 돌기가 있어서 중간중간 브러쉬와 연결이 끊어지고, 이때 전류 방향이 반대가 되어서 정현파 곡선이 + 로만 존재하는 형태가 된다.
  • 링크의 무게 + 모터, 감속기에서 발생하는 관성부하 등을 포함

점성 감쇠 Viscous Damping

  • 속도에 비례해 발생하는 저항
  • 모터 내부 윤활유, 베어링 등등에 의해 발생하는 저항 속도가 빠를 수록 커진다.
  • 모터의 열로 인해 구리스 온도 상승 → 구리스의 점도 하강 → 댐핑 계수 하강 등등의 이유로 실제로는 속도가 빨라질 수록 낮아지는 경향성도 있다.

Gain

  • 제어기에서의 Gain 은 오차에 민감한 정도를 의미
  • High gain : 아주 조금의 오차여도 모터에 큰 토크를 준다. 로봇이 stiff (딱딱하게), 민감하게 반응한다.

Poles

  • 시스템의 응답속도와 안정성을 결정
  • 분모를 0 으로 만드는 값 -> 극점

스프링댐퍼시스템, Stiffness

  • 모든 물체는 고유 진동수를 가진다. 고유진동수는 물체가 떨릴때 내는 고유한 진동수를 의미하고, 외력에 의해서 진동이 유발될때 내는 진동수이다. 외력은 충격에 의해서 발생이 가능한데, 충격 impact 는 이론상 모든 진동수를 가지고있다. 그래서 외력을 받은 물체는 모든 진동수를 발산하는데, 고유진동수와 일치하는 영역만 공진현상이 발생해서 신호가 증폭된다. 그래서 시간이 지나면서 고유진동수가 아닌 다른 진동수는 상쇄되고, 고유진동수만 남게된다.
    • 바이올린을 떠올리면 된다. (현을 손가락으로 튕겨준다.)
  • 따라서 물체가 가지는 고유진동수를 수식으로 나타내면 다음과 같다.
    • fn=12πkmf_n = \frac{1}{2\pi}\sqrt{\frac{k}{m}}
    • k : 강성 , m : 질량
    • 즉 고유 진동수는 강성 (stiffness, 팽팽한 정도, 딱딱한 정도) 에 비례하고, 질량에는 반비례한다.
      • e.g. 바이올린 현이 팽팽할수록 고음 (고주파수) 을 낸다.
  • 스프링은 복원력을 가지고 있다. 복원력은 수식으로 나타내면 다음과 같다.
    • F=k ΔxF = -k\ \Delta x
    • k : 강성, Δx\Delta x : 늘어난 정도
    • 즉, 강성이 높을 수록 복원력은 높아진다. 복원력이 높다는 것은 물체가 원래 자리로 빠르게 이동한다는 것을 의미한다.
    • 그리고 강성이 높을수록, 고유진동수도 높아진다.

행렬식 det=0det = 0

  • Ax=0Ax = 0 이라는 등식이 있을때, 자명한 해는 x=0x=0 이라는 해.
  • 자명하지 않은 해가 존재하기 위해서는 AA 행렬의 역행렬이 존재하면 안된다.
  • 만약 AA 의 역행렬이 존재한다면, AA1x=0x=0AA^{-1}x = 0 \rightarrow x=0 자명한 해만 존재하게 된다.
  • 따라서 자명하지 않은 해가 존재하려면, det(A)=0det(A) = 0 조건을 만족해야한다.
  • 반대로, det(A)0det(A) \ne 0 이면, 역함수가 존재한다.

방명록

Visitor Authentication Required

안녕하세요. 방명록을 남기시려면 로그인/회원가입 부탁드립니다. 매너챗 부탁드려요.

Log In / Sign Up
This blog is based on this source code on GitHub.