로보쌤

Encoder와 Odometry 연습문제 정답

시행일·최종 수정일: 2026년 9월 1일

정답을 보기 전에

먼저 각 문제에 자신의 말로 답해본 뒤 해설과 비교해 보세요. 표현이 달라도 핵심 개념과 계산 과정이 맞으면 정답으로 볼 수 있습니다.

← 강의와 연습문제로 돌아가기

1. 사용 중인 Encoder의 검출 방식, 출력 회로, PPR·CPR 정의와 장착 축을 조사하세요.

정답과 해설

Data Sheet에서 광학·자기 방식, Push-pull·Open-collector·Line-driver 출력, 전압과 최고 주파수를 기록합니다. PPR·CPR이 어느 축과 어느 Edge 기준인지, 감속기 전·후 어디에 장착됐는지도 명시합니다.

2. 바퀴를 정확히 10회전시켜 한 바퀴당 count와 반복 오차를 측정하세요.

정답과 해설

바퀴와 축에 기준선을 표시하고 저속으로 정·역방향 10회전을 각각 반복합니다. 총 Count를 10으로 나눈 값이 Count/rev이며 방향별 평균 차이는 Backlash·해독 부호·시작 경계 오차를 보여 줍니다.

3. A/B 상태 전이표를 구현하고 불법 전이 횟수를 기록하세요.

정답과 해설

정상 정방향은 00→01→11→10, 역방향은 반대입니다. 한 표본에서 두 Bit가 동시에 변하는 00↔11·01↔10 전이를 Error로 세고 Motor OFF·ON·최고 속도 조건에서 비율을 비교합니다.

4. 16-bit counter가 정·역방향으로 overflow하는 단위 시험을 작성하세요.

정답과 해설

(current-previous)&0xffff를 구하고 최상위 Bit가 1이면 65536을 빼 부호 있는 차이로 바꿉니다. 65533→3은 +6, 3→65533은 -6이 되어야 하며 한 주기 이동량이 반 범위를 넘지 않아야 합니다.

5. 저속 펄스 주기법과 고속 count 창 방식의 속도 오차를 비교하세요.

정답과 해설

기준 속도를 단계적으로 바꾸고 두 방식의 평균·표준편차·갱신 지연을 측정합니다. 저속에서는 Pulse 사이 시간법, 고속에서는 일정 Window Count법이 유리하며 전환점에서 출력 불연속과 정지 Timeout을 확인합니다.

6. 좌우 snapshot 시간차가 회전 Odometry에 만드는 오차를 계산하세요.

정답과 해설

시간차 Δt 동안 각 Wheel이 더 이동한 거리 vLΔt, vRΔt가 서로 다른 구간에 섞입니다. 그 거리차를 축간거리로 나눈 만큼 가짜 회전이 생기므로 같은 Hardware Latch 또는 최대한 가까운 Timestamp가 필요합니다.

7. 중간각 근사와 정확한 원호 적분을 여러 dt에서 비교하세요.

정답과 해설

같은 좌우 속도로 dt를 늘려 두 궤적의 최종 Pose Error를 계산합니다. 한 Step 회전량이 작으면 거의 같지만 dt·각속도가 커지면 차이가 늘어나며, 정확한 원호식 또는 더 높은 갱신 주기가 필요합니다.

8. /joint_states, /odom, TF의 이름·단위·timestamp 계약을 자동 검사하세요.

정답과 해설

Joint 이름은 URDF와 일치하고 Position은 rad, Velocity는 rad/s인지 검사합니다. Odometry는 header.frame_id=odom, child_frame_id=base_link이며 TF와 같은 Pose·Stamp를 사용하고 Timestamp는 단조 증가해야 합니다.

9. 10 m 직진 시험으로 좌우 유효 반지름을 보정하세요.

정답과 해설

미끄러짐을 줄인 저속과 실제 하중에서 왕복 반복합니다. 새 반지름은 현재 반지름×실측 거리/보고 거리이며 좌우 궤적 휨이 있으면 공통값만 바꾸지 말고 좌우 유효 반지름을 따로 추정합니다.

10. 양방향 10회전 시험으로 유효 축간거리를 보정하세요.

정답과 해설

반지름 보정 뒤 저속으로 시계·반시계 10회전을 수행합니다. 새 축간거리는 현재값×보고 각도/실측 각도이며 방향별 결과 차이가 크면 미끄러짐과 좌우 비대칭을 먼저 조사합니다.

11. 시계·반시계 사각형 시험으로 계통 오차와 비계통 오차를 분리하세요.

정답과 해설

각 방향을 여러 번 반복해 종점 분포를 그립니다. 방향에 따라 반대쪽으로 모이는 Pattern은 좌우 Radius 비대칭, 같은 방향 Bias는 회전 상수, 넓게 흩어지는 분포는 Slip 같은 비계통 Error를 시사합니다.

12. 타일·카펫·경사·짐 유무에 따른 최종 자세 오차를 비교하세요.

정답과 해설

동일 경로·속도·타이어 상태로 조건별 반복 주행하고 최종 x·y·yaw의 평균과 분산을 기록합니다. 마찰·하중이 유효 Radius와 Slip을 바꾸므로 운용 조건별 Calibration 또는 더 큰 Covariance가 필요할 수 있습니다.

13. 반복 주행 잔차로 pose와 twist 공분산을 추정하세요.

정답과 해설

시간 또는 경로 지점별 Ground Truth와의 x·y·yaw, v·ω 잔차를 모아 표본 Covariance를 계산합니다. 단위는 각각 m²·rad²·(m/s)²·(rad/s)²이며 거리·회전량에 따라 증가하는지 별도 모델링합니다.

14. 한쪽 Encoder freeze·jump·단절을 주입해 watchdog을 검증하세요.

정답과 해설

Count 고정, 큰 순간 Jump, Message 중단을 각각 넣고 명령 속도와 측정 속도의 불일치·Timestamp Timeout·물리 범위 초과가 제한 시간 내 탐지되는지 봅니다. 탐지 후 속도 0과 Brake, 수동 복구 조건까지 확인합니다.

15. Encoder·IMU·LiDAR 융합에서 사용할 변수와 제외할 변수를 근거와 함께 정하세요.

정답과 해설

Wheel Odometry의 전진 속도와 yaw rate, IMU의 각속도·Roll/Pitch, LiDAR Localization의 절대 Pose처럼 서로 보완되는 관측을 선택합니다. 같은 Wheel Data에서 나온 Pose와 Twist의 중복 정보와 관측 불가능한 축은 제외합니다.

학습 마무리

틀린 문제는 강의의 관련 장을 다시 읽고, 용어뿐 아니라 각 개념이 실제 로봇에서 어떤 역할을 하는지 설명해 보세요.

← 강의로 돌아가기

Encoder와 Odometry 연습문제 정답과 해설 | 로보쌤