News Download Tutorial FAQ Reference Buy

자바 언어 : 이동하고 회전하기

앞으로 1초 이동하기
햄스터 로봇이 1초 동안 앞으로 이동한 후 정지하게 해봅시다. 바퀴의 속도는 -100부터 100까지의 값을 가지는데 최대 속도에 대한 % 값입니다. 양수 값이면 바퀴가 앞으로, 음수 값이면 뒤로 회전하고, 0이면 멈춥니다. 햄스터 로봇이 앞으로 이동하게 하려면 왼쪽 바퀴와 오른쪽 바퀴의 속도를 같은 양수 값으로 하면 됩니다. Runner.wait() 메소드를 사용하면 코드의 다음 줄로 넘어가지 않고 일정 시간(msec) 동안 기다릴 수 있습니다.

import org.roboid.hamster.Hamster;
import org.roboid.runtime.Runner;

public class Controller {
    public static void main(String[] args) {

        Hamster hamster = new Hamster();

        hamster.wheels(30, 30); // 왼쪽 바퀴와 오른쪽 바퀴의 속도를 30으로 설정한다.
        Runner.wait(1000); // 1초 기다린다.
        hamster.stop(); // 정지한다.
    }
}

값을 하나만 입력하면 양쪽 바퀴의 속도를 같은 값으로 설정합니다.

hamster.wheels(30); // 양쪽 바퀴의 속도를 30으로 설정한다.

바퀴의 속도를 0부터 100까지 변경하면서 로봇이 이동하는 속도가 어떻게 달라지는지 관찰해 봅시다.
뒤로 1초 이동하기
햄스터 로봇이 뒤로 이동하게 하려면 왼쪽 바퀴와 오른쪽 바퀴의 속도를 같은 음수 값으로 하면 됩니다.

import org.roboid.hamster.Hamster;
import org.roboid.runtime.Runner;

public class Controller {
    public static void main(String[] args) {

        Hamster hamster = new Hamster();

        hamster.wheels(-30, -30); // 왼쪽 바퀴와 오른쪽 바퀴의 속도를 -30으로 설정한다.
        Runner.wait(1000); // 1초 기다린다.
        hamster.stop(); // 정지한다.
    }
}

값을 하나만 입력하면 양쪽 바퀴의 속도를 같은 값으로 설정합니다.

hamster.wheels(-30); // 양쪽 바퀴의 속도를 -30으로 설정한다.

바퀴의 속도를 0부터 -100까지 변경하면서 로봇이 이동하는 속도가 어떻게 달라지는지 관찰해 봅시다.
제자리에서 5초 돌기 (스핀)
왼쪽 바퀴와 오른쪽 바퀴의 속도를 크기는 같게 하고 부호만 반대로 하면 제자리에서 회전합니다. 로봇이 회전하는 중심점은 왼쪽 바퀴와 오른쪽 바퀴의 축을 연결하는 직선의 중심입니다.

               

import org.roboid.hamster.Hamster;
import org.roboid.runtime.Runner;

public class Controller {
    public static void main(String[] args) {

        Hamster hamster = new Hamster();

        hamster.wheels(-30, 30); // 왼쪽 바퀴의 속도를 -30, 오른쪽 바퀴의 속도를 30으로 설정한다.
        Runner.wait(5000); // 5초 기다린다.
        hamster.stop(); // 정지한다.
    }
}

바퀴의 속도를 변경하면서 로봇이 회전하는 속도가 어떻게 달라지는지 관찰해 봅시다.
한쪽 바퀴를 축으로 5초 회전하기 (피봇 턴)
왼쪽 바퀴를 정지하고 오른쪽 바퀴에만 속도 값을 주면 왼쪽 바퀴를 중심으로 회전합니다.

               

import org.roboid.hamster.Hamster;
import org.roboid.runtime.Runner;

public class Controller {
    public static void main(String[] args) {

        Hamster hamster = new Hamster();

        hamster.wheels(0, 30); // 왼쪽 바퀴의 속도를 0, 오른쪽 바퀴의 속도를 30으로 설정한다.
        Runner.wait(5000); // 5초 기다린다.
        hamster.stop(); // 정지한다.
    }
}

오른쪽 바퀴를 중심으로 회전하게 해보고, 시계 방향, 반시계 방향 등 다양한 회전을 만들어 봅시다.

왼쪽 바퀴 또는 오른쪽 바퀴, 하나의 값만 설정하기 위해서는 leftWheel() 또는 rightWheel() 메소드를 사용하여도 됩니다.

hamster.leftWheel(30); // 왼쪽 바퀴의 속도를 30으로 설정한다.
hamster.rightWheel(30); // 오른쪽 바퀴의 속도를 30으로 설정한다.
둥글게 5초 회전하기 (라운드 턴)
왼쪽 바퀴와 오른쪽 바퀴의 속도 크기를 다르게 하면 원을 그리면서 회전합니다. 두 바퀴 간의 속도 차이가 작을수록 큰 원을 그리면서 회전합니다.

               

import org.roboid.hamster.Hamster;
import org.roboid.runtime.Runner;

public class Controller {
    public static void main(String[] args) {

        Hamster hamster = new Hamster();

        hamster.wheels(20, 40); // 왼쪽 바퀴의 속도를 20, 오른쪽 바퀴의 속도를 40으로 설정한다.
        Runner.wait(5000); // 5초 기다린다.
        hamster.stop(); // 정지한다.
    }
}

왼쪽 바퀴와 오른쪽 바퀴의 속도를 변경하면서 로봇이 회전하는 원의 크기가 어떻게 달라지는지 관찰해 봅시다.

종이컵의 바깥을 돌 수 있도록 왼쪽 바퀴와 오른쪽 바퀴의 속도를 조정해 봅시다.

목차
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.