nonplanar 0.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. nonplanar/__init__.py +153 -0
  2. nonplanar/catalogue/cells/irb6700_150_320_cell_mock.yaml +15 -0
  3. nonplanar/catalogue/controllers/abb_irc5.yaml +7 -0
  4. nonplanar/catalogue/controllers/abb_omnicore.yaml +7 -0
  5. nonplanar/catalogue/controllers/kuka_krc4.yaml +7 -0
  6. nonplanar/catalogue/controllers/kuka_krc5.yaml +7 -0
  7. nonplanar/catalogue/extrusion/pe320_mock.yaml +14 -0
  8. nonplanar/catalogue/parameters/pe320_params_mock.yaml +14 -0
  9. nonplanar/catalogue/parts/sample_bowl.stl +0 -0
  10. nonplanar/catalogue/robots/abb_irb6700_150_320.yaml +42 -0
  11. nonplanar/catalogue/stress/sample_bowl_stress_mock.csv +581 -0
  12. nonplanar/catalogue/tools/pe320.yaml +17 -0
  13. nonplanar/codec.py +106 -0
  14. nonplanar/compute/__init__.py +90 -0
  15. nonplanar/compute/collision.py +117 -0
  16. nonplanar/compute/inputs.py +226 -0
  17. nonplanar/compute/planner.py +164 -0
  18. nonplanar/compute/planning.py +217 -0
  19. nonplanar/compute/slicing.py +290 -0
  20. nonplanar/compute/states.py +113 -0
  21. nonplanar/compute/stress.py +157 -0
  22. nonplanar/conventions.py +81 -0
  23. nonplanar/export/__init__.py +25 -0
  24. nonplanar/export/exporters.py +77 -0
  25. nonplanar/export/lowering.py +106 -0
  26. nonplanar/export/types.py +109 -0
  27. nonplanar/geometry/__init__.py +38 -0
  28. nonplanar/geometry/_constants.py +16 -0
  29. nonplanar/geometry/mesh.py +299 -0
  30. nonplanar/geometry/mesh_geometry.py +160 -0
  31. nonplanar/geometry/parametric_geometry.py +272 -0
  32. nonplanar/geometry/print_geometry.py +60 -0
  33. nonplanar/geometry/shapes.py +361 -0
  34. nonplanar/geometry/transforms.py +545 -0
  35. nonplanar/geometry/values.py +490 -0
  36. nonplanar/history.py +150 -0
  37. nonplanar/library.py +113 -0
  38. nonplanar/load/__init__.py +68 -0
  39. nonplanar/load/checks.py +23 -0
  40. nonplanar/load/grasshopper.py +202 -0
  41. nonplanar/load/kinematics.py +201 -0
  42. nonplanar/load/loaders.py +206 -0
  43. nonplanar/load/loading.py +101 -0
  44. nonplanar/load/models.py +232 -0
  45. nonplanar/load/rhino.py +149 -0
  46. nonplanar/load/rtb.py +96 -0
  47. nonplanar/portable.py +201 -0
  48. nonplanar/results.py +110 -0
  49. nonplanar/visualise/__init__.py +29 -0
  50. nonplanar/visualise/build.py +45 -0
  51. nonplanar/visualise/scene.py +143 -0
  52. nonplanar/visualise/viewer.py +118 -0
  53. nonplanar-0.1.1.dist-info/METADATA +122 -0
  54. nonplanar-0.1.1.dist-info/RECORD +55 -0
  55. nonplanar-0.1.1.dist-info/WHEEL +4 -0
nonplanar/__init__.py ADDED
@@ -0,0 +1,153 @@
1
+ """The minimal ``nonplanar`` library: load → compute (slice + path) → visualise → export, with every call
2
+ recorded in an on-disk history. Sections: Nonplanar (``library``, ``history``, ``geometry``, ``results``,
3
+ ``conventions``), Load (``load``), Compute (``compute``), Visualise (``visualise``) and Export (``export``).
4
+
5
+ The prototype's standard-only packages (physics, simulation, compensation, …) are not imported here.
6
+ """
7
+
8
+ from nonplanar.compute import (
9
+ BeadParameters,
10
+ ComputeRequest,
11
+ ComputeResult,
12
+ ConformalStrategy,
13
+ Criteria,
14
+ FixedOrientation,
15
+ IsolineStrategy,
16
+ MotionPlan,
17
+ MoveParameters,
18
+ OrientationParameters,
19
+ PrintParameters,
20
+ SamplingOptions,
21
+ SearchOptions,
22
+ StackOrientation,
23
+ StressAlignedStrategy,
24
+ StressCriterion,
25
+ StressField,
26
+ StressSample,
27
+ StressTensor,
28
+ TweenStrategy,
29
+ )
30
+ from nonplanar.export import (
31
+ ExportedFile,
32
+ ExportRequest,
33
+ ExportResult,
34
+ ExportSettings,
35
+ ExportTarget,
36
+ ExtrusionMapping,
37
+ ExtrusionMode,
38
+ )
39
+ from nonplanar.geometry import (
40
+ BoxShape,
41
+ CapsuleShape,
42
+ CylinderShape,
43
+ Direction,
44
+ Interval,
45
+ MeshGeometry,
46
+ ParametricGeometry,
47
+ Point,
48
+ Points,
49
+ PrintGeometry,
50
+ Rotation,
51
+ Shape,
52
+ Transformation,
53
+ Triangle,
54
+ TriangleMesh,
55
+ )
56
+ from nonplanar.history import History, RecordRef, RecordType
57
+ from nonplanar.library import Dependencies, Nonplanar
58
+ from nonplanar.load import (
59
+ AllowedPair,
60
+ Catalogue,
61
+ Cell,
62
+ CollisionBody,
63
+ CollisionSettings,
64
+ ControllerFamily,
65
+ ControllerModel,
66
+ Joint,
67
+ JointConfiguration,
68
+ LoadRequest,
69
+ LoadResult,
70
+ OPWParameters,
71
+ PrintModel,
72
+ RobotModel,
73
+ Setup,
74
+ StressFieldLoader,
75
+ ToolModel,
76
+ )
77
+ from nonplanar.results import ClearResult, Diagnostic, NonplanarError, Result, Status
78
+ from nonplanar.visualise import VisualiseRequest, VisualiseResult, VisualLayer
79
+
80
+ __all__ = [
81
+ "AllowedPair",
82
+ "BeadParameters",
83
+ "BoxShape",
84
+ "CapsuleShape",
85
+ "Catalogue",
86
+ "Cell",
87
+ "ClearResult",
88
+ "CollisionBody",
89
+ "CollisionSettings",
90
+ "ComputeRequest",
91
+ "ComputeResult",
92
+ "ConformalStrategy",
93
+ "ControllerFamily",
94
+ "ControllerModel",
95
+ "Criteria",
96
+ "CylinderShape",
97
+ "Dependencies",
98
+ "Diagnostic",
99
+ "Direction",
100
+ "ExportRequest",
101
+ "ExportResult",
102
+ "ExportSettings",
103
+ "ExportTarget",
104
+ "ExportedFile",
105
+ "ExtrusionMapping",
106
+ "ExtrusionMode",
107
+ "FixedOrientation",
108
+ "History",
109
+ "Interval",
110
+ "IsolineStrategy",
111
+ "Joint",
112
+ "JointConfiguration",
113
+ "LoadRequest",
114
+ "LoadResult",
115
+ "MeshGeometry",
116
+ "MotionPlan",
117
+ "MoveParameters",
118
+ "Nonplanar",
119
+ "NonplanarError",
120
+ "OPWParameters",
121
+ "OrientationParameters",
122
+ "ParametricGeometry",
123
+ "Point",
124
+ "Points",
125
+ "PrintGeometry",
126
+ "PrintModel",
127
+ "PrintParameters",
128
+ "RecordRef",
129
+ "RecordType",
130
+ "Result",
131
+ "RobotModel",
132
+ "Rotation",
133
+ "SamplingOptions",
134
+ "SearchOptions",
135
+ "Setup",
136
+ "Shape",
137
+ "StackOrientation",
138
+ "Status",
139
+ "StressAlignedStrategy",
140
+ "StressCriterion",
141
+ "StressField",
142
+ "StressFieldLoader",
143
+ "StressSample",
144
+ "StressTensor",
145
+ "ToolModel",
146
+ "Transformation",
147
+ "Triangle",
148
+ "TriangleMesh",
149
+ "TweenStrategy",
150
+ "VisualLayer",
151
+ "VisualiseRequest",
152
+ "VisualiseResult",
153
+ ]
@@ -0,0 +1,15 @@
1
+ # MOCK cell for the IRB 6700-150/3.20 + PE320 (world frame = robot base on the floor, mm). A placeholder until
2
+ # the client's bed data arrive: a 1.5 m square table whose top (the print frame) is 2 m in front of the robot.
3
+ name: irb6700_150_320_cell_mock
4
+ mock: true
5
+ note: "placeholder table and build plate; replace with the client's measured cell and bed data"
6
+ robot_base: {xyz: [0.0, 0.0, 0.0]}
7
+ print_frame: {xyz: [2000.0, 0.0, 600.0]}
8
+ build_plate:
9
+ name: build_plate
10
+ shapes:
11
+ - {kind: box, size: [1500.0, 1500.0, 20.0], transform: {xyz: [2000.0, 0.0, 590.0]}}
12
+ obstacles:
13
+ - name: table
14
+ shapes:
15
+ - {kind: box, size: [1500.0, 1500.0, 580.0], transform: {xyz: [2000.0, 0.0, 290.0]}}
@@ -0,0 +1,7 @@
1
+ # Controller defaults (placeholder software version; confirm the client's controller and RobotWare/KSS release).
2
+ name: abb_irc5
3
+ mock: true
4
+ note: "software version is a placeholder; max_moves_per_module is the design default"
5
+ family: IRC5
6
+ software_version: "RobotWare 6.x (placeholder)"
7
+ max_moves_per_module: 5000
@@ -0,0 +1,7 @@
1
+ # Controller defaults (placeholder software version; confirm the client's controller and RobotWare/KSS release).
2
+ name: abb_omnicore
3
+ mock: true
4
+ note: "software version is a placeholder; max_moves_per_module is the design default"
5
+ family: OMNICORE
6
+ software_version: "RobotWare 7.x (placeholder)"
7
+ max_moves_per_module: 5000
@@ -0,0 +1,7 @@
1
+ # Controller defaults (placeholder software version; confirm the client's controller and RobotWare/KSS release).
2
+ name: kuka_krc4
3
+ mock: true
4
+ note: "software version is a placeholder; max_moves_per_module is the design default"
5
+ family: KRC4
6
+ software_version: "KSS 8.x (placeholder)"
7
+ max_moves_per_module: 5000
@@ -0,0 +1,7 @@
1
+ # Controller defaults (placeholder software version; confirm the client's controller and RobotWare/KSS release).
2
+ name: kuka_krc5
3
+ mock: true
4
+ note: "software version is a placeholder; max_moves_per_module is the design default"
5
+ family: KRC5
6
+ software_version: "KSS 8.x (placeholder)"
7
+ max_moves_per_module: 5000
@@ -0,0 +1,14 @@
1
+ # MOCK extrusion I/O mapping for the PE320 driven through the Epicurus controller. The client's Epicurus I/O map
2
+ # is not known yet: every name and number here is a PLACEHOLDER (design: doExtOn, aoExtFlow, range 0 to 10,
3
+ # lag 0 s, update period 0.05 s). signal_per_flow assumes 10 signal units = 5000 mm³/s.
4
+ name: pe320_mock
5
+ mock: true
6
+ note: "placeholder signal names, range and scale; replace with the client's Epicurus I/O map"
7
+ mode: TCP_PROPORTIONAL
8
+ enable_signal: doExtOn
9
+ flow_signal: aoExtFlow
10
+ signal_range: [0.0, 10.0]
11
+ signal_per_flow: 0.002
12
+ lag: 0.0
13
+ dip_lag: 0.0
14
+ update_period: 0.05
@@ -0,0 +1,14 @@
1
+ # MOCK print parameters for the PE320 (mm, mm/s, deg). Placeholders until the client's print parameters arrive.
2
+ name: pe320_params_mock
3
+ mock: true
4
+ note: "placeholder bead, speeds and retract; replace with the client's print parameters"
5
+ bead_width: 8.0
6
+ bead_height: 3.0
7
+ nozzle_gap: 0.0
8
+ orientation: {strategy: stack, max_tilt_deg: 15.0}
9
+ print_speed: 50.0
10
+ travel_speed: 250.0
11
+ retract: 10.0
12
+ blend_zone: 1.0
13
+ # the most a bead's stacking direction may lean from up (assumption; set per material)
14
+ max_overhang_deg: 60.0
@@ -0,0 +1,42 @@
1
+ # ABB IRB 6700-150/3.20 — the client's robot (nonplanar catalogue, robot YAML schema 1).
2
+ # Lengths mm, angles deg, joint values in the model convention (= the ABB controller convention here:
3
+ # controller offsets 0, signs +1).
4
+ # VERIFY AGAINST ROBOTSTUDIO BEFORE HARDWARE USE: c2 and c3 come from the product specification 3HAC044265
5
+ # (variant table E = 1280, G = 1592.5); a1, a2, b, c1 and c4 are shared with the other IRB 6700 standard-base
6
+ # variants (ROS-Industrial abb_irb6700_support) and were not confirmed for this variant (the spec's H = 209 mm
7
+ # does not match a2 = 200). No ROS-I URDF exists for this variant. LeanID (option 780-4) would change A5 to
8
+ # ±120° and A6 to ±220° with a coupled A5/A6 chart — ask the client.
9
+ schema_version: 1
10
+ name: abb_irb6700_150_320
11
+ display_name: ABB IRB 6700-150/3.20
12
+ vendor: abb
13
+ model: IRB 6700-150/3.20
14
+ verify: "OPW parameters a1, a2, b, c1, c4 inferred from other IRB 6700 variants; verify against RobotStudio (GetDenavitHartenbergParameters) or the ABB CAD model before hardware use; LeanID option unknown"
15
+ opw:
16
+ a1: 320
17
+ a2: -200
18
+ b: 0
19
+ c1: 780
20
+ c2: 1280
21
+ c3: 1592.5
22
+ c4: 200
23
+ offsets_deg: [0, 0, -90, 0, 0, 0]
24
+ sign_corrections: [1, 1, 1, 1, 1, 1]
25
+ abb_cfx_mode: table
26
+ nominal_reach_mm: 3200
27
+ rated_payload_kg: 150
28
+ home_deg: [0, 0, 0, 0, 30, 0]
29
+ joints:
30
+ - {name: J1, lower_deg: -170, upper_deg: 170, max_velocity_deg_s: 100}
31
+ - {name: J2, lower_deg: -65, upper_deg: 85, max_velocity_deg_s: 90}
32
+ - {name: J3, lower_deg: -180, upper_deg: 70, max_velocity_deg_s: 90}
33
+ - {name: J4, lower_deg: -300, upper_deg: 300, max_velocity_deg_s: 170}
34
+ - {name: J5, lower_deg: -130, upper_deg: 130, max_velocity_deg_s: 120}
35
+ - {name: J6, lower_deg: -360, upper_deg: 360, max_velocity_deg_s: 190}
36
+ controller_offsets_deg: [0, 0, 0, 0, 0, 0]
37
+ controller_signs: [1, 1, 1, 1, 1, 1]
38
+ provenance:
39
+ kinematics: "ABB product specification IRB 6700, 3HAC044265-001 Rev Z, §1.4.2 variant table (E = c2 = 1280, G = c3 = 1592.5); a1/a2/b/c1/c4 from ros-industrial/abb abb_irb6700_support (other variants)"
40
+ position_limits: "3HAC044265-001 Rev Z §1.9.1 axis ranges (standard, without LeanID)"
41
+ velocity_limits: "3HAC044265-001 Rev Z §1.9.3 maximum axis speeds, variant 150/3.20: 100/90/90/170/120/190 deg/s"
42
+ verification: "not yet verified against RobotStudio or the robot; see verify"