다운로드 교육자료 문제해결 레퍼런스 구입방법

교육 자료 : 파이썬 : 표준 파이썬 : 벽 따라가기

개요
벽 따라가기의 원리는 라인 트레이서와 비슷합니다. 바닥 센서를 사용하는 대신 햄스터 로봇의 앞면에 있는 근접 센서를 사용하는 것만 다릅니다. 원래 벽 따라가기는 센서가 옆면에 있는 경우 아주 쉽게 수행할 수 있지만 앞면에 있는 근접 센서를 사용하여 벽을 따라가는 방법을 알아보도록 하겠습니다.
왼쪽 근접 센서를 사용하여 왼쪽의 벽 따라가기
실험을 위해 적당한 높이의 책을 준비합니다. 책의 높이가 너무 낮으면 센서로 감지하지 못하므로 책의 높이는 햄스터 로봇의 높이와 비슷하거나 더 높게 하는 것이 좋습니다. 책 대신 A4 용지를 접어서 벽을 만들어도 되고 미로판의 벽을 사용하여도 됩니다.

햄스터 로봇이 왼쪽의 벽을 향해 있으면 벽에서 멀어지기 위해 오른쪽으로 움직이고, 벽과 반대쪽을 향해 있으면 벽으로 다가가기 위해 왼쪽으로 움직이면 됩니다.

     

이를 반복하면 다음 그림과 같이 벽을 따라 앞으로 이동할 수 있습니다.

원리는 간단한데 이를 실제로 구현하기 위해서는 두 가지가 필요합니다.

우선 햄스터 로봇이 벽을 향해 있는지, 반대쪽을 향해 있는지 알기 위해 다음 그림과 같이 햄스터 로봇을 벽과 나란히 놓고 왼쪽 근접 센서의 값을 관찰해 봅시다. 햄스터 로봇이 벽을 향해 있을 때와 반대쪽을 향해 있을 때 왼쪽 근접 센서의 값이 어떻게 달라지는지도 확인해 봅시다.

햄스터 로봇의 앞면에 있는 근접 센서는 원래 앞쪽에 있는 물체를 감지하기 위해 사용합니다. 햄스터 로봇의 앞쪽에 물체가 있으면 센서 값이 커지기 때문에 이 실험을 위해서는 햄스터 로봇의 앞쪽에 어떠한 물체도 있지 않아야 합니다.

from roboid import *

hamster = Hamster()

while True:
    print(hamster.left_proximity()) # python 3.x.x
    #print hamster.left_proximity() # python 2.7.x
    wait(20) # 너무 빨리 반복하지 않도록 한다.

햄스터 로봇이 벽을 향해 있을 때는 왼쪽 근접 센서의 값이 커지고, 반대쪽을 향해 있을 때는 값이 작아진다는 것을 알 수 있습니다. 햄스터 로봇이 벽과 나란히 있을 때의 센서 값을 기준으로 크기를 비교하면 됩니다. 햄스터 로봇이 벽과 나란히 있을 때의 센서 값이 5라고 관측되었다면 햄스터 로봇이 벽을 향해 있는 경우를 다음과 같이 표현할 수 있습니다.

hamster.left_proximity() > 5

햄스터 로봇을 왼쪽 또는 오른쪽으로 움직이기 위한 방법은 다양하게 있지만 간단하게 하기 위해 한쪽 바퀴를 축으로 회전하는 방법을 사용해 봅시다. 왼쪽으로 회전하기 위해서는 왼쪽 바퀴를 정지하고 오른쪽 바퀴를 앞으로 움직이면 됩니다.

hamster.wheels(0, 30)

오른쪽으로 회전하기 위해서는 오른쪽 바퀴를 정지하고 왼쪽 바퀴를 앞으로 움직이면 됩니다.

hamster.wheels(30, 0)

햄스터 로봇이 벽을 향해 있을 때, 즉 왼쪽 근접 센서의 값이 5보다 크면 오른쪽으로 회전하고, 아니면 왼쪽으로 회전하도록 코드를 작성해 봅시다.

if hamster.left_proximity() > 5:
    hamster.wheels(30, 0)
else:
    hamster.wheels(0, 30)

이제 이 코드를 계속 반복하면 됩니다.

from roboid import *

hamster = Hamster()

while True:
    if hamster.left_proximity() > 5:
        hamster.wheels(30, 0)
    else:
        hamster.wheels(0, 30)

    wait(10) # 너무 빨리 반복하지 않도록 한다.

다음 그림과 같이 햄스터 로봇을 왼쪽의 벽과 나란히 놓고 작성한 코드를 실행해 봅시다.

크기를 비교하는 기준이 되는 숫자 5를 변경하면 햄스터 로봇의 동작이 어떻게 달라지는지 관찰해 봅시다.

오른쪽 근접 센서를 사용하여 오른쪽의 벽을 따라갈 수 있도록 해봅시다.
왼쪽 근접 센서를 사용하여 원통 따라 돌기
이번에는 원통을 따라 돌도록 해봅시다. A4 용지를 준비하고 다음 그림과 같이 길이가 긴 방향으로 이어 붙여 원통을 만듭니다. 풀이나 테이프로 이어 붙여도 되고 스테이플러로 아래 위를 고정시켜도 됩니다.

원통을 따라 돌 때는 벽을 따라갈 때보다 센서의 값이 더 작아집니다. 왼쪽 근접 센서는 조금 앞쪽의 왼쪽에 있는 벽을 감지하게 되는데, 곡면인 경우에는 조금 앞쪽의 왼쪽에 있는 면이 햄스터 로봇에서 멀어지기 때문에 센서의 값이 작아지게 되는 것입니다.

왼쪽 근접 센서의 값을 다시 관찰해 봅시다.

from roboid import *

hamster = Hamster()

while True:
    print(hamster.left_proximity()) # python 3.x.x
    #print hamster.left_proximity() # python 2.7.x
    wait(20) # 너무 빨리 반복하지 않도록 한다.

벽 따라가기를 위해 작성한 코드에서 크기를 비교하는 기준이 되는 숫자를 0으로 변경하여 실행해 봅시다. 다음 그림과 같이 햄스터 로봇을 원통과 나란히 놓고 출발해야 합니다.

from roboid import *

hamster = Hamster()

while True:
    if hamster.left_proximity() > 0:
        hamster.wheels(30, 0)
    else:
        hamster.wheels(0, 30)

    wait(10) # 너무 빨리 반복하지 않도록 한다.

조금 앞쪽의 왼쪽에 있는 면을 감지하여 따라가기 때문에 원통의 크기가 클수록 더 잘 따라가게 됩니다.

오른쪽 근접 센서를 사용하여 원통을 따라 돌 수 있도록 해봅시다.
목차
수업 준비
  1. 하드웨어 살펴보기
  2. 햄스터 · 햄스터S · USB 동글 PDF · PPT
  3. 디바이스 드라이버 설치
  4. 윈도우 · 맥OS · 리눅스 PDF · PPT
  5. 파이썬 설치
  6. 윈도우 · 맥OS · 리눅스 PDF · PPT
  7. 라이브러리 설치
  8. PDF · PPT
  9. 로봇과 컴퓨터 연결
  10. PDF · PPT
  11. 예제 파일 실행
  12. 윈도우 · 맥OS · 리눅스 PDF · PPT
기초
  1. IDLE에서 새 파일 만들기
  2. 클라우드 컴퓨터 환경에서 작업하기 (선택 사항)
  3. 말판 이동하기 #1 (순차, 횟수 반복)
  4. 이동하고 회전하기
  5. LED 켜고 소리 내기
  6. 순서대로, 반복하여 명령하기
  7. 키보드 이벤트
  8. 근접 센서 사용하기
  9. 말판 이동하기 #2 (~인 동안 반복)
  10. 바닥 센서 사용하기
  11. 밝기 센서와 가속도 센서 사용하기
  12. 브레이튼버그의 로봇
심화
  1. 보드 게임 만들기
  2. 그래픽 인터페이스
  3. 센서 한 개를 사용한 라인 트레이서
  4. 센서 두 개를 사용한 라인 트레이서
  5. 햄스터 친구 따라가기 (2인 1조)
  6. 라인 트레이서 교차로 주행하기
  7. 벽 따라가기
  8. 컵 따라 돌기 (미로 찾기용 커버 사용)
  9. 슬라럼 (미로 찾기용 커버 사용)
  10. 미로 탈출 (미로 찾기용 커버 사용)
  11. 로봇 청소기 흉내 내기
  12. 병렬 처리 (버전 1.4.0부터)
  13. 이벤트 처리 (버전 1.4.0부터)
확장 키트
  1. 조립하기
  2. 핀/소켓 배치 살펴보기
  3. 디지털 입력 - 버튼을 누르면 삐 소리가 나요
  4. 디지털 출력 - 어두우면 LED 불이 켜져요
  5. 디지털 출력 - 반짝반짝 LED를 깜박여요
  6. 디지털 출력 - 기울이는 방향으로 LED가 켜져요
  7. 아날로그 입력 - 포텐셔미터를 돌리면 음 높이가 달라져요
  8. 아날로그 입력 - 뜨겁지 않게 해주세요
  9. 아날로그 입력 - 빛을 따라 움직여요
  10. PWM 출력 - LED 불이 부드럽게 밝아졌다 어두워져요
  11. PWM 출력 - LED 촛불이 바람에 흔들려요
  12. 아날로그 서보 출력 - 햄스터 로봇에게 꼬리가 생겼어요
고급
  1. 행위 기반의 로봇 제어
  2. 경로 탐색
  3. 자리 바꾸기
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(akaii@kw.ac.kr)에게 연락하세요.