차동 구동과 목표점 제어
바퀴 속도로 위치를 갱신하고 제어 오차·주기·제한의 영향을 비교합니다.
진도 0%
레슨
- 바퀴 속도와 몸체 속도
바퀴 반지름과 간격으로 선속도·각속도를 계산합니다.
- 시간 간격과 자세 적분
고정 dt에서 직선·회전의 위치를 적분합니다.
- 오차·P 제어와 PID
일차 속도 모델에서 P와 PID 응답 및 적분 포화를 비교합니다.
- 목표 접근과 흔들림 실험
C HAL의 가상 바퀴를 Python 목표점 제어기로 구동하며 이득·주기를 바꿉니다.
차동 구동과 목표점 제어 미션
m05-service-action 미션 solution 전체를 포함한 starter에 MotionActions를 추가합니다. 기존 고정 PWM Actions와 회귀 검사는 보존하고 새 제어기만 C HAL 기반 위치 갱신을 사용합니다.
요구사항
- 반지름 0.05m·바퀴 간격 0.30m의 차동 구동 모델을 HAL step에 연결합니다.
- dt=0.05초·최대 선속도 0.30m/s·최대 각속도 1.0rad/s·도달 반경 0.10m를 설정으로 관리합니다.
- 목표 액션이 제어기를 구동하고 거리 피드백을 발행합니다.
- 고정 조건에서 이득 2개와 주기 2개의 오차·부호 전환·정착 시간을 비교합니다.
- motion.py의 역기구학/PWM 변환과 회전 우선 TODO를 완성하고 motion_config.json·README의 단위와 관측 지표 정의를 함께 제출합니다.
- 목표점 제어는 거리·방향 P이며 PID의 적분 제한·포화 비교는 pid_model.py의 별도 일차 속도 실험입니다. 목표 2초 후 0으로 변경, 총 8초, kp=1/4·dt=0.05/0.20으로 비교합니다.
완료 기준
- 좌우 바퀴 2rad/s로 1초 이동한 직선 거리가 0.10m이며 오차 1e-6 이내입니다.
- 동일 반대 바퀴 속도에서 선속도가 0이고 회전 방향이 기대값과 같습니다.
- 장애물 없는 목표 (1,0)m에 20초 이내 도달하고 이후 2초간 도달 반경을 유지합니다.
- 출력 한계를 유지한 일차 속도 모델에서 적분 제한 전후의 포화 표본 수·최대 적분 상태·최종 오차를 수치로 제출합니다.
- bash check.sh가 C 44개·기존 Python 61개·액션 20개·전체 Python 95개를 통과하고 목표 로그 SUCCEEDED time=3.50 x=0.904558 pwm=(0.0, 0.0)을 출력합니다.
- 입력 속도 제한은 두 비교군 모두 유지합니다. protect=False/True로 적분 제한 전후 peak_i·saturation·error를 비교하며 미정착은 settled=None으로 보고합니다.
bash check.sh미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 입력·단위·실패 조건과 변경 이유를 설명합니다.
- 이전 모듈의 회귀 테스트와 이번 실험 근거를 함께 제출합니다.