robocup-ssl / ssl-game-controller Goto Github PK
View Code? Open in Web Editor NEWThe game controller for matches in the RoboCup Small Size league
License: GNU General Public License v3.0
The game controller for matches in the RoboCup Small Size league
License: GNU General Public License v3.0
The match protocol can be quite long and it may be desirable to search for a specific entry, e.g. by protocol type, game event, command, etc.
Such filters could be added to the protocol view (not the side bar).
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates are awaiting their schedule. Click on a checkbox to get an update now.
.circleci/config.yml
cimg/go 1.21.6
cimg/go 1.21.6
cimg/go 1.21.6
cimg/base 2024.01
cimg/base 2024.01
docker-compose.yaml
robocupssl/ssl-vision-client 1.7.3
robocupssl/ssl-status-board 2.10.4
robocupssl/ssl-remote-control 1.1.3
robocupssl/ssl-remote-control 1.1.3
tigersmannheim/auto-referee 1.2.0
robocupssl/ssl-log-player 1.5.2
robocupssl/ssl-simulation-controller 0.12.1
cmd/ssl-game-controller/Dockerfile
node 20-alpine
golang 1.21-alpine
alpine 3
cmd/ssl-ref-client/Dockerfile
golang 1.21-alpine
alpine 3
cmd/ssl-team-client/Dockerfile
golang 1.19-alpine3.15
alpine 3.19
go.mod
go 1.21
github.com/go-test/deep v1.1.0
github.com/google/uuid v1.5.0
github.com/gorilla/websocket v1.5.1
github.com/pkg/errors v0.9.1
google.golang.org/protobuf v1.33.0
gopkg.in/yaml.v3 v3.0.1
Currently there's no documentation for a large part of the fields of what units they have for GameEvent, particularly the locations. Are these in meters? or millimiters (ssl-vision standard?)?
Find a Sumatra Recording attached:
What happens in the recording? Note both AIs are set to off.
Note the 30s ball placement timer is still counting down, although the ball placement was already aborted with the force start.
If I start the game controller as described in the readme.md, but the computer doesn't have an active internet connection (i.e. wifi disabled, no LAN), the game controller crashes with the following stack trace:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x68 pc=0x78f4f0]
goroutine 26 [running]:
github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller.(*RefMessage).setState(0xc420080908, 0xc42018c200, 0x431ce0)
/home/andi/go/src/github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller/publisher.go:106 +0x70
github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller.(*RefMessage).Publish(0xc420080908, 0xc42018c200)
/home/andi/go/src/github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller/publisher.go:85 +0x35
github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller.(*Publisher).Publish(0xc420080900, 0xc42018c200)
/home/andi/go/src/github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller/publisher.go:80 +0x3b
github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller.(*GameController).publishNetwork(0xc420080800)
/home/andi/go/src/github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller/controller.go:251 +0x5e
created by github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller.(*GameController).Run
/home/andi/go/src/github.com/RoboCup-SSL/ssl-game-controller/internal/app/controller/controller.go:215 +0x1a3
exit status 2
OS: Ubuntu20.04
The error is following
$ ./ssl-game-controller_v3.0.0_linux_amd64
./ssl-game-controller_v3.0.0_linux_amd64: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./ssl-game-controller_v3.0.0_linux_amd64)
./ssl-game-controller_v3.0.0_linux_amd64: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./ssl-game-controller_v3.0.0_linux_amd64)
Since freekicks were merged into just direct free kicks in 2021, it would make sense to merge the buttons in the gamecontroller as well for clarity.
Context: Recently, we tried importing the new protobuf definitions from this repo into our repo, namely ssl_gc_common.proto
, ssl_gc_game_event.proto
, ssl_gc_geometry.proto
, and ssl_gc_referee_message.proto
. We wanted to do this because https://github.com/RoboCup-SSL/ssl-refbox/ has been deprecated, and this repo's definitions has some updated documentation.
Problem: We encountered name conflicts between our internal Team
and RobotId
classes and the ones defined in ssl_gc_common.proto
. This is a change from defining them inside the GameEvent
message as in https://github.com/RoboCup-SSL/ssl-refbox/. We also noticed that SSL_Referee
has been renamed to Referee
, which might cause name conflicts in the future (but currently don't in our repo). We're curious why these changes were made as it causes problems for easily updating these protobufs in our code and other teams would probably encounter the same issues.
Suggested solution: Prefix protobuf messages with SSL_
or embed them in other message definitions, as was done in https://github.com/RoboCup-SSL/ssl-refbox/
Ball placement can fail for different reasons. The most obvious one is, when the ball is not yet on the placement position. If it is, the placing robot still needs to bring some distance to the ball, see: https://robocup-ssl.github.io/ssl-rules/sslrules.html#_ball_placement
The PLACEMENT_FAILED event only includes the remaining_distance
. If it is close to zero, it is not obvious, for which reason the placement failed.
Currently, the autoRefs are responsible to create PLACEMENT_SUCCESSFUL events, when all conditions are met.
The GC will create a PLACEMENT_FAILED event, when no successful event was sent by the autoRefs in time.
The GC will include the remaining distance from ball to placement position in the failed event.
nearest_own_bot_distance
property to the PLACEMENT_FAILED event.The above proposed solution does not solve the problem reliably: There could still be an inconsistency between how an autoRef judges the success / failure of the placement. Specifically, if using majority voting and a majority is not reached, the placement would be counted as failed, without reporting additional information about why it failed.
A better solution could be to report success and failure consistently at only one place: Either the autoRefs or the GC:
I was testing with the latest release (2.0.7)
To reproduce:
-Run the gamecontroller without vision available:
-Run a penalty (Stop->Penalty->NormalStart)
-Let the time (10 seconds) run out
After this happens, we get the following error on our system receiving the referee messages:
[libprotobuf ERROR google/protobuf/message_lite.cc:122] Can't parse message of type "proto.Referee" because it is missing required fields: game_events[0].type
In any case, I don't think the GameController should send unparseable messages so I think this is a valid issue.
The num-Pad Shortcuts can not be disabled temporary, so if a number is entered on the num-pad somewhere, this will also trigger the assigned commands.
Either need to change the shortcuts, or have a look into the shortcut library.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.