행동 기반 프로그래밍

프로그래밍 복잡성
로봇은 광범위한 작업을 수행하도록 설계될 수 있습니다. 이러한 작업 중 일부는 자동문을 여는 것처럼 매우 간단합니다. 다른 것들은 도시 환경을 주행하는 자율주행차처럼 훨씬 더 복잡할 수 있습니다. 아무리 복잡한 작업이라도 더 간단한 작업으로 나눌 수 있습니다. 이러한 작업은 행동이라고 하며 로봇 프로그래밍의 기본 요소입니다.
행동은 로봇이 행동하는 방식이며, 로봇이 어떻게 제작되거나 프로그래밍되었는지에 따라 복잡도가 달라질 수 있습니다. VEX V5 Speedbot과 같은 간단한 모바일 로봇은 모터가 두 개뿐인 반면, Clawbot은 Arm과 Claw를 위한 추가 모터 두 개를 포함해 총 네 개의 모터를 가지고 있습니다. 두 로봇의 행동에는 모터를 돌려서 설정된 목표를 달성하는 것이 포함됩니다. 더 많은 디자인과 프로그래밍을 통해 이러한 간단한 동작에서 시작하여 더 복잡한 동작을 구현할 수 있습니다.
아래는 Speedbot과 Clawbot의 간단한 동작부터 복잡한 동작까지 로봇의 동작을 나열한 것입니다. 괄호 안에는 각각을 구성하는 더 간단한 동작들이 표시되어 있습니다.
- 특정 포트에 할당된 모터를 회전시킵니다.
- 전진(Drivetrain을 사용하여 좌우 모터를 모두 회전)
- 5미터 이동(앞으로 주행 후 정지)
- 멀리 있는 물체를 잡으세요(2미터 이동 후, 클로 모터를 돌려서 잡으세요)
- 물건을 가져와 높은 선반에 놓으세요(먼 곳에 있는 물건을 잡고 돌아서서 2미터를 이동한 후 팔과 집게 모터를 사용하여 물건을 들어올리고 놓으세요)
보다 복잡한 행동을 어떻게 분해하여 보다 단순한 행동으로 만들 수 있는지 살펴보겠습니다. 이것들은 복잡한 작업의 기본이 됩니다.
교사 팁
-
학생들에게 복잡한 로봇 동작을 더 작고 간단한 단계로 나누도록 지시합니다. 이 과정을 분해라고 합니다.
-
학생들에게 복잡한 행동을 더 간단한 작업으로 분해하는 것이 계획과 프로그래밍의 중요한 부분이라고 설명합니다.
-
수업 시간이 충분하다면 학생들이 자율적으로 프로젝트를 진행하도록 허용하세요.
학습을 확장하세요
이 활동을 계산적 사고와 분해에 연결하려면 학생들에게 로봇이 아래 활동을 완료하기 위해 수행할 행동 단계를 매핑하거나 나열해 보라고 요청하세요.
-
활동 1: 1미터를 이동한 후 시작 지점으로 돌아오세요.
-
활동 2: 로봇 앞 60cm 떨어진 상자를 뒤집으세요.
-
활동 3: 물건을 집어 흔들고 30cm 이동한 후, 물건을 바닥에 놓고 시작 지점으로 돌아옵니다.
토론을 촉진하다
학생들은 위의 학습 확장 활동에 대해 나열한 행동 단계를 공유해야 합니다. 다음 질문은 모든 활동이나 일부 활동을 마친 후에 물어볼 수 있습니다.
질문:각 그룹은 이 활동을 성공적으로 완료하기 위해 어떤 단계 또는 동작을 나열했습니까?
답변:학생들은 활동이나 과제를 완료하는 데 필요한 간단한 로봇 동작(전진, 후진, 좌회전 또는 우회전)을 나열하는 것 외에도 로봇이 이동해야 하는 거리와 팔의 움직임 및 속도를 고려해야 합니다. 학생들은 각 단계가 표현되도록 행동 목록을 작성해야 합니다.
질문:이 활동의 솔루션(단계 목록) 간의 유사점과 차이점은 무엇입니까?
답변:학생들은 자신의 솔루션을 기반으로 비교합니다. 벤 다이어그램은 학생들이 공유하는 단계를 구성하는 좋은 방법이 될 수 있습니다. 대부분의 학생이 특정 단계를 말하면, 원이 겹치는 중앙에 추가합니다. 특정 단계를 한 명 또는 소수의 학생만 언급했다면, 해당 단계를 한 서클이나 다른 서클에 추가하세요. 완료되면 중앙의 단계는 믿을 수 없을 만큼 간단해지고 더 이상 세분화될 수 없게 될 것입니다. 반면, 원 중 하나에만 나열된 단계는 가능한 한 간단하지 않을 가능성이 높습니다. 그러나 이 패턴은 복잡한 동작을 가장 간단한 단계로 분해하는 클래스의 경험에 따라 반대가 될 수도 있습니다.
질문:성공적인 솔루션과 유사점이 있었나요? 그렇다면, 그것은 무엇이었습니까?
A:가장 성공적인 솔루션은 가장 세부적이고 구체적인 내용을 포함한 솔루션이었습니다. 로봇은 매우 구체적인 행동을 담고 있는 언어로 프로그래밍되어 있으며, 이 행동은 가장 작은 구성 요소로 분해됩니다. 예를 들어, 로봇이 "1미터를 이동한 후 시작 지점으로 돌아온다"라고 말하는 것이 일반적이지만, 프로그래밍할 때 이런 고급 설명을 쉽게 전달할 수는 없습니다. 더 자세히 설명해야 합니다. 1미터 앞으로 이동하고, 180도 회전하고, 1미터 앞으로 이동합니다. 하지만 그 정도만으로는 충분히 정확하지 않을 수 있으며 프로그래밍에 적합하려면 이 정도의 세부 정보가 필요합니다. 주행 및 회전 속도를 40%로 설정하고, 1미터 동안 전진한 후 3초간 기다린 다음, 180도 동안 좌회전하고 1초간 기다린 후 1미터 동안 전진합니다. 복잡한 행동을 더욱 세분화하여 프로그래밍에 적합한 로봇 행동으로 만들수록 프로젝트를 완료할 준비가 더 잘 갖춰집니다.