/wa_simulator

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

WA Vehicle Simulator

The WA Simulator is a powerful, multi-platform, lightweight and user-friendly simulation platform for testing algorithms intended for autonomous robot or vehicle applications. This project is under active development by Wisconsin Autonomous, a student organization at the University of Wisconsin - Madison.

Usage

The WA Simulator is a lightweight tool meant to facilitate algorithm development. As a result, the majority of the actual vehicle dynamics is hidden behind the wa_simulator API. All you need to do is import the module and instantiate the classes.

Default Usage

# Import the wa_simulator
import wa_simulator as wa

def main():
    # Create the system
    sys = wa.WASystem(step_size=1e-3)

    # Create an environment using a premade environment description
    env_filename = wa.WASimpleEnvironment.EGP_ENV_MODEL_FILE
    env = wa.WASimpleEnvironment(env_filename, sys)

    # Create an vehicle using a premade vehicle description
    veh_filename = wa.WALinearKinematicBicycle.GO_KART_MODEL_FILE
    veh = wa.WALinearKinematicBicycle(veh_filename)

    # Visualize the simulation using matplotlib
    vis = wa.WAMatplotlibVisualization(veh, sys)

    # Control the vehicle using the arrow keys
    ctr = wa.WAMatplotlibController(sys, vis)

    # Instantiate the simulation manager
    sim = wa.WASimulation(sys, env, veh, vis, ctr)

    # Run the simulation
    sim.Run()


if __name__ == "__main__":
    main()

With Chrono

Using Chrono is as simple as changing a few file names and importing the chrono version of the simulator. Even though wa_simulator.chrono is the new import, all default wa_simulator classes are still accessible as seen above. Background about Chrono can be found here.

# Import the wa_simulator
import wa_simulator.chrono as wa

def main():
    # Create the system
    sys = wa.WAChronoSystem(step_size=1e-3)

    # Create an environment using a premade environment description
    env_filename = wa.WAChronoEnvironment.EGP_ENV_MODEL_FILE
    env = wa.WAChronoEnvironment(env_filename, sys)

    # Create an vehicle using a premade vehicle description
    veh_filename = wa.WAChronoVehicle.GO_KART_MODEL_FILE
    veh = wa.WAChronoVehicle(veh_filename, sys, env)

    # Visualize the simulation using matplotlib
    vis = wa.WAMatplotlibVisualization(veh, sys)

    # Control the vehicle using the arrow keys
    ctr = wa.WAMatplotlibController(sys, vis)

    # Instantiate the simulation manager
    sim = wa.WASimulation(sys, env, veh, vis, ctr)

    # Run the simulation
    sim.run()


if __name__ == "__main__":
    main()

Documentation

License

wa_simulator is made available under the BSD-3 License. For more details, see LICENSE.

Support

Contact Aaron Young for any questions or concerns regarding the contents of this repository.

See Also

Stay up to date with our technical info by following our blog.

Follow us on Facebook, Instagram, and LinkedIn!


Wisconsin Autonomous Logo University of Wisconsin - Madison Crest