Skip to content

Minimalist Java controller example for the Humanoid Robot Wrestling Competition.

License

Notifications You must be signed in to change notification settings

cyberbotics/wrestling-alice-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Humanoid Robot Wrestling Controller Example

webots.cloud - Competition

Alice Java controller

Minimalist Java controller example for the Humanoid Robot Wrestling Competition. Demonstrates how to play a simple motion file. We use the Motion class from Webots. It could also be programmed in Python, C, C++ or Java.

Here is the participant.java file:

import com.cyberbotics.webots.controller.Robot;
import com.cyberbotics.webots.controller.Motion;

public class participant {
  public static void main(String[] args) {
    // Robot initialization
    Robot robot = new Robot();

    // Motion files are text files containing pre-recorded positions of the robot's joints
    Motion handWave = new Motion("../motions/HandWave.motion");
    // We play the hand-waving motion on loop
    handWave.setLoop(true);
    handWave.play();

    int timeStep = (int) Math.round(robot.getBasicTimeStep());
    // Mandatory function to make the simulation run
    while (robot.step(timeStep) != -1);
  }
}

To compile the Java code, the Dockerfile must be updated: we use the eclipse-temurin:17-jdk Docker image to get the latest OpenJDK 17 Java Development Kit installed on top of Webots's image. We compile participant.java into a class file and then we run it with the entrypoint command:

FROM eclipse-temurin:17-jdk as source
FROM cyberbotics/webots.cloud:R2023a-ubuntu20.04
ENV JAVA_HOME=/opt/java/openjdk
ENV PATH "${JAVA_HOME}/bin:${PATH}"
COPY --from=source $JAVA_HOME $JAVA_HOME

# Environment variables needed for Webots
# https://cyberbotics.com/doc/guide/running-extern-robot-controllers#remote-extern-controllers
ENV LD_LIBRARY_PATH=${WEBOTS_HOME}/lib/controller:${LD_LIBRARY_PATH}
ARG WEBOTS_CONTROLLER_URL
ENV WEBOTS_CONTROLLER_URL=${WEBOTS_CONTROLLER_URL}

# Copies all the files of the controllers folder into the docker container
RUN mkdir -p /usr/local/webots-project/controllers
COPY . /usr/local/webots-project/controllers

WORKDIR /usr/local/webots-project/controllers/participant
# Build controller
RUN javac -Xlint -classpath /usr/local/webots/lib/controller/java/Controller.jar:. participant.java

ENTRYPOINT ["java", \
            "-classpath", "/usr/local/webots/lib/controller/java/Controller.jar:/usr/local/webots-project/controllers/participant", \
            "-Djava.library.path=/usr/local/webots/lib/controller/java", "participant"]

Bob is a more advanced robot controller able to win against Alice.

About

Minimalist Java controller example for the Humanoid Robot Wrestling Competition.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published