-
Notifications
You must be signed in to change notification settings - Fork 111
communication
All communication from the SSL-Vision system to the clients is performed via UDP Multicast on port 10006 (legacy protocol: 10002) and multicast address 224.5.23.2.
Robot and Ball detection results are broadcast immediately when detection completes. Note, that individual cameras run on separate threads, and as such there is no guarantee about the order of packages originating from different camera processing stacks.
Note, that the SSL-Vision system does not perform any sensor-merging, thus it will deliver detection results from both cameras independently. It is up to the teams to merge robots and balls which happen to overlap between the two cameras' observations. Similarly, SSL-Vision does not perform any tracking or smoothing of objects. This is left to the teams as it will allow them to integrate their own predicted executions into their respective tracking components.
All data-packets are encoded using Google Protocol Buffers.
The protobuf packet definitions are defined in the src/shared/proto/
directory of ssl-vision. Each packet sent through the network is encoded in the
wrapper packet, as defined in messages_robocup_ssl_wrapper.proto
.
See: https://github.com/RoboCup-SSL/ssl-vision/tree/master/src/shared/proto
The packet defined in messages_robocup_ssl_detection.proto
contains the
complete detection results of one camera's frame, including robots and balls.
The packet defined in messages_robocup_ssl_geometry.proto
contains
geometry information, namely field dimensions and camera calibration
information. This data is published by default at an interval of 3 seconds. The publish interval can be changed by editing the Interval (seconds)
field under Publish Geometry -> Auto Publish
. It can also be manually published by clicking the Publish!
button in the Publish Geometry
branch.
The following sections list some sample clients to quickly get started in different languages
SSL-Vision contains a simple example client in the src/client
directory.
Run it by launching ./bin/client
in ssl-vision's main directory.
For a more effective visualization of data, ssl-vision also contains a
graphical client. Run it by launching ./bin/graphicalCient
in ssl-vision's
main directory.
This is a list of known implementations from the SSL community:
- Node.js - console client
- Python - console client
- Go - multiple tools
- C++ - multiple tools
- Go,VueJs - graphical web client
If you want to have your own implementation listed here, create a issue.
Note, that SSL-Vision's make-system will automatically compile the protocol
buffer packet definitions into C++ files by invoking protoc
. The resulting
code is located in src/shared/proto/cpp
.