Fabrik3D Lite is a lightweight and educational-focused industrial cell simulator that combines:
- A robotic arm with simple predefined movements
- A CNC toolpath simulator based on basic G-code
- An interactive 3D interface with Vue.js and Three.js
- A backend built with ASP.NET Core and MQTT messaging
The goal is not to replicate real industrial complexity, but to:
- Visualize robotic and CNC actions in a simulated factory
- Learn about automation flows and message-based control
- Create an extendable, modular base for training or prototyping
- 📦
3DRenderer
— Visual scene renderer - 🎮
ControlPanel
— HMI control for launching jobs - 🦾
RobotAnimator
— Animates arm from position list (no real IK) - 🛠
CNCAnimator
— Executes and shows linear G-code toolpaths - 🔌
FrontendMQTTHandler
— Listens for MQTT messages
- 🧠
JobRunner
— Reads JSON job definitions and sends MQTT commands - 🌐
RestApi
— Launch jobs and expose system status - 💬
MQTTPublisher
— Publishes minimal robot/CNC actions - 📚
MongoDbGateway
— Saves job history and logs
- 🤖
SimRobotExec
— Interprets robot move commands - ⚙️
SimCNCExec
— Parses and executes G-code lines
fabrik3d-lite/
├── Simulator.Client/ → Vue.js + Three.js HMI
│ └── components/RobotAnimator.vue, CNCAnimator.vue
├── Simulator.Api/ → ASP.NET Core backend
│ └── Controllers/SimulationController.cs
├── Simulator.Models/ → JSON data models
│ └── JobDefinition.cs, ToolpathLine.cs
├── Simulator.MqttWorker/ → MQTT message handler
│ └── RobotMoveHandler.cs
├── Simulator.SimEngine/ → Execution logic
│ └── TrajectoryPlayer.cs, ToolpathPlayer.cs
├── Simulator.Shared/ → Constants, enums, etc.
└── MongoDB/ → Seeded simulation data
- Build project structure and components
- Setup 3D scene and load robot/CNC models
- Implement MQTT basic publishing/subscription
- Define a simple job runner (with hardcoded sequences)
- Build RobotAnimator + CNCAnimator (from JSON input)
- Display simulation status in UI
- Store job history and simulation logs in MongoDB
- Implement job selector with progress feedback
- Polish UI/UX (HMI), add manual overrides
- Deploy backend with Docker
- User clicks “Launch Job A” in HMI
JobRunner
reads JSON and sends MQTT messages like:{ "topic": "robot/move", "data": [{ "x": 100, "y": 0, "z": 150 }] }
- MQTT worker and frontend receive and animate accordingly
- MongoDB logs movement history
- Vue 3 + TypeScript + Three.js
- ASP.NET Core + C#
- MQTT (via Mosquitto or HiveMQ)
- MongoDB
- Docker (optional deployment)
- 📘 Robotics training
- 🧪 Testing automation flows
- 🏫 Educational demos for students