컨트롤러: Tank Drive Exploration - C++
교사 도구 상자
-
이 활동의 목적
Tank Control 예제 프로젝트를 사용하면 학생들은 Controller를 사용하여 Clawbot을 제어할 수 있습니다. 학생들은LeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin(), RightMotor.spin(), leftMotorSpeed = Controller1.Axis3.position(),및rightMotorSpeed = Controller1.Axis2.position() 명령어의 매개변수를 조정하여 Clawbot의 각 모터 속도를 제어하고 컨트롤러가 모터 기능을 제어할 수 있도록 해야 합니다.
해당 지침에 대한 자세한 내용을 보려면 VEXcode V5의C++섹션에 있는 도움말을 참조하세요.
이 활동에서 학생들이 할 일은 다음과 같습니다.
-
탱크 제어 예제 프로젝트를 살펴보세요.
-
while True무한 루프구조의 사용법을 이해합니다.
-
로보 슬라롬 챌린지를 완료하세요!
교사 팁
학생이 VEXcode V5를 처음 사용하는 경우 VEX 지식 기반에서 많은 유용한개의 문서접근할 수 있습니다.
| 수량 | 필요한 재료 |
|---|---|
| 1 |
VEX V5 클래스룸 스타터 키트 (최신 펌웨어 포함) |
| 1 |
VEXcode V5 (최신 버전, Windows, macOS) |
| 1 |
엔지니어링 노트 |
| 1 |
탱크 제어 예시 프로젝트 |
| 2명 이상 |
장애물로 사용할 교실 물품 |
이 활동을 통해 컨트롤러를 프로그래밍할 수 있습니다.
1단계: 컨트롤러 프로그래밍을 시작하겠습니다.
- Tank Control예제 프로젝트를 엽니다.
-

엔지니어링 노트북에서 다음을 수행하세요.
이 프로젝트에서 Clawbot이 어떤 역할을 할지 예측하세요. 프로젝트에서 컨트롤러를 활용한다는 사실 외에 더 자세히 설명해 주세요.
조이스틱은 어떻게 로봇을 움직이나요? Clawbot은 무엇을 하고 있나요?int main () { //로봇 구성 초기화. 삭제하지 마세요! vexcodeInit (); //프로젝트 코드 시작. //(true) {LeftMotor.setVelocity (Controller1.Axis3.position (), percent); RightMotor.setVelocity (Controller1.Axis2.position (), percent); LeftMotor.spin (forward); RightMotor.spin (forward); wait (5, msec ); } return 0; } 동안 모터를 컨트롤러 축 위치로 설정하는 메인 컨트롤러 루프
교사 도구 상자
-
답변
- 이 프로젝트에서는 while True 무한 루프 구조를 활용하여 좌우 조이스틱의 위치가 어디에 있는지 지속적으로 확인합니다. 왼쪽(또는 오른쪽) 조이스틱을 위로 밀면 조이스틱을 얼마나 앞으로 밀지에 대한 속도가 설정됩니다.
- 따라서 조이스틱을 앞으로 밀수록 속도가 더 빨리 설정되고 모터가 더 빨리 움직입니다. 조이스틱을 뒤로 밀어내는 것도 같은 아이디어입니다. 조이스틱을 뒤로 밀수록 모터가 더 빨리 후진합니다.
교사 도구 상자
-
while True 무한 루프 구조
이 단계에서는 while True 무한 루프 구조의 중요성에 대해 설명합니다. 여러분은 학급 전체로 정보를 검토해야 합니다. Clawbot과 Controller를 사용하여 동작을 모델링할 수 있으며, 시간이 허락한다면 학생들에게 while True 무한 루프 구조 없이 프로그램을 실행하게 할 수도 있습니다.
While True 무한 루프 구조를 사용하면 어떤 이점이 있습니까?
여기에 while True 무한 루프 구조가 없는 우리의 프로젝트가 있습니다:
int main () {
//로봇 구성 초기화. 삭제하지 마세요!
vexcodeInit ();
//프로젝트 코드 시작.
//모터를 컨트롤러 축 위치로 설정하는 메인 컨트롤러 루프 LeftMotor.setVelocity
(Controller1.Axis3.position (), percent); RightMotor.setVelocity
(Controller1.Axis2.position (), percent); LeftMotor.spin
(forward);
RightMotor.spin (forward);
}이 프로그램이 실행되면 어떻게 될 것 같습니까? 그룹으로 토론합니다. 엔지니어링 노트에 예측을 적으십시오.
교사 도구 상자
-
구조 이해
while True 무한 루프가 없으면 프로젝트가 실행되자마자 각 모터의 속도 값이 설정되고, 프로젝트가 중지될 때까지 해당 값이 일정하게 유지됩니다. 즉, 조이스틱의 기본 위치가 축에서 0이기 때문에 조이스틱을 움직이지 않고 프로젝트를 실행하면 조이스틱을 움직이더라도 두 모터의 속도는 모두 0으로 유지됩니다.
마찬가지로, 왼쪽 조이스틱을 축 3을 따라 최대한 위로 움직인 후 그대로 유지한다고 가정해 보겠습니다. 위의 프로젝트를 실행하면 왼쪽 모터가 최대 속도로 움직이며, 조이스틱을 축 3을 따라 아래로 움직여도 해당 속도가 유지됩니다. 이는 Clawbot이 프로젝트가 실행되자마자 컨트롤러로부터 초기 명령을 받기 때문입니다. 그러나 루프가 없으면 해당 초기 값을 업데이트할 수 없습니다.
while True 무한 루프는 Clawbot에게 프로젝트 기간 동안 속도를 지속적으로 업데이트하고 실행하라고 지시합니다. 즉, 이 프로젝트에서 while True 무한 루프를 사용하면 조이스틱을 축 2 또는 3을 따라 움직여 각 모터의 속도를 변경할 수 있으며, 프로젝트를 중지하거나 Clawbot을 끌 때까지 Clawbot이 그에 따라 응답합니다.
3단계: 슬라럼 코스를 탐색하세요!
교사 도구 상자
-
활동 설정
학생들을 2~4명으로 구성된 소그룹으로 구성합니다. 한 명의 학생을 운전자로 지정해야 합니다. 운전자는 컨트롤러를 사용하여 클로봇을 조종하는 사람입니다.
학생들이 컨트롤러를 사용하여 각 "깃발" 바깥쪽을 따라 클로봇을 움직여 이 회전을 완료하도록 합니다. 클로봇의 경로는 깃발에 닿지 않도록 해야 하며 결승선을 통과할 수 있어야 합니다. 플래그는 교실에서 손쉽게 구할 수 있는 물건이나 물건(지우개, 테이프 롤, 티슈 상자)으로 만들 수 있으며, 클로봇을 작동하기 전에 설치할 수 있습니다.
시간이 허락한다면, 학생들에게 역할을 바꾸어 다른 학생들에게 클로봇을 운전해 볼 기회를 주세요. 각 운전자가 슬라롬을 얼마나 빨리 주행하는지 보는 방식으로 이를 그룹 내 또는 그룹 간의 경쟁으로 바꿀 수도 있습니다.

슬라럼은 참가자가 세트 플래그 또는 마커를 탐색해야 하는 코스입니다. 스키 슬라럼은 인기 있는 겨울 스포츠이며 동계 올림픽에 포함됩니다.
이제컨트롤러가과 페어링되었고C++프로젝트가 다운로드되었으므로 컨트롤러를 사용하여 Clawbot을 움직일 준비가 되었습니다!
- 교사로부터 슬라럼에서 깃발로 사용할 네 가지 교실 항목을 수집하십시오.
- 슬라럼 다이어그램에 따라 기사님이 Clawbot을 탐색할 수 있도록 플래그를 설정하기 위해 협력합니다.
- 탱크 제어 예제 프로젝트를 다운로드하십시오. 프로젝트를 다운로드하는 방법에 대한 질문이 있는 경우 프로젝트 다운로드 및 실행 튜토리얼을 확인하십시오.
4단계: Robo-Slalom

컨트롤러를 사용하여 각 "플래그" 의 외부를 따라 Clawbot을 이동합니다. 로봇의 경로가 깃발에 닿지 않도록 하고 결승선을 통과할 수 있도록 해야 합니다.
- 프로젝트를 실행하고 Clawbot을 앞뒤로 구동하고 두 조이스틱을 사용하여 좌우로 돌립니다.
- Clawbot이 과정을 완료하는 데 걸리는 시간입니다. 엔지니어링 노트에 시간을 기록합니다.
- Slalom 코스를 통해 Clawbot을 얼마나 빨리 얻을 수 있습니까?
동기 부여 토론
-
활동에 대한 반성
질문:클로봇이 예상대로 컨트롤러에 응답했나요?
A:답변은 다양할 수 있습니다. 그러나 이 질문의 목적은 인지적 사고를 촉진하는 것입니다. 학생들은 실험을 하기 전에 행동을 예측하고, 결과를 기록하고, 반성하는 것으로 시작했습니다.
질문:클로봇을 직선으로 앞뒤로 움직이는 데 가장 큰 어려움은 무엇입니까?
A:답변은 다를 수 있지만 일반적인 답변은 Clawbot의 모터가 같은 방향과 속도로 움직이도록 하려면 두 조이스틱이 서로 동기화되어 움직여야 한다는 것입니다.
질문:while True무한 루프를 사용하면 컨트롤러를 계속해서 사용하여 클로봇을 움직일 수 있습니까?
A:while True무한 루프가 없다면 Clawbot은 프로젝트의 지침에 따라 결정된 동작을 한 번만 수행합니다. while True무한 루프는 Clawbot에게 프로젝트 기간 동안 속도를 지속적으로 업데이트하고 실행하라고 지시합니다. 즉,while True무한 루프를 사용하면 컨트롤러를 사용하여 클로봇을 무한정, 즉 배터리가 소진될 때까지 움직일 수 있습니다.

