2과: 큐브 쌓기
이전에는 큐브를 팔레트 위에 집어 올리고 놓기 위해 6축 암을 코딩하는 방법에 대해 알아보았습니다. 그런 다음 이전 수업에서 VEXcode 프로젝트에 대한 계획을 세우고 구현하는 방법을 배우면서 해당 기술을 다시 살펴보았습니다.
이 수업에서 여러분은 다음을 배우게 됩니다.
- 팔레트 위에 큐브를 쌓는 계획을 세우세요.
- 팔레트에 큐브를 쌓기 위해 6축 암에 코드를 입력합니다.
- 스택을 생성하려면 큐브의 높이를 고려하여 z축 좌표를 변경합니다.
이 수업을 마치면 6축 암이 팔레트 위에 두 개의 큐브를 두 개씩 쌓는 프로젝트를 계획하고 구축하게 됩니다.

계획 세우기
이전 수업에서는 팔레트에 큐브를 놓기 위한 계획을 세우는 방법에 대해 배웠습니다. 이제 큐브를 쌓는 계획을 세우기 위해 동일한 과정을 사용해 보겠습니다. 다음 단계에 따라 두 번째 큐브를 첫 번째 큐브 위에 쌓는 계획을 세우세요.
참고: 엔지니어링 노트북에 8단원 1과의 계획을 복사하여 작성하세요. 이 계획은 수업 1에서 보여준 계획을 기반으로 합니다. 우리는 이 기존 계획을 바탕으로 큐브를 쌓을 것입니다. 1차시와 2차시의 노트를 따로 보관해 두면 이 단원을 다시 볼 때 해당 노트를 참조할 수 있습니다.
계획의 목표를 업데이트합니다. 우리가 세운 계획은 한 큐브를 적재 구역에서 팔레트로 옮긴 다음, 첫 번째 큐브 위에 두 번째 큐브를 쌓는 것입니다.
| 큐브를 팔레트의 적재 구역으로 이동합니다. |
| 첫 번째 큐브 위에 두 번째 큐브를 쌓습니다. |
| 1. 큐브를 집어 올리세요. |
| 에이. 6축 암의 엔드 이펙터를 자석으로 설정합니다. |
| 비. 6축 암을 로딩 존에 있는 큐브로 옮깁니다. |
| 기음. 큐브를 자석에 부착합니다. |
두 번째 큐브에 필요한 작업을 설명하기 위해 계획에 두 가지 단계를 추가합니다.
- 두 번째 큐브를 집어 올리세요.
- 두 번째 큐브를 첫 번째 큐브 위에 쌓으세요.
| 3. 두 번째 큐브를 집어 올리세요. |
| 4. 두 번째 큐브를 첫 번째 큐브 위에 쌓으세요. |
처음 두 단계에 대한 계획을 살펴보세요. 1단계와 3단계는 로딩 존에서 큐브를 집어 올리기 때문에 동일합니다. 1단계의 분해된 행동을 3단계로 복사합니다. 3단계는 이제 이 예와 같아야 합니다.
| 3. 두 번째 큐브를 집어 올리세요. |
| 에이. 6축 암의 엔드 이펙터를 자석으로 설정합니다. |
| 비. 6축 암을 로딩 존에 있는 큐브로 옮깁니다. |
| 기음. 큐브를 자석에 부착합니다. |
| 디. 6축 암을 로딩 존 위로 옮깁니다. |
"6축 암의 엔드 이펙터를 자석으로 설정"을 제거합니다. 이는 계획 초기에 이미 완료되었습니다.
| 3. 두 번째 큐브를 집어 올리세요. |
| 에이. 6축 암을 로딩 존에 있는 큐브로 옮깁니다. |
| 비. 큐브를 자석에 부착합니다. |
| 기음. 6축 암을 로딩 존 위로 옮깁니다. |
2단계에서 분해된 행동을 4단계에서 완료하려는 작업과 비교하세요. 계획의 어떤 요소를 재사용할 수 있나요?
| 2. 팔레트 위에 큐브를 올려놓습니다. |
| 에이. 팔레트 위로 6축 암을 옮깁니다. |
| 비. 6축 암을 아래로 움직여 팔레트 위에 큐브를 놓습니다. |
| 기음. 큐브를 자석에서 떼어냅니다. |
| 디. 팔레트 위로 6축 암을 옮깁니다. |
| 4. 두 번째 큐브를 첫 번째 큐브 위에 쌓으세요. |
2단계의 분해된 행동을 4단계로 복사합니다.
| 4. 두 번째 큐브를 첫 번째 큐브 위에 쌓으세요. |
| 에이. 팔레트 위로 6축 암을 옮깁니다. |
| 비. 6축 암을 아래로 움직여 팔레트 위에 큐브를 놓습니다. |
| 기음. 큐브를 자석에서 떼어냅니다. |
| 디. 팔레트 위로 6축 암을 옮깁니다. |
4b단계에서 분해된 동작을 업데이트하여 "6축 팔을 아래로 이동하여 큐브를 첫 번째 큐브 위에 놓습니다."라고 말합니다.
| 4. 두 번째 큐브를 첫 번째 큐브 위에 쌓으세요. |
| 에이. 팔레트 위로 6축 암을 옮깁니다. |
| 비. 6축 암을 아래로 이동하여 큐브를 첫 번째 큐브 위에 놓습니다. |
| 기음. 큐브를 자석에서 떼어냅니다. |
| 디. 팔레트 위로 6축 암을 옮깁니다. |
계획을 세우는 동안 수업 1 계획의 많은 요소가 재사용되었습니다. 점점 더 많은 계획을 세우다 보면 재사용할 수 있는 공통 요소가 있다는 것을 알게 될 것입니다. 이 기능은 더 복잡한 프로젝트를 진행할 때 유용합니다. 엔지니어링 노트북을 다시 살펴보고, 구축된 계획과 관련 VEX코드 프로젝트를 연구하고, 성공적인 계획의 요소를 새로운 프로젝트에 활용할 수 있습니다.
| 큐브를 적재 구역에서 팔레트로 옮깁니다. |
| 첫 번째 큐브 위에 두 번째 큐브를 쌓습니다. |
| 1. 큐브를 집어 올리세요. |
| 에이. 6축 암의 엔드 이펙터를 자석으로 설정합니다. |
| 비. 6축 암을 로딩 존에 있는 큐브로 옮깁니다. |
| 기음. 큐브를 자석에 부착합니다. |
| 디. 6축 암을 로딩 존 위로 옮깁니다. |
| 2. 팔레트 위에 큐브를 올려놓습니다. |
| 에이. 팔레트 위로 6축 암을 옮깁니다. |
| 비. 6축 암을 아래로 움직여 팔레트 위에 큐브를 놓습니다. |
| 기음. 큐브를 자석에서 떼어냅니다. |
| 디. 팔레트 위로 6축 암을 옮깁니다. |
| 3. 두 번째 큐브를 집어 올리세요. |
| 에이. 6축 암을 로딩 존에 있는 큐브로 옮깁니다. |
| 비. 큐브를 자석에 부착합니다. |
| 기음. 6축 암을 로딩 존 위로 옮깁니다. |
| 4. 두 번째 큐브를 첫 번째 큐브 위에 쌓으세요. |
| 에이. 팔레트 위로 6축 암을 옮깁니다. |
| 비. 6축 암을 아래로 움직여 큐브를 첫 번째 큐브 위에 놓습니다. |
| 기음. 큐브를 자석에서 떼어냅니다. |
| 디. 팔레트 위로 6축 암을 옮깁니다. |
팔레트에 큐브를 쌓는 계획을 만든 후 VEX코드에서 이 계획을 구현할 준비를 할 수 있습니다.
계획 실행
이제 두 개의 큐브를 쌓는 데 필요한 단계가 가능한 가장 작은 동작으로 분해되었으므로 큐브를 쌓는 프로젝트를 만들 준비가 되었습니다. 엔지니어링 노트북에 작성된 계획은 프로젝트를 구성하고 구축하는 데 지침으로 사용됩니다.
아래에 표시된 대로 타일 위치 17의 로딩 영역에 큐브 하나를 배치하여 프로젝트를 설정합니다. 프로젝트를 빌드하려면 다음 단계를 완료하세요.

VEXcode에서 Unit 8 Lesson 1 프로젝트를 열어보세요. 이 프로젝트에서는 큐브 하나를 적재 구역에서 팔레트 중앙으로 옮깁니다. 이 프로젝트를 기반으로 첫 번째 큐브 위에 두 번째 큐브를 쌓을 것입니다.
여기에 표시된 좌표는 예시일 뿐이며, 6축 암이 의도한 대로 동작하도록 하려면좌표와 좌표를 사용해야 합니다.

프로젝트 이름을Unit 8 Lesson 2로 바꾸고 장치에 저장하세요.

프로젝트 끝에Comment블록 두 개를 추가합니다. 두 번째 큐브를 쌓는 계획의 주요 단계를 주석으로 입력하세요. 이는 엔지니어링 노트북의 단계와 일치해야 합니다.
- 두 번째 큐브를 집어 올리세요
- 두 번째 Cube를 첫 번째 Cube 위에 쌓으세요

"큐브 집어 올리기" 블록 아래에 프로젝트의 첫 번째 부분을 다시 만들고Comment"두 번째 큐브 집어 올리기" 블록 아래에 배치합니다. Comment
이 계획의 첫 번째 부분은 적재 구역의 좌표를 포함하여 수업 1에서 만든 계획과 거의 동일하므로 동일한 블록을 사용할 수 있습니다.

이제 귀하의 프로젝트는 첫 번째 큐브 위에 두 번째 큐브를 쌓는 계획의 첫 번째 단계와 일치해야 합니다. Set end effector 블록은 계획의 3단계에 포함되지 않으므로 복제되지 않았습니다.
6축 암이 VEX코드에 연결되어 있는지 확인하세요. 프로젝트를 실행하여 테스트해 보세요.

6축 암의 움직임이 완료되면 프로젝트를 중지합니다.
6축 암의 관찰된 동작이 계획과 일치합니까? 왜 그럴까? 아니면 왜 그렇지 않을까?

프로젝트의 첫 번째 부분은 이제 테스트가 완료되었고, 두 번째 큐브는 로딩 존에서 성공적으로 픽업되었습니다.

이제 계획의 다음 단계를 구현할 수 있습니다.
"첫 번째 큐브 위에 두 번째 큐브를 쌓으세요" 댓글블록 아래에위치로 이동 블록을 추가합니다.
이 블록은 귀하의 계획에 있는 "팔레트 위로 6축 팔을 옮기기" 동작에 해당합니다.

위치블록의 x, y, z 매개변수를 계획에 기록된 좌표로 설정합니다. 팔레트 위의 위치는 변경되지 않았으므로 팔레트 위의 첫 번째 큐브를 옮기는 데 사용된 동일한 좌표를 사용하여 두 번째 큐브를 옮길 수도 있습니다.
6축 팔이 의도한 대로 움직이도록 하려면 프로젝트에서좌표와좌표를 사용해야 합니다. 여기에 표시된 좌표는 예시입니다.

프로젝트에증가 위치블록을 추가합니다.
이는 계획에서 "큐브를 첫 번째 큐브 위에 놓기 위해 6축 암을 아래로 이동"하는 동작과 일치합니다.

증가 위치블록의 z-매개변수는 6축 암을 첫 번째 큐브 위에 두 번째 큐브를 쌓는 데 필요한 거리만큼 낮춥니다. 그 값을 알아내려면 두 개의 큐브를 서로 쌓았을 때 자석의 위치를 알아야 합니다. 이 오프셋은 큐브를 효과적으로 쌓기 위해 6축 암이 z축을 따라 얼마나 이동해야 하는지 알아내는 데 도움이 됩니다.
큐브의 높이와 팔레트의 높이에 대한 정보를 사용하여 z 좌표의 오프셋을 대략 65mm로 추정할 수 있습니다. 각 큐브의 높이는 약 25mm이고 팔레트의 높이는 15mm입니다.

6축 암을 z축 아래로 얼마나 움직일지 결정하는 방법은 두 가지가 있습니다.
- 시작 위치(100mm)에서 원하는 위치로 이동하려면 차이를 확인하면 됩니다. 100mm~65mm는 약 35mm입니다. 두 번째 큐브의 바닥과 첫 번째 큐브의 윗부분이 충돌하는 것을 피하려면 5~10mm를 더 빼면 됩니다. 6축 암을 z축을 따라 음의 방향으로 약 25mm 움직이면 두 번째 큐브를 원하는 위치에 쌓을 수 있습니다.
- 모니터 콘솔을 사용하여 큐브 스택의 맨 위에 있는 z값을 찾을 수도 있습니다. 모니터 콘솔의 이 정보는 큐브를 효과적으로 배치하기 위해 6축 암을 낮추는 데 필요한 상대적 움직임을 파악하는 데 도움이 될 수 있습니다. 우리가 만들고 있는 프로젝트에서는 팔레트 위의 큐브 위로 6축 암이 이동할 때 z좌표가 100mm로 설정됩니다. 이는 상대적 움직임을 위한 6축 팔의 시작 위치입니다. 여기에 표시된 예에서 스택 맨 위의 6축 암 위치의 z값은 73mm입니다. 이것은 큐브를 스택에 놓을 때 6축 암의 원하는 위치입니다.
시작 위치(100mm)에서 목표 위치(73mm)까지 이동하는 데는 약 28mm가 소요됩니다. 6축 암을 z축을 따라 음의 방향으로 약 25mm 움직이면 두 번째 큐브를 원하는 위치에 쌓을 수 있습니다.

증가 위치블록의 z 매개변수를 -25로 설정합니다.
이렇게 하면 6축 암이 z축을 따라 음의 방향으로 움직여 큐브를 낮춥니다.

6축 암이 VEX코드에 연결되어 있는지, 첫 번째 큐브가 로딩 구역으로 반환되었는지, 두 번째 큐브가 타일 측면에 설정되어 있는지 확인하세요.
프로젝트를 실행하여 테스트해 보세요. 6축 암의 동작을 관찰하세요.

6축 암의 움직임이 끝나면 프로젝트를 중지합니다.
귀하가 관찰한 행동이 귀하의 계획에 나열된 행동과 일치합니까? 왜 그럴까? 아니면 왜 그렇지 않을까?

6축 암은 팔레트 위에 있는 첫 번째 큐브를 들어올려 놓기 위해 움직여야 합니다. 그런 다음 6축 암이 두 번째 큐브를 들어올려 첫 번째 큐브 위에 올려놓았습니다.
이제 6축 암이 두 번째 큐브를 어떻게 배치할지 알았으므로, 이를 프로젝트에 추가하여 계획 구현을 완료할 수 있습니다.
프로젝트에세트 암 자석블록을 추가합니다. 매개변수를 "released"로 설정합니다.
이 블록은 계획의 "자석 놓기" 동작에 해당합니다.

프로젝트 끝에 증가 위치블록을 추가합니다. z-매개변수를 50으로 설정합니다.
이는 계획의 최종 동작 "팔레트 위로 6축 팔 이동"에 해당합니다.

6축 암이 VEX코드에 연결되어 있는지, 첫 번째 큐브가 로딩 구역으로 반환되었는지, 두 번째 큐브가 타일 측면에 설정되어 있는지 확인하세요.
프로젝트를 실행하여 테스트해 보세요. 6축 암의 동작을 관찰하세요.

6축 암의 움직임이 끝나면 프로젝트를 중지합니다.
귀하가 관찰한 행동이 귀하의 계획에 나열된 행동과 일치합니까? 왜 그럴까? 아니면 왜 그렇지 않을까?

6축 암은 두 개의 큐브를 들어올려 팔레트로 옮긴 후, 두 번째 큐브를 첫 번째 큐브 위에 쌓았습니다.

활동
이제 팔레트 위에 적재 구역의 큐브 하나를 다른 큐브 위에 쌓기 위해 6축 암에 대한 계획을 세우고 코딩했으므로 이러한 기술을 연습해 보겠습니다. 이 활동에서는 이 수업에서 배운 프로젝트를 바탕으로 6축 팔을 코딩하여 두 번째 팔레트에 두 개의 추가 큐브를 쌓습니다.
설정:타일 위치 17의 로딩 구역에 큐브 하나를 놓습니다.

활동:팔레트마다 큐브 두 개를 쌓도록 6축 팔을 코딩합니다. 
- 그룹과 함께 두 번째 팔레트에 두 개의 추가 큐브를 쌓기 위해 6축 암을 코딩하는 방법에 대한 계획을 세우려면 배운 프로세스를 따르세요. 프로젝트를 시작하기 전에 모두가 접근 방식에 동의했는지 확인하세요. 이 수업을 통해 여러분의 프로젝트를 확장할 수 있습니다.
- 엔지니어링 노트북에 계획을 기록하세요. 각 단계를 가능한 가장 작은 행동으로 분해했는지 확인하세요.
- 계획을 세우고 문서화한 후, 선생님과 함께 계획을 검토하세요.
- 귀하의 그룹이 합의한 계획에 맞게 VEXcode에서 프로젝트를 구축하세요.
- 프로젝트 편집을 시작하기 전에 프로젝트 이름을단원 8과 2과 활동바꾸고 저장하세요.
- 귀하의 계획에 맞게 프로젝트를 구성하려면 프로젝트에댓글블록을 사용하세요.
- 프로젝트를 점진적으로 실행하여 테스트합니다. 이전 큐브를 옮긴 후 각 큐브를 수동으로 로딩 구역에 놓습니다.
- 6축 암이 계획한 대로 큐브 두 개를 모두 성공적으로 만들었나요? 각 팔레트에는 큐브 두 개가 한 묶음으로 있어야 합니다. 그렇지 않은 경우 두 개의 스택을 성공적으로 생성할 때까지 프로젝트 편집을 계속합니다.
- 엔지니어링 노트북에 계획에 대한 모든 조정 사항을 기록해 두세요.
이해도 확인
다음 수업으로 넘어가기 전에 엔지니어링 노트에 있는 다음 질문에 답하여 이 수업의 개념을 이해했는지 확인하세요.
이해도 확인 질문 > (Google Doc / .docx / .pdf)
다음 >선택하여 모두 합치기 활동으로 넘어가세요.