본문으로 건너뛰기

M26.02 · IMU·모터 드라이버·센서 필터·균형 제어

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • IMU의 각속도/가속도와 기울기 추정·bias/동적 오염·필터 주기의 영향을 구분한다.
  • 가상 국소 균형 모형의 피드백 부호·근과 포화/지연에 따른 해석 범위를 계산한다.
  • 센서 유효성·driver/출력 제한·차단 정책과 실제 물리 결과를 나눈 계약을 작성한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M26.01의 요구/HSI·주기/마감, M07의 샘플링/피드백과 M04의 단위/오류 계약을 연결한다. 일반 언어 문법 없이 가상 필터/국소 모형을 종이로 계산한다. 실제 IMU/모터·펌웨어/시뮬레이터 실행, 2륜 동역학·균형 유지/안전 실증은 수행하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

기울기 추정과 균형 동작은 같은 성공 조건이 아니다

IMU에서 바이트를 읽어 각도가 부드럽게 그려져도 로봇이 균형을 유지한다고 말할 수 없다. 관측 축/부호·시간이 잘못됐거나 필터 지연이 커졌을 수 있다. 제어식의 부호가 반대면 오차를 더 키우며, 출력이 포화되면 설계한 선형 모형과 다른 동작이 된다.

M26.01처럼 요구/HSI를 먼저 정하고 관측 → 추정 → 제어 요청 → 제한/driver → 물리 관측의 경계를 연결한다. 이 단위는 제공값/종이 계산의 기본 경로다. 실제 IMU·모터/전력에 연결하거나 로봇을 세워 운전하지 않는다.

아래 θ는 직립 기준0 부근의 한 축 몸체 기울기(rad), ω는 같은 축/부호의 각속도(rad/s)다. 앞 단원의 sensor_shaft 회전속도와 다른 물리량이며 바퀴 rpm을 그대로 θ/ω로 넣지 않는다. 실제 장착 변환/축·부호/보정이 필요하다. 예제는 연속 각도 분기/소각도 구간만 다루며 전체3D 자세·각도 wrap/쿼터니언 융합을 구현하지 않는다.

자이로 적분은 bias를 쌓고 가속도계 각도는 운동에 오염될 수 있다

자이로의 각속도를 같은 clock의 경과 시간으로 적분하면 각도 변화량을 얻는다. 일정 bias0.01rad/s를 보정하지 않고10s 적분하면 실제 회전과 별개로0.1rad의 오차 항이 누적된다. 이는 제공된 일정 bias 가정의 계산이며 실제 센서의 drift/온도 오차를 측정한 결과가 아니다.

균형 제어의 측정과 구동 경계: IMU 관측 → 자세 추정 → 제어 계산 → 모터 드라이버.그림 원본 크기로 보기

그림 M26.02-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.

가속도계는 단순히 '중력 각도 센서'가 아니다. 기울기 계산에 중력 방향을 쓰려면 다른 가속도와 축/부호·보정 조건을 확인해야 한다. Analog Devices AN-1057은 지속적인 추가 가속도가 기울기 해석을 오염시키고 필터가 응답 속도에 영향을 준다고 설명한다.

제공된 단일 평면의 tilt metric을 atan2(a_x,a_z)로 정의하자. 직립/정적 기준은a_x=0,a_z=g다. 실제 몸체는 직립이어도 선형 운동으로a_x=0.2g,a_z=g가 관측되면 이 metric은atan2(0.2,1)≈0.1973956rad(약11.31°)가 된다. 이를 실제 기울기라고 확정하면 가속도에 반응해 잘못 제어할 수 있다. 이 metric의 축/부호는 자체 제공 조건이며 모든 IMU 장착에 같은 식을 복사하지 않는다.

상보필터의 한 단계를 계산한다

상보필터는 여기서 자이로로 예측한 각도와 가속도계 기반 각도 후보를 섞는 제공 모형이다. 자이로의 짧은 시간 변화와 가속도계의 저주파 기준을 함께 쓰려는 방식이며 어느 쪽의 오류도 무조건 제거하는 장치는 아니다.

같은 축/단위·시각으로 정렬된 제공값을 쓰고, ω는 필요한 보정이 이미 반영된 입력이라고 준다. 이전 추정은 θ̂, 자이로 예측은 θ⁻, 가속도계 각도 후보는 θ_acc, 표본 간격은 Δt, 혼합 계수는0~1의 α다.

θk−=θ^k−1+ωkΔtθ^k=αθk−+(1−α)θacc,k\begin{aligned} \theta_k^-&=\hat\theta_{k-1}+\omega_k\Delta t\\ \hat\theta_k&=\alpha\theta_k^-+(1-\alpha)\theta_{acc,k} \end{aligned}

θ̂₀=0, Δt=0.01s, ω=0.2rad/s, θ_acc=0.1rad, α=0.98이면 첫 예측은0.002rad다. 첫 추정은0.98×0.002+0.02×0.1=0.00396rad, 같은 입력의 다음 추정은0.98×(0.00396+0.002)+0.002=0.0078408rad다. 계산 결과가 실제 자세 정답이라는 뜻은 아니다.

값을 많이 평활하면 출력이 덜 흔들려 보일 수 있지만 변화 대응이 늦어질 수 있다. 서로 다른 시각·늦은 가속도계와 현재 자이로를 같은 표본으로 합치지 않는다. 센서 배치/단위·clock, 취득/필터 출력 시각과 대기/계산·driver 지연을 같이 기록한다.

주기를 바꿀 때 같은 α가 같은 시간 특성을 뜻하지 않는다

이 예제는 α=τ/(τ+Δt)라는 이산화 관계를 선택했다. τ는 시간상수(s)이며 모든 상보필터 구현이 이 관계를 쓰는 것은 아니다. τ=0.49s, Δt=0.01s면α=0.98이다.

Δt를0.005s로 바꾸고 같은τ를 유지하려면α=0.49/0.495≈0.989899다. α를0.98로 고정하면 이 관계의 유효τ=αΔt/(1-α)=0.245s로 바뀐다. 반복 횟수만 두 배가 되는 것이 아니라 시간 응답도 달라진다. 실제 timestamp/누락/불규칙 간격에 어떻게 대응할지도 계약에 적어야 한다.

관측이 끊겼는데 이전 값을 새 표본으로 반복 적분/혼합하거나 Δt를 임의 상수로 덮지 않는다. 현재 추정의 유효성을 미확인으로 두고 정해진 차단/재초기화 절차를 적용한다. 다음 표본이 왔다고 긴 공백 동안의 정확한 자세가 자동 복구되는 것도 아니다.

직립 부근의 가상 모형으로 제어 부호를 확인한다

균형 제어는 불안정한 평형 근처의 상태를 되돌리는 문제를 포함한다. MIT Underactuated Robotics Ch3의 cart-pole은 국소 균형과 전체 비선형 문제를 구분한다. 여기서는 그 원문의 cart-pole 식/수치를 사용하지 않고, 부호를 읽기 위한 별도의 한 축 국소 모형을 제공한다.

시간s·기울기rad·추상 무차원 출력u에서 숫자식은 θ̈=4θ+2u다. 첫 계수는4s⁻², 두 번째는u당2rad/s²다. u=0이면 θ̈=4θ, 특성근±2s⁻¹ 중 양의 근이 있어 작은 오차가 커지는 모드가 있다. 실제2륜의 위치/속도·바퀴/몸체 결합/접촉·전력/지연은 포함하지 않는다.

제공 피드백은 u=-(3θ+2θ̇)다. 여기서 θ/θ̇는 모형의 정확한 상태라고 주었다. 실제 추정값으로 대체하면 추정 오차/필터 동역학이 추가된다. 이득의 단위는 각각u/rad·u·s/rad이며 숫자3/2는 실제 로봇 튜닝값이 아니다. 이상적인 연속 시간·정확 상태·지연/포화 없음에서 대입하면 다음과 같다.

θ¨+4θ˙+2θ=0λ2+4λ+2=0λ=−2±2\begin{aligned} \ddot\theta+4\dot\theta+2\theta&=0\\ \lambda^2+4\lambda+2&=0\\ \lambda&=-2\pm\sqrt2 \end{aligned}

두 근은 약-0.5858/-3.4142s⁻¹로 이 가상 선형 폐루프의 상태 오차가 감쇠하는 조건이다. 실제 센서 필터/표본화·driver/지연/포화·큰 각도에서도 같은 안정성이 보장된다는 결론은 아니다.

부호를 반대로 u=+(3θ+2θ̇)로 쓰면 θ̈=10θ+4θ̇, 특성식λ²-4λ-10=0의 근은2±√14다. 양의 근 약5.7417s⁻¹가 생긴다. 같은 이득 숫자라도 축/모터 방향·오차 부호가 달라지면 피드백 의미가 바뀌는 이유다. 실제 부호 확인은 검증된 별도 장비 절차의 범위이며 이 단위에서 모터를 돌려 확인하지 않는다.

출력 포화 뒤에는 원래의 선형 폐루프를 그대로 쓰지 않는다

예제 출력 한도를±0.2라고 정한다. θ=0.1rad, θ̇=0.1rad/s면 제어 요청은-(0.3+0.2)=-0.5다. 한도를 적용한u는-0.2이며 요청/제한값·이유를 둘 다 기록한다.

이 순간 가상 모형의 θ̈=4×0.1+2×(-0.2)=0이다. 각가속도가0이어도 현재 각속도0.1rad/s가0이 되는 것은 아니다. 바로 직립 복귀/정지했다고 기록할 수 없다. 이 순간 계산을 이후 전 궤적의 일정 가속도라고 확장하지 않는다. 포화가 걸리면 앞의 비포화 특성근만으로 동작을 판정할 수 없다.

센서가 부드러워 보이고 제한이 동작해도 균형 유지의 증거는 아니다. 목표 기울기/각속도와 위치·넘어짐/복구, 실제 명령/전력·관측·지연을 분리해 평가해야 한다. 필터/이득을 바꿀 때 M07.03 포화/샘플링과 M07.04 지연/주파수의 조건을 다시 검토한다.

모터 driver는 숫자를 실제 전력 경계로 넘기는 별도 계층이다

MCU/AI 계산의 정규화 출력과 실제 모터에 공급되는 전압/전류·토크는 다르다. 전력 driver는 논리 입력/방향·스위칭/전류 제한·고장/enable 같은 장치별 계약을 갖는다. 실제 부품의 전압/전류·열/보호·기본 출력과 brake/coast 동작을 확인해야 하며 MCU 논리 핀을 전력 공급으로 취급하지 않는다.

별도의 이상 PWM 산술 예에서0/12V 파형의 duty20%면 평균 전압은2.4V다. 이는 모터가 일정2.4V를 받거나 토크가20%라는 뜻이 아니다. 전류는 권선/역기전력·스위칭/부하 등과 관련된다. 제공 토크 상수0.1N·m/A·전류0.5A의 단순 관계 τ_m=K_tI는0.05N·m지만, duty만으로 이 전류를 알 수는 없다. 토크 기호τ_m은 앞 필터 시간상수τ와 다른 양이다.

이 PWM/전류 예는 앞의 추상u와 실제 driver 사이의 보정/동역학을 구현한 것이 아니다. 명령 제한·고장 차단/통신 ACK와 실제 전력/물리 정지 관측도 나눈다. 다음 M26.03 보드/전원 검토에서 인터페이스/전력 명세와 검토 자료를 연결한다.

신선도·상태 관문을 제어식 앞에 둔다

새 균형 예제의 요구/HSI 이름은R-B/H-B다. 유효 관측 나이를 같은 장치clock mcuB7/ms에서0~5ms로 정하고 양 끝을 포함한다. 앞 단일축 속도 예제R-A의30ms를 복사하지 않았다. 이5ms도 실제 균형 로봇에 적절하다고 입증한 값이 아닌 제공 조건이다.

제공 조건R-B/H-B의 처리
now1000/sample995msage5ms. 시간 조건 안이며 다른 검사도 충족해야 함
now1000/sample994msage6ms. 현재 추정 무효·INHIBITED/정상 출력 불허
clock/버전·축 변환 미상임의 각도/현재값을 만들지 않고 차단·이유 기록
abs(θ)>0.15rad이 예제의 국소 운용 구간 밖. 차단·재확인 요구
재부팅/장시간 누락 뒤 표본 도착자동 재개 금지. 추정 초기화·상태/권한 확인 후 별도 재진입

관측 무효 때 현재 필터/정상 제어를 갱신하지 않고 원본 누락/기한·상태를 남긴다. 마지막 정상 추정은 별도 과거 기록이다. 명령 lease/고장/현재 권한 관문은 M04.05처럼 따로 유지한다. 소프트웨어 출력 불허를 실제 브레이크/로봇 정지의 증거로 바꾸지 않는다.

기본 완료와 실제 실증을 나눈다

기존 6장 출력 안정화와 연결하되 IMU 추정 필터·행동 출력 필터·제어기의 역할/지연을 같은 기능으로 합치지 않는다. 기본 완료는 제공 관측/필터·부호/포화/신선도 표를 계산하고 어떤 근거가 부족한지 설명한 상태다.

실제 센서 보정/장착·전력/부호·스케줄/driver·균형/넘어짐/복구 실증은 별도다. 계산된 안정근이나 부드러운 각도·duty0만으로 실제 장비의 균형 유지/정지·안전을 보장하지 않는다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

본문의 필터/국소 모형과 관문 표를 종이로 계산한다. 장치·시뮬레이터·모터를 실행하지 않는다.

  1. bias0.01rad/s의10s 적분 오차, 가상a_x/a_z의tilt metric을 계산하고 왜 실제 기울기와 다를 수 있는지 적는다.
  2. α0.98/Δt0.01s·ω0.2rad/s/θ_acc0.1rad에서 첫 두 추정을 계산한다. Δt0.005s에서 같은τ0.49s를 유지하는α와 고정α의유효τ를 비교한다.
  3. 제공 모형에 올바른/반대 피드백을 대입해 특성근을 판정한다. θ0.1/θ̇0.1의 요청·포화값·순간 각가속도와 실제 복귀/정지의 차이를 설명한다.
  4. age5/6ms·축/clock미상·구간초과·재부팅을 관문 표로 판정한다. 추상 출력·PWM평균/전류토크/물리 결과를 구분한다.

막히면 모든 값에 축/단위·clock과 '관측/추정/요청/제한/실제'를 붙인다. 포화 뒤에도 비포화 특성식을 그대로 쓰거나 알 수 없는 각도를0으로 채우지 않는다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

자이로 적분과 가속도계 각도를 섞어 부드러워졌으니 항상 실제 기울기라고 한다. 제공 bias/가속도 반례·필터 첫 두 값과10→5ms 주기 변경의α/τ를 계산해 한계를 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

θ̈=4θ+2u에서u=+(3θ+2θ̇)를 사용했다. 올바른 부호와 두 특성식을 비교하고 계산된 안정근이 실제 포화/지연을 포함한 균형 보장이 아닌 이유를 적어라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

θ0.1rad/θ̇0.1rad/s에서 출력 제한±0.2가 동작했고,now1000ms의 표본은994ms다. 요청/제한·순간 모형 값과 관문 정책을 나누고, 실제 정지/재개·driver 근거를 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.