동굴 탐험 (순차)
햄스터 로봇이 길을 떠나 동굴 속을 탐험하려고 합니다.
동굴 속에는 햄스터가 좋아하는 해바라기 씨가 가득한 보물 상자가 있습니다.
아래 그림에서 햄스터 로봇이 보물 상자 앞까지 이동하려면 어떻게 움직여야 할지 생각해 봅시다.
도착 지점으로 이동한 후에는 보물 상자를 열 수 있도록 햄스터 로봇이 보물 상자 방향을 바라보아야 합니다.
다음 함수들을 사용하면 말판 위에서 이동하거나 회전할 수 있습니다.
- hamster_board_forward(): 검은색 격자로 구성된 말판 위에서 한 칸 앞으로 이동합니다.
- hamster_board_left(): 검은색 격자로 구성된 말판 위에서 왼쪽 방향으로 제자리에서 90도 회전합니다.
- hamster_board_right(): 검은색 격자로 구성된 말판 위에서 오른쪽 방향으로 제자리에서 90도 회전합니다.
햄스터 로봇을 말판의 출발 위치에 방향을 맞추어 올려놓고 보물 상자 앞까지 이동시켜 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
hamster_board_forward();
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
두 번째 동굴도 탐험해 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
hamster_board_forward();
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
hamster_board_forward();
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
세 번째 동굴도 탐험해 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
hamster_board_left();
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
hamster_board_left();
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
우물 찾기 (횟수 반복)
햄스터 로봇이 목이 마릅니다.
숲 속 우물을 향해 달려가야 합니다.
아래 그림에서 햄스터 로봇이 우물 앞까지 이동하려면 어떻게 움직여야 할지 생각해 봅시다.
도착 지점으로 이동한 후에는 햄스터 로봇이 물을 마실 수 있도록 우물 방향을 바라보아야 합니다.
#include "roboid.h"
int main(int argc, char *argv[]) {
int i;
hamster_create();
hamster_board_left();
for(i = 0; i < 3; ++i) {
hamster_board_forward();
}
hamster_board_right();
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
두 번째 우물도 찾아 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
int i;
hamster_create();
hamster_board_forward();
hamster_board_right();
for(i = 0; i < 3; ++i) {
hamster_board_forward();
}
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
세 번째 우물도 찾아 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
int i;
hamster_create();
for(i = 0; i < 2; ++i) {
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
}
hamster_board_forward();
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
네 번째 우물도 찾아 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
int i;
hamster_create();
hamster_board_right();
for(i = 0; i < 2; ++i) {
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
hamster_board_left();
}
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
다섯 번째 우물도 찾아 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
int i;
hamster_create();
for(i = 0; i < 3; ++i) {
hamster_board_forward();
}
hamster_board_right();
for(i = 0; i < 3; ++i) {
hamster_board_forward();
}
hamster_board_left();
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
여섯 번째 우물도 찾아 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
int i;
hamster_create();
for(i = 0; i < 2; ++i) {
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
}
for(i = 0; i < 2; ++i) {
hamster_board_forward();
hamster_board_left();
hamster_board_forward();
}
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
일곱 번째 우물도 찾아 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
int i, j;
hamster_create();
for(i = 0; i < 3; ++i) {
for(j = 0; j < 3; ++j) {
hamster_board_forward();
}
hamster_board_right();
}
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
여덟 번째 우물도 찾아 봅시다.
#include "roboid.h"
int main(int argc, char *argv[]) {
int i, j;
hamster_create();
for(i = 0; i < 2; ++i) {
for(j = 0; j < 2; ++j) {
hamster_board_forward();
hamster_board_right();
hamster_board_forward();
}
hamster_board_left();
}
hamster_board_forward();
hamster_board_right();
dispose_all(); // 통신 연결을 종료하고 메모리를 해제한다.
return 0;
}
목차
고급
- 행위 기반의 로봇 제어
- 경로 탐색
- 자리 바꾸기
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(
akaii@kw.ac.kr)에게 연락하세요.