This messy graph represents the high-level workflow for calibrating a Rostock-style delta 3D printer.
Last active
August 29, 2015 14:16
-
-
Save ryaninvents/c452aec398a7903c2e70 to your computer and use it in GitHub Desktop.
DOT diagram for calibration flow
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
digraph analysis { | |
node [shape=plaintext]; | |
size = "7.5,10"; | |
weight = 10; | |
label="Assume points where x=0, y=0 to be calibrated via steps_per_mm. We can then\nmove the print head in Z being fully confident that it's moving the amount\nwe expect and in the direction we expect."; | |
Start [fillcolor=black,shape=box,style=rounded]; | |
subgraph clusterCalib { | |
label="about 10 to 12 times"; | |
SnapOriented [shape=box,label="camera snap\n(oriented standard)",style=filled]; | |
SingleOriented [label="single oriented standard"]; | |
} | |
InitialParameters [label="initial (guessed)\nparameters"]; | |
CurrentParameters [label="current parameters"]; | |
InitialUpload [label="upload to bot",shape=box,style=filled]; | |
Intrinsic [label="camera intrinsic matrix",shape=box,style=bold]; | |
Extrinsic [label="camera extrinsic matrix", shape=box,style=bold]; | |
Start -> InitialParameters -> InitialUpload -> CurrentParameters -> Position1 -> | |
Laser1 -> LaserSnap1 -> SingleLaserImg -> | |
LaserUV1 -> LaserXYZ1; | |
subgraph clusterZHead { | |
label="for each planned z_head"; | |
Position1 [label="position print head at\n(0,0,z_head)",shape=box,style=filled]; | |
subgraph clusterLaser1 { | |
label="for each laser"; | |
Laser1 [label="laser fire",shape=box,style=filled]; | |
LaserSnap1 [label="camera snap", shape=box,style=filled]; | |
SingleLaserImg [label="single laser image"]; | |
LaserUV1 [label="laser spot (u,v)"]; | |
LaserXYZ1 [label="laser spot (x,y,z)"]; | |
} | |
LaserSpots1 [label="laser spots (x, y, z)\nsharing z_head"]; | |
} | |
Intrinsic -> LaserXYZ1; | |
Extrinsic -> LaserXYZ1; | |
"camera snap (flat standard)" -> "single flat standard" -> Extrinsic; | |
SnapOriented-> SingleOriented -> Intrinsic ; | |
LaserXYZ1 -> LaserSpots1; | |
EPos[label="relative emitter orientations\nand positions on platform", shape=box, style=bold]; | |
LaserSpots1-> EPos; | |
subgraph clusterXYHead { | |
label="for each planned (x_pred,y_pred,z_pred)\nprint head location"; | |
Position2 [label="position print head at\n(x_pred,y_pred,z_pred)",shape=box,style=filled]; | |
subgraph clusterLaser2 { | |
label="for each laser"; | |
Laser2 [label="laser fire", shape=box, style=filled]; | |
LaserCam2 [label="camera snap",style=filled,shape=box]; | |
LaserImg2 [label="single laser image"]; | |
LaserUV2 [label="laser spot (u,v)"]; | |
LaserXYZ2 [label="laser spot (x,y,z)"]; | |
} | |
LaserSpots2 [label="laser spots (x,y,z)\nsharing (x_pred, y_pred, z_pred)"]; | |
RelativePrintHead [label="predicted and actual\nprint head location"]; | |
} | |
Position2 -> Laser2 -> LaserCam2 -> LaserImg2 -> LaserUV2 -> LaserXYZ2 -> LaserSpots2; | |
Intrinsic -> LaserXYZ2; | |
Extrinsic -> LaserXYZ2; | |
EPos -> RelativePrintHead; | |
LaserSpots2 -> RelativePrintHead; | |
Newton [label="Newton optimization"]; | |
RelativePrintHead -> Newton; | |
CurrentParameters -> Newton; | |
Newton -> "corrected parameters" ; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<body style="height:100%;overflow-y:scroll;"><img src="flow.png" style="width:100%;"></body> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment