ROSE game example of a machine learining self driving car module.
This is a reference implementation of a self driving modules for the ROSE game.
This example uses machine learning algorithms, and requires pytorch when running locally.
ROSE project: https://github.com/RedHat-Israel/ROSE
ROSE self driving car module template: https://github.com/RedHat-Israel/rose-game-ai
| Requires | Version | |
|---|---|---|
| Podman (or Docker) | >= 4.8 | For running containerized |
| Python | >= 3.9 | For running the code loally |
| Component | Reference |
|---|---|
| Game engine | https://github.com/RedHat-Israel/rose-game-engine |
| Game web based user interface | https://github.com/RedHat-Israel/rose-game-web-ui |
| Self driving car module | https://github.com/RedHat-Israel/rose-game-ai |
| Self driving car module example | https://github.com/RedHat-Israel/rose-game-ai-reference |
podman run --rm --network host -it quay.io/rose/rose-game-ai-reference:latestClone this repository, and make sure you have a game engine running.
Install requirements:
# Install requirements
pip install -r requirements.txt
pip install -r requirements-dev.txtWrite your own driving module, you can use the file mydriver.py:
vi mydriver.pyRun using mydriver.py as the driving module:
python main.py --driver mydriver.pyRunning the game engine ( on http://127.0.0.1:8880 )
podman run --rm --network host -it quay.io/rose/rose-game-engine:latestRunning the game web based user interface ( on http://127.0.0.1:8080 )
podman run --rm --network host -it quay.io/rose/rose-game-web-ui:latestRunning community contributed driver ( on http://127.0.0.1:8082 )
You can use community drivers to compare and evaluate your driver during the development process.
podman run --rm --network host -it quay.io/yaacov/rose-go-driver:latest --port 8082Running your self driving module, requires a local mydriver.py file with your driving module. ( on http://127.0.0.1:8081 )
# NOTE: will mount mydriver.py from local directory into the container file system
podman run --rm --network host -it \
-v $(pwd)/:/driver:z \
-e DRIVER=/driver/mydriver.py \
-e PORT=8081 \
quay.io/rose/rose-game-ai-reference:latestSend car and track information by uring POST request to your driver ( running on http://127.0.0.1:8081 ):
curl -X POST -H "Content-Type: application/json" -d '{
"info": {
"car": {
"x": 3,
"y": 8
}
},
"track": [
["", "", "bike", "", "", ""],
["", "crack", "", "", "trash", ""],
["", "", "penguin", "", "", "water"],
["", "water", "", "trash", "", ""],
["barrier", "", "", "", "bike", ""],
["", "", "trash", "", "", ""],
["", "crack", "", "", "", "bike"],
["", "", "", "penguin", "water", ""],
["", "", "bike", "", "", ""]
]
}' http://localhost:8081/The response in JSON format should include the car name and the recommended action:
{
"info": {
"name": "Go Cart",
"action": "pickup"
}
}