기울기 추정과 균형 동작은 같은 성공 조건이 아니다
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/온도 오차를 측정한 결과가 아니다.
그림 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의 α다.
θ̂₀=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는 실제 로봇 튜닝값이 아니다. 이상적인 연속 시간·정확 상태·지연/포화 없음에서 대입하면 다음과 같다.
두 근은 약-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/sample995ms | age5ms. 시간 조건 안이며 다른 검사도 충족해야 함 |
| now1000/sample994ms | age6ms. 현재 추정 무효·INHIBITED/정상 출력 불허 |
| clock/버전·축 변환 미상 | 임의 각도/현재값을 만들지 않고 차단·이유 기록 |
| abs(θ)>0.15rad | 이 예제의 국소 운용 구간 밖. 차단·재확인 요구 |
| 재부팅/장시간 누락 뒤 표본 도착 | 자동 재개 금지. 추정 초기화·상태/권한 확인 후 별도 재진입 |
관측 무효 때 현재 필터/정상 제어를 갱신하지 않고 원본 누락/기한·상태를 남긴다. 마지막 정상 추정은 별도 과거 기록이다. 명령 lease/고장/현재 권한 관문은 M04.05처럼 따로 유지한다. 소프트웨어 출력 불허를 실제 브레이크/로봇 정지의 증거로 바꾸지 않는다.
기본 완료와 실제 실증을 나눈다
기존 6장 출력 안정화와 연결하되 IMU 추정 필터·행동 출력 필터·제어기의 역할/지연을 같은 기능으로 합치지 않는다. 기본 완료는 제공 관측/필터·부호/포화/신선도 표를 계산하고 어떤 근거가 부족한지 설명한 상태다.
실제 센서 보정/장착·전력/부호·스케줄/driver·균형/넘어짐/복구 실증은 별도다. 계산된 안정근이나 부드러운 각도·duty0만으로 실제 장비의 균형 유지/정지·안전을 보장하지 않는다.