Skip to content
First-Order-RoboCup-SSLPublic
forked from RoboCup-SSL/grSim

About

RoboCup Small Size Robot Soccer Simulator

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Build Status CodeFactor

grSim

RoboCup Small Size League Simulator.

grSim on Ubuntu

System Requirements

grSim will likely run on a modern dual-core PC with a decent graphics card. A typical configuration is:

  • Dual Core CPU (2.0 Ghz+)
  • 1GB of RAM
  • 256MB nVidia or ATI graphics card

Note that it may run on lower-end equipment though good performance is not guaranteed.

Software Requirements

grSim compiles on Linux (tested on Ubuntu and Arch Linux variants only) and Mac OS. It depends on the following libraries:

Please consult the install instructions for more details.

Usage

Receiving data from the grSim is similar to receiving data from the SSL-Vision using Google Protobuf library. Sending data to the simulator is also possible using Google Protobuf. Sample clients are included in clients folder. There are two clients available, qt-based and Java-based. The native client is compiled during the grSim compilation. To compile the Java client, please consult the corresponding README file.

Qt example project to receive and send data to the simulator.

Physics and command handling run independently of the display. The render FPS cap does not change the configured physics timestep. If physics cannot keep up with real time, a small amber Lag warning appears in the top-right corner of the view. The simulator retains pending physics steps and gives them priority over rendering. The warning clears after it catches up.

Regression tests

Build the tests with cmake -S . -B build -DBUILD_TESTING=ON, then cmake --build build. Run ctest --output-on-failure from the build directory. The timing tests use loopback UDP and an independent observer process. Rendering tests need a working OpenGL display; Linux CI uses Mesa and xvfb-run -a ctest --output-on-failure. Timing is checked both headlessly and with real OpenGL drawing, a 90 ms delay per rendered frame, and a 500 ms GUI stall. The observer checks packet freshness at the end and requires every sent command to receive feedback; a separate fixture verifies that a silent final 500 ms fails.

Capture checks detect blank images through size, opacity, and color diversity; they do not verify textures, field markings, or visual fidelity. OpenGL feedback checks separately verify that Low Spec reduces textured wheel and chassis geometry. Settings tests load historical XML keys and check save/reload behavior. Configuration tests delay GUI notifications while remote robot specifications and GUI edits interleave, including queued preset selections. Collision tests check side and rear ball contact, dribbler access, roller retention while stationary and moving, and flat/chip kicks for separate team sizes and rotated robots, including ball acquisition with recessed dribblers. The ball-contact hull keeps the body outline and cuts its front back when needed to reach the configured dribbler. Render quality does not change this shape. Tests use temporary configuration values without reading or writing personal simulator settings. In the configuration tree, Desired FPS caps rendering and ODE time step sets the fixed physics step; their names remain stable for saved settings compatibility.

Star History

Star History Chart

Citing

If you use this in your research, please cite the original paper:

@inproceedings{Monajjemi2011grSimR,
  title={grSim - RoboCup Small Size Robot Soccer Simulator},
  author={Valiallah Monajjemi and A. Koochakzadeh and S. S. Ghidary},
  booktitle={RoboCup},
  year={2011}
}

If you wish to cite this repo with it's modifications specifically, please cite:

@misc{grsim2021,
  author = {Mohammad Mahdi Rahimi and Jan Segre and Valiallah Monajjemi and A. Koochakzadeh and Sepehr MohaimenianPour and Nicolai Ommer and  Avatar
Kazunori Kimura and Jeremy Feltracco and Kenta Sato and Atousa Ahsani},
  title = {GRSIM},
  year = {2021},
  publisher = {GitHub},
  note = {GitHub repository},
  howpublished = {\url{https://github.com/RoboCup-SSL/grSim/}}
}

About

RoboCup Small Size Robot Soccer Simulator

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages