Overview¶
What is Jubilee Powder?¶
Jubilee Powder is a comprehensive software system for controlling the Jubilee Motion Platform to automate powder dispensing and shore hardness testing. It provides a Python API for coordinating operations involving multiple hardware components.
Core Components¶
Hardware¶
The system integrates several hardware components:
- Jubilee Motion Platform: A tool-changing CNC motion system
- Precision Scale: For weighing materials with high accuracy (typically A&D FX-120i)
- Piston Dispensers: For storing and dispensing cylindrical pistons, placed in molds after dispensing powder
- Manipulator Tool: A custom toolhead with grabber and vertical axis
Software Layers¶
The software is organized in layers from high-level to low-level:
- GUI Application (User Interface)
- Touchscreen-friendly interface
- Visual mold selection and configuration
- Real-time progress monitoring
-
Built-in safety checks
-
JubileeViewModel (GUI Coordination)
- Coordinates GUI with hardware
-
Manages job execution
-
JubileeManager (Core API)
- Highest-level programming API
- Error handling and recovery
-
Hardware state management
-
MotionPlatformStateMachine (Validation Layer)
- Validates all movements for safety
- Manages system state
-
Enforces movement constraints
-
Hardware Drivers (Bottom Layer)
- Direct hardware communication
- Low-level control primitives
- Communicates with Duet3D Controller
Key Concepts¶
State Machine Validation¶
All movements are validated through a state machine that:
- Tracks the current position and tool state
- Validates requested movements are safe
- Prevents invalid state transitions
- Ensures proper sequencing of operations
Tool Management¶
The Jubilee uses a tool-changing system where:
- Tools are picked up and parked at specific positions
- Only one tool can be active at a time
- Tools must be at specific positions for certain operations
Payload Tracking¶
The system tracks what the manipulator is holding:
empty: No mold heldmold: Holding a moldmold_with_piston: Holding a mold with top piston
This enables safe movement validation based on current load.
Design Philosophy¶
Safety First¶
- All movements are validated before execution
- State machine prevents unsafe operations
- Clear error messages for invalid requests
Ease of Use¶
- High-level API for common operations
- Progressive disclosure (simple things easy, complex things possible)
- GUI for user-modifiable operations
- Python API
Flexibility¶
- JSON-based configuration
- Extensible architecture
- Multiple access levels (high-level to low-level)
- MVVM architecture for GUI extensibility
Usage Options¶
GUI Interface¶
For interactive machine operation with visual feedback:
Features: - Visual mold selection - Real-time weight monitoring - Progress tracking - Hardware configuration - Safety checklist
See GUI User Guide for details.
Python API (Automation)¶
For scripted tasks and custom workflows:
from src.JubileeManager import JubileeManager
manager = JubileeManager(num_piston_dispensers=2, num_pistons_per_dispenser=10)
manager.connect()
manager.dispense_to_well("0", 50.0)
manager.disconnect()
See Quick Start Guide for details.
System Requirements¶
Hardware Requirements¶
- Jubilee Motion Platform with Duet3D controller
- USB connection to precision scale (A&D FX-120i preferred, other A&D scales may work)
- Network connection to Jubilee controller
- Sufficient workspace for deck layout
Software Requirements¶
- Python 3.8 or later
- Linux-based operating system (for hardware integration)
- Dependencies listed in
requirements.txt
Installation¶
-
Clone the repository:
-
Create a virtual environment:
-
Install dependencies:
-
Configure your system:
- Edit configuration files in
jubilee_api_config/. You may need to edit all homing files, tool pickup/place, and config files to match your unique setup. - Set Jubilee IP address
- Configure deck layout
- Set up tool positions
Next Steps¶
- For GUI users: Follow the GUI User Guide
- For programmers: Follow the Quick Start Guide
- Learn about key concepts in the Architecture Guide
- Explore How-To Guides for common tasks