![Page 1: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/1.jpg)
햄스터 미로찾기
광운대학교 로봇학부 박광현
![Page 2: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/2.jpg)
블록 커버 2
나노블록
레고블록
![Page 3: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/3.jpg)
블록 커버 3
나노블록
레고블록
![Page 4: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/4.jpg)
컵 따라 돌기
![Page 5: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/5.jpg)
근접 센서 5
컵
![Page 6: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/6.jpg)
반사판 6
양쪽 반사판을 끼워 주세요 !!
![Page 7: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/7.jpg)
미로찾기용 부품 조립 방법 7
위에서 누르면 끼울 수 있어요
뒤에서 앞으로 밀면 뺄 수 있어요
![Page 8: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/8.jpg)
컵 따라 돌기 8
컵
컵
컵
![Page 9: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/9.jpg)
컵 따라 돌기
from roboid import *
hamster = Hamster()
while True:
if hamster.left_proximity() > 10:
hamster.wheels(30, 0)
else:
hamster.wheels(0, 30)
wait(10)
9
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
while(1) {
if(hamster_left_proximity() > 10)
hamster_wheels(30, 0);
else
hamster_wheels(0, 30);
wait(10);
}
return 0;
}
![Page 10: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/10.jpg)
개선된 컵 따라 돌기 10
컵 컵
컵
![Page 11: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/11.jpg)
개선된 컵 따라 돌기 11
from roboid import *
hamster = Hamster()
while True:
if hamster.left_proximity() > 10:
hamster.wheels(30, 30)
else:
hamster.wheels(0, 30)
wait(10)
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
while(1) {
if(hamster_left_proximity() > 10)
hamster_wheels(30, 30);
else
hamster_wheels(0, 30);
wait(10);
}
return 0;
}
![Page 12: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/12.jpg)
좀 더 개선된 컵 따라 돌기 12
근접 센서 값이 커지면 바퀴의 속도도 커진다 ?
![Page 13: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/13.jpg)
좀 더 개선된 컵 따라 돌기 13
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
while(1) {
hamster_wheels(hamster_left_proximity(), 30);
wait(10);
}
return 0;
}
from roboid import *
hamster = Hamster()
while True:
hamster.wheels(hamster.left_proximity(), 30)
wait(10)
![Page 14: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/14.jpg)
원 운동 14
컵
![Page 15: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/15.jpg)
원하는 거리만큼 떨어져서 돌기 15
컵
30
원하는 거리만큼
센서 위치를 컵의 중심에 맞춘다 !!
![Page 16: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/16.jpg)
원하는 거리만큼 떨어져서 돌기 16
컵
30
센서 값: 16
센서 위치를 컵의 중심에 맞춘다 !!
센서 값: 16
![Page 17: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/17.jpg)
원하는 거리만큼 떨어져서 돌기 17
컵
30
센서 값: 16 30 16 = 1.875
센서 위치를 컵의 중심에 맞춘다 !!
센서 값: 16
![Page 18: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/18.jpg)
원하는 거리만큼 떨어져서 돌기 18
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
while(1) {
hamster_wheels(hamster_left_proximity() * 1.875, 30);
wait(10);
}
return 0;
}
from roboid import *
hamster = Hamster()
while True:
hamster.wheels(hamster.left_proximity() * 1.875, 30)
wait(10)
![Page 19: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/19.jpg)
여러 가지 활동들 19
컵
읷정 횟수만큼 돌고 정지하기
컵
라읶 트레이싱 + 컵 따라 돌기
중급
고급
![Page 20: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/20.jpg)
여러 가지 활동들 20
컵
햄스터 플래닛 중급 고급
중급
![Page 21: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/21.jpg)
슬라럼 경주 21
컵 컵 컵
![Page 22: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/22.jpg)
슬라럼 경주 22
컵 컵
컵 중간으로 지나가게 하는 방법은?
![Page 23: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/23.jpg)
슬라럼 경주 23
컵 컵
1 오른쪽 컵을 발견할 때까지 왼쪽 컵 따라 돌기
2 왼쪽 컵이 사라질 때까지 오른쪽 컵 따라 돌기
3 왼쪽 컵을 발견할 때까지 오른쪽 컵 따라 돌기
4 오른쪽 컵이 사라질 때까지 왼쪽 컵 따라 돌기
![Page 24: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/24.jpg)
판단 기준 24
컵
센서 값: 20
0 20 10
기 준 값
안전핚 범위
실제 센서 값
15 5
다른 컵 발견 다른 컵 사라짐
![Page 25: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/25.jpg)
다이어그램 25
상태 3
상태 2
상태 1
상태 0
왼쪽 컵 따라 돌기 오른쪽 컵 따라 돌기
오른쪽 컵 따라 돌기 왼쪽 컵 따라 돌기
오른쪽 센서 > 15
왼쪽 센서 > 15
왼쪽 센서 < 5 오른쪽 센서 < 5
![Page 26: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/26.jpg)
잘 안 되는 코드... 왜? 26
![Page 27: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/27.jpg)
잘 안 되는 코드... 왜? 27
![Page 28: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/28.jpg)
잘 안 되는 코드... 왜? 28
from roboid import *
hamster = Hamster()
state = 0
while True:
left = hamster.left_proximity()
right = hamster.right_proximity()
if state == 0:
hamster.wheels(left * 2.5, 50)
if right > 15: state = 1
elif state == 1:
hamster.wheels(50, right * 2.5)
if left < 5: state = 2
elif state == 2:
hamster.wheels(50, right * 2.5)
if left > 15: state = 3
else:
hamster.wheels(left * 2.5, 50)
if right < 5: state = 0
wait(10)
#include "roboid.h"
int main(int argc, char *argv[]) {
int state = 0, left, right;
hamster_create();
while(1) {
left = hamster_left_proximity();
right = hamster_right_proximity();
switch(state) {
case 0:
hamster_wheels(left * 2.5, 50);
if(right > 15) state = 1;
break;
case 1:
hamster_wheels(50, right * 2.5);
if(left < 5) state = 2;
break;
case 2:
hamster_wheels(50, right * 2.5);
if(left > 15) state = 3;
break;
case 3:
hamster_wheels(left * 2.5, 50);
if(right < 5) state = 0;
break;
}
wait(10);
}
return 0;
}
![Page 29: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/29.jpg)
순간적으로 튀는 센서 값 제거하기 29
10번 연속으로 조건 만족하면...
![Page 30: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/30.jpg)
순간적으로 튀는 센서 값 제거하기 30
10번 연속으로 조건 만족하면...
![Page 31: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/31.jpg)
다르게 작성해 보기 31
![Page 32: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/32.jpg)
다르게 작성해 보기 32
![Page 33: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/33.jpg)
2% 부족한... 그러나 좀 더 간단한 33
10번 연속으로 조건 만족하면...
![Page 34: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/34.jpg)
2% 부족한... 그러나 좀 더 간단한 34
10번 연속으로 조건 만족하면...
![Page 35: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/35.jpg)
순간적으로 튀는 센서 값 제거하기 35
from roboid import *
hamster = Hamster()
state = 0
count = 0
while True:
left = hamster.left_proximity()
right = hamster.right_proximity()
if state == 0:
hamster.wheels(left * 2.5, 50)
if right > 15: count += 1
else: count = 0
if count > 10:
count = 0
state = 1
elif state == 1:
hamster.wheels(50, right * 2.5)
if left < 5: count += 1
else: count = 0
if count > 10:
count = 0
state = 2
elif state == 2:
hamster.wheels(50, right * 2.5)
if left > 15: count += 1
else: count = 0
if count > 10:
count = 0
state = 3
else:
hamster.wheels(left * 2.5, 50)
if right < 5: count += 1
else: count = 0
if count > 10:
count = 0
state = 0
wait(10)
![Page 36: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/36.jpg)
다르게 작성해 보기 36
from roboid import *
hamster = Hamster()
def slalom(left_speed, right_speed, check):
count = 0
while count < 10:
left = hamster.left_proximity()
right = hamster.right_proximity()
hamster.wheels(left_speed(left, right), right_speed(left, right))
if check(left, right): count += 1
else: count = 0
wait(10)
while True:
slalom(lambda l, r: l * 2.5, lambda l, r: 50, lambda l, r: r > 15)
slalom(lambda l, r: 50, lambda l, r: r * 2.5, lambda l, r: l < 5)
slalom(lambda l, r: 50, lambda l, r: r * 2.5, lambda l, r: l > 15)
slalom(lambda l, r: l * 2.5, lambda l, r: 50, lambda l, r: r < 5)
![Page 37: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/37.jpg)
이렇게 작성할 수도 있지만 좀 그러한... 37
![Page 38: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/38.jpg)
순간적으로 튀는 센서 값 제거하기 38
#include "roboid.h"
int main(int argc, char *argv[]) {
int state = 0, count = 0, left, right;
hamster_create();
while(1) {
left = hamster_left_proximity();
right = hamster_right_proximity();
switch(state) {
case 0:
hamster_wheels(left * 2.5, 50);
if(right > 15) count ++;
else count = 0;
if(count > 10) {
count = 0;
state = 1;
}
break;
case 1:
hamster_wheels(50, right * 2.5);
if(left < 5) count ++;
else count = 0;
if(count > 10) {
count = 0;
state = 2;
}
break;
case 2:
hamster_wheels(50, right * 2.5);
if(left > 15) count ++;
else count = 0;
if(count > 10) {
count = 0;
state = 3;
}
break;
case 3:
hamster_wheels(left * 2.5, 50);
if(right < 5) count ++;
else count = 0;
if(count > 10) {
count = 0;
state = 0;
}
break;
}
wait(10);
}
return 0;
}
![Page 39: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/39.jpg)
미로 찾기
![Page 40: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/40.jpg)
한 쪽 센서 사용하여 벽 따라 가기 40
왼쪽 벽을 따라 주행
미로판
![Page 41: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/41.jpg)
한 쪽 센서 사용하여 벽 따라 가기 41
원하는 거리만큼
센서 값: 30 센서 값 > 30 센서 값 < 30
![Page 42: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/42.jpg)
from roboid import *
hamster = Hamster()
while True:
if hamster.left_proximity() > 30:
hamster.wheels(50, 0)
else:
hamster.wheels(0, 50)
wait(10)
한 쪽 센서 사용하여 벽 따라 가기 42
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
while(1) {
if(hamster_left_proximity() > 30)
hamster_wheels(50, 0);
else
hamster_wheels(0, 50);
wait(10);
}
return 0;
}
![Page 43: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/43.jpg)
양쪽 센서 사용하여 복도 주행 43
복도 중앙으로 주행
미로판
![Page 44: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/44.jpg)
양쪽 센서 사용하여 복도 주행 44
![Page 45: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/45.jpg)
양쪽 센서 사용하여 복도 주행 45
왼쪽 센서 값 > 오른쪽 센서 값 왼쪽 센서 값 < 오른쪽 센서 값
![Page 46: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/46.jpg)
양쪽 센서 사용하여 복도 주행 46
![Page 47: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/47.jpg)
양쪽 센서 사용하여 복도 주행 47
오른쪽으로 많이 움직여야... 오른쪽으로 조금 움직이면...
![Page 48: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/48.jpg)
양쪽 센서 사용하여 복도 주행 48
![Page 49: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/49.jpg)
양쪽 센서 사용하여 복도 주행 49
from roboid import *
hamster = Hamster()
while True:
diff = hamster.left_proximity() - hamster.right_proximity()
hamster.wheels(50 + diff * 1.3, 50 - diff * 1.3)
wait(10)
#include "roboid.h"
int main(int argc, char *argv[]) {
int diff;
hamster_create();
while(1) {
diff = hamster_left_proximity() - hamster_right_proximity()
hamster_wheels(50 + diff * 1.3, 50 - diff * 1.3);
wait(10);
}
return 0;
}
![Page 50: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/50.jpg)
미로 찾기 50
왼쪽 반사판으로 교체해 주세요 !!
![Page 51: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/51.jpg)
미로 찾기 51
왼쪽 벽을 따라 주행
원하는 거리만큼
센서 값: 35
![Page 52: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/52.jpg)
미로 찾기 52
오른쪽으로 많이 움직여야... 오른쪽으로 조금 움직이면...
![Page 53: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/53.jpg)
미로 찾기 53
왼쪽 벽을 따라 주행
![Page 54: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/54.jpg)
54
from roboid import *
hamster = Hamster()
while True:
diff = hamster.left_proximity() - 35
hamster.wheels(50 + diff * 0.8, 50 – diff * 0.8)
wait(10)
#include "roboid.h"
int main(int argc, char *argv[]) {
int diff;
hamster_create();
while(1) {
diff = hamster_left_proximity() - 35;
hamster_wheels(50 + diff * 0.8, 50 – diff * 0.8);
wait(10);
}
return 0;
}
![Page 55: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/55.jpg)
모퉁이를 잘 도는가? 55
미로판
![Page 56: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/56.jpg)
모퉁이를 잘 도는가? 56
![Page 57: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/57.jpg)
막힌 길에서 제자리 돌기 57
언제까지 돌아야 하나?
![Page 58: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/58.jpg)
미로 찾기 58
미로판
![Page 59: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/59.jpg)
미로 찾기
• 좌수법 (좌선법): 왼쪽 앞쪽 오른쪽
• 왼쪽 벽을 따라 주행
• 앞쪽에 벽이 있으면 벽이 없을 때까지 오른쪽으로 회전
59
![Page 60: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/60.jpg)
미로 찾기 60
![Page 61: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/61.jpg)
미로 찾기 61
#include "roboid.h"
int main(int argc, char *argv[]) {
int left, right, diff;
hamster_create();
while(1) {
left = hamster_left_proximity();
right = hamster_right_proximity();
if(right > 47) {
while(right > 5) {
hamster_wheels(50, -50);
right = hamster_right_proximity();
wait(10);
}
} else {
diff = left – 35;
hamster_wheels(50 + diff * 0.8, 50 – diff * 0.8);
}
wait(10);
}
return 0;
}
from roboid import *
hamster = Hamster()
while True:
left = hamster.left_proximity()
right = hamster.right_proximity()
if right > 47:
while right > 5:
hamster.wheels(50, -50)
right = hamster.right_proximity()
wait(10)
else:
diff = left – 35
hamster.wheels(50 + diff * 0.8, 50 – diff * 0.8)
wait(10)
![Page 62: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/62.jpg)
생각해 봅시다
![Page 63: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/63.jpg)
햄스터 플래닛 63
컵
고급 중급
컵
컵과의 거리가 점점 멀어지다가 점점 가까워지다가...
타원 궤도를 따라 이동하기
![Page 64: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/64.jpg)
최단 경로 찾기 64
출발
도착
![Page 65: 햄스터 미로찾기 · · 2017-05-01순간적으로 튀는 센서 값 제거하기 35 from roboid import * hamster = Hamster() state = 0 count = 0 while True: left = hamster.left_proximity()](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5afcf1db7f8b9a864d8cd039/html5/thumbnails/65.jpg)
알고리즘
• 미로 탐색 알고리즘
– 좌수법(좌선법), 우수법(우선법)
– 깊이 우선 탐색, 너비 우선 탐색
– 다익스트라 알고리즘
– A* 알고리즘
• 미로 제작 알고리즘
– http://weblog.jamisbuck.org/2011/2/7/maze-generation-algorithm-recap
65