다운로드 교육자료 문제해결 레퍼런스 구입방법

레퍼런스 매뉴얼 : 자바 언어 : 숙련자용 : Runner

개요
실행을 제어하기 위한 메소드를 정의합니다.
퍼블릭 스태틱 메소드
버전 1.1.1부터
public static void setExecutable(Executable executable)
약 20msec마다 execute 메소드가 호출되도록 Executable 인스턴스를 등록한다.

execute 메소드 내에서 디바이스에 쓴 데이터는 모두 같은 통신 패킷으로 전달되는 것이 보장된다. Executable 인스턴스가 등록되어 있으면 execute 메소드를 호출한 후에 하드웨어 로봇에게 명령을 전달한다. execute 메소드는 약 20msec마다 호출되는데, execute 메소드 내에서 시간을 끌면 안 되고 20msec 내에 모두 처리가 되도록 하여야 한다.

파라미터:
  • executable: Executable 인스턴스의 참조

final Hamster hamster = new Hamster();

// Executable 인스턴스를 등록한다.
Runner.setExecutable(new Executable() {
    // 약 20msec마다 호출된다.
    public void execute() {
        if(hamster.leftProximity() > 40) {
            hamster.wheels(-30, -30);
        } else {
            hamster.wheels(30, 30);
        }
    }
});
버전 1.1.1부터
public static void wait(int milliseconds)
1000분의 1초 단위로 milliseconds 시간 동안 기다린다.

파라미터:
  • milliseconds: 기다릴 시간 [msec]

Runner.wait(1000); // 1초 기다린다.
버전 1.1.1부터
public static void waitUntil(Condition condition)
조건을 만족할 때까지 기다린다.

Condition 인터페이스의 evaluate 메소드가 true를 반환하면 waitUntil 메소드를 중지하고, false를 반환하면 waitUntil 메소드에 계속 머물러 있는다. evaluate 메소드는 약 20msec마다 호출되는데, evaluate 메소드 내에서 시간을 끌면 안 되고 20msec 내에 모두 처리가 되도록 하여야 한다.

파라미터:
  • condition: Condition 인스턴스의 참조

final Hamster hamster = new Hamster();

// 왼쪽 근접 센서의 값이 50보다 클 때까지 기다린다.
Runner.waitUntil(new Condition() {
    // 조건을 검사하여 true 또는 false를 반환한다.
    public boolean evaluate() {
        return hamster.leftProximity() > 50;
    }
});
버전 1.1.1부터
public static void waitUntilReady()
모든 로봇이 준비될 때까지 기다린다.

여러 대의 로봇이 동작을 시작하는 시점을 동일하게 하기 위해 사용한다. 예를 들어, 컴퓨터에 2개의 동글을 연결하고 Hamster 인스턴스를 2개 생성하였는데 햄스터 로봇의 전원을 하나만 켰다고 하자. Runner.waitUntilReady() 메소드를 호출하지 않으면 첫 번째 햄스터 로봇이 통신으로 연결되었을 때 동작을 먼저 시작하게 된다. 두 번째 햄스터 로봇의 전원을 켜서 모든 로봇이 통신으로 연결된 후 동작을 같이 시작하게 하려면 Hamster 인스턴스를 생성한 후 Runner.waitUntilReady() 메소드를 호출하면 된다. 생성된 인스턴스의 개수가 컴퓨터에 연결된 동글의 개수보다 적으면 생성된 인스턴스의 개수만큼 통신이 연결될 때까지 기다린다. 컴퓨터에 연결된 동글의 개수가 생성된 인스턴스의 개수보다 적으면 컴퓨터에 연결된 동글의 개수만큼 통신이 연결될 때까지 기다린다.

Hamster hamster1 = new Hamster();
Hamster hamster2 = new Hamster();

Runner.waitUntilReady();

hamster1.wheels(30, 30);
hamster2.wheels(30, 30);
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(akaii@kw.ac.kr)에게 연락하세요.