Gazilla is an experimental simulator for Formula SAE autonomous vehicles, being developed in-house by members of the UQRacing Formula SAE Team (see the Authors section) for our 2022 autonomous vehicle.
Gazilla stands for "Gazebo Killer" (in the same vain as "Mozilla" being the "Mosaic Killer"), and is designed to replace our previous Gazebo-based simulator fssim while improving on its performance, feature set and reliability.
The goal of the project is to produce a reliable and performant FSAE AV simulator that supports heavy customisation (e.g. pluggable vehicle dynamics models, graphics, etc), while remaining easy to understand. I'm also aiming to support full ROS compatibility with the rest of the car in an extensible and pluggable format, so it's easy to manage. Finally, I am aiming for extensive cross-platform support for the client: it will run on Windows, Mac and Linux for both x86 and ARM, while the server will run on ARM and x86 Linux only.
The project is written in Kotlin using libGDX as a rendering framework.
Authors:
- Main Gazilla code (client, server, etc): Matt Young ([email protected])
- Rooster 3D model: Fahed Alhanaee (TODO)
- Realtime 3D physically based rendering of FSAE vehicle and associated geometry (e.g. cones)
- Fully configurable in YAML
- Efficient networking using ZeroMQ and Kryo serialisation
- Full ROS 1 integration, so you can use it with the rest of your AV's software
The project follows the libGDX template generated by gdx-liftoff, but has two launchers:
Lwjgl3Launcher
(in the lwjgl3 directory) is the launcher for the Gazilla client that runs on Windows, Mac and Linux. It receives packets from the server and renders them.HeadlessLauncher
(in the headless directory) is the launcher for the Gazilla server. It only is designed to run on Linux. Although it uses libGDX, it does no graphical rendering - instead, it runs the physics simulation, ROS bridge, and communicates that with the client.
Tier S: Extremely well-supported, tested regularly, used by me for programming so it'll work :)
Tier A: Designed to work well, not used by myself but tested regularly by team members.
Tier B: Still designed to run on this platform, but perhaps not as regularly tested. Various platform issues and/or new hardware (e.g. ARM CPUs, experimental GPU drivers, etc) may cause occasional issues.
Tier Z: Could possibly work, but none of us at UQR have this type of machine, so it's completely untested. You will have to support this yourself, as this platform is not a development target.
Operating system | CPU architecture | Support tier | Current status |
---|---|---|---|
Windows | x86 | B | Untested |
Windows | ARM | Z | Untested, not super likely to work |
Mac | x86 | A | Untested |
Mac | ARM | B | Untested, may be some issues with GPU rendering |
Linux | x86 | S | Works great minus some fixable OpenAL issues |
Linux | ARM | B | Untested, expect serious issues |
Operating system | CPU architecture | Support tier | Current status |
---|---|---|---|
Windows | x86 | Z | Untested & unsupported |
Windows | ARM | Z | Untested & unsupported |
Mac | x86 | Z | Untested & unsupported |
Mac | ARM | Z | Untested & unsupported |
Linux | x86 | S | Works great |
Linux | ARM | B | Untested |
The Gazilla client and server source code, as well as all config files, are released under the Mozilla Public Licence v2.0, see LICENSE.txt.
The 3D model of UQRacing's 2022 AV, Rooster, is released under the CC-BY-SA 4.0 licence (see assets/vehicles/rooster for more info)
- libGDX, the excellent Java game library
- gdx-gltf by mgsx, a fantastic GLTF 2.0 loading and PBR rendering library for libGDX
- Kryo, the fast serialisation framework
- JeroMQ, a Java implementation of the ZeroMQ socket protocol