Skip to content

JSim

JSim is a modular, open-source physics simulation library focused on FRC robotics.

This documentation provides onboarding, API usage, architecture details, and reference material for simulation, math, and CAD workflows.

  • Getting Started: getting_started.md
  • API Usage: api_usage.md
  • Architecture: architecture.md
  • Physics Reference: physics_reference.md
  • Math Reference: math_index.md

Contributing

See the repository CONTRIBUTING.md in the project root for contribution guidelines, and open issues or pull requests on GitHub.

Feedback

If something is missing or unclear, please file an issue at https://github.com/Ruthie-FRC/JSim/issues

JSim

JSim is a modular FRC physics library for simulation, analysis, and robotics workflow integration.

Project Status

JSim is under active development. Core simulation features and additional capabilities are being added iteratively.

Why JSim

  • Unified physics engine for rigid-body, drivetrain, and mechanism simulation
  • Multi-language support with native C++ and Python/Java bindings
  • Simulation runtime components for robot code and sensor pipelines
  • CAD import workflows for URDF, STL, and related geometry formats
  • Modular architecture for custom models, forces, and plugins

Project Goals

  • Accuracy: physically grounded simulation for FRC robots and game elements
  • Integration: seamless workflow from CAD to code to simulation
  • Accessibility: practical for teams of varied experience levels
  • Open source: community-driven and MIT-licensed

Quick Start

Build and Test

scripts/run-tests.sh

Direct Gradle Workflow

cd vendordep
./gradlew test

scripts/run-tests.sh is the recommended path from repository root and expects Java 21.

Run Examples

  • C++: examples/cpp/minimal_world.cpp
  • Python: examples/python/simple_world_demo.py
  • Java: examples/java/FlywheelPredictionExample.java

Documentation Map

Community and Contribution

Contributions are welcome from teams, mentors, and developers across the FRC ecosystem.

  • Report bugs and request features in GitHub Issues
  • Propose improvements through pull requests
  • Follow project standards in the repository documentation