Skip to main content

수업 1: 알고리즘이란 무엇인가?

이 수업에서는 알고리즘이 무엇인지 알아보고 VEXcode VR Python에서 알고리즘을 사용하여 더 다양한 동작을 하는 프로젝트를 만드는 방법을 알아봅니다. 알고리즘 프로젝트는 VR 로봇이 환경에 반응하도록 지시하는데, 이는 Dynamic Castle Crasher Challenge를 해결하는 데 필요합니다.

학습 성과

  • 알고리즘은 순서, 선택, 반복(루프)으로 구성되어 있다는 것을 알아봅니다.
  • 알고리즘은 VR 로봇이 수행하는 프로세스를 위해 프로그래밍 언어를 사용하여 구현된 정확한 명령 시퀀스라는 것을 식별합니다.

알고리즘

알고리즘은 VEXcode VR Python과 같은 프로그래밍 언어를 사용하여 구현된 정확한 명령어 시퀀스로, VR 로봇이 수행하는 프로세스를 위한 것입니다.

알고리즘의 기본 요소는 순서, 선택, 반복입니다.

  • 시퀀스 - 원하는 결과를 얻기 위해 프로젝트에서 동작과 명령을 결합하는 순서입니다.     
  • 선택 - 프로젝트에서 조건문 사용. if또는 if else과 같은 조건문은 프로젝트의 흐름에 영향을 미칩니다.
  • 반복 - 알고리즘은 종종 반복을 사용하여 특정 횟수만큼 단계를 실행하거나 특정 조건이 충족될 때까지 실행합니다. 이것을 "루핑"이라고도 합니다. 반복은 특정 횟수만큼 동작을 반복하거나 조건이 충족될 때까지 동작을 반복함으로써 프로젝트 흐름을 변경할 수 있습니다.  

Unit 8 챌린지의 이 예제 프로젝트는 알고리즘의 한 예입니다. 여기에는 디스크 무버 챌린지를 해결하기 위해 순서대로 배치된 루프, 센서 데이터 및 명령의 조합이 포함됩니다.

def main():
	for value in range(3):
		
		for value in range(3):
			# 1. Down Eye Sensor
			을 사용하여 디스크로 드라이브합니다. down_eye.near_object()가 아닌 경우:
				drivetrain.drive(FORWARD)
				wait(5, MSEC)
			drivetrain.stop()
			
			# 2. 디스크
			집어 올립니다. magnet.energize(BOOST)
			
			# 3. 거리 센서를 사용하여 목표 지점까지 주행
			drivetrain.turn_to_heading(180, DEGREES)
			while front_distance.get_distance(MM) > 200:
				drivetrain.drive(FORWARD)
				wait(5, MSEC)
			drivetrain.stop()
			
			# 4. 목표
			에 디스크를 놓습니다. magnet.energize(DROP)
			drivetrain.drive_for(REVERSE, 100, MM)
			
			# 5. 다음 디스크를 향하도록 회전합니다.
			drivetrain.turn_to_heading(0, DEGREES)
			wait(5, MSEC)
			
		# 6. 방향을 돌려 다음 목표지점으로 이동합니다.
		drivetrain.turn_to_heading(90, DEGREES)
		drivetrain.drive_for(FORWARD, 800, MM)
		
		# 7. 디스크
		드라이브트레인으로 전환.turn_to_heading(0, DEGREES)
		
	wait(5, MSEC)

순서

명령이 순서화되고 결합되는 방식에 따라 VR 로봇의 행동이 결정됩니다. 이 예에서 디스크를 옮기는 데 필요한 각 동작 세트는 3번 실행되고, VR 로봇은 다음 디스크 세트로 이동하여 모든 디스크가 목표 지점으로 돌아올 때까지 동작을 반복합니다. 로봇의 디스크 수집 순서를 보여주는 흐름도입니다. 왼쪽의 코드는 세 번 반복되는 메인 루프를 표시합니다. 오른쪽의 빨간색 순환 화살표는 센서 조건이 충족될 때까지(디스크를 찾거나 잡는 것과 같은) 실행되는 연속 루프를 나타내는 반면, 녹색 화살표는 디스크를 수집하고, 목표로 옮기고, 놓고, 다음 사이클을 위해 다시 배치하는 사이의 전환을 보여줍니다.

선택

이 프로젝트에는 센서 조건에 따라 실행되는 프로젝트의 부분을 결정하는 선택도 포함되어 있습니다. 첫째, 다운 아이 센서는 VR 로봇이 디스크 근처에 있는지 확인하는 데 사용되므로 디스크를 집어 올릴 수 있습니다. 그런 다음 거리 센서를 사용하여 VR 로봇이 목표를 넘어섰는지 확인하고 디스크를 떨어뜨립니다.  8장의 코드 조각에는 센서 판독값을 기반으로 로봇의 움직임을 제어하는 두 가지 강조된 조건이 포함되어 있습니다. 첫 번째로 강조된 조건은 down_eye.near_object()는 아니지만 로봇이 다운 아이 센서가 근처 물체를 감지할 때까지 전진하도록 지시하여 멈추기 전에 디스크에 접근할 수 있도록 합니다. 두 번째로 강조된 조건인 front_distance.get_distance(MM) > 200은 로봇이 근접 측정을 위해 전면 거리 센서를 사용하여 목표 지점에서 200mm 이내로 접근할 때까지 앞으로 주행하도록 지시합니다. 이러한 while 조건은 각 특정 센서 조건이 충족될 때만 로봇이 멈추도록 하는 루프를 생성합니다.

첫 번째while루프에서는 다운 아이 센서에서 보고된 센서 값에 따라 어떤 명령을 실행할지 선택합니다.

  • 물체가 감지되지 않을 때까지 VR 로봇은 앞으로 주행합니다.
  • 물체가 감지되면 VR 로봇이 멈춥니다.

두 번째while 루프에서는 거리 센서에서 보고된 센서 값에 따라 어떤 명령을 실행할지 선택합니다.

  • 보고된 거리가 200밀리미터(mm)보다 크면 VR 로봇은 앞으로 주행합니다.
  • 보고된 거리가 50밀리미터(mm) 미만인 경우 VR 로봇은 주행을 멈추고 프로젝트의 다음 부분으로 이동하여 전자석에 전원을 공급합니다.

반복

이 프로젝트는 반복 또는 "루프"를 사용하여 작업을 반복하고 보고된 센서 값을 반복적으로 확인합니다. 이 프로젝트에는 중첩된 루프가 포함되어 있습니다. 첫 번째 루프는 VR 로봇이 한 가지 색상의 디스크 3개를 모두 수집할 수 있도록 하고, 두 번째 루프는 해당 프로세스를 반복하여 놀이터에 있는 모든 디스크를 수집합니다. 이 코드는 두 개의 중첩 루프를 사용하여 로봇의 디스크 수집 프로세스를 제어합니다. 모든 색상의 디스크를 수집하는 루프라는 라벨이 붙은 바깥쪽 루프는 각 디스크 색상을 반복합니다. 그 안에는 한 가지 색깔의 디스크 3개를 모으는 루프라는 라벨이 붙은 내부 루프가 있는데, 이 루프는 현재 색깔의 디스크 3개를 모아서 놓기 위해 3번 반복됩니다. 이러한 설정은 로봇이 다음 색상으로 이동하기 전에 각 색상의 디스크를 세 개씩 수집하도록 보장하며, 각 루프 반복은 체계적인 수집 및 배치에 중점을 둡니다.

이 알고리즘은 디스크 무버 챌린지를 완료하기 위해 3개의 디스크를 3번 수집하여 반환하도록 설계되었습니다. 시퀀스, 선택, 반복을 사용하여 디스크를 반복적으로 수집하고 이동하는 데 적용되는 동일한 논리는 Dynamic Castle Crasher 챌린지와 같은 다른 챌린지에도 적용할 수 있습니다.

질문

아래 링크를 선택하여 수업 퀴즈에 참여하세요.

Google 문서 / .docx / .pdf