You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.9 KiB
Markdown
52 lines
2.9 KiB
Markdown
# FC Portugal Codebase <br> for RoboCup 3D Soccer Simulation League
|
|
|
|
![](https://s5.gifyu.com/images/Siov6.gif)
|
|
|
|
## About
|
|
|
|
The FC Portugal Codebase was mainly written in Python, with some C++ modules. It was created to simplify and speed up the development of a team for participating in the RoboCup 3D Soccer Simulation League. We hope this release helps existing teams transition to Python more easily, and provides new teams with a robust and modern foundation upon which they can build new features.
|
|
|
|
|
|
## Documentation
|
|
|
|
The documentation is available [here](https://docs.google.com/document/d/1aJhwK2iJtU-ri_2JOB8iYvxzbPskJ8kbk_4rb3IK3yc/edit)
|
|
|
|
## Features
|
|
|
|
- The team is ready to play!
|
|
- Sample Agent - the active agent attempts to score with a kick, while the others maintain a basic formation
|
|
- Launch team with: **start.sh**
|
|
- Sample Agent supports [Fat Proxy](https://github.com/magmaOffenburg/magmaFatProxy)
|
|
- Launch team with: **start_fat_proxy.sh**
|
|
- Sample Agent Penalty - a striker performs a basic kick and a goalkeeper dives to defend
|
|
- Launch team with: **start_penalty.sh**
|
|
- Skills
|
|
- Get Ups (latest version)
|
|
- Walk (latest version)
|
|
- Dribble v1 (version used in RoboCup 2022)
|
|
- Step (skill-set-primitive used by Walk and Dribble)
|
|
- Basic kick
|
|
- Basic goalkeeper dive
|
|
- Features
|
|
- Accurate localization based on probabilistic 6D pose estimation [algorithm](https://doi.org/10.1007/s10846-021-01385-3) and IMU
|
|
- Automatic head orientation
|
|
- Automatic communication with teammates to share location of all visible players and ball
|
|
- Basics: common math ops, server communication, RoboViz drawings (with arrows and preset colors)
|
|
- Behavior manager that internally resets skills when necessary
|
|
- Bundle script to generate a binary and the corresponding start/kill scripts
|
|
- C++ modules are automatically built into shared libraries when changes are detected
|
|
- Central arguments specification for all scripts
|
|
- Custom A* pathfinding implementation in C++, optimized for the soccer environment
|
|
- Easy integration of neural-network-based behaviors
|
|
- Integration with Open AI Gym to train models with reinforcement learning
|
|
- User interface to train, retrain, test & export trained models
|
|
- Common features from Stable Baselines were automated, added evaluation graphs in the terminal
|
|
- Interactive FPS control during model testing, along with logging of statistics
|
|
- Interactive demonstrations, tests and utilities showcasing key features of the team/agents
|
|
- Inverse Kinematics
|
|
- Multiple agents can be launched on a single thread, or one agent per thread
|
|
- Predictor for rolling ball position and velocity
|
|
- Relative/absolute position & orientation of every body part & joint through forward kinematics and vision
|
|
- Sample train environments
|
|
- User-friendly interface to check active arguments and launch utilities & gyms
|