Python 센서 처리와 실행 기록
Python 함수와 오류 처리로 센서 입력 계약을 만들고 재현 가능한 실행 기반을 준비합니다.
진도 0%
레슨
- 값·조건·반복으로 센서 읽기
거리 목록에서 음수와 범위 밖 값을 분리하고 유효 개수를 출력합니다.
- 함수와 센서 입력 검증
단위가 mm인 정수 입력을 m로 변환하며 경계값과 빈 입력을 테스트합니다.
- 파일·예외와 오류 행 기록
JSONL 센서 파일을 읽고 잘못된 행 번호를 별도 기록합니다.
- 셸 경로·설정·로그
상대 경로 실행과 잘못된 설정을 검사하는 실행 스크립트를 만듭니다.
Python 센서 처리와 실행 기록 미션
트랙 첫 단계로 센서 기록 재생 기반을 만듭니다. 레슨에서 만든 JSONL 읽기와 경로 고정 실행기를 합치고, 거리 범위·설정 검증 TODO를 완성하여 다음 모듈의 좌표 변환이 사용할 메시지와 오류 기록을 남깁니다.
요구사항
- Python 표준 라이브러리만 사용하는 sensor.py와 config.json, README를 준비합니다.
- 메시지는 seq·stamp_s·frame_id·range_m를 갖고 유효 범위는 0.05~8.0m로 정합니다.
- check.sh는 python3 -m unittest discover -s tests를 실행하고 실패 시 0이 아닌 종료 코드를 반환합니다.
- 맥 셸과 Linux 셸의 경로·권한·로그 차이를 문서화하고 Linux 실행은 후속 환경에서 확인하도록 표시합니다.
- stamp_s는 기록 시작 기준 초, seq는 bool을 제외한 음수가 아닌 정수이며 frame_id는 공백만인 문자열을 거부합니다. 숫자 필드는 bool·문자열·NaN·무한대를 거부합니다. 추가 필드는 보존합니다.
- run.sh는 자신의 폴더로 이동합니다. config는 유한 숫자로 0.05 <= min_range_m <= max_range_m <= 8.0을 만족합니다.
- valid.jsonl·errors.jsonl은 재실행 시 덮어쓰며 오류에는 1부터 시작하는 물리 행 번호와 이유를 기록합니다. 빈 행도 오류입니다.
- 행 오류는 기록하고 종료 0, 설정·파일 전체 실패는 stderr와 종료 2로 구분합니다. 출력 저장 중 실패한 결과는 폐기합니다.
완료 기준
- 빈 파일·음수·8.0m 초과·파싱 실패 테스트를 통과합니다.
- 유효 3행과 오류 2행의 fixture에서 각각 3건과 2건을 기록합니다.
- 작업 폴더 밖에서 bash check.sh를 호출해도 테스트 경로를 찾습니다.
- bash check.sh에서 15개 테스트가 OK로 끝납니다. 시작 코드에서는 거리와 설정 범위 검사가 실패합니다.
- 외부 작업 폴더와 공백 출력 경로에서 valid=3 errors=2를 출력하며 오류 번호 [2, 4]를 기록합니다.
- 같은 fixture를 재실행해도 valid.jsonl은 3행입니다. 잘못된 설정은 새로운 출력 폴더를 만들지 않고 종료 2입니다.
bash check.sh미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 단위·유효 범위·형식 오류·파일 실패의 구분과 수정한 두 TODO를 설명합니다.
- 첫 모듈이므로 앞 모듈은 없습니다. 레슨의 파일 처리·실행 경로 회귀 테스트와 실제 실행 증거를 제출합니다.
- README에서 맥 실행 증거와 Linux 후속 검증 대기를 구분하고, 상대 출력 경로와 덮어쓰기 정책을 설명합니다.