Difference between revisions of "Slicing"

From 3D printer from scratch
Jump to: navigation, search
(Created page with "Input ===== - STL - STEP Slicing output ============== - lines - arcs - b-splines Options: - approximate everything with lines (gcode) - approximate everything...")
 
Line 1: Line 1:
Input
+
= Transformation Chain =
=====
 
- STL
 
- STEP
 
  
Slicing output
+
== Input ==
==============
+
* STL
- lines
+
* STEP
- arcs
 
- b-splines
 
  
  Options:
+
== Slicing output ==
  - approximate everything with lines (gcode)
+
* lines
  - approximate everything with bezier splines
+
* arcs
 +
* b-splines
  
Adding velocity profile
+
=== Options ===
=======================
+
* approximate everything with lines (gcode)
- trapezoidal
+
* approximate everything with bezier splines
- s-curve
 
- higher order
 
  
Transform into target kinematics
+
== Adding velocity profile ==
================================
+
* trapezoidal
- cartesian
+
* s-curve
- corexy
+
* higher order
- delta
 
- polar
 
  
  Options:
+
== Transform into target kinematics ==
  - transform mathematically
+
* cartesian
  - quantize into oversampled steps before transformation and translate only points
+
* corexy
    Oversampling may depend on the target kinematics and must be high enough that
+
* delta
    after transformation the resolution still exceeds the microstepping resolution
+
* polar
 +
 
 +
=== Options ===
 +
* transform mathematically
 +
* quantize into oversampled steps before transformation and translate only points Oversampling may depend on the target kinematics and must be high enough that after transformation the resolution still exceeds the microstepping resolution
 
    
 
    
Generate per-axis motion data
+
== Generate per-axis motion data ==
=============================
+
* either mathematically
- either mathematically
+
* or step data
- or step data
+
 
 +
== Transfer per-axis motion data ==
 +
* transfer mathematically
 +
* transfer ((lossily) compressed) step data
  
Transfer per-axis motion data
+
== Generate steps ==
=============================
 
- transfer mathematically
 
- transfer ((lossily) compressed) step data
 
  
Generate steps
+
= Potential Solutions =
  
  
Most complex solution: Transport mathematically correct data up to the fpga
+
== Most complex solution: Transport mathematically correct data up to the fpga ==
- transformations for lines, arcs and splines needed into target kinematics
+
* transformations for lines, arcs and splines needed into target kinematics
- projections into single axis and combination with velocity profiles for each
+
* projections into single axis and combination with velocity profiles for each transformation needed
  transformatino needed
+
* fpga needs to know all projected profiles
- fpga needs to know all projected profiles
 
  
Intermediate solution: Approximate at or after slicing and transport mathematically
+
== Intermediate solution: Approximate at or after slicing and transport mathematically ==
- only one motion (lines or splines) need to be translated into all target kinematics
+
* only one motion (lines or splines) need to be translated into all target kinematics
- fpga need to know one profile for each kinematics
+
* fpga need to know one profile for each kinematics
  
Simplest solution: Approximate at or after slicing
+
== Simplest solution: Approximate at or after slicing ==
- only points need to be translated to target kinematics
+
* only points need to be translated to target kinematics
- computationally intensive because each point needs to be translated individually,
+
* computationally intensive because each point needs to be translated individually, plus needed oversampling for some kinematics
  plus needed oversampling for some kinematics
+
* steps need to be compressed for transmission. If the compression is lossy, it degrades the precision slightly
- steps need to be compressed for transmission. If the compression is lossy, it degrades
 
  the precision slightly
 

Revision as of 12:11, 3 June 2018

Transformation Chain

Input

  • STL
  • STEP

Slicing output

  • lines
  • arcs
  • b-splines

Options

  • approximate everything with lines (gcode)
  • approximate everything with bezier splines

Adding velocity profile

  • trapezoidal
  • s-curve
  • higher order

Transform into target kinematics

  • cartesian
  • corexy
  • delta
  • polar

Options

  • transform mathematically
  • quantize into oversampled steps before transformation and translate only points Oversampling may depend on the target kinematics and must be high enough that after transformation the resolution still exceeds the microstepping resolution

Generate per-axis motion data

  • either mathematically
  • or step data

Transfer per-axis motion data

  • transfer mathematically
  • transfer ((lossily) compressed) step data

Generate steps

Potential Solutions

Most complex solution: Transport mathematically correct data up to the fpga

  • transformations for lines, arcs and splines needed into target kinematics
  • projections into single axis and combination with velocity profiles for each transformation needed
  • fpga needs to know all projected profiles

Intermediate solution: Approximate at or after slicing and transport mathematically

  • only one motion (lines or splines) need to be translated into all target kinematics
  • fpga need to know one profile for each kinematics

Simplest solution: Approximate at or after slicing

  • only points need to be translated to target kinematics
  • computationally intensive because each point needs to be translated individually, plus needed oversampling for some kinematics
  • steps need to be compressed for transmission. If the compression is lossy, it degrades the precision slightly