미션. 2x2 첫 번째 미로

첫 번째 미로



첫 번째 미로는 아주 간단하죠?

가장 간단한 미로를 가지고 어떤 과정으로 생각하면 되는지 연습해 보겠습니다.



먼저 생각해 봅시다. 햄스터 로봇은 미로가 어떻게 생겼는지 모릅니다.

우리는 미로를 위에서 바라보고 있습니다.

너무 쉽죠?

우리 머릿속에선 이미 길이 다 그려졌거든요.


그럼 이제 우리가 저 햄스터 로봇의 크기로 저기에 있다고 생각해보세요.

아마 눈 앞에는 이런 풍경이 보일거에요.




그럼 미로를 위에서 내려다 볼 때만큼 쉽지는 않죠?

이런 미로에 갖혔다면 어떻게 할 건가요?


앞으로 가다가 벽을 만나면 왼쪽이나 오른쪽에 뚫려있는 길을 찾아 계속 앞으로 가겠죠?

바로 그겁니다!

우리가 해야 할 일은 햄스터 로봇에게 이렇게 생각하고 행동하는 방법을 가르치는 거에요.



우리는 생각 이상으로 똑똑합니다.

사람이 가진 뇌와 눈은 고성능입니다.

우리는 저 상황에서 저 앞에 벽이 있고, 벽 왼쪽으로 길이 있고, 오른쪽은 막혀있다는 걸 바로 알 수 있죠. (오른쪽은 사진엔 잘 안보이긴 하네요.)

눈으로 본 정보를 순식간에 뇌에서 처리해서 다리에게 명령합니다.

"앞으로 가다가 왼쪽 길로 돌아서 가!"


우리 머릿속에는 고성능의 소프트웨어가 들어있습니다.

이제 우리가 우리 머릿속에서 일어나는 일들을 잘 분석해서 햄스터 로봇의 소프트웨어를 코딩해 주어야 합니다.



햄스터 로봇도 눈과 발이 있습니다.


    눈: 근접 센서

    발: 두 바퀴


우리 눈처럼 고성능의 카메라는 아니지만 앞에 뭔가가 있다는 건 알 수 있는 '근접 센서'가 양쪽에 2개 있습니다.

그리고 이동을 할 수 있게 발 역할을 하는 두 바퀴가 있죠.

햄스터 로봇도 미로를 빠져나갈 수 있습니다.




근접 센서로 상황을 파악하고, 바퀴를 움직여라!

출발 위치에서 햄스터 로봇 앞엔 벽이 없습니다.

햄스터 로봇이 앞으로 계속 움직이면 결국 벽에 부딪히게 됩니다. 더이상 앞으론 갈 수 없죠.

근접 센서도 앞에 장애물이 있다고 알려줄 겁니다.

이렇게 햄스터 로봇이 움직이면서 상황이 바뀌고 그 정보를 근접 센서로 알아내고 다음 행동을 하게 해 주는 프로그램을 만들어야 합니다.


이제 위의 미로를 빠져나갈 수 있는 규칙을 햄스터 로봇에게 알려줄 수 있나요?

(햄스터 로봇이 아니라 저기 갖혀있는 친구에게 알려준다고 생각해 보세요.)




가장 간단한 알고리즘

첫 번째 미로를 빠져나오는 가장 간단한 규칙이 뭘까요?

계속 앞으로 가! 가다가 벽이 나오면 왼쪽으로 꺾어! 이걸 계속 반복해! 그러면 나올 수 있어.


코딩 방식으로 다시 정리하면,

계속 반복해
    만약에 앞에 벽이 있다면
        왼쪽으로 꺾어!
    아니면
        앞으로 가!



코딩하기

알고리즘은 생각했으니 이제 코딩을 할 단계입니다.
알고리즘은 우리가 이해할 수 있는 방식이지만 이 명령들을 햄스터 로봇이 이해할 수 있는 방식으로 바꿔주어야 합니다.

*
앞에 벽이 있다면


근접 센서는 장애물의 거리를 숫자로 알려줍니다. 장애물이 가까이 있을수록 숫자가 커집니다.


*
왼쪽으로 꺾어!



얼만큼 꺾을지도 알려줘야죠. 정확히 90도 만큼 돌면 되는데, 90도 돌기 명령은 없습니다.
실험을 통해 90도 정도 돌아가는 시간을 찾습니다. 0.9초 정도 돌면 90도 정도 돌아가네요.


*
앞으로 가!



앞으로 가라는 명령도 없죠. 바퀴를 움직이는 명령도 바퀴의 속도를 숫자로 정해주어야 합니다.

양쪽 바퀴를 30 속도로 정해!


이렇게 내가 생각한 알고리즘을 그에 맞는 명령 블록을 사용해서 써 주면 됩니다.



전체코드

전체 코드입니다.





결과


잘 빠져나가나 볼까요?



어떻게 하는 건지 감이 좀 오나요?


그럼 다음 단계로 넘어가 볼까요?





댓글

로그인 후 댓글을 남길 수 있습니다.