-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.html
More file actions
290 lines (259 loc) · 22.6 KB
/
Copy pathindex.html
File metadata and controls
290 lines (259 loc) · 22.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="FabMo™ : At last... An Innovative Platform for Today's and Tomorrow's Smart Tools">
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
<title>FabMo™</title>
<script type="text/javascript" src="https://use.typekit.net/nbm6rcp.js"></script>
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
<link rel="stylesheet" type="text/css" media="screen" href="https://handibot.com/css/global.css">
<link rel="stylesheet" type="text/css" media="screen" href="css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/styles/default.min.css">
<!-- google analytics script - don't remove -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-40600601-3', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<div id="header_wrap" class="outer">
<img id="header_img" src="images/cutting.png">
<img id="fabmo_logo" src="images/Go_FabMo_logo.png">
<a id="forkme_banner" href="https://github.com/FabMo">View on GitHub</a>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<div class="introduction_story">
<p>
<strong>FabMo</strong> is a digital <u>fab</u>rication and <u>mo</u>tion platform of software and hardware. At its core is a powerful motion system that prioritizes smooth, snappy machining. Around that core, FabMo provides a straightforward, intuitive control interface and an application and API environment that supports extensive customization and production integration. FabMo was developed by ShopBot for all our own CNC equipment and as well as CNC equipment more broadly. Today it is ready to run ShopBots with a familiar, compelling, and enabling interface. FabMo was built from the bottom up with usability and adaptability in mind. It' ready to go to work on your tool.
</p>
<p>
<strong>Go FabMo:</strong> to create, produce, and manufacture precisely and efficiently, in adaptable ways that strengthen your production process.
</p>
</div>
<div class="features inner">
<h3>The FabMo Story ...</h3>
<p>
We set out some years ago to build a new kind of software for running CNC and digital fabrication tools -- the computer-controlled machines that shape parts either by subtraction, cutting and machining components from blocks and sheets of material, or by addition, building items up from raw material. Years earlier, ShopBot had helped show that industrial automation could be made affordable by harnessing the then-new personal computer for control of affordable CNC routers. A new generation of microcontrollers now makes it possible to put even more capability, at lower cost, into the control of robotic equipment. We needed that capability for our own machines, so we developed it for ShopBot as well as for other CNC equipment ready to be enhanced.
</p>
<p>
<strong>Today's FabMo</strong> offers CNC users <strong>five fundamental capabilities</strong>:
</p>
<div class="fast">
<h3>1 - Performance First: Fast, Precise, Smooth Cutting</h3>
<h4><strong>A powerful, low-level motion controller delivers fast, S-shaped acceleration profiles that minimize vibration and produce snappy, efficient action</strong></h4>
<p>
The highest priority of any CNC tool is to machine well. Everything else FabMo offers is built on top of quality machining motion. FabMo's enhanced hardware and low-level motion core provide sophisticated, near-real-time motion-planning. Fifth-order, "S"-shaped acceleration profiles minimize "jerk" and produce confident, brisk moves, while high-resolution timing yields smooth surfaces and graceful fabrication action. Underlying smoothness is the inherent accuracy of digital motion with precise, error free positioning for hour after hour of operation.
</p>
<!-- VIDEO PLACEHOLDER: short clip of snappy motion in and out of corners -->
</div>
<div class="access">
<h3>2 - Connect Widely, or Not at All: Your Choice of Access</h3>
<h4><strong>Reach your digital fabrication tool from any device, and generate toolpaths from a wide range of CAD/CAM programs or from FabMo apps</strong></h4>
<p>
FabMo opens new paths of access to your tool. Because it's built on standard networking, almost any smart device with a browser -- a phone, tablet, laptop, or desktop -- can run and monitor your FabMo equipment. Choose the access route that suits your shop: hard-wired for industrial robustness, or wireless for convenience. Where cybersecurity matters -- schools, government and military sites, secure corporate floors -- FabMo can also run completely disconnected from any network. You can attach a screen and keyboard directly to a FabMo tool and run the tool entirely off-line (isolated from any network or internet); if you need on-board CAD/CAM, connect a single PC to the tool by ethernet cable (also without a network if needed). If you have a secure network available, the long-standing frustration of limited or restrictive CNC connectivity and little interoperability is a thing of the past. FabMo provides access to your tool through virtually any connectable device (or devices) -- it is your choice. FabMo fixes CNC access limitation while leaving the security decision entirely in your hands.
</p>
</div>
<div class="interface">
<h3>3 - Making CNC Easier: An Intuitive, Responsive Interface</h3>
<h4><strong>Straightforward setup, running, and file-management -- with built-in help and a familiar ShopBot feel</strong></h4>
<p>
CNC tools are used across a wide range of environments by operators with very different skills and interests. The FabMo interface makes setting up your tool and running a job easy, with straightforward starting, monitoring, and file-management, plus built-in help and coaching for newer users. Operators already familiar with ShopBot will find a "classic" interface they recognize, alongside additional helpful tools and production resources built right into the platform. Develop job files on your tool-connected device, or post them from portable memory, your network, or -- if you choose to connect -- your cloud storage; you can always keep all work local for security. FabMo supports a wide range of workflows, from traditional CAD > CAM to a variety of "app" types (see below), and reads several motion languages including g-code and OpenSBP. While you are setting up work, FabMo's dynamic planning makes for near-real-time interactive control of the tool: positioning the tool from the keyboard, spinning up precise axis motion with a jog wheel, driving 2D or 3D positioning with a mouse or joystick. You can even, or even guide simple machining by with a pointing device and have near real-time trajectory smoothing.
</p>
</div>
<div class="programmable">
<h3>4 - More Than a File-Runner: Adaptable, Programmable, Extensible</h3>
<h4><strong>FabMo's real forte -- customize files, build macros, and create your own apps</strong></h4>
<p>
Adaptability is where FabMo most extends what a CNC tool is and can do. It's programmable at three levels. First and lowest level, ShopBot's OpenSBP toolpath language is more programmable than typical g-code: it's a conversational, BASIC-like language with variables, logic, looping, and machine interaction. So a great deal of customization can happen right inside the cutting files -- from a one-button move to a standard position, to production routines that move parts and people through a job. Second, a Macro library provides repeatable functions for everyday production; many "canned cycles" ship ready to use, and users can add unlimited custom Macros of their own. Third, and most powerful, FabMo provides an API for "mini-apps" -- single-purpose programs written in the familiar languages of the web that run right on the platform. Apps can handle routine utility jobs or serve up complex, customer-customizable fabrication projects. To get you started there's an existing app library, worked examples showing how apps are built, and a prompt system for generating your own apps with AI. Together, these capabilities turn a fabrication tool into an open environment for new kinds of human-machine creativity and productive work.
</p>
</div>
<div class="sensing">
<h3>5 - Industrial Performance Sensing</h3>
<h4><strong>Open "smarts" in sensing and reporting that can optimize cutting and flag needed maintenance -- an emerging capability</strong></h4>
<p>
FabMo was designed with the Industrial Internet of Things (IIoT) and Industry 4.0 smart manufacturing in mind. Smart sensing and reporting can help optimize production tools for both productivity and quality. A wide range of inputs -- digital, analog, and video -- can flow into FabMo over multiple channels to track measures such as spindle performance and current draw, cutting vibration, positioning, and running times. This openness makes your FabMo tool ready to be hooked into monitoring to increasingly help operators manage tasks, tune performance, and anticipate maintenance.
</p>
</div>
</div>
<div class="fabmo_story">
<h2>The FabMo Diagram</h2>
<img id="diagram_img" src="images/fabmo_diagram_v11.svg">
<p>
<strong>Diagram of FabMo.</strong> (a) Outlines the general model of FabMo for digital fabrication equipment -- a user's client accesses the FabMo Engine server and Motion Core onboard the tool. These modules drive the digital fab tool's motors through its I/O interface and motor drivers. (b) Details of the components of ShopBot's integration of FabMo into the electronic hardware that powers our CNC tools. (c) Illustration of the breadth of network-access and direct-access options available to FabMo users.
</p>
</div>
<div class="outer">
<div id="wrapper product">
<div class="hardware">
<h2>The Hardware</h2>
<h4>(Functionality)</h4>
<p>
FabMo is based on two hardware components: an SBC (single-board computer) that runs the "Engine": FabMo's interface, communications, and management systems; and, a microcontroller that provides a real-time environment for the motion functions.
</p>
<ul>
<li>
The SBC runs a Linux install supporting the Node.js FabMo Engine server and related management modules. For our current ShopBot version we are using a Raspberry Pi 5B.
</li>
<li>
The real-time microcontroller runs the motion system. Our current implementation is on an Atmel SAM3X8E, installed on the latest version of ShopBot's (V30x) Control Cards. A Control Card is a standard component of every ShopBot CNC control; so, the new cards will simply plug in modularly to most existing ShopBot CNC interface boards (these provide motor drivers, I/O buffering and isolation) making FabMo highly backward compatible with our earlier tools and open for adaptation to other CNCs.
</li>
<li>
The system currently provides 6 axes of simultaneous motion control; 12 digital input and 12 digital output channels; direct spindle/router activation; spindle-speed control via serial MODBUS; 2 analog input channels; 2 PWM output channels; and additional I/O through the SBC server, including 2 integrated USB video channels.
</li>
</ul>
</div><!-- /hardware -->
<div class="software">
<h2>The Software</h2>
<h4>(Concepts and Organization)</h4>
<p>
FabMo is an open source collection of software components and documented APIs.
</p>
<p>
At the lowest level, the FabMo motion system resides on the ARM microcontroller. Refined by ShopBot over years of production use, it is a sophisticated real-time motion core: high step rates; advanced "S"-shaped ramping for smooth, efficient acceleration and deceleration; and precise management of all timing and interaction with the tool.
</p>
<p>
The FabMo Engine server, running on the tool's SBC, provides access from the FabMo Dashboard on client devices -- PCs, smart phones, tablets, and the like, whether networked or directly linked. It handles low-level core functions and manages the flow of jobs to the real-time motion core.
</p>
<p>
Programmed primarily in JavaScript and Node.js, FabMo serves up a contemporary, mobile-friendly web interface. Several base modules provide run-times for different digital-fab toolpath languages. FabMo runs jobs and handles files -- and, importantly, it also provides a platform for developing and hosting "apps" that add a wide range of usability to digital fab tools. App Developer Resources include documented example apps that serve as templates for development. Apps are written in the languages of the web (HTML, CSS, JavaScript, and so on) -- so as app libraries grow, so do our tools for doing digital fabrication.
</p>
<div class="workflow-comparison">
<img src="images/app_workflow_01.png" alt="workflow">
</div>
<div class="fabrication-environment">
<h4>(Fabrication Environment)</h4>
<p>
Standard work in digital fabrication is done by sending a file of instructions to a CNC tool. The file describes the motions the tool moves through to machine or build a part. Such files are variously called part files, toolpath files, CNC files, or cutting files; they are primarily a list of XYZ coordinates defining the path the tool follows, and they may also carry instructions for other functions such as changing speeds or switching outputs on and off. This is the type of file created in the normal CAD > CAM > CNC-tool workflow, which FabMo fully supports and enhances -- handling one or more files as a "Job," with sequencing, preview inspection, and validation in its integrated Job Manager.
</p>
<p>
Beyond this traditional workflow, the FabMo platform offers a new approach to smart tools: "apps" that directly use the capabilities of digital motion equipment. Apps can do a wide range of tasks and help produce more complex projects; for many users they become a production workhorse. They can provide smart utilities for complex drilling and sawing, or replace the harder work of drawing in a CAD program and then tool-pathing in CAM. The point of an app is to make defining the machining easier and more natural. See some of the examples below.
</p>
</div><!-- /fabrication-environment -->
</div><!-- /software -->
<!-- =====================================================================
FabMo SCREENSHOT GALLERY
HOW IT WORKS
- First <figure class="featured"> shows alone, centered, a little larger.
- Every <figure> after it flows in PAIRS (two across).
- On a small screen everything collapses to a single column, all one size.
- Add images IN PAIRS by copying the two-figure block marked below.
- Keep to 7 images total (1 featured + 3 pairs).
- Edit each <figcaption> with your own one-sentence description.
The <style> block can stay here, or be moved into stylesheet.css.
===================================================================== -->
<style>
.fabmo_gallery{
display:grid;
grid-template-columns:1fr 1fr;
gap:26px;
align-items:start;
max-width:900px; /* keeps the gallery from going full width */
margin:24px auto 8px;
}
.fabmo_gallery figure{ margin:0; }
.fabmo_gallery img{
width:100%;
height:auto;
display:block;
border:1px solid #d8d7e2;
border-radius:5px;
box-shadow:0 1px 4px rgba(45,42,109,0.12);
}
.fabmo_gallery figcaption{
margin-top:9px;
text-align:center;
font-size:0.95em;
line-height:1.35;
color:#565666;
}
/* featured (first) image: spans both columns, centered, larger but not full width */
.fabmo_gallery .featured{
grid-column:1 / -1;
justify-self:center;
max-width:66%;
}
/* small screens: single column, every image the same size */
@media (max-width:600px){
.fabmo_gallery{ grid-template-columns:1fr; gap:20px; }
.fabmo_gallery .featured{ grid-column:auto; justify-self:stretch; max-width:100%; }
}
</style>
<div class="gallery_section">
<h3>A Look at FabMo</h3> <!-- reword as you like -->
<div class="fabmo_gallery">
<!-- ===== Featured image (shown alone, centered, a little larger) ===== -->
<figure class="featured">
<img src="images/dash_img_01.png" alt="FabMo screenshot">
<figcaption>FabMo's "classic" CNC interface for running and monitoring your toolpath files.</figcaption>
</figure>
<!-- ===== Pair 1 ===== -->
<figure>
<img src="images/dash_img_02.png" alt="FabMo screenshot">
<figcaption>FabMo's advanced Job Manager helps organize and manage files in your project.</figcaption>
</figure>
<figure>
<img src="images/dash_img_03.png" alt="FabMo screenshot">
<figcaption>Use FabMo's motion "Pad" to control the movement of your CNC machine interactively, from anywhere in FabMo and with many types of device to respond to motion requests.</figcaption>
</figure>
<figure>
<img src="images/dash_img_05.png" alt="FabMo screenshot">
<figcaption>Motion Pad being used in a live view of the CNC machine's workspace allowing clear positioning.</figcaption>
</figure>
<figure>
<img src="images/dash_img_04.png" alt="FabMo screenshot">
<figcaption>The Job Manger Preview provides detailed path inspection before running files, showing a simulated part to verify machining.</figcaption>
</figure>
<figure>
<img src="images/dash_img_06.png" alt="FabMo screenshot">
<figcaption>Preview details individual cuts and paths of cuts by line number and sequence in file.</figcaption>
</figure>
<figure>
<img src="images/dash_img_07.png" alt="FabMo screenshot">
<figcaption>Use Preview Augmented Reality (AR) view to precisely position toolpaths on your workpiece before running the CNC machine.</figcaption>
</figure>
<!-- ===== To add another pair, copy this block and bump the numbers (max 7 images total) =====
<figure>
<img src="images/dash_img_04.png" alt="FabMo screenshot">
<figcaption>Add a one-sentence description here.</figcaption>
</figure>
<figure>
<img src="images/dash_img_05.png" alt="FabMo screenshot">
<figcaption>Add a one-sentence description here.</figcaption>
</figure>
===================================================================================== -->
</div>
</div>
<div class="resources">
<br>
<h3>FabMo Resources</h3>
<h4>Example Apps</h4>
<p>These examples run here in your browser as illustration -- they are not the versions integrated into the FabMo Dashboard.</p>
<ul>
<li> <a href="http://fabmo.github.io/fabmo-example-app/" target="_blank">The Official FabMo Example App</a> -- covers some of the FabMo API in simple examples.</li>
<li> <a href="http://fabmo.github.io/fabmo-holecutter-app/" target="_blank">Hole Cutter</a> -- submits a drilling job based on input parameters.</li>
<li> Table Surfacer -- customize a routine for surfacing the surface of your CNC bed.</li>
<li> Birdhouse -- an example of a parametric design project.</li>
<li> <a href="https://labs.shopbottools.com/apps/terrain_carver/" target="_blank">Terrain Carver</a> -- make 3D topographic maps.</li>
</ul>
<h4>API Documentation for the FabMo Dashboard</h4>
<p>Check out <a href="http://fabmo.github.io/fabmo.js/" target="_blank">the API documentation</a> for the details on making use of FabMo functionality in your own apps.</p>
<h4>FabMo on GitHub</h4>
<p>And there is always the <a href="http://github.com/fabmo" target="_blank">FabMo project itself on GitHub</a> -- code, apps, and resources.</p>
</div><!-- /resources -->
<div class="logo_footer">
<img src="images/Go_FabMo_logo.png">
<br>
<br>
</div>
</div><!-- /wrapper product -->
</div><!-- /outer -->
</body>
</html>