MATLAB 조건·반복과 명령 루틴
학습 목표
같은 이동 계획을 반복 실행하고, 잘못된 입력이나 배터리 조건에서 멈추는 규칙을 작성합니다.
실행 조건
MATLAB 또는 MATLAB Online을 사용합니다. 기본 활동은 MATLAB만으로 실행하며 드론 연결은 필요하지 않습니다.
목록을 순서대로 실행하기
시작 조건
예제의 네 이동을 사용하고 시작점은 (0,0)입니다.
진행 방법
- for로 이동을 누적하고 각 단계의 위치를 저장하세요.
- 최종 위치와 이동 거리의 합을 따로 확인하세요.
남길 결과
- 경로 그림과 단계별 위치.
moves_m=[.5,0;0,.5;-.5,0;0,-.5];
path_m=[0,0;cumsum(moves_m,1)];
plot(path_m(:,1),path_m(:,2),'o-');axis equal;grid on;
% TODO: for 버전과 단계별 위치를 대조하세요.
결과 기록·자가 점검
단계 | |
이동 x·y [m] | |
누적 위치 [m] |
확인할 점
- 원점에 돌아왔다고 전체 이동 거리도 0이라고 쓰지 않았는가?
- 위치 배열의 첫 행에 시작점을 포함했는가?
진행·정지 조건 넣기
시작 조건
이동 전 배터리 기록은 [80,78,15,14]%, 진행 기준은 20% 이상입니다.
진행 방법
- 이동 전에 배터리를 검사하고 기준 미만이면 break 하세요.
- 중단 단계·이유·마지막 위치를 기록하세요.
- 기준과 같은 20% 입력은 어떻게 처리되는지 확인하세요.
남길 결과
- 중단된 경로와 경계값 확인.
battery_pct=[80,78,15,14];position_m=[0,0];
for k=1:size(moves_m,1)
if battery_pct(k)<20
fprintf('Stopped before step %d\n',k);break;
end
position_m=position_m+moves_m(k,:);
end
disp(position_m);
% TODO: 20% 입력과 중단 경로를 확인하세요.
결과 기록·자가 점검
단계 | |
배터리 [%] | |
진행 여부 | |
위치·중단 이유 |
확인할 점
- 먼저 움직인 뒤 배터리를 검사하지 않았는가?
- 마지막 명령을 계속 반복하지 않고 종료했는가?
다른 계획에도 같은 규칙 적용하기
시작 조건
삼각형 경로 [.3,0;0,.4;−.3,−.4]를 입력으로 사용합니다.
진행 방법
- 계획 배열과 이동 전 Battery 배열, Battery 기준을 인자로 받는 함수를 작성하세요. 앞 활동의 이동 누적·Battery 검사 코드를 함수 안에서 사용하고, 단계별 위치와 중단 이유를 반환하세요.
- 삼각형 계획을 정상 입력으로 실행하세요. 이어서 한 이동만 허용 길이보다 크게 바꾼 복사본으로 실행하세요. 허용 길이와 바꾼 이동의 Index·변경 전후 값을 먼저 적고, 그 이동 전에 중단하도록 검사하세요.
- 두 실행의 수행된 이동 수·마지막 위치·중단 이유를 나란히 기록하세요. 좌표 단위와 정지 규칙 중 기체가 바뀌어도 유지할 항목을 적으세요.
남길 결과
- 함수 또는 함수 계약, 정상·오류 계획의 결과.
triangle_m=[.3,0;0,.4;-.3,-.4];
assert(norm(sum(triangle_m,1))<1e-12);
% TODO: validatePlan과 simulatePlan으로 역할을 나누세요.
결과 기록·자가 점검
계획 | |
검사 결과 | |
최종 위치 | |
반환할 상태 |
확인할 점
- 명령 전송 함수와 계획 검증을 한 코드에 섞지 않았는가?
- 실제 기체 없이 정상·중단 경로를 재현할 수 있는가?