roboime-next

Next iteration of RoboIME's software stack, coded in Rust.

Build Status Build Status Coverage Status MPL License

Documentation

Developing

Install the project:

cargo install roboime-next

To run the demo-ai bot:

roboime-next-gui --blue="python demos/python2/demo.py"

This will resolve, download and compile dependencies, and compile the project in debug mode and run it. That's it. Really!

See the CLI read-me for more demos.

NOTE: in the near future the cli will be installable via cargo, so only cargo install roboime-next-cli instead of all of the above.

If you wish to run your own bot you only have to generate an executable that conforms to the protocol described in the Game I/O section, and call roboime-next-gui with it:

roboime-next-gui --blue="python demos/python2/demo.py"

NOTE: the my-awesome-bot file has to be executable, just make sure it runs without cargo run first.

For more settings like sending to a remote grSim or playing as a different color:

cargo run -- --help

NOTE: an executable is generated on roboime-next/cli/target/debug/roboime-next-cli[.exe] which can be used directly as well.

Editor/IDE

Please, setup EditorConfig on your editor/IDE. Also, when writing code, aim to respect the surrounding style conventions. In the future code lints will be added to warn about style that deviates from our preference, for now that's not a priority.

Optimized builds

cargo run --release

Game I/O

Notes: linear (x, y, field measures) units are in meters, angular (w) are in radians, linear velocities (vx, vy) are in meters per second, and angular velocity in radians per second.

Initialization input

Line 1 version data:

Before the next line, it will wait for the correct initialization output.

Line 2 field data:

Initialization output

Currently the following line is expected:

In the future, the following may be used to state explicit incompatibility:

Input for one game turn

Line 1 general play data:

Line 2 ball status data:

Next line: - ROBOT_COUNT_PLAYER: an integrer, number of robots in your team

Next ROBOT_COUNT_PLAYER lines, robots data:

Next line: - ROBOT_COUNT_OPPONENT: an integrer, number of robots in the opponent team

Next ROBOT_COUNT_OPPONENT lines, robots data:

Output for one game turn

Line 1, command counter:

Next ROBOT_COUNT_PLAYER lines, robots commands:

NOTE: only one of KICKFORCE, CHIPFORCE and DRIBBLE will be in effect at any given moment, in the future the protocol may be amended to make this more explicit.

These actions will be applied on the robots in the order they were given.

Constraints

The robot diameter is always 0.180, we'll call it ROBOT_DIAM here.

GUI

There is a GUI: roboime-next-gui.

Main objectives include:

Screenshots

License

This code is licensed under the Mozilla Public License 2.0, of which a textual copy is available at LICENSE.txt.

You are allowed and encouraged to use this software on the RoboCup competitions. If you do, please let us know.

Although not required, we think it's best for all if improvements are shared.