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.
- nonplanar/__init__.py +153 -0
- nonplanar/catalogue/cells/irb6700_150_320_cell_mock.yaml +15 -0
- nonplanar/catalogue/controllers/abb_irc5.yaml +7 -0
- nonplanar/catalogue/controllers/abb_omnicore.yaml +7 -0
- nonplanar/catalogue/controllers/kuka_krc4.yaml +7 -0
- nonplanar/catalogue/controllers/kuka_krc5.yaml +7 -0
- nonplanar/catalogue/extrusion/pe320_mock.yaml +14 -0
- nonplanar/catalogue/parameters/pe320_params_mock.yaml +14 -0
- nonplanar/catalogue/parts/sample_bowl.stl +0 -0
- nonplanar/catalogue/robots/abb_irb6700_150_320.yaml +42 -0
- nonplanar/catalogue/stress/sample_bowl_stress_mock.csv +581 -0
- nonplanar/catalogue/tools/pe320.yaml +17 -0
- nonplanar/codec.py +106 -0
- nonplanar/compute/__init__.py +90 -0
- nonplanar/compute/collision.py +117 -0
- nonplanar/compute/inputs.py +226 -0
- nonplanar/compute/planner.py +164 -0
- nonplanar/compute/planning.py +217 -0
- nonplanar/compute/slicing.py +290 -0
- nonplanar/compute/states.py +113 -0
- nonplanar/compute/stress.py +157 -0
- nonplanar/conventions.py +81 -0
- nonplanar/export/__init__.py +25 -0
- nonplanar/export/exporters.py +77 -0
- nonplanar/export/lowering.py +106 -0
- nonplanar/export/types.py +109 -0
- nonplanar/geometry/__init__.py +38 -0
- nonplanar/geometry/_constants.py +16 -0
- nonplanar/geometry/mesh.py +299 -0
- nonplanar/geometry/mesh_geometry.py +160 -0
- nonplanar/geometry/parametric_geometry.py +272 -0
- nonplanar/geometry/print_geometry.py +60 -0
- nonplanar/geometry/shapes.py +361 -0
- nonplanar/geometry/transforms.py +545 -0
- nonplanar/geometry/values.py +490 -0
- nonplanar/history.py +150 -0
- nonplanar/library.py +113 -0
- nonplanar/load/__init__.py +68 -0
- nonplanar/load/checks.py +23 -0
- nonplanar/load/grasshopper.py +202 -0
- nonplanar/load/kinematics.py +201 -0
- nonplanar/load/loaders.py +206 -0
- nonplanar/load/loading.py +101 -0
- nonplanar/load/models.py +232 -0
- nonplanar/load/rhino.py +149 -0
- nonplanar/load/rtb.py +96 -0
- nonplanar/portable.py +201 -0
- nonplanar/results.py +110 -0
- nonplanar/visualise/__init__.py +29 -0
- nonplanar/visualise/build.py +45 -0
- nonplanar/visualise/scene.py +143 -0
- nonplanar/visualise/viewer.py +118 -0
- nonplanar-0.1.1.dist-info/METADATA +122 -0
- nonplanar-0.1.1.dist-info/RECORD +55 -0
- 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
|
|
Binary file
|
|
@@ -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"
|