A real-time PyQt dashboard visualizing vehicle dynamics and normal-force distribution.
Project description
Force Fusion
A real-time PyQt dashboard visualizing vehicle dynamics and normal-force distribution.
#Vehicle Dynamics #Normal-force Estimation #PyQt #3D Visualization
🚀 Getting Started
Get uv and create a virtual environment.
uv venv --python 3.10
source .venv/bin/activate
uv pip install force-fusion
To run the application, simply type:
force-fusion
# or
force-fusion --help
👨💻 Development Setup
-
Clone the repository and navigate to project folder:
git clone https://github.com/Sang-Buster/Force-Fusion cd Force-Fusion
-
Install uv first:
# macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
-
Create a virtual environment at
Force-Fusion/.venv/:uv venv --python 3.10
-
Activate the virtual environment:
# macOS/Linux source .venv/bin/activate
# Windows .venv\Scripts\activate
-
Install the required packages:
uv pip install -e .
-
Set up environment variables:
# Copy the example environment file cp .env.example .env
- You can get a
MAPBOX_ACCESS_TOKENby signing up at https://www.mapbox.com/ - Update the
CSV_PATHif you want to use a custom database file - Update the
VEH_MODEL_PATHif you want to use a custom vehicle model
- You can get a
-
Install ruff and pre-commit:
uv pip install ruff pre-commit
ruffis a super fast Python linter and formatter.pre-commithelps maintain code quality by running automated checks before commits are made.
-
Install git hooks:
pre-commit install --hook-type commit-msg --hook-type pre-commit --hook-type pre-push
These hooks perform different checks at various stages:
commit-msg: Ensures commit messages follow the conventional formatpre-commit: Runs Ruff linting and formatting checks before each commitpre-push: Performs final validation before pushing to remote
-
Code Linting:
ruff check ruff check --fix ruff check --select I ruff check --select I --fix ruff format
-
Run the application:
uv run src/force_fusion/app.py
📝 File Structure
📂Force-Fusion
┣ 📂src // Source Code
┃ ┗ 📦force_fusion // Python package
┃ ┃ ┣ 📂resources // Static Resources Directory
┃ ┃ ┃ ┣ 📄car.glb
┃ ┃ ┃ ┣ 📄favicon.png
┃ ┃ ┃ ┣ 📄map_style.json
┃ ┃ ┃ ┗ 📄styles.qss
┃ ┃ ┣ 📂widgets // Widgets Directory
┃ ┃ ┃ ┣ 📄attitude.py
┃ ┃ ┃ ┣ 📄heading.py
┃ ┃ ┃ ┣ 📄mapbox_view.py
┃ ┃ ┃ ┣ 📄minimap.py
┃ ┃ ┃ ┣ 📄speedometer.py
┃ ┃ ┃ ┗ 📄tire_force.py
┃ ┃ ┣ 📄app.py
┃ ┃ ┣ 📄config.py
┃ ┃ ┣ 📄controller.py
┃ ┃ ┣ 📄sensors.py
┃ ┃ ┣ 📄tests.py
┃ ┃ ┗ 📄ui_main_window.py
┣ 📄.env.example // Template for environment variables
┣ 📄.gitignore // Git ignore patterns (env, cache, database)
┣ 📄.pre-commit-config.yaml // Pre-commit hooks (ruff, commit message)
┣ 📄.pre-commit_msg_template.py // Commit message format validator
┣ 📄.python-version // Python version
┣ 📄LICENSE // MIT License
┣ 📄README.md // Project documentation
┣ 📄pyproject.toml // Project configuration
┗ 📄uv.lock // Lock file
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file force_fusion-0.0.2.tar.gz.
File metadata
- Download URL: force_fusion-0.0.2.tar.gz
- Upload date:
- Size: 17.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa6d9eb83c5c902329b6f43517514380a1aa489d32ccec6d3e081566f908b04d
|
|
| MD5 |
8928baffd183de48f9e3e34075a6dbcb
|
|
| BLAKE2b-256 |
87aa02245ef79c183b58912262a5d1998bfced772526536760a5ca4f91b95ec4
|
File details
Details for the file force_fusion-0.0.2-py3-none-any.whl.
File metadata
- Download URL: force_fusion-0.0.2-py3-none-any.whl
- Upload date:
- Size: 17.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b627b5b699989d74244f5b44b5975ebad42dda22809b5219d34a931d9eb0195
|
|
| MD5 |
928ee9851f640b5263d10ea93ad3c61f
|
|
| BLAKE2b-256 |
7e9bde956443b1ee7631f34160c7921a5e116ee05b6ec0b7a94f16348ded46c7
|