Skip to content

Experimental FSAE autonomous simulator written in Kotlin + libGDX

License

Notifications You must be signed in to change notification settings

UQRacing/gazilla

Repository files navigation

Gazilla

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)

Features

  • 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

Building and running

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.

Platform support

Support tiers

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.

Client

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

Server

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

Licence

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)

Libraries used

  • 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

About

Experimental FSAE autonomous simulator written in Kotlin + libGDX

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages