Skip to main content

컨트롤러: 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명 이상

장애물로 사용할 교실 물품

교사 팁 아이콘 교사 팁 - 자동완성 사용

자동완성은 VEXcode V5의 기능으로, 사용자가 입력하는 나머지 명령어를 예측해 줍니다. 학생들이 VEXcode V5에서 작업할 때 자동 완성 기능을 사용하여구문이해하도록 격려하세요. 자동완성문서에서는 자동완성 기능을 사용하는 방법을 다룹니다.

왼쪽에는 명령의 드라이브트레인 부분을 입력한 VEXcode V5가 표시되고, 오른쪽에는 해당 명령에 대한 자동 완성 옵션의 스크롤 가능 목록이 표시됩니다.

 

이 활동을 통해 컨트롤러를 프로그래밍할 수 있습니다.

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;
    }
      동안 모터를 컨트롤러 축 위치로 설정하는 메인 컨트롤러 루프

 

교사 도구 상자 아이콘 교사 도구 상자 - 답변

  1. 이 프로젝트에서는 while True 무한 루프 구조를 활용하여 좌우 조이스틱의 위치가 어디에 있는지 지속적으로 확인합니다. 왼쪽(또는 오른쪽) 조이스틱을 위로 밀면 조이스틱을 얼마나 앞으로 밀지에 대한 속도가 설정됩니다. 
  2. 따라서 조이스틱을 앞으로 밀수록 속도가 더 빨리 설정되고 모터가 더 빨리 움직입니다. 조이스틱을 뒤로 밀어내는 것도 같은 아이디어입니다. 조이스틱을 뒤로 밀수록 모터가 더 빨리 후진합니다.
  • Tank Control예제 프로젝트를 저장, 다운로드하고 실행합니다(C++).
  • 도움이 필요하면C++의 VEX 라이브러리 섹션을 확인하거나 VEXcode V5의 튜토리얼을 참조하여 프로젝트를 다운로드하고 실행하는 방법을 알아보세요.

    튜토리얼이 포함된 VEXcode V5의 도구 모음 (오른쪽) 이 빨간색 상자로 강조 표시됩니다. 왼쪽의 도구 모음에는 V5 로고, 지구본 아이콘, 파일, 편집 및 튜토리얼이 표시됩니다.

     

  • 엔지니어링 전자 필기장에서 프로젝트에 대한 설명을 확인하고 필요에 따라 수정할 메모를 추가하십시오.

2단계: 컨트롤러: 탱크 제어

교사 도구 상자 아이콘 교사 도구 상자 - 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무한 루프를 사용하면 컨트롤러를 사용하여 클로봇을 무한정, 즉 배터리가 소진될 때까지 움직일 수 있습니다.