diff --git a/grasshopper/create_run_data.ghx b/grasshopper/create_run_data.ghx index 3af29173..bbd5f151 100644 --- a/grasshopper/create_run_data.ghx +++ b/grasshopper/create_run_data.ghx @@ -48,10 +48,10 @@ - 136 - 104 + -6047 + -1816 - 0.137138918 + 1.25 @@ -85,9 +85,9 @@ - 110 + 111 - + c552a431-af5b-46a9-a8a4-0fcbc27ef596 @@ -3136,7 +3136,7 @@ if save: true 0 true - e33252e2-6f20-4517-a04e-c2ac2d1a084e + c01d81f3-4ebc-43bb-928b-f7d3fe9cd8a2 1 87f87f55-5b71-41f4-8aea-21d494016f81 @@ -7927,8 +7927,7 @@ from rapid_clay_formations_fab.robots import MinimalTrajectory minimal_travel_trajectories = MinimalTrajectories([ MinimalTrajectory(trajectory_pts) -]) -print(minimal_travel_trajectories) +]) GhPython provides a Python script component 647 @@ -7936,7 +7935,7 @@ print(minimal_travel_trajectories) 741 - 702 + 827 true true @@ -8789,6 +8788,66 @@ pt = Configuration.from_revolute_values(to_radians([a1, a2, a3, a4, a5, a6])) + + + 59e0b89a-e487-49f8-bab8-b5bab16be14c + Panel + + + + + A panel for custom notes and text values + c01d81f3-4ebc-43bb-928b-f7d3fe9cd8a2 + Panel + + false + 0 + 0 + ANTONTEST + + + + + + 1071 + 840 + 82 + 20 + + 0 + 0 + 0 + + 1071.105 + 840.4902 + + + + + + + 255;255;255;255 + + true + true + true + false + false + true + + + + + Courier New + 6.4 + + + + + + + + @@ -8796,7 +8855,7 @@ pt = Configuration.from_revolute_values(to_radians([a1, a2, a3, a4, a5, a6])) - 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 diff --git a/grasshopper/path_planning.ghx b/grasshopper/path_planning.ghx index 2fab0e4d..b1461b31 100644 --- a/grasshopper/path_planning.ghx +++ b/grasshopper/path_planning.ghx @@ -48,8 +48,8 @@ - 215 - 160 + 280 + 273 0.05 @@ -232,9 +232,9 @@ - 578 + 579 - + c552a431-af5b-46a9-a8a4-0fcbc27ef596 @@ -47365,6 +47365,180 @@ print("placed: " + str(modified_elements.placed)) + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + traj = x[0].travel_trajectories[0] +traj.lol = "a" +print(traj.__dict__) + GhPython provides a Python script component + + 224 + 224 + + + 741 + 702 + + true + false + e6d173ce-ede3-4774-810a-75eeefe6c491 + false + true + GhPython Script + Python + + + + + + -5302 + 2413 + 72 + 44 + + + -5273 + 2435 + + + + + + 2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 2 + 3ede854e-c753-40eb-84cb-b48008f14fd4 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + 1 + true + Script variable Python + b842fef8-a2b9-491e-8d02-f5f4407c5365 + x + x + true + 1 + true + 3a4ced11-4093-4f78-a0a3-e6ba931e76e5 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + -5300 + 2415 + 12 + 20 + + + -5292.5 + 2425 + + + + + + + + true + Script input y. + abda9aa5-28b9-484f-badd-418dd4a5287e + y + y + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + -5300 + 2435 + 12 + 20 + + + -5292.5 + 2445 + + + + + + + + The execution information, as output and error streams + 2d6d58f3-9ba3-4919-a465-9a44fc90d90a + out + out + false + 0 + + + + + + -5258 + 2415 + 26 + 20 + + + -5245 + 2425 + + + + + + + + Script output a. + abbbbd53-3773-4a07-87ae-d17223517883 + a + a + false + 0 + + + + + + -5258 + 2435 + 26 + 20 + + + -5245 + 2445 + + + + + + + + + + + @@ -47372,7 +47546,7 @@ print("placed: " + str(modified_elements.placed)) - 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 diff --git a/setup.cfg b/setup.cfg index 3d38ca83..7d646e49 100755 --- a/setup.cfg +++ b/setup.cfg @@ -11,8 +11,7 @@ ignore = D001 [pydocstyle] convention = numpy -add-select = D212 -add-ignore = D202,D105 +add-ignore = D105,D202 [yapf] COLUMN_LIMIT = 88 diff --git a/src/rapid_clay_formations_fab/abb/abb_rcf_client.py b/src/rapid_clay_formations_fab/abb/abb_rcf_client.py index 733412eb..7842295d 100644 --- a/src/rapid_clay_formations_fab/abb/abb_rcf_client.py +++ b/src/rapid_clay_formations_fab/abb/abb_rcf_client.py @@ -65,6 +65,9 @@ def confirm_start(self): self.send(compas_rrc.PrintText("Press play when ready.")) self.send(compas_rrc.Stop()) + # After user presses play on pendant execution resumes: + self.send(compas_rrc.PrintText("Continuing execution.")) + def ping(self, timeout=10): """Ping ABB robot controller. @@ -260,15 +263,17 @@ def execute_trajectory( """ log.debug(f"Trajectory: {trajectory}") kwargs = {} + if trajectory.trajectory_type == MinimalTrajectory.JOINT_TRAJECTORY: - trajectory_pts = trajectory.to_robot_joints() + trajectory_pts = trajectory.as_robot_joints_points() instruction = MoveToJoints elif trajectory.trajectory_type == MinimalTrajectory.FRAME_TRAJECTORY: - trajectory_pts = trajectory.points + trajectory_pts = trajectory instruction = MoveToRobtarget kwargs["motion_type"] = motion_type else: + print(trajectory.trajectory_type) raise RuntimeError("Trajectory not recognized: {}".format(trajectory)) for pt in trajectory_pts[:-1]: # skip last diff --git a/src/rapid_clay_formations_fab/fab_data/fabrication_element.py b/src/rapid_clay_formations_fab/fab_data/fabrication_element.py index 30442642..7455e790 100644 --- a/src/rapid_clay_formations_fab/fab_data/fabrication_element.py +++ b/src/rapid_clay_formations_fab/fab_data/fabrication_element.py @@ -397,18 +397,24 @@ def __init__( def data(self): """:obj:`dict` : The data dictionary that represents the :class:`PlaceElement`.""" # noqa: E501 data = super(PlaceElement, self).data - data.update( - { - "compression_ratio": self.compression_ratio, - "travel_trajectories": self.travel_trajectories.to_data() or None, - "return_travel_trajectories": self.return_travel_trajectories.to_data() - or None, - "place_trajectories": self.place_trajectories.to_data() or None, - "return_place_trajectories": self.return_place_trajectories.to_data() - or None, - } + data["compression_ratio"] = self.compression_ratio + + data["travel_trajectories"] = self.travel_trajectories + + # optional trajectories + opt_traj_attrs = ( + "return_travel_trajectories", + "place_trajectories", + "return_place_trajectories", ) + for attr in opt_traj_attrs: + # Get value of property attribute (ending with "_") + # Returns none if there is no value set explicitly + attr_value = getattr(self, attr + "_", None) + if attr_value: + data[attr] = attr_value.to_data() + return data @data.setter diff --git a/src/rapid_clay_formations_fab/fab_data/tools.py b/src/rapid_clay_formations_fab/fab_data/tools.py index c892fd34..34331c54 100644 --- a/src/rapid_clay_formations_fab/fab_data/tools.py +++ b/src/rapid_clay_formations_fab/fab_data/tools.py @@ -103,7 +103,7 @@ def load_fabrication_elements(path_or_dict): """ fab_data = _get_fab_data(path_or_dict) - if fab_data.get("compression_ratio"): + if fab_data[0].get("travel_trajectories"): return [PlaceElement.from_data(data) for data in fab_data] return [FabricationElement.from_data(data) for data in fab_data] diff --git a/src/rapid_clay_formations_fab/robots/trajectories.py b/src/rapid_clay_formations_fab/robots/trajectories.py index 62680097..8899733e 100644 --- a/src/rapid_clay_formations_fab/robots/trajectories.py +++ b/src/rapid_clay_formations_fab/robots/trajectories.py @@ -8,7 +8,6 @@ from compas.geometry import Frame from compas_fab.robots import Configuration -from compas_fab.robots import JointTrajectoryPoint from compas_fab.robots import to_degrees from compas_rrc import RobotJoints @@ -159,26 +158,21 @@ def data(self): @data.setter def data(self, data): + print("Data: {}".format(data)) + print("Type: {}".format(type(data))) if data["points"][0].get("xaxis"): # check if data is of frame.data self.points = [Frame.from_data(pt) for pt in data["points"]] - # check if first elem is JointTrajectoryPoint dict - elif data["points"][0].get("types"): + # check if first elem is Configuration dict + elif data["points"][0].get("values"): self.points = [Configuration.from_data(pt) for pt in data["points"]] else: - raise NotImplementedError( - "Object type not supported: {}".format(type(data[0])) - ) - - @property - def robot_joints_points(self): - """:obj:`list` of :class:`compas_rrc.RobotJoints` : Trajectory as list of ``RobotJoints``.""" # noqa: E501 - return [RobotJoints(*to_degrees(pt)) for pt in self.points] + raise NotImplementedError("Object not recognized.") @property def trajectory_type(self): """:obj:`type` : Return the type of elements in the trajectory.""" self._raise_if_mixed_types() - if isinstance(self[0], JointTrajectoryPoint): + if isinstance(self[0], Configuration): return self.JOINT_TRAJECTORY if isinstance(self[0], Frame): return self.FRAME_TRAJECTORY @@ -194,6 +188,10 @@ def _raise_if_mixed_types(self): "Trajectory contains more than one type of objects: {}".format(types) ) + def as_robot_joints_points(self): + """:obj:`list` of :class:`compas_rrc.RobotJoints` : Trajectory as list of ``RobotJoints``.""" # noqa: E501 + return [RobotJoints(*to_degrees(pt.values)) for pt in self.points] + def copy(self): """Get an independent copy of object.""" cls = type(self)