로봇카 기초 배우기

브로클리프롭 로봇카 프로그래밍

브로클리 로봇S3 - 4. 센서 주행하기

Contents

브로클리 로봇S3 실습 세부목차


1. 브로클리 로봇S3 시작하기

2. 브로클리 로봇S3 - 불빛과 소리

3. 브로클리 로봇S3 - 간단한 동작 모터블록으로

4. 브로클리 로봇S3 - 센서 주행하기

5. 브로클리 로봇S3 - 외부장치 확장


본 페이지의 내용은 패럴렉스(Learn.Parallax.com)사의 공식 홈페이지에서 제공되는 자료를 참고하여 작성되었습니다.


브로클리프롭(BlocklyProp) 프로그래밍 방법으로 Parallax사의 스크리블러3(Scribbler 3 : S3) 로봇을 교육활동에 사용할 수 있습니다. 로봇S3 에는 여러 가지 종류의 센서가 이미 내장되어 있어서, 초등학생들도 전자회로 구성의 어려움없이 로봇제어를 고급 수준까지 프로그래밍할 수 있는 특징이 있습니다.


로봇S3(Scribbler 3)는 쉘에 내장된 다양한 센서를 사용하여 장애물을 자율적으로 탐색하고 피할 수 있는 환상적인 기능을 갖추고 있습니다. 라인 추종, 빛 감지, 적외선 감지 / 회피를 위해 S3의 미리 프로그래밍된 데모 모드를 시도해 본다면 이 작은 로봇이 얼마나 유능한 지 알 수 있습니다. 이 섹션의 학습에서는 브로클리프롭(BlocklyProp)을 사용하여 로봇S3  용 사용자 정의 탐색 프로그램을 만들고 미세 조정하는 방법을 설명합니다.


아래 세부 내용들을 살펴볼 수 있습니다.

1) 적외선으로 장애물 피하기

2) 가시광선 추적하기

3) 라인 추적하기


c65af217afdf5172d0e23bfe07e38009_1511103675_5783.png
 

이 학습을 따라가려면 브로클리프롭(BlocklyProp) 웹사이트에 열려있는 창 또는 탭이 필요합니다. 그리고 이전 학습들을 이미 완료했어야 합니다.



1) 적외선으로 장애물 피하기


로봇이 환경에 대해 독립적으로 대응하기 위해서는 경로에서 장애물을 보거나 피할 수 있어야합니다. S3 데모 모드를 사용해 본 경우 데모 3에서 로봇이 적외선 (IR) 센서로 물체를 감지할 수 있고 데모에서 로봇이 (IR 센서로) 감지하여 주위를 돌아다니면서 장애물을 피할 수 있음을 기억할 수 있습니다. 로봇은 다양한 방식으로 다양한 센서를 사용하여 물체를 감지하도록 제작 또는 프로그래밍 할 수 있습니다.


알고 계셨습니까?

장애물 센서로서의 적외선 이미터 및 수신기 - 로봇의 장애물 탐지에 대한 일반적인 해결책은 로봇의 전면에 장착된 적외선 (IR) 이미터 및 수신기를 사용하는 것입니다. 이 특수 LED는 TV 원격제어 장치와 비슷한 비 가시성 적외선을 방출합니다. 하나의 적외선 수신기와 짝을 이루는 이미터는 S3의 장애물 센서로 구성됩니다.


c65af217afdf5172d0e23bfe07e38009_1511103851_6868.png
 

참고: 위 이미지는 S3의 전면을 보여줍니다. 좌우측면이 로봇의 라벨과 반대쪽에 있음을 알 수 있습니다. 이것은 로봇이 당신과 반대 방향을 향하고 있기 때문입니다 - 180도 회전하여 컴퓨터 화면에서 벗어나면 오른쪽과 왼쪽이 로봇의 오른쪽과 왼쪽에 일치하게 됩니다. 방향은 항상 로봇의 관점에서 결정되며 사용자의 관점에서는 결정되지 않습니다. IR 이미터와 수신기가 항상 로봇 앞을 향하고 있음을 명심한다면, 앞으로, 뒤로, 오른쪽 및 왼쪽 방향 명령으로 탐색 프로그램을 만드는데 문제가 없을 것입니다.


이미터는 장애물에 닿은 후에만 수신기로 반사되는 적외광선의 교대 펄스를 전송합니다. 한 번에 하나의 LED 만 깜박이기 때문에 수신기가 반사를 감지했을 때 어떤 LED가 빛을 내고 있는지 파악할 수 있습니다. 이 정보를 사용하여 장애물이 어느쪽에 있는지 판단합니다. 물체가 직접 앞에 있으면 두 LED의 빛이 깜박일 때 수신기에 반사됩니다.


모든 로봇 센서에는 장점과 단점이 있으며, 각각에는 특정한 물리적 한계가 있습니다. 로봇에 어떻게 배치하는지도 성능에 영향을 줄 수 있습니다. 적외선은 수신기로 다시 반사하는 대신 적외선을 흡수하기 때문에 검정색 물체를 효과적으로 감지하지 못합니다. S3의 적외선 물체 감지 시스템은 물체의 색상이 너무 어둡지 않고 로봇 정면에서 1 인치에서 12 인치 사이에 있을 때 가장 잘 동작합니다.


c65af217afdf5172d0e23bfe07e38009_1511103867_5819.png 


피드백과 함께 장애물 센서 사용하기

브로클리프롭(BlocklyProp)에서 데모 3 프로그램과 유사한 동작 (로밍없이 장애물 감지)을 나타내는 프로그램을 만들 수 있습니다.


- 장애물 감지 블록과 함께 아래에 표시된 것과 같은 프로그램을 만듭니다. 여기에 사용된 블록은 CONTROL,  SENSOR ACTIONS 카테고리에서 찾을 수 있습니다.


c65af217afdf5172d0e23bfe07e38009_1511103881_4515.png
 

루프 명령은 프로그램을 계속 실행합니다. 장애물이 감지되지 않으면 모든 LED가 녹색으로 표시됩니다. 장애물이 S3 바로 앞에 있으면 모든 LED가 빨간색으로 표시됩니다. 왼쪽 장애물은 왼쪽에 단일 빨간색 LED로 표시되고 오른쪽 장애물은 오른쪽에 빨간색 LED 하나가 표시됩니다.


- 프로그램을 작성한 후 컴파일하고 S3에 로드하여 기능을 테스트하십시오.

 

시도해 보세요!

- 위의 프로그램을 다시 작성하여 3 개의 차단된(blocked) 조건에 대한 오디오 피드백을 제공하십시오. 이전 학습에서 배운 블록을 추가하여 시험해보십시오.

- S3 바로 앞에 있는 경로가 차단된 경우 이 오디오 피드백을 제공하십시오.

c65af217afdf5172d0e23bfe07e38009_1511103926_0167.png 

- 왼쪽 경로가 차단된 경우 이 오디오 피드백을 제공하십시오.

c65af217afdf5172d0e23bfe07e38009_1511103936_3584.png 

- 오른쪽 경로가 차단된 경우 이 피드백을 제공하십시오.

c65af217afdf5172d0e23bfe07e38009_1511103945_0606.png 


위의 프로그램 중 하나를 장애물 회피 프로그램으로 수정하는 것이 매우 쉽습니다. 어떻게 볼 수 있을까요?


- 아래와 같은 이동(movement) 블록을 속한 위치에 추가하십시오. 몇 가지 실험이 필요할 수도 있습니다 (도움이 필요하면 “간단한 동작 모터블록으로”를 참조하십시오).

c65af217afdf5172d0e23bfe07e38009_1511103965_9368.png 


- 완료한 장애물 회피 프로그램을 사용해보십시오! 예상대로 동작했나요?

 


당신 차례 !

- 다음과 같은 행동으로 프로그램을 자신 만의 버전을 만드십시오 :

- S3 바로 앞에 있는 경로가 막히면 반 시계 방향으로 180도 정지하고 회전하십시오.

- 물체가 왼쪽에서 감지되면 로봇을 정지시키고 시계 방향으로 90도 회전시킵니다.

- 물체가 오른쪽으로 감지되면 로봇을 정지시키고 반 시계 방향으로 90도 회전시킵니다.

- 새 프로그램을 실행하고 그 기능을 이전 예제와 비교하십시오.

- 자신의 소리와 다른 회피 행동으로 프로그램을 자신 만의 버전으로 만드십시오. 이 프로그램을 어떻게 향상시킬 수 있습니까?



2) 가시광선 추적하기


로봇이 빛을 따라갈 수 있는 (또는 주방 바닥에 있는 버그와 같이 빛에서 벗어나게 하는) 능력은 로봇 공학 연구의 초기 목표였습니다. 왜 빛을 따르는가? 로봇이 빛, 특히 햇빛을 재생가능 에너지원으로 사용할 수 있는 가능성이 있었습니다. NASA와 JPL의 Mars Spirit과 Opportunity 로봇 로버는 태양 전지판을 사용하여 배터리를 충전합니다. 그런 로봇은 빛을 찾아 어둠을 피하도록 프로그래밍될 수 있습니다.


알고 계셨습니까?

실험 로봇인 Hyperion 은 피츠버그의 Carnegie Mellon University, CMU의 Robotics Institute에서 로봇 공학가가 개발했습니다. 우리 행성의 북극과 사막 지역으로 보냈던 Hyperion은 태양광을 사용하는 로봇을 움직여서 배터리를 충전시켜야 한다는 생각을 탐구하기 위해 개발되었습니다. 이 개념은 달 또는 먼 행성에서 수년 동안 반 자율적으로 작동 할 수 있는 로봇 로버로 이어질 수 있습니다. 로봇의 이름인 Hyperion은 그리스 신화에서 유래했습니다. 하이페리온은 번역될 때 "태양을 따르는 사람"을 의미합니다.

출처 : http://www.frc.ri.cmu.edu/atacama/atacama2003-05/hyperion.html


Phototransistors로 빛을 감지하기

S3의 앞면에는 세 개의 광 트랜지스터 센서인 작은, 검은 색, 타원형의 구멍이 있습니다. 그들은 당신의 로봇이 주위 (또는 주위의) 빛을 측정할 수 있게 합니다. 포토트랜지스터 광센서는 예측 가능한 방식으로 빛에 반응하는 센서입니다. 빛이 센서의 투명한 플라스틱 케이스 내부의 작은 칩에 닿으면 전류가 회로를 통해 흐르게 됩니다. 더 많은 빛은 더 많은 전류 흐름과 같습니다. S3는 이 전류를 지속적으로 측정하여 이를 주변 광의 레벨로 해석한 다음 이 정보를 사용하여 빛을 찾거나 가볍게 피하는 프로그램을 실행합니다.


이 이미지는 S3의 3 개의 광 트랜지스터 센서의 위치를 보여줍니다. 그들은 손상을 입지 않도록 쉘 안에 있습니다.

c65af217afdf5172d0e23bfe07e38009_1511104000_1906.png 


중요 : 이 센서 구멍에 물체를 넣지 마십시오! 이 센서는 Sharpie® 펜촉이나 이 개구부에 있는 다른 물체를 붙이면 쉽게 손상될 수 있습니다. 영구 마커 잉크는 센서의 투명 플라스틱 케이스를 검게하여 센서를 사용할 수 없도록 만듭니다.


c65af217afdf5172d0e23bfe07e38009_1511104021_4307.png
 

자, 어떻게 우리가 빛을 볼 수 있도록 이 센서를 사용합니까?


불빛 감지하기(Light Sensing)

S3의 첫 번째 데모는 광센서를 모니터링하고 표시기 LED를 사용하여 다양한 색상 (녹색, 호박색 등)의 다양한 광 레벨을 보여주는 시각적 피드백을 제공합니다. detect light 블록을 사용하는 것과 비슷하게 조금 더 간단한 프로그램을 만들어 봅시다. 다음 블록은 CONTROL , SENSORACTIONS 범주에 있습니다.


- 다음 브로클리프롭(BlocklyProp) 프로그램을 보고 자신만의 복사본을 만들어 작업하십시오.


c65af217afdf5172d0e23bfe07e38009_1511104041_0555.png 


- 코드를 확인한 후 S3에 로드하고 동작 방법을 확인하십시오. 여기서는 탁상용 등 집중 조명을 사용하는 것이 좋지만 창이나 천장 조명을 사용할 수도 있습니다.


문제를 조금이라도 없애기 위해 이 블록이 무엇을 하고 있는지 토론하십시오. 루프 블록으로 시작하면 프로그램이 끝없이 반복됩니다. 그런 다음, 감지 광(detect light) 블록 (여기에서 3 번 반복됨)은 S3의 광 트랜지스터를 각각 읽음으로써 어느 것이 가장 많은 빛을 보는지 파악합니다. change LEDs 블록은 불빛에 가장 가까운 LED를 초록색으로 설정하고, 나머지 LED는 모두 끕니다.


이 예에서 단일 LED는 광 센서가 가장 밝은 앞 (중앙), 왼쪽 또는 오른쪽을 찾는 위치에 따라 녹색으로 켜집니다. 센서 판독 값을 기반으로 한 LED 조명과 같은 기능을 수행할 수 있다면 S3를 가장 밝은 광원에서 구동하도록 쉽게 프로그래밍할 수 있습니다.


- 프로그램을 다음과 같이 수정하고 실행하십시오.


c65af217afdf5172d0e23bfe07e38009_1511104055_8808.png
 

이 프로그램은 가장 밝은 광원에서 항상 똑바로 운전하려고 시도합니다. 가장 밝은 소스가 직접 앞에 있지 않으면 이 프로그램은 S3를 시계 방향 또는 시계 반대 방향으로 돌리면서 똑바로 빛을 겨냥할 수 있습니다. 가까운 곳이지만 완전히 자율적인 네비게이션 프로그램은 아니므로 계속하겠습니다.


알고 계셨습니까?

일찍이 B.E.A.M. 로봇공학의 로봇 애호가들은 로봇이 빛과 상호 작용하는 방법을 설명하기 위해 여러 가지 용어를 개발했습니다.


Phototropes(light-seeker)는 광원에 반응하며,

Photophiles (또한 Photovores) 광원쪽으로 이동하고

Photophobes는 광원에서 멀리 이동하거나 광원을 피합니다.


자세한 내용은 Wikipedia의 B.E.A.M. 로봇 기술자료를 참조하십시오.

(https://en.wikipedia.org/wiki/BEAM_robotics)


시도해 보세요!

- 아래 프로그램을 작성하십시오. 이전에 사용한 블록과 동일한 블록을 많이 사용하지만, 이번에는 정지하고 다시 위치시키지 않고도 드라이브 블록을 추가하여 조명을 따라 가야합니다.



프로그램을 로봇S3에 로드하고 어두워진 방에서 플로어 라이트를 바닥 가까이에서 사용하여 프로그램을 테스트하십시오. 로봇은 이동하면서 손전등을 찾아야합니다. 데모 2 : Light Seeking Behavior뿐 아니라 간단한 라이트 프로그램이 잘 작동합니까? 누락된 것이 무엇입니까?


c65af217afdf5172d0e23bfe07e38009_1511104193_086.png
 

앞의 세 예제는 브로클리프롭(BlocklyProp)으로 로봇S3에 대하여 빛을 따라가는 예제를 작성하는 가장 기본적인 방법입니다. else if 를 사용하는 if ... do 블록과 같이 불빛을 따라가는 프로그램을 작성하는 더 많은 고급 방법이 있습니다.


if ... do ... else if ... do에서, 테스트하는 조건이 참인 경우, do 문장이 실행됩니다. 테스트된 조건이 거짓이면 else if 문장이 실행됩니다. else 와 else if 문장을 만들려면 블록의 좌측상단에 있는 기어를 클릭하고 if 블록에 추가하고 싶은 else 또는 else if 를 드래그해서 당신이 원하는 조건을 선택할 수 있습니다. 당신의 프로그램은 테스트할 조건의 수에 따라 else 또는 else if 블록의 수를 필요로 할 수 있습니다.


c65af217afdf5172d0e23bfe07e38009_1511104206_4473.png 


- if ... do 블록에 조건을 추가하여 브로클리프롭(BlocklyProp) 작업 영역에 다음 코드를 다시 작성하십시오.


c65af217afdf5172d0e23bfe07e38009_1511104216_8806.png
 

밝기 측정기

다른 광센서 읽기(light sensor reading) 블록을 사용하여 광센서로 측정되는 빛의 밝기를 측정할 수 있습니다. 부울 비교와 결합하여 MATH 메뉴에 있는 비교 값(compare values) 블록을 사용하면 불빛 게이지를 만들 수 있습니다.


로봇S3를 불빛 게이지로 바꾸려면 아래 프로그램을 다시 만드십시오.


c65af217afdf5172d0e23bfe07e38009_1511104229_5185.png 


당신 차례 !

- 당신의 코드를 향상시키거나 변경할 사항을 찾으십시오. 사운드를 만드는 방법을 살펴보았습니다. 코드에 오디오 피드백을 어떻게 추가할 수 있습니까?

- 앞의 학습에서 우리는 장애물 회피를 다루었습니다. 하나의 프로그램에서 장애물 회피와 조명 추적을 어떻게 결합할 수 있습니까? 몇 가지 실습을 하고 실제 프로그램을 만들 수 있는지 확인하십시오.



3) 라인 추적하기


여기서는 SENSORS> LINE 메뉴에서 라인센서 판독(line sensor reading) 블록을 살펴볼 것 입니다. 감지 라인(detect line) 블록은 센서가 라인을 넘었는지 아닌지에 대한 데이터를 제공하지만 불빛 센서 읽기(light sensor reading) 블록이 많을수록 더 자세한 정보를 얻을 수 있습니다.


c65af217afdf5172d0e23bfe07e38009_1511104252_5856.png 


로봇S3 아래 지면의 재질이 왼쪽 또는 오른쪽 라인 센서에 대해 얼마나 반사적인지 알려주는 0 % ~ 100 %의 값을 제공합니다.


라인 반사율 이해 및 측정

- 이 블록이 어떻게 작동하는지 더 잘 이해하려면 다음 프로그램을 빌드하십시오.

이 프로그램은 CONTROL , VARIABLES , SENSOR> LINE 및  ACTIONS> COMMUNICATE 범주의 블록을 사용합니다. 이러한 COMMUNICATE 블록이 무엇인지 잘 모르는 경우 이 프로그램이 실행될 때 어떤 일이 발생할 것인지 예측하는데 시간을 투자하십시오. 예측이 정확하지 않은 경우 이해하지 못했던 블록에 대해 알기 위해 시간을 할애하십시오. 블록을 설명할 필요가 있으면 Scribbler 3 Block Reference Help를 확인할 수 있습니다 .


c65af217afdf5172d0e23bfe07e38009_1511104267_8666.png
 

repeat forever 블록내에는 라이트 센서 읽기(light sensor reading) 블록의 오른쪽 및 왼쪽 라인 센서 값이 모두 변수에 저장됩니다. 그 변수의 값은 터미널로 전송되어 측정 값을 볼 수 있습니다.


- 라인추적 트랙자료를 인쇄하십시오 (나중에 11 페이지의 사본 2 부를 만드십시오).

- 저장하고, 컴파일하고, EEPROM에 로드하고, 프로그램을 실행하십시오. 이번에는 컴퓨터와 로봇S3 사이에 USB케이블을 연결한 상태로 유지해야 하며 브로클리프롭(BlocklyProp) 작업 공간은 여전히 열려 있어야 합니다.


케이블은 로봇과 브로클리프롭(BlocklyProp) Terminal 소프트웨어 사이에 링크를 제공합니다. 프로그램이 시작되면 터미널 창이 열립니다. 터미널과 연결이 되면 다음과 같은 내용을 볼 수 있습니다 (숫자는 다를 수 있음).

c65af217afdf5172d0e23bfe07e38009_1511104355_4723.png 


- 로봇S3를 가운데에 인쇄된 검은 선이 있는 종이 위에 평평한 표면에 놓습니다.

- 로봇S3를 왼쪽에서 오른쪽으로 밀어서 용지에 매우 가까운 선을 따라 앞뒤로 움직입니다.


이제 우리는 정보를 이해하는 과정을 시작할 수 있습니다. 로봇S3의 라인 센서가 검은 선을 기준으로 이동함에 따라 백분율 값이 어떻게 변하는지 확인하십시오. 모든 흰종이 또는 포스터 보드 - 당신이 원하는 경우 3/4 "검정 마스킹 테이프 라인, 3/4"검은 전기 테이프 라인, 또는 약 3/4 "와이드 Sharpie® 마커 라인과 유사한 테스트를 실시하고 있습니다. 어둡거나 검은 색 표면에 흰색 선을 시험해 볼 수도 있습니다.


- 나중에 참조할 수 있도록 다양한 선 유형 및 표면에 대한 판독 값을 기록하십시오.


예제 차트는 추가 선 유형을 위한 여분의 공백으로 시도할 수 있습니다.


c65af217afdf5172d0e23bfe07e38009_1511104371_5976.png
 

* 잉크젯 검정 / 흰 종이 열의 예제 판독 값은 예제 코드 일러스트레이션에서 사용됩니다 (표시된 결과는 24 파운드, 97 밝기 잉크 제트 용지의 Line Following Tracks pdf에서 인쇄 된 검정 잉크 라인을 사용함). 센서가 검은 선 위에 있으면 평균 라인 센서 반사율은 10 % (반올림 됨)입니다 .- 센서가 백지 표면 위에 있을 때 평균 라인 센서 반사율은 61입니다 (반올림 됨 60).


정보를 실습동작에 넣기

이제는 10 %의 낮은 판독 값과 60 %의 높은 판독 값의 중간 지점을 찾아야 합니다. 그들 사이의 차이는 50 %입니다. 그래서 당신이 그 절반 (25 %)을 가져다가 그것을 당신의 낮은 읽은 값에 추가한다면, 당신은 35 %의 가치를 얻게 됩니다. 이것은 로봇S3이 라인을 초과하는지 여부를 판별하기 위한 중간 임계값입니다. 판독 값 <35 %가 라인 이상이어야 하고 판독 값 ≥35 %가 라인에서 벗어나야 합니다 (여기서는 ≥를 사용하여 라인과 오프라인 측정 사이에 숫자적인 갭이 없음). 각 로봇S3는 고유한 것을 기억하십시오. 이와 같이 임계값을 지정하는 라인 추적 프로그램을 만들 때 특정 로봇과 동작하는 낮은 값, 높은 값 및 중간 점을 찾아야합니다.


이전 학습에서는 사용자 정의할 수 있는 부분이 많지 않았습니다. 이제 VARIABLES 블록, MATH 블록 및 라인 센서 반사율을 측정하는데 사용된 라인 센서 판독(line sensor reading) 블록을 사용하여 고유한 로봇S3에 최적화된 라인 감지 프로그램을 만들 수 있습니다. 변수는 아래에 설정되어 있습니다. 새로운 변수를 생성하면 set variable use variable 블록이 생성된다는 점을 기억하십시오.


c65af217afdf5172d0e23bfe07e38009_1511104395_6608.png 


LED 피드백으로 라이트 센서 변수(Light Sensor Variable) 및 인서트 (Inserts) 사용하기

방금 만든 변수 블록의 기능을 확인하려면 LED 피드백을 추가해 봅시다. 지금까지 작성한 것을 CONTROL , FUNCTIONSACTIONS> LED 카테고리의 블록과 함께 사용하여 브로클리프롭(BlocklyProp) 코드를 다음과 같이 구성하십시오.


c65af217afdf5172d0e23bfe07e38009_1511104410_6557.png
 

- 저장하고, 컴파일하고, EEPROM에 로드하고, 프로그램을 실행하십시오.

- 로봇S3의 중앙에 인쇄된 검은 선이 있는 종이 위에 평평한 표면에 로봇S3을 놓아 변수, 삽입 코드를 테스트하십시오. 로봇S3를 왼쪽에서 오른쪽으로 앞뒤로 밉니다.


로봇이 검은 색 선을 기준으로 이동할 때 올바른 LED 피드백을 얻습니까? 그렇지 않은 경우, 예제를 다시 점검하고 다시 시도하십시오. 그렇다면 한 줄을 따라가 봅니다.



고급 라인 추종 프로그램 만들기

다음의 시도해 보세요 그리고 당신 차례 섹션에서 고급 브로클리프롭(BlocklyProp) 블록을 사용하여 라인을 따라 가도록 로봇S3을 프로그래밍할 수 있습니다. 프로그램을 작동시키려면 다른 설정과 다른 블록을 사용하기 위하여 약간의 실험이 필요할 수 있습니다. 성공하기 위해서, 그리고 압도당하는 것을 피하기 위해서, 모든 변경 후에 당신의 프로그램을 테스트하고, 효과가 있는 것과 그렇지 않은 것을 추적하도록 하십시오. 원하는대로 일할 때 프로그램을 저장하십시오.


익숙하지 않은 대규모 작업을 처리하는 가장 일반적인 방법은 여러 가지 아이디어를 시도하고 실패한 다음 실수를 통해 배우는 것입니다. "시행 착오 접근법"이라고 하는 이 과정을 들을 수도 있습니다. 브로클리프롭(BlocklyProp)은 필요한 모든 도구를 제공하지만 논리적으로 문제를 해결하고 작고 관리하기 쉬운 단계로 문제를 해결하는 방법을 배워야합니다. 펜과 종이가 있는 경우 원하는 프로그램 단계를 단순한 영어로 먼저 작성하면, 브로클리(Blockly) 작업 공간을 설정하는 방법을 결정하는데 도움이 될 수 있습니다.


시도해 보세요!

위에서 만든 코드를 ACTIONS> MOTORS 범주의 블록과 함께 사용하여, 더 고급의 라인추적 프로그램을 만들기 위한 함수내에 drive speed 블록과 함께 change LEDs 블록을 대체하세요.


c65af217afdf5172d0e23bfe07e38009_1511104444_6413.png
 

- 저장하고, 컴파일하고, EEPROM에 로드하고 프로그래밍 케이블에서 로봇S3를 분리하십시오.

- PDF 파일의 페이지 11, 2, 8, 3 및 11의 또 다른 복사본을 이어 붙이세요.


c65af217afdf5172d0e23bfe07e38009_1511104458_276.png 


- 아래 그림과 같이 단단하고 평평하며 매끄러운 표면에 함께 테이프를 붙이고 검은 색 선의 위에 로봇S3를 놓으십시오. 프로그램을 실행하십시오.


어떻게 작동 했습니까? 어떻게 향상시킬 수 있습니까? 대부분의 실험자와 같은 경우 로봇S3가 검은 색 선의 틈에 도달하는 즉시 중지되었을 수 있습니다. 로봇S3는 정보를 매우 신속하게 처리하므로 두 센서가 중간 임계값을 초과하는 값을 동시에 보자마자 정지합니다.


인쇄된 용지를 모서리에 놓거나 인쇄할 때 겹치면 선에 간격이 생깁니다. 대부분의 프린터가 용지 가장자리를 인쇄하지 않기 때문입니다. 이러한 격차로 멈추지 않는 프로그램을 만들고 싶다면 프로그램을 작성하거나 물리적으로 처리하는 방법을 찾아야합니다.


가능한 해결책은 다음과 같습니다.


1. 두 센서의 정지 구동 블록을 제거하여 35 % 이상의 값을 읽습니다.

2. 용지를 트리밍하거나 Sharpie® 또는 검은 색 마스킹 테이프를 사용하여 틈을 메우십시오.

3. 라인의 갭을 보다 관대하게 만들거나 라인을 다시 찾도록 프로그래밍함으로써 프로그램을 개선하십시오. 이러한 솔루션을 사용하면 pdf 리소스의 7 페이지와 같이 수정되지 않은 행 추적 경로를 사용할 수 있습니다.


- 위에서 설명한 첫 번째 두 가지 해결책을 순서대로 시도하십시오.

- 테스트를 실행하고 로봇S3가 각각의 트랙을 따르는 라인에서 어떻게 작동하는지 관찰합니다. 솔루션은 어떻게 작동 했습니까? 당신은 어느 것을 선호했습니까?

- 코드를 시작점으로 사용하여 왼쪽 및 오른쪽 함수에 대해 ACTIONS> MOTORS 범주와 다른 블록을 시도하십시오. 로봇S3 이동을 보다 원활하게 할 수 있습니까?

 


당신 차례 !

- 앞의 두 가지 예를 결합하여 LED 피드백이 있는 고급 라인 추적 프로그램을 작성하십시오.

- 테이프로 자신 만의 라인 경로를 만들거나 (검은 색 마스킹 또는 검은 색 전기 테이프 또는 어두운 서비스의 흰 테이프) 검은 색 마커가 있는 약 3/4 인치 폭의 자신 만의 선을 그리고 배운 것을 사용하여 자신의 프로그램을 개발하십시오.


힌트 : 반사율을 다시 확인하고 다른 재료 또는 잉크로 선을 작성하는 경우 새로운 중간 임계값을 결정해야 할 수 있습니다. 이 학습의 시작 부분에서 이미 이러한 작업을 수행했을 수도 있습니다.



이전 페이지로     다음 페이지로