얼음 나라
햄스터 로봇이 펭귄 친구를 만나러 얼음 나라에 갔습니다.
얼음 나라는 길이 얼음으로 되어 있어서 너무 미끄럽습니다.
길 위에서는 방향을 바꿀 수 없어요.
벽이 나타날 때까지 계속 앞으로 미끄러져 이동하다가 벽을 잡고 방향을 바꾸어야 합니다.
아래 그림에서 햄스터 로봇이 펭귄 앞까지 이동하려면 어떻게 움직여야 할지 생각해 봅시다.
도착 지점으로 이동한 후에는 펭귄 친구와 얘기할 수 있도록 햄스터 로봇이 펭귄 방향을 바라보아야 합니다.
햄스터 로봇이 아직 너무 어려서 그림으로 그려진 벽은 알 수가 없으니 말판 위에 벽을 세워 놓아야 합니다.
그림의 손과 방향을 맞추어 손을 올려놓도록 합시다.
import org.roboid.hamster.Hamster;
public class Controller {
private final Hamster hamster = new Hamster();
private boolean canMoveForward() {
return hamster.leftProximity() < 40 && hamster.rightProximity() < 40;
}
public void run() {
while(canMoveForward()) {
hamster.boardForward();
}
hamster.boardLeft();
}
public static void main(String[] args) {
new Controller().run();
}
}
두 번째 펭귄 친구도 찾아 봅시다.
import org.roboid.hamster.Hamster;
public class Controller {
private final Hamster hamster = new Hamster();
private boolean canMoveForward() {
return hamster.leftProximity() < 40 && hamster.rightProximity() < 40;
}
public void run() {
for(int i = 0; i < 2; ++i) {
while(canMoveForward()) {
hamster.boardForward();
}
hamster.boardLeft();
}
}
public static void main(String[] args) {
new Controller().run();
}
}
세 번째 펭귄 친구도 찾아 봅시다.
import org.roboid.hamster.Hamster;
public class Controller {
private final Hamster hamster = new Hamster();
private boolean canMoveForward() {
return hamster.leftProximity() < 40 && hamster.rightProximity() < 40;
}
public void run() {
for(int i = 0; i < 4; ++i) {
while(canMoveForward()) {
hamster.boardForward();
}
hamster.boardRight();
}
}
public static void main(String[] args) {
new Controller().run();
}
}
네 번째 펭귄 친구도 찾아 봅시다.
import org.roboid.hamster.Hamster;
public class Controller {
private final Hamster hamster = new Hamster();
private boolean canMoveForward() {
return hamster.leftProximity() < 40 && hamster.rightProximity() < 40;
}
public void run() {
while(canMoveForward()) {
hamster.boardForward();
}
hamster.boardRight();
hamster.boardRight();
for(int i = 0; i < 2; ++i) {
while(canMoveForward()) {
hamster.boardForward();
}
hamster.boardRight();
}
}
public static void main(String[] args) {
new Controller().run();
}
}
목차
More Advanced
- Behavior based robot control
- Path navigation
- Swap
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (
akaii@kw.ac.kr) if you have any problem.