News Download Tutorial FAQ Reference Buy

스크래치 : 브레이튼버그의 로봇 #9

변심하는 로봇
앞에서 나온 내성적인 로봇을 다음 그림과 같이 바꾸어 보자.

내성적인 로봇과 변심하는 로봇의 차이점은 다음과 같다. 센서의 값이 직접 모터의 속도를 제어하는 단순한 자극성 관계를 갖지 않고, 센서 값을 중간에서 처리하여 모터의 속도를 결정한다. 중간에서 처리하는 방법은 여러 가지가 있지만, 다음과 같이 간단하게 해보자.

사랑하는 로봇에서 했던 방법과 마찬가지로 근접 센서로 측정되는 최대값을 구하자. 이 최대값이 60이라고 한다면 반을 나누어 30을 기준으로 하고, 로봇과 손의 거리가 멀면, 즉 근접 센서의 값이 30보다 작으면 내성적인 로봇으로, 로봇과 손의 거리가 가까우면, 즉 근접 센서의 값이 30보다 크면 사랑하는 로봇으로 변심하도록 하자.

다음 그림과 같이 스크래치를 사용하여 변심하는 로봇을 만들수 있다.

근접 센서 값의 범위를 0 ~ 30, 30 ~ 60 두 부분으로 나누었기 때문에 앞에서 만들었던 다른 로봇들과 비교해서 바퀴의 속도가 느리다. 좀더 빠르게 움직이도록 하기 위해서는 다음 그림과 같이 바퀴의 속도를 두 배로 하면 된다.

프로그램을 실행하고 여러 가지 방법으로 로봇의 행동을 자세히 관찰한 후 문장으로 표현해 보자.

주인님이 주위에 없으면 가만히 기다립니다. 아주 온순하고 착한 햄스터 로봇입니다. 이때, 주인님이 멀리서 나타나 손짓합니다. 로봇은 잠에서 깨어난 듯 움찔하면서 반응합니다. 갑자기 주인님이 가버립니다. 바쁜 일이 있나 봅니다. 로봇도 움직임을 멈추고 다시 기다립니다. 잠시 후 다시 주인님이 정면으로 가까이 와서 손짓합니다. 로봇은 기뻐서 힘차게 주인님을 향해 달려갑니다. 주인님이 돌아서서 뛰어 갑니다. 로봇도 오랜만에 주인님을 뒤따라 달리기를 합니다. 하지만 주인님이 옆에서 나타나면 수줍은 듯이 고개를 돌려 피합니다. 아직 어린 로봇이라 주인님이 너무 빨리 뛰면 못 따라갑니다. 주인님을 놓치면 그냥 가만히 기다립니다. 주인님이 옆길로 가면 수줍은 저는 따라가지 못하고 제자리에 서버립니다. 답답해진 주인님은 빨리 따라오라고 가만히 서서 기다립니다. 힘차게 주인님 근처로 달려갑니다. 발 앞에 도착한 후에는 달리기를 멈추고 조심스럽게 앉아서 기다립니다. 주인님의 발걸음이 오른쪽으로 향합니다. 같이 오른쪽으로 따라 갑니다. 주인님이 서면 같이 섭니다. 방향을 바꾸면 같이 바꿉니다. 주인님과 가까운 곳에 있으면 수줍음이 사라지는 것 같아요. 주인님을 너무 사랑하기 때문에 이제부터는 어느 곳이든 같이 있고 싶어요.

프로그램의 내용을 모르고 위의 문장을 읽은 사람은 이 로봇이 몇 줄짜리의 짧은 코드로 이루어졌다는 것을 상상하기 힘들 것이다. 가만히 기다리지 않고 바퀴가 움찔움찔 움직이는 것을 없애고자 한다면 다음 그림과 같이 바퀴의 속도가 아주 작은 경우에는 정지하도록 조건문을 줄 수도 있다.

스크래치의 블록 만들기 기능을 사용하여 함수로 표현하면 다음 그림과 같이 만들 수 있다.


목차
Hardware
  1. Hamster robot
  2. USB dongle
Preparation for Class
  1. Software installation   Windows · MacOS · Linux
  2. Robot to PC connection
  3. Software execution   Windows · MacOS · Linux
Basic
  1. Standing and singing
  2. My precious ass
  3. Moving an object with the accelerometer
Advanced
  1. Moving an object with the accelerometer
  2. Line follower with one sensor
Previous Lectures
  1. Ordering in sequence
  2. Repeat
  3. Debugging
  4. Repeat until hand found
  5. Move a robot
  6. Use sensors
  7. Use the default board
  8. Braitenberg's robot
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (akaii@kw.ac.kr) if you have any problem.