얼음 나라
햄스터 로봇이 펭귄 친구를 만나러 얼음 나라에 갔습니다.
얼음 나라는 길이 얼음으로 되어 있어서 너무 미끄럽습니다.
길 위에서는 방향을 바꿀 수 없어요.
벽이 나타날 때까지 계속 앞으로 미끄러져 이동하다가 벽을 잡고 방향을 바꾸어야 합니다.
아래 그림에서 햄스터 로봇이 펭귄 앞까지 이동하려면 어떻게 움직여야 할지 생각해 봅시다.
도착 지점으로 이동한 후에는 펭귄 친구와 얘기할 수 있도록 햄스터 로봇이 펭귄 방향을 바라보아야 합니다.
햄스터 로봇이 아직 너무 어려서 그림으로 그려진 벽은 알 수가 없으니 말판 위에 벽을 세워 놓아야 합니다.
그림의 손과 방향을 맞추어 손을 올려놓도록 합시다.
#include "roboid.h"
int can_move_forward(void) {
return (hamster_left_proximity() < 40 && hamster_right_proximity() < 40) ? 1 : 0;
}
int main(int argc, char *argv[]) {
hamster_create();
while(can_move_forward()) {
hamster_board_forward();
}
hamster_board_left();
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
두 번째 펭귄 친구도 찾아 봅시다.
#include "roboid.h"
int can_move_forward(void) {
return (hamster_left_proximity() < 40 && hamster_right_proximity() < 40) ? 1 : 0;
}
int main(int argc, char *argv[]) {
int i;
hamster_create();
for(i = 0; i < 2; ++i) {
while(can_move_forward()) {
hamster_board_forward();
}
hamster_board_left();
}
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
세 번째 펭귄 친구도 찾아 봅시다.
#include "roboid.h"
int can_move_forward(void) {
return (hamster_left_proximity() < 40 && hamster_right_proximity() < 40) ? 1 : 0;
}
int main(int argc, char *argv[]) {
int i;
hamster_create();
for(i = 0; i < 4; ++i) {
while(can_move_forward()) {
hamster_board_forward();
}
hamster_board_right();
}
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
네 번째 펭귄 친구도 찾아 봅시다.
#include "roboid.h"
int can_move_forward(void) {
return (hamster_left_proximity() < 40 && hamster_right_proximity() < 40) ? 1 : 0;
}
int main(int argc, char *argv[]) {
int i;
hamster_create();
while(can_move_forward()) {
hamster_board_forward();
}
hamster_board_right();
hamster_board_right();
for(i = 0; i < 2; ++i) {
while(can_move_forward()) {
hamster_board_forward();
}
hamster_board_right();
}
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
목차
고급
- 행위 기반의 로봇 제어
- 경로 탐색
- 자리 바꾸기
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(
akaii@kw.ac.kr)에게 연락하세요.