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.
Quick Links¶
- 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¶
- API Usage: integrating JSim into applications
- Java API Reference (Javadocs): generated Java bindings and APIs
- Native API Reference (Doxygen): generated C++ and mixed-language symbols
- Architecture: subsystem layout and extension model
- Physics Reference: models, assumptions, and equations
- Math Overview: math modules and conventions
- Integrators: numerical integration methods
- Vector3, Matrix3, Quaternion: core math primitives
- Units and Conventions: coordinate and unit standards
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