News Download Tutorial FAQ Reference Buy

자바 언어 : 말판 이동하기 #2 (~인 동안 반복)

얼음 나라
햄스터 로봇이 펭귄 친구를 만나러 얼음 나라에 갔습니다. 얼음 나라는 길이 얼음으로 되어 있어서 너무 미끄럽습니다. 길 위에서는 방향을 바꿀 수 없어요. 벽이 나타날 때까지 계속 앞으로 미끄러져 이동하다가 벽을 잡고 방향을 바꾸어야 합니다. 아래 그림에서 햄스터 로봇이 펭귄 앞까지 이동하려면 어떻게 움직여야 할지 생각해 봅시다. 도착 지점으로 이동한 후에는 펭귄 친구와 얘기할 수 있도록 햄스터 로봇이 펭귄 방향을 바라보아야 합니다.

말판 내려 받기 PDF PPT

햄스터 로봇이 아직 너무 어려서 그림으로 그려진 벽은 알 수가 없으니 말판 위에 벽을 세워 놓아야 합니다. 그림의 손과 방향을 맞추어 손을 올려놓도록 합시다.

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();
    }
}
목차
Hardware
  1. Hamster robot
  2. USB dongle
Preparation for Class
  1. Software installation
  2. Robot to PC connection
  3. Run example files
Basic
  1. Create a new project
  2. Work in the cloud PC environment (optional)
  3. Move on a board #1 (sequence, repetition)
  4. Move and turn
  5. Turn on LEDs and make a sound
  6. Command in order repeatedly
  7. Use proximity sensors
  8. Move on a board #2 (repeat while)
  9. Use floor sensors
  10. Use light and acceleration sensors
  11. Braitenberg's robot
Advanced
  1. Create a board game
  2. Keyboard events
  3. Graphical interface
  4. Line following with one sensor
  5. Line following with two sensors
  6. Follow hamster friends (2 people 1 pair)
  7. Follow a wall
  8. Imitating a robot cleaner
  9. Line following at intersection
  10. Escape a maze
Extension Kit
  1. Assembling
  2. Pin/socket layout
  3. Digital input - Press button to beep
  4. Digital output - LED is on when it is dark
  5. Digital output - flashing twinkling LED
  6. Digital output - LED is on in tilting direction
  7. Analog input - Rotating the potentiometer changes the pitch.
  8. Analog input - please do not let it get hot
  9. Analog Input - Move along the light
  10. PWM output - LED light gently brighter and darker
  11. PWM output - LED candle shakes in the wind
  12. Analog servo output - hamster robot has tail
More Advanced
  1. Behavior based robot control
  2. Path navigation
  3. Swap
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (akaii@kw.ac.kr) if you have any problem.