diff --git a/lecture_06/assignment_05/asling/Assignment_05.3dm b/lecture_06/assignment_05/asling/Assignment_05.3dm new file mode 100644 index 0000000..de3397b Binary files /dev/null and b/lecture_06/assignment_05/asling/Assignment_05.3dm differ diff --git a/lecture_06/assignment_05/asling/Assignment_05.ghx b/lecture_06/assignment_05/asling/Assignment_05.ghx new file mode 100644 index 0000000..a4e465f --- /dev/null +++ b/lecture_06/assignment_05/asling/Assignment_05.ghx @@ -0,0 +1,15092 @@ + + + + + + + + 0 + 2 + 2 + + + + + + + 1 + 0 + 7 + + + + + + c4f913db-409d-41a9-88e1-f6f90989047d + Shaded + 1 + + 100;150;0;0 + + + 100;0;150;0 + + + + + + 637527254194888879 + + Assignment_05.ghx + + + + + 0 + + + + + + 77 + -148 + + 0.310324728 + + + + + 0 + + + + + + + 0 + + + + + 1 + + + + + GhPython, Version=6.32.20340.21002, Culture=neutral, PublicKeyToken=null + 6.32.20340.21002 + + 00000000-0000-0000-0000-000000000000 + + + + + + + + + 128 + + + + + 2e78987b-9dfb-42a2-8b76-3923ac8bd91a + Boolean Toggle + + + + + Boolean (true/false) toggle + 47c152bc-c823-4835-aad3-3bf5c281e892 + Boolean Toggle + Connect + false + 0 + true + + + + + + 27 + 85 + 107 + 22 + + + + + + + + + + 2e78987b-9dfb-42a2-8b76-3923ac8bd91a + Boolean Toggle + + + + + Boolean (true/false) toggle + d19cf29a-0512-4632-b4e0-ecc00c5b8487 + Boolean Toggle + Load robot + false + 0 + true + + + + + + 29 + 134 + 119 + 22 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas_fab.backends import RosClient +from compas_fab.ghpython.components import create_id + + +class ROSConnect(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "ip", "ip", "The ip address of ROS master. Defaults to 127.0.0.1") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Integer() + self.SetUpParam(p, "port", "port", "The port of ROS master. Defaults to 9090.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Boolean() + self.SetUpParam(p, "connect", "connect", "If `True`, connect to ROS. If `False`, disconnect from ROS. Defaults to False.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "ros_client", "ros_client", "The ROS client.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + result = self.RunScript(p0, p1, p2) + + if result is not None: + self.marshal.SetOutput(result, DA, 0, True) + + def RunScript(self, ip, port, connect): + ros_client = None + + ip = ip or '127.0.0.1' + port = port or 9090 + + key = create_id(self, 'ros_client') + ros_client = st.get(key, None) + + if ros_client: + st[key].close() + if connect: + st[key] = RosClient(ip, port) + st[key].run(5) + + ros_client = st.get(key, None) + self.Message = 'Connected' if ros_client and ros_client.is_connected else 'Not connected' + return ros_client + + GhPython provides a Python script component + + 229 + 390 + + + 684 + 571 + + true + true + 1 + 3ed3a5e2-d78a-43c5-99e3-a602e5221e79 + true + true + GhPython Script + ROS Connect + + + + + + 211 + 86 + 127 + 89 + + + 270 + 131 + + + + + + 3 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + 39f76aa4-b4b1-4eff-8540-c659df1e991b + ip + ip + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 213 + 88 + 42 + 28 + + + 235.5 + 102.1667 + + + + + + + + true + Script input port. + 745e0055-1456-4b6f-8e8f-d5f74af38e8d + port + port + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 213 + 116 + 42 + 28 + + + 235.5 + 130.5 + + + + + + + + true + Script input connect. + 140a303b-ef70-4b59-a913-724c0d0505cb + connect + connect + true + 0 + true + 47c152bc-c823-4835-aad3-3bf5c281e892 + 1 + 35915213-5534-4277-81b8-1bdc9e7383d2 + + + + + + 213 + 144 + 42 + 29 + + + 235.5 + 158.8333 + + + + + + + + Script output ros_client. + 54922ac8-ee9c-400b-ac86-feaf21cb04a2 + ros_client + ros_client + false + 0 + + + + + + 285 + 88 + 51 + 85 + + + 310.5 + 130.5 + + + + + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +import compas +from compas_fab.ghpython.components import create_id +from compas_fab.ghpython.components.icons import ros_robot_icon +from compas_ghpython.artists import RobotModelArtist + + +class ROSRobot(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "ros_client", "ros_client", "The ROS client.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Boolean() + self.SetUpParam(p, "load", "load", "If `True`, loads the robot from ROS. Defaults to False.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + result = self.RunScript(p0, p1) + + if result is not None: + self.marshal.SetOutput(result, DA, 0, True) + + def get_Internal_Icon_24x24(self): + return ros_robot_icon + + def RunScript(self, ros_client, load): + self.Message = "Loading..." + compas.PRECISION = '12f' + + key = create_id(self, 'robot') + + if ros_client and ros_client.is_connected and load: + # Load URDF from ROS + robot = ros_client.load_robot(load_geometry=True) + robot.artist = RobotModelArtist(robot.model) + self.Message = "{} loaded".format(robot.name) + st[key] = robot + else: + if st.get(key): + self.Message = "{} loaded".format(st.get(key).name) + else: + self.Message = "No robot" + + robot = st.get(key, None) + if robot: # client sometimes need to be restarted, without needing to reload geometry + robot.client = ros_client + return robot + + GhPython provides a Python script component + + 234 + 234 + + + 558 + 571 + + true + true + 1 + 1cb74eb0-a053-4919-a55e-3175350e261c + true + true + GhPython Script + Load robot + + + + + + 631 + 98 + 113 + 74 + + + 696 + 135 + + + + + + 2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + fcf0c1b8-fa76-4032-92b0-ef2ada751e62 + ros_client + ros_client + true + 0 + true + 54922ac8-ee9c-400b-ac86-feaf21cb04a2 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 633 + 100 + 48 + 35 + + + 658.5 + 117.5 + + + + + + + + true + Script input load. + 4b059742-6fce-4e6a-b6b0-cd2e2ccfdb08 + load + load + true + 0 + true + d19cf29a-0512-4632-b4e0-ecc00c5b8487 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 633 + 135 + 48 + 35 + + + 658.5 + 152.5 + + + + + + + + Script output robot. + 9a9900f7-c5de-485a-9791-63a5e1930c86 + robot + robot + false + 0 + + + + + + 711 + 100 + 31 + 70 + + + 726.5 + 135 + + + + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 3ed3a5e2-d78a-43c5-99e3-a602e5221e79 + 47c152bc-c823-4835-aad3-3bf5c281e892 + d19cf29a-0512-4632-b4e0-ecc00c5b8487 + 1cb74eb0-a053-4919-a55e-3175350e261c + 052e844a-59bc-4346-a9d3-a1965fe01a5c + 5 + 8f601091-89b0-4be9-9194-7191c9078d9e + Group + + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas.geometry import Frame +from compas.geometry import Transformation +from compas_ghpython.artists import MeshArtist +from compas_ghpython import draw_frame +from compas_fab.ghpython.components import create_id +from compas_fab.ghpython.components.icons import robot_visualize_icon + +class RobotVisualize(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "group", "group", "The planning group used for end-effector and base visualization.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "configuration", "configuration", "The robot's full configuration.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Boolean() + self.SetUpParam(p, "reload_scene", "reload_scene", "Whether or not to reload the scene information from the client.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "visual", "visual", "The robot's visual meshes.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "frames", "frames", "The robot's joint frames.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "attached_collision_meshes", "attached_collision_meshes", "Attached collision meshes in the scene.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "collision_meshes", "collision_meshes", "Collision meshes in the scene.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + p3 = self.marshal.GetInput(DA, 3) + result = self.RunScript(p0, p1, p2, p3) + + if result is not None: + if not hasattr(result, '__getitem__'): + self.marshal.SetOutput(result, DA, 0, True) + else: + self.marshal.SetOutput(result[0], DA, 0, True) + self.marshal.SetOutput(result[1], DA, 1, True) + self.marshal.SetOutput(result[2], DA, 2, True) + self.marshal.SetOutput(result[3], DA, 3, True) + + def get_Internal_Icon_24x24(self): + return robot_visualize_icon + + def RunScript(self, robot, group, configuration, reload_scene): + + visual = None + frames = None + collision_meshes = [] + attached_collision_meshes = [] + + if robot: + configuration = configuration or robot.zero_configuration() + + robot.update(configuration, visual=True, collision=False) + frames = [draw_frame(f) for f in robot.transformed_frames(configuration, group)] + + visual = robot.artist.draw_visual() + + scene_key = create_id(self, 'scene') + + if robot and (reload_scene or scene_key not in st): + st[scene_key] = robot.client.get_planning_scene() + + scene = st.get(scene_key, None) + + if scene: + scene_key_co = scene_key + '_co' + if reload_scene or scene_key_co not in st: + for co in scene.world.collision_objects: + # HACK: Little workaround to a bug in to_collision_meshes() + header = co.header + frame_id = header.frame_id + co.header = dict(frame_id=frame_id) + cms = co.to_collision_meshes() + # HACK: Restore proper header + co.header = header + + for cm in cms: + if frame_id != '/world': + raise NotImplementedException('Only world-referenced collision meshes are supported') + + if cm.frame != Frame.worldXY(): + t = Transformation.from_frame(cm.frame) + mesh = cm.mesh.transformed(t) + else: + mesh = cm.mesh + + rhino_mesh = MeshArtist(mesh).draw() + collision_meshes.append(rhino_mesh) + st[scene_key_co] = collision_meshes + + collision_meshes = st.get(scene_key_co, None) + + for aco in scene.robot_state.attached_collision_objects: + for acm in aco.to_attached_collision_meshes(): + frame_id = aco.object['header']['frame_id'] + frame = robot.forward_kinematics(configuration, options=dict(link=frame_id)) + t = Transformation.from_frame(frame) + + # Local CM frame + if acm.collision_mesh.frame and acm.collision_mesh.frame != Frame.worldXY(): + t = t * Transformation.from_frame(acm.collision_mesh.frame) + + mesh = acm.collision_mesh.mesh.transformed(t) + + rhino_mesh = MeshArtist(mesh).draw() + attached_collision_meshes.append(rhino_mesh) + + return (visual, frames, attached_collision_meshes, collision_meshes) + + GhPython provides a Python script component + + 776 + 53 + + + 821 + 880 + + true + true + 1 + 49f90167-2646-4d22-86bb-012cb0fa4ce7 + true + true + GhPython Script + Visualize + + + + + + 2234 + 86 + 235 + 84 + + + 2318 + 128 + + + + + + 4 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 4 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + cf579257-0392-4efa-8abc-cd5056adcf57 + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 2236 + 88 + 67 + 20 + + + 2271 + 98 + + + + + + + + true + Script input group. + 1bfd0eaf-087b-48f8-94ab-ec1f66301ff5 + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 2236 + 108 + 67 + 20 + + + 2271 + 118 + + + + + + + + true + Script input configuration. + 2b362d36-7eb3-4375-b95e-a6ac847f62ba + configuration + configuration + true + 0 + true + 4f71d325-568e-44cb-a557-d39b0f640dcd + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 2236 + 128 + 67 + 20 + + + 2271 + 138 + + + + + + + + true + Script input reload_scene. + e0c5dc07-2e68-4c56-b256-f4d6f758b13b + reload_scene + reload_scene + true + 0 + true + 11f438a0-e803-417d-8e51-4bf9fdfb3f32 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 2236 + 148 + 67 + 20 + + + 2271 + 158 + + + + + + + + Script output visual. + 7fb0382a-e34f-49af-8952-9248a6d53e87 + visual + visual + false + 0 + + + + + + 2333 + 88 + 134 + 20 + + + 2400 + 98 + + + + + + + + Script output frames. + a94910e2-c32f-4b57-b31b-4b2bb61f886c + frames + frames + false + 0 + + + + + + 2333 + 108 + 134 + 20 + + + 2400 + 118 + + + + + + + + Script output attached_collision_meshes. + ece8fe7d-7f3d-4b20-a022-3c3f798472a2 + attached_collision_meshes + attached_collision_meshes + false + 0 + + + + + + 2333 + 128 + 134 + 20 + + + 2400 + 138 + + + + + + + + Script output collision_meshes. + 5425d29f-9702-41b7-b855-110be3410f3f + collision_meshes + collision_meshes + false + 0 + + + + + + 2333 + 148 + 134 + 20 + + + 2400 + 158 + + + + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 28.50171 + 30.30629 + + + 112.3435 + 30.30629 + + + 112.3435 + 60.67592 + + + 28.50171 + 60.67592 + + A quick note + Arial + 052e844a-59bc-4346-a9d3-a1965fe01a5c + false + Scribble + Scribble + 41 + ROS + + + + + + 23.50171 + 25.30629 + 93.8418 + 40.36963 + + + 28.50171 + 30.30629 + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 33.45305 + 533.9657 + + + 114.412 + 533.9657 + + + 114.412 + 563.7948 + + + 33.45305 + 563.7948 + + A quick note + Arial + 5d32bed8-8ecb-420b-94ff-7e259c6e0271 + false + Scribble + Scribble + 41 + Pick + + + + + + 28.45305 + 528.9657 + 90.95898 + 39.8291 + + + 33.45305 + 533.9657 + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 3b7f60e5-51c9-490b-9ebc-e5ee462e7ba4 + 5d32bed8-8ecb-420b-94ff-7e259c6e0271 + 22f65f1a-2960-4e61-af15-fe921d28a85e + 34e985cd-859f-4d13-a639-0f4a1845fc21 + 4a2d4712-07e1-486a-83c8-6f48dc97b0fb + 8236f508-23ec-490e-87aa-044817e10e3d + aed8c6c7-f405-4348-b43b-ddbf751f09ac + 7 + 51d0885c-388f-4eed-b92e-203da09abd43 + Group + + + + + + + + + + + fbac3e32-f100-4292-8692-77240a42fd1a + Point + + + + + Contains a collection of three-dimensional points + 34e985cd-859f-4d13-a639-0f4a1845fc21 + Point + Pt Pick + false + 0 + + + + + + 129 + 535 + 50 + 20 + + + 154.8627 + 545.0902 + + + + + + 1 + + + + + 1 + {0} + + + + + + + + 6e5f3eb2-34c1-41bc-840b-a63224d35c01 + -1 + 0 + 0 + point_object + + + + + + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas_fab.ghpython.components import coerce_frame +from compas_fab.backends import RosValidationError + +class InverseKinematics(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "plane", "plane", "The plane or frame to calculate the inverse kinematic for.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "start_configuration", "start_configuration", + "If passed, the inverse will be calculated such that the calculated joint positions \ + differ the least from the start_configuration. Defaults to the zero configuration.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "group", "group", "The planning group used for calculation. Defaults to the robot's main planning group.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "a", "configuration", "The planning group's configuration.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + p3 = self.marshal.GetInput(DA, 3) + result = self.RunScript(p0, p1, p2, p3) + + if result is not None: + self.marshal.SetOutput(result, DA, 0, True) + + def get_Internal_Icon_24x24(self): + return inverse_kinematics_icon + + def RunScript(self, robot, plane, start_configuration, group): + configuration = None + self.Message = '' + if robot and robot.client and robot.client.is_connected and plane: + frame = coerce_frame(plane) + try: + configuration = robot.inverse_kinematics(frame, start_configuration, group) + except RosValidationError as e: + self.Message = 'No solution found' + raise + + if configuration: + self.Message = 'Solution found' + return configuration + + GhPython provides a Python script component + + 416 + 248 + + + 684 + 571 + + true + true + 1 + e4f9217d-c7c3-49af-9a83-834638eb0d4d + true + true + GhPython Script + IK + + + + + + 617 + 1995 + 198 + 84 + + + 728 + 2037 + + + + + + 4 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + 29fc4f93-58c2-4192-8f02-3ecdf4a1be23 + robot + robot + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 619 + 1997 + 94 + 20 + + + 667.5 + 2007 + + + + + + + + true + Script input plane. + c75f16a9-ac28-43bf-a9b6-95a50d2b00f1 + plane + plane + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 619 + 2017 + 94 + 20 + + + 667.5 + 2027 + + + + + + + + true + Script input start_configuration. + 79ab0fb8-9433-4fe1-a38b-0c119815d935 + start_configuration + start_configuration + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 619 + 2037 + 94 + 20 + + + 667.5 + 2047 + + + + + + + + true + Script input group. + 14fc99fc-0ac5-4bf2-9d18-9cfab5caf53b + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 619 + 2057 + 94 + 20 + + + 667.5 + 2067 + + + + + + + + Script output configuration. + 9f3010dd-f68e-4afc-ad16-9a448e090c7b + configuration + configuration + false + 0 + + + + + + 743 + 1997 + 70 + 80 + + + 778 + 2037 + + + + + + + + + + + + + + 2e78987b-9dfb-42a2-8b76-3923ac8bd91a + Boolean Toggle + + + + + Boolean (true/false) toggle + 11f438a0-e803-417d-8e51-4bf9fdfb3f32 + Boolean Toggle + reload + false + 0 + true + + + + + + 2082 + 147 + 97 + 22 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + from compas.geometry import Box +from compas.datastructures import Mesh +from compas_ghpython.artists import MeshArtist + +shape = Box.from_width_height_depth(w, h, d) +brick = Mesh.from_shape(shape) + +mesh = MeshArtist(brick).draw() + GhPython provides a Python script component + + 597 + 249 + + + 558 + 571 + + true + true + 7ab9dd8f-ef96-4fa7-83c6-73bbfa8256ad + false + true + GhPython Script + Python + + + + + + 280 + 1317 + 79 + 64 + + + 307 + 1349 + + + + + + 3 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 3 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + d5445420-7f73-489a-a402-f534142329eb + h + h + true + 0 + true + 38da7932-bace-4722-99e8-41530a8b7e79 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 282 + 1319 + 10 + 20 + + + 288.5 + 1329 + + + + + + + + true + Script input w. + 6282d3f3-b08b-4ead-81a5-16f764732ae7 + w + w + true + 0 + true + e65f93ac-4a14-4fef-afc6-44d78530e45e + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 282 + 1339 + 10 + 20 + + + 288.5 + 1349 + + + + + + + + true + Script input d. + a8705f46-83b1-4be5-83ca-a074b9e5c0a4 + d + d + true + 0 + true + d87fb28a-1fe7-43f1-9815-d869f233b385 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 282 + 1359 + 10 + 20 + + + 288.5 + 1369 + + + + + + + + Script output shape. + e42c965a-b5a0-4604-b779-6619359cf9a2 + shape + shape + false + 0 + + + + + + 322 + 1319 + 35 + 20 + + + 339.5 + 1329 + + + + + + + + Script output brick. + 5499898c-9def-41d8-a767-7d5681a3af05 + brick + brick + false + 0 + + + + + + 322 + 1339 + 35 + 20 + + + 339.5 + 1349 + + + + + + + + Script output mesh. + 6088143e-d145-4a47-8c41-51e32cd53990 + mesh + mesh + false + 0 + + + + + + 322 + 1359 + 35 + 20 + + + 339.5 + 1369 + + + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + e65f93ac-4a14-4fef-afc6-44d78530e45e + Number Slider + + false + 0 + + + + + + 60 + 1339 + 160 + 20 + + + 60.42279 + 1339.628 + + + + + + 3 + 1 + 0 + 0.05 + 0.01 + 0 + 0.016 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 38da7932-bace-4722-99e8-41530a8b7e79 + Number Slider + + false + 0 + + + + + + 60 + 1320 + 193 + 20 + + + 60.45255 + 1320.055 + + + + + + 3 + 1 + 0 + 0.05 + 0.01 + 0 + 0.012 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + d87fb28a-1fe7-43f1-9815-d869f233b385 + Number Slider + + false + 0 + + + + + + 60 + 1360 + 194 + 20 + + + 60.89997 + 1360.944 + + + + + + 3 + 1 + 0 + 0.05 + 0.01 + 0 + 0.031 + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 7ab9dd8f-ef96-4fa7-83c6-73bbfa8256ad + e65f93ac-4a14-4fef-afc6-44d78530e45e + 38da7932-bace-4722-99e8-41530a8b7e79 + d87fb28a-1fe7-43f1-9815-d869f233b385 + c298b20b-20d4-4283-a7af-ce44bd5e2c27 + 5 + cb5a6baa-4860-4b69-a01f-eb01a0538eaa + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 62.41566 + 1276.415 + + + 218.4279 + 1276.415 + + + 218.4279 + 1306.244 + + + 62.41566 + 1306.244 + + A quick note + Arial + c298b20b-20d4-4283-a7af-ce44bd5e2c27 + false + Scribble + Scribble + 41 + Element + + + + + + 57.41566 + 1271.415 + 166.0122 + 39.8291 + + + 62.41566 + 1276.415 + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 49f90167-2646-4d22-86bb-012cb0fa4ce7 + 11f438a0-e803-417d-8e51-4bf9fdfb3f32 + aeeed025-274e-42d7-99ae-3705f3d7fe2d + 3 + 12f678ce-2c29-4d3c-a571-1a207a507731 + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 2080.473 + 42.71185 + + + 2327.594 + 42.71185 + + + 2327.594 + 72.54095 + + + 2080.473 + 72.54095 + + A quick note + Arial + aeeed025-274e-42d7-99ae-3705f3d7fe2d + false + Scribble + Scribble + 41 + Visualization + + + + + + 2075.473 + 37.71185 + 257.1211 + 39.8291 + + + 2080.473 + 42.71185 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + from compas_fab.robots import Configuration + +config = Configuration.from_revolute_values(j) + GhPython provides a Python script component + + 26 + 26 + + + 558 + 571 + + true + true + 1 + 9bde434b-367e-491f-9f01-040b116c4562 + false + true + GhPython Script + Home config + + + + + + 253 + 1607 + 79 + 86 + + + 279 + 1650 + + + + + + 1 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + 1 + true + Script variable Pickup config + 24655f45-8c71-4631-8530-a0bc0f33ad9f + j + j + true + 1 + true + 6a7e4d1a-ceb2-4c60-bd73-b1fd7e57a88d + 453254b0-f451-4808-a6c8-f678281679fd + c789e886-ac48-44a7-8696-71249b62e335 + ffdf9a6f-f4a6-417e-96df-c38d59b6a4da + 4bbbdf99-354b-448e-8eb7-59249cc4e3d0 + b6ce1f01-cf45-408d-b8ba-45a08f564742 + 6 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 255 + 1609 + 9 + 82 + + + 261 + 1650 + + + + + + + + Script output config. + f956b690-65c4-4b82-ac9a-488e4afed703 + config + config + false + 0 + + + + + + 294 + 1609 + 36 + 82 + + + 312 + 1650 + + + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 6a7e4d1a-ceb2-4c60-bd73-b1fd7e57a88d + Number Slider + + false + 0 + + + + + + 54 + 1594 + 160 + 20 + + + 54.31252 + 1594.704 + + + + + + 2 + 1 + 0 + 3.14 + -3.14 + 0 + 1.57 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 453254b0-f451-4808-a6c8-f678281679fd + Number Slider + + false + 0 + + + + + + 54 + 1616 + 160 + 20 + + + 54.31247 + 1616.304 + + + + + + 2 + 1 + 0 + 3.14 + -3.14 + 0 + -1.57 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + c789e886-ac48-44a7-8696-71249b62e335 + Number Slider + + false + 0 + + + + + + 54 + 1637 + 160 + 20 + + + 54.31247 + 1637.904 + + + + + + 2 + 1 + 0 + 3.14 + -3.14 + 0 + 1.57 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + ffdf9a6f-f4a6-417e-96df-c38d59b6a4da + Number Slider + + false + 0 + + + + + + 54 + 1659 + 160 + 20 + + + 54.31247 + 1659.504 + + + + + + 2 + 1 + 0 + 3.14 + -3.14 + 0 + -1.57 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 4bbbdf99-354b-448e-8eb7-59249cc4e3d0 + Number Slider + + false + 0 + + + + + + 54 + 1681 + 160 + 20 + + + 54.31247 + 1681.104 + + + + + + 2 + 1 + 0 + 3.14 + -3.14 + 0 + -1.57 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + b6ce1f01-cf45-408d-b8ba-45a08f564742 + Number Slider + + false + 0 + + + + + + 53 + 1702 + 160 + 20 + + + 53.9474 + 1702.744 + + + + + + 2 + 1 + 0 + 3.14 + -3.14 + 0 + -3.14 + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 57.82938 + 1433.227 + + + 371.6755 + 1433.227 + + + 371.6755 + 1471.164 + + + 57.82938 + 1471.164 + + A quick note + Arial + 726245b8-cd81-4793-93c4-5a74c6fadea6 + false + Scribble + Scribble + 41 + Approach offset + + + + + + 52.82938 + 1428.227 + 323.8462 + 47.93701 + + + 57.82938 + 1433.227 + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;204;255;0 + + A group of Grasshopper objects + e4f9217d-c7c3-49af-9a83-834638eb0d4d + d42341b5-06d6-414d-8a72-d1a48effb96f + c6ffa12e-83a0-4af7-8681-e213e9c0ba9f + 87380de2-badc-4b2b-a438-aac8de443f24 + e37b5872-2136-4007-9701-3851c1cc4a87 + 5 + e51bc20f-e909-47bb-815c-1f0988524d39 + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 192.4649 + 1931.508 + + + 347.5762 + 1931.508 + + + 347.5762 + 1961.337 + + + 192.4649 + 1961.337 + + A quick note + Arial + d42341b5-06d6-414d-8a72-d1a48effb96f + false + Scribble + Scribble + 41 + Toolbox + + + + + + 187.4649 + 1926.508 + 165.1113 + 39.8291 + + + 192.4649 + 1931.508 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas_fab.ghpython.components import create_id +from compas_fab.ghpython.components import coerce_frame +from compas_fab.ghpython.components.icons import plan_cartesian_motion_icon + +class PlanCartesianMotion(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "planes", "planes", "The planes or frames through which the path is defined.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.list + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "start_configuration", "start_configuration", + "The robot's full configuration, i.e. values for all configurable joints of the entire robot, at the starting position. Defaults to the all-zero configuration.") # noqa E501 + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "group", "group", "The planning group used for calculation. Defaults to the robot's main planning group.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + +# p = Grasshopper.Kernel.Parameters.Param_GenericObject() +# self.SetUpParam(p, "attached_collision_meshes", "attached_collision_meshes", "A list of attached collision meshes to be included for planning.") +# p.Access = Grasshopper.Kernel.GH_ParamAccess.list +# self.Params.Input.Add(p) + +# p = Grasshopper.Kernel.Parameters.Param_GenericObject() +# self.SetUpParam(p, "path_constraints", "path_constraints", +# "Optional constraints that can be imposed along the solution path. Note that path calculation won't work if the start_configuration violates these constraints. Defaults to None.") # noqa E501 +# p.Access = Grasshopper.Kernel.GH_ParamAccess.list +# self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Number() + self.SetUpParam(p, "max_step", "max_step", "The approximate distance between the calculated points. (Defined in the robot's units.) Defaults to 0.01.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Boolean() + self.SetUpParam(p, "compute", "compute", "If `True`, calculates a trajectory.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "trajectory", "trajectory", "The calculated trajectory.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + p3 = self.marshal.GetInput(DA, 3) + p4 = self.marshal.GetInput(DA, 4) + p5 = self.marshal.GetInput(DA, 5) +# p6 = self.marshal.GetInput(DA, 6) +# p7 = self.marshal.GetInput(DA, 7) +# result = self.RunScript(p0, p1, p2, p3, p4, p5, p6, p7) + result = self.RunScript(p0, p1, p2, p3, p4, p5) + + if result is not None: + self.marshal.SetOutput(result, DA, 0, True) + + def get_Internal_Icon_24x24(self): + return plan_cartesian_motion_icon + + def RunScript(self, robot, planes, start_configuration, group, max_step, compute): + + key = create_id(self, 'trajectory') + + max_step = float(max_step) if max_step else 0.01 + # NOTE: Read from scene + attached_collision_meshes = None + path_constraints = None + attached_collision_meshes = list(attached_collision_meshes) if attached_collision_meshes else None + + if robot and robot.client and robot.client.is_connected and start_configuration and planes and compute: + frames = [coerce_frame(plane) for plane in planes] + st[key] = robot.plan_cartesian_motion(frames, + start_configuration=start_configuration, + group=group, + options=dict( + max_step=max_step, + path_constraints=path_constraints, + attached_collision_meshes=attached_collision_meshes + )) + + trajectory = st.get(key, None) + + if trajectory and trajectory.fraction < 1.0: + raise Exception('Incomplete trajectory. Fraction={}'.format(trajectory.fraction)) + + return trajectory + GhPython provides a Python script component + + 380 + 257 + + + 684 + 571 + + true + true + 1 + edaa4174-c047-4295-b443-89dc75c38874 + true + true + GhPython Script + Plan Cartesian Motion + + + + + + 1515 + 475 + 180 + 142 + + + 1626 + 546 + + + + + + 6 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + 7a8e0849-6408-4019-bd04-ecec1357ce2f + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1517 + 477 + 94 + 23 + + + 1565.5 + 488.5 + + + + + + + + 1 + true + Script input planes. + 9c32ec77-4568-488d-be79-c66ed33c1c5e + planes + planes + true + 1 + true + 7709d326-8e7a-49da-a1d7-d642545c5ad8 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1517 + 500 + 94 + 23 + + + 1565.5 + 511.5 + + + + + + + + true + Script input start_configuration. + 323e5583-c859-4458-83cb-a31129c59de5 + start_configuration + start_configuration + true + 0 + true + f956b690-65c4-4b82-ac9a-488e4afed703 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1517 + 523 + 94 + 23 + + + 1565.5 + 534.5 + + + + + + + + true + Script input group. + f52922b0-d77c-41ef-96fe-973844052729 + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1517 + 546 + 94 + 23 + + + 1565.5 + 557.5 + + + + + + + + true + Script input max_step. + 1b61a588-493b-4f4f-aeda-ffa9b7c1a1d6 + max_step + max_step + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1517 + 569 + 94 + 23 + + + 1565.5 + 580.5 + + + + + + + + true + Script input compute. + 2d589609-76fd-431f-b9f1-cb67dfa2d7d3 + compute + compute + true + 0 + true + 27ff0d44-37bd-4d39-a1da-061f75bbf757 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1517 + 592 + 94 + 23 + + + 1565.5 + 603.5 + + + + + + + + Script output trajectory. + 7d158313-5514-47eb-a080-3408700613a7 + trajectory + trajectory + false + 0 + + + + + + 1641 + 477 + 52 + 138 + + + 1667 + 546 + + + + + + + + + + + + + + a8b97322-2d53-47cd-905e-b932c3ccd74e + Button + + + + + Button object with two values + False + True + 27ff0d44-37bd-4d39-a1da-061f75bbf757 + Button + Button + false + 0 + + + + + + 1374 + 592 + 99 + 22 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas_fab.ghpython.components import create_id +from compas_fab.ghpython.components import coerce_frame +from compas_fab.ghpython.components.icons import plan_cartesian_motion_icon + +class PlanCartesianMotion(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "planes", "planes", "The planes or frames through which the path is defined.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.list + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "start_configuration", "start_configuration", + "The robot's full configuration, i.e. values for all configurable joints of the entire robot, at the starting position. Defaults to the all-zero configuration.") # noqa E501 + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "group", "group", "The planning group used for calculation. Defaults to the robot's main planning group.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + +# p = Grasshopper.Kernel.Parameters.Param_GenericObject() +# self.SetUpParam(p, "attached_collision_meshes", "attached_collision_meshes", "A list of attached collision meshes to be included for planning.") +# p.Access = Grasshopper.Kernel.GH_ParamAccess.list +# self.Params.Input.Add(p) + +# p = Grasshopper.Kernel.Parameters.Param_GenericObject() +# self.SetUpParam(p, "path_constraints", "path_constraints", +# "Optional constraints that can be imposed along the solution path. Note that path calculation won't work if the start_configuration violates these constraints. Defaults to None.") # noqa E501 +# p.Access = Grasshopper.Kernel.GH_ParamAccess.list +# self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Number() + self.SetUpParam(p, "max_step", "max_step", "The approximate distance between the calculated points. (Defined in the robot's units.) Defaults to 0.01.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Boolean() + self.SetUpParam(p, "compute", "compute", "If `True`, calculates a trajectory.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "trajectory", "trajectory", "The calculated trajectory.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + p3 = self.marshal.GetInput(DA, 3) + p4 = self.marshal.GetInput(DA, 4) + p5 = self.marshal.GetInput(DA, 5) +# p6 = self.marshal.GetInput(DA, 6) +# p7 = self.marshal.GetInput(DA, 7) +# result = self.RunScript(p0, p1, p2, p3, p4, p5, p6, p7) + result = self.RunScript(p0, p1, p2, p3, p4, p5) + + if result is not None: + self.marshal.SetOutput(result, DA, 0, True) + + def get_Internal_Icon_24x24(self): + return plan_cartesian_motion_icon + + def RunScript(self, robot, planes, start_configuration, group, max_step, compute): + + key = create_id(self, 'trajectory') + + max_step = float(max_step) if max_step else 0.01 + # NOTE: Read from scene + attached_collision_meshes = None + path_constraints = None + attached_collision_meshes = list(attached_collision_meshes) if attached_collision_meshes else None + + if robot and robot.client and robot.client.is_connected and start_configuration and planes and compute: + frames = [coerce_frame(plane) for plane in planes] + st[key] = robot.plan_cartesian_motion(frames, + start_configuration=start_configuration, + group=group, + options=dict( + max_step=max_step, + path_constraints=path_constraints, + attached_collision_meshes=attached_collision_meshes + )) + + trajectory = st.get(key, None) + + if trajectory and trajectory.fraction < 1.0: + raise Exception('Incomplete trajectory. Fraction={}'.format(trajectory.fraction)) + + return trajectory + GhPython provides a Python script component + + 416 + 248 + + + 684 + 571 + + true + true + 1 + c6ffa12e-83a0-4af7-8681-e213e9c0ba9f + true + true + GhPython Script + Plan Cartesian Motion + + + + + + 879 + 1998 + 180 + 142 + + + 990 + 2069 + + + + + + 6 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + d1e40e43-b307-4997-95f9-cc5ceb5b1ff8 + robot + robot + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 881 + 2000 + 94 + 23 + + + 929.5 + 2011.5 + + + + + + + + 1 + true + Script input planes. + 595db290-c1cd-47ae-a4a7-4d4b2c12919c + planes + planes + true + 1 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 881 + 2023 + 94 + 23 + + + 929.5 + 2034.5 + + + + + + + + true + Script input start_configuration. + e9a1a984-1028-4f75-90de-96a238f876cb + start_configuration + start_configuration + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 881 + 2046 + 94 + 23 + + + 929.5 + 2057.5 + + + + + + + + true + Script input group. + 0174acbc-9c27-4c7e-9508-fd4153cace00 + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 881 + 2069 + 94 + 23 + + + 929.5 + 2080.5 + + + + + + + + true + Script input max_step. + 0f1faba3-ea01-41f5-910a-d48118bef748 + max_step + max_step + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 881 + 2092 + 94 + 23 + + + 929.5 + 2103.5 + + + + + + + + true + Script input compute. + 0a27b8d5-ba01-4b82-8eab-e296cf91f0d1 + compute + compute + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 881 + 2115 + 94 + 23 + + + 929.5 + 2126.5 + + + + + + + + Script output trajectory. + 706ebe2f-4fa1-47c4-a7bb-388260bfe9f8 + trajectory + trajectory + false + 0 + + + + + + 1005 + 2000 + 52 + 138 + + + 1031 + 2069 + + + + + + + + + + + + + + f31d8d7a-7536-4ac8-9c96-fde6ecda4d0a + Cluster + + + + + + 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 + + Contains a cluster of Grasshopper components + 1 + 87380de2-badc-4b2b-a438-aac8de443f24 + Cluster + T0CF + false + + + + + 3 + 348f98ef-5f46-4a58-885f-0470a6d4f1f8 + 499c6afc-e204-4b10-aed8-ccc3ae4a7d31 + e6827551-bd5f-4777-9cc2-97e2a1cf285e + a734e7f6-2f8f-4929-916a-9608854f6392 + d0ccacbd-d43e-44d1-95fa-d65b95597d22 + 43cd6740-e900-4cb5-aac6-f6ee8442edb2 + + + + + + 198 + 1999 + 137 + 44 + + + 260 + 2021 + + + + + + 2 + 4f8984c4-7c7a-4d69-b0a2-183cbb330d20 + 3e8ca6be-fda8-4aaf-b5c0-3c54c8bb7312 + 1 + 4f8984c4-7c7a-4d69-b0a2-183cbb330d20 + + + + + Contains a collection of three-dimensional axis-systems + e6827551-bd5f-4777-9cc2-97e2a1cf285e + Plane + tcf_point + true + 0 + + + + + + 200 + 2001 + 45 + 20 + + + 224 + 2011 + + + + + + + + Contains a collection of floating point numbers + 499c6afc-e204-4b10-aed8-ccc3ae4a7d31 + Number + z_offset + true + 0 + 1 + + + + + + 200 + 2021 + 45 + 20 + + + 224 + 2031 + + + + + + 1 + + + + + 1 + {0} + + + + + 0.07 + + + + + + + + + + + Contains a collection of three-dimensional axis-systems + 348f98ef-5f46-4a58-885f-0470a6d4f1f8 + Plane + t0cf_frame + false + 0 + + + + + + 275 + 2001 + 58 + 40 + + + 304 + 2021 + + + + + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import os +from compas.geometry import Frame +from compas.datastructures import Mesh +from compas_fab.robots import PlanningScene +from compas_fab.robots import Tool +from compas_ghpython.artists import MeshArtist + +HERE = os.path.dirname(ghenv.Component.OnPingDocument().FilePath) + +# create tool from mesh and frame +mesh = Mesh.from_stl(os.path.join(HERE, 'vacuum_gripper.stl')) +frame = Frame([z_offset, 0, 0], [0, 0, 1], [0, 1, 0]) +tool = Tool(mesh, frame, name='vacuum_gripper') +tool_at_origin = MeshArtist(mesh).draw() + +if robot and robot.client and robot.client.is_connected: + scene = PlanningScene(robot) + if attached: + robot.attach_tool(tool) + scene.add_attached_tool() + else: + if robot.attached_tool: + scene.remove_attached_tool() + scene.remove_collision_mesh('attached_tool_link_collision_0') + robot.detach_tool() + + GhPython provides a Python script component + + 456 + 244 + + + 558 + 571 + + true + true + bfe572e7-d997-4c3c-8488-4e03d01804ea + false + true + GhPython Script + Attach tool + + + + + + 227 + 280 + 148 + 76 + + + 289 + 318 + + + + + + 3 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + 6e80e6d6-8757-4819-8351-1a7c5da7f996 + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 229 + 282 + 45 + 24 + + + 253 + 294 + + + + + + + + true + Script input attached. + 404a4436-fc31-4bbd-846f-0b582b5ffd9c + attached + attached + true + 0 + true + b278407c-79b3-49ef-a2c8-ee682b33d9ef + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 229 + 306 + 45 + 24 + + + 253 + 318 + + + + + + + + true + Script input z_offset. + b7e50fd9-4f43-49fe-8c0a-b5a025756216 + z_offset + z_offset + true + 0 + true + 9a4be73c-3082-4c74-be27-41c7c1688c53 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 229 + 330 + 45 + 24 + + + 253 + 342 + + + + + + + + Script output tool_at_origin. + ec3d9765-86ad-4ef4-bb37-6e2408651259 + tool_at_origin + tool_at_origin + false + 0 + + + + + + 304 + 282 + 69 + 72 + + + 338.5 + 318 + + + + + + + + + + + + + + 2e78987b-9dfb-42a2-8b76-3923ac8bd91a + Boolean Toggle + + + + + Boolean (true/false) toggle + b278407c-79b3-49ef-a2c8-ee682b33d9ef + Boolean Toggle + Attach + false + 0 + true + + + + + + 32 + 307 + 98 + 22 + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + bfe572e7-d997-4c3c-8488-4e03d01804ea + b278407c-79b3-49ef-a2c8-ee682b33d9ef + 6fe2e9d2-130c-4a02-b347-a1c6b831fc5a + 9a4be73c-3082-4c74-be27-41c7c1688c53 + 4 + 3dd78fb5-3c65-4715-b2db-b9489d44fd71 + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 32.62092 + 250.852 + + + 112.3988 + 250.852 + + + 112.3988 + 280.6811 + + + 32.62092 + 280.6811 + + A quick note + Arial + 6fe2e9d2-130c-4a02-b347-a1c6b831fc5a + false + Scribble + Scribble + 41 + Tool + + + + + + 27.62092 + 245.852 + 89.77783 + 39.82909 + + + 32.62092 + 250.852 + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 9a4be73c-3082-4c74-be27-41c7c1688c53 + Number Slider + z_offset + false + 0 + + + + + + 32 + 330 + 170 + 20 + + + 32.6893 + 330.5383 + + + + + + 3 + 1 + 0 + 0.2 + -0.1 + 0 + 0.07 + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import os +from compas.geometry import Frame +from compas.datastructures import Mesh +from compas_fab.robots import PlanningScene +from compas_fab.robots import CollisionMesh +from compas_ghpython.artists import MeshArtist +from compas_rhino.geometry import RhinoMesh + +if robot and robot.client and robot.client.is_connected: + static_cm_name = 'static_objects' + scene = PlanningScene(robot) + scene.remove_collision_mesh(static_cm_name) + if meshes: + for mesh in meshes: + mesh = RhinoMesh.from_geometry(mesh).to_compas() + cm = CollisionMesh(mesh, static_cm_name) + scene.append_collision_mesh(cm) + + GhPython provides a Python script component + + 156 + 156 + + + 558 + 571 + + true + true + 67e77c02-1764-4e11-bf1d-4203f550692e + false + true + GhPython Script + Python + + + + + + 165 + 438 + 71 + 52 + + + 222 + 464 + + + + + + 2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 0 + + + + + true + Script variable Python + d8842ce0-d92a-4fcf-8634-a387177ebe33 + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 167 + 440 + 40 + 24 + + + 188.5 + 452 + + + + + + + + 1 + true + Script input meshes. + 90e52a89-cf0f-4c9d-ae82-b73d0248a98b + meshes + meshes + true + 1 + true + cec5af33-7de8-45a7-8a88-c746edfb38bd + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 167 + 464 + 40 + 24 + + + 188.5 + 476 + + + + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 67e77c02-1764-4e11-bf1d-4203f550692e + d366a040-055c-47c4-93f0-6e444f072d66 + cec5af33-7de8-45a7-8a88-c746edfb38bd + 3 + c3460314-a9f5-42ea-a36d-d007144084a3 + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 31.67443 + 398.1774 + + + 294.7911 + 398.1774 + + + 294.7911 + 436.6549 + + + 31.67443 + 436.6549 + + A quick note + Arial + d366a040-055c-47c4-93f0-6e444f072d66 + false + Scribble + Scribble + 41 + Static objects + + + + + + 26.67443 + 393.1774 + 273.1167 + 48.47754 + + + 31.67443 + 398.1774 + + + + + + + + + + 1e936df3-0eea-4246-8549-514cb8862b7a + Mesh + + + + + Contains a collection of polygon meshes + true + cec5af33-7de8-45a7-8a88-c746edfb38bd + Mesh + Mesh + false + 0 + + + + + + 38 + 464 + 50 + 20 + + + 63.94705 + 474.8177 + + + + + + 1 + + + + + 1 + {0} + + + + + + Y2BkYGD4DwQgGgR4mIBEeFBGZl6+c35ubn6ejkJYalFxZn6erZmesZGekYGxiYGekaGBgZGOgnNpTklpUaptXmppSVFijo5CQGlSTmayd2plSH52ap6tqamRkYVhqqV5srmpqamxASvIFmGw4Xruqfm5qSVFlXq+qcUZLEBx9jKIPVyJRckZmWWpxim5nPkFqXl5pUVJxSwpiSWJIEUcHBxMICcKqDMw2ABppoqGHk5mIIMfRCixAkV+1TMxiLFCvPP7PxODCNRrT65c93N/eVlw/1MGgWZGpQ+6O6Vj/gDl77FA5C00gIQMAxr48t4exgxfeNdFLfSdvdTLT+IWXRIHvOUj+7N1f9q/2NSzgOX59/38PwQ4fGXv2KMb4cPmsT87Snh/5qsH+/IveNk/FM2GqmmwR8L7kTCKGCjUGBkaGBxKoAbCfMTAiG4VEOg6y7x+ZCaF5goJByxKUUC7y3MvifBtYH1MCOEH9gyMdkHy2jDrGBlYWJiYWVnZ2bi4ODi5uXl5BAT4+AUFhYXExERExcVlZCUkZCTl5eWkZGVl5OXk5OSlpVUUVFVV1BUV1VSAtJq6upqyujojCysrEysLCzsXNzcHNxcXr4CgIJ+ggICwmLi4iLiYmJysjIyaqpLSA6Cl2R+488EB0Ax1VMWtz2mfb8wXVd0zn5Fjz8I3PeH83xpv8Ltsfpv4SMHM50/pzH2yPjJHji23e9803dZH5hhb5/mXN1J4hds3flzJvjHxXcvGxEcG3w/c+HGl+vEH/RO8BoUS0rP3TzjrUqa+aabBd4Xfgjfnnihb2K67af+Fv30y/04kdsjwnahj3MgYsGXfT+vrOxaC3NU79ddpsLv04e5KTsi4cZ6BfcoGSamGE/OKzGJ6nMxunPkrMCvI7E7tloRgxTeFmxl3tVnc1P8SKuQANOPij6+5YDPmw83wPbeX95ADD2tCt56vl9W0HUydx/xaj3D1TJQ+EDKzeZquROM01qCgCZOY/uQUF1x6+XJzrb2Ly9LVOY7fr0/13m7Qw3N9W+KZs7/XKiy/GphRsfm20ZpM3v9rLy/+Xn3yfoxFzOWrf98qlh8+9r40us10baLSyUrN6YEv1iSq5HytzP2/03O1ebr9fvWnH77s436euL6/52e8bc8/9nuOIQePuu79gS8JNQDTTfbk+zJg/8yD+2dy1U/PO4u8HzEwi3g4/vxjz2JRk/r+hvoby//7cpoEYuSOtZ98z1t1Q+aeNtf09o+dV/k39jOfrePb8Ue6efJ+9dinzacP/zjy6vu0/jfnr/3dKa/G/3jxrn7Os7U+Lq/bucwNFjSxhfzVv/hlv8v18x+Sgs8zTXt+//vimcybz8uBlK5uPmF//z2robyzrc89fq3+WPu/b9kZJkqdz/201qIL5NIlSLkJW45Kq2b+B2F9wMjb2AH11YHcZaNU3MsIdWDCSYaXwMKBwcE3+xGIZgAWPCD6AG/US7Che5Lewg23ebsv6n89UwOMz02craNgFIyCUTAKhgUAAA== + + 00000000-0000-0000-0000-000000000000 + + + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 9bde434b-367e-491f-9f01-040b116c4562 + 6a7e4d1a-ceb2-4c60-bd73-b1fd7e57a88d + 453254b0-f451-4808-a6c8-f678281679fd + c789e886-ac48-44a7-8696-71249b62e335 + ffdf9a6f-f4a6-417e-96df-c38d59b6a4da + 4bbbdf99-354b-448e-8eb7-59249cc4e3d0 + b6ce1f01-cf45-408d-b8ba-45a08f564742 + 562c0dcf-a89c-4f0e-9470-6e8b91f11f7e + 8 + 4450c285-aa9e-4d1e-af7d-59d55d9bac80 + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 59.45462 + 1550.173 + + + 168.7212 + 1550.173 + + + 168.7212 + 1580.002 + + + 59.45462 + 1580.002 + + A quick note + Arial + 562c0dcf-a89c-4f0e-9470-6e8b91f11f7e + false + Scribble + Scribble + 41 + Home + + + + + + 54.45462 + 1545.173 + 119.2666 + 39.8291 + + + 59.45462 + 1550.173 + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + a17a3498-e042-4db0-b3e7-eca2f875e5b8 + Number Slider + approach_offset + false + 0 + + + + + + 55 + 1481 + 211 + 20 + + + 55.94337 + 1481.979 + + + + + + 3 + 1 + 0 + 0.2 + 0 + 0 + 0.05 + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 726245b8-cd81-4793-93c4-5a74c6fadea6 + a17a3498-e042-4db0-b3e7-eca2f875e5b8 + 2 + ae42bcb2-a7c7-4a20-b4bb-de4ee824aa60 + Group + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;94;183;255 + + A group of Grasshopper objects + edaa4174-c047-4295-b443-89dc75c38874 + d59210ff-fb0c-47ac-88e4-bfb3bdd17472 + fb12c2e2-d39a-4f89-8110-71d16b686ca3 + 27ff0d44-37bd-4d39-a1da-061f75bbf757 + a4a20321-c7d8-4f60-83e2-fc6f1521f4ff + e8574466-52dd-40f6-a8d5-e57e15b8abec + 6 + 81466600-b7f2-43d6-ac12-e76f57c6909c + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 1362.669 + 416.7794 + + + 1784.02 + 416.7794 + + + 1784.02 + 454.7164 + + + 1362.669 + 454.7164 + + A quick note + Arial + fb12c2e2-d39a-4f89-8110-71d16b686ca3 + false + Scribble + Scribble + 41 + Cartesian pickup plan + + + + + + 1357.669 + 411.7794 + 431.3511 + 47.93701 + + + 1362.669 + 416.7794 + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 11.68259 + -76.21291 + + + 142.6836 + -76.21291 + + + 142.6836 + -43.45168 + + + 11.68259 + -43.45168 + + A quick note + Arial + b4428083-5df1-433c-b590-4df513e94c3b + false + Scribble + Scribble + 45 + INPUT + + + + + + 6.68259 + -81.21291 + 141.001 + 42.76123 + + + 11.68259 + -76.21291 + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 1054.422 + -66.96204 + + + 1199.749 + -66.96204 + + + 1199.749 + -33.62952 + + + 1054.422 + -33.62952 + + A quick note + Arial + 4c6e9558-0e0e-4605-a5de-a63e8b78f29f + false + Scribble + Scribble + 45 + SOLVE + + + + + + 1049.422 + -71.96204 + 155.3271 + 43.33252 + + + 1054.422 + -66.96204 + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 2074.339 + -58.86444 + + + 2256.448 + -58.86444 + + + 2256.448 + -25.55389 + + + 2074.339 + -25.55389 + + A quick note + Arial + a2e7fc56-ff95-41e7-b42d-cf6f1bfac116 + false + Scribble + Scribble + 45 + OUTPUT + + + + + + 2069.339 + -63.86444 + 192.1094 + 43.31055 + + + 2074.339 + -58.86444 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas_ghpython import draw_frame +from compas_fab.ghpython.components import create_id +from compas_fab.ghpython.components import coerce_frame +from compas_fab.ghpython.components.icons import trajectory_visualize_icon + +class TrajectoryVisualize(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "group", "group", "The planning group for which this trajectory was planned.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "trajectory", "trajectory", "The calculated trajectory.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "start_configuration", "start_configuration", "The start configuration of the trajectory.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "configurations", "configurations", "The full configurations along the trajectory.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Number() + self.SetUpParam(p, "fraction", "fraction", "Indicates the percentage of requested trajectory that was calculated, e.g. 1 means the full trajectory was found.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Number() + self.SetUpParam(p, "time", "time", "The time which is needed to execute that trajectory at full speed.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Plane() + self.SetUpParam(p, "planes", "planes", "The planes of the robot's end-effector.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + result = self.RunScript(p0, p1, p2) + + if result is not None: + if not hasattr(result, '__getitem__'): + self.marshal.SetOutput(result, DA, 0, True) + else: + self.marshal.SetOutput(result[0], DA, 0, True) + self.marshal.SetOutput(result[1], DA, 1, True) + self.marshal.SetOutput(result[2], DA, 2, True) + self.marshal.SetOutput(result[3], DA, 3, True) + self.marshal.SetOutput(result[4], DA, 4, True) + + def get_Internal_Icon_24x24(self): + return trajectory_visualize_icon + + def RunScript(self, robot, group, trajectory): + start_configuration = None + configurations = [] + fraction = 0. + time = 0. + + planes = [] + positions = [] + velocities = [] + accelerations = [] + + if robot and trajectory: + group = group or robot.main_group_name + + for c in trajectory.points: + configurations.append(robot.merge_group_with_full_configuration(c, trajectory.start_configuration, group)) + frame = robot.forward_kinematics(c, group, options=dict(solver='model')) + planes.append(draw_frame(frame)) + positions.append(c.positions) + velocities.append(c.velocities) + accelerations.append(c.accelerations) + + start_configuration = trajectory.start_configuration + fraction = trajectory.fraction + time = trajectory.time_from_start + + # return outputs if you have them; here I try it for you: + return (start_configuration, configurations, fraction, time, planes) + + GhPython provides a Python script component + + 416 + 248 + + + 684 + 571 + + true + true + 1 + e37b5872-2136-4007-9701-3851c1cc4a87 + true + true + GhPython Script + Visualize Trajectory + + + + + + 1115 + 1997 + 180 + 129 + + + 1181 + 2062 + + + + + + 3 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 5 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + 6aa301b4-6cee-4345-bd30-6f3863f96203 + robot + robot + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1117 + 1999 + 49 + 41 + + + 1143 + 2019.833 + + + + + + + + true + Script input group. + fede8c15-1fd3-43a7-a90c-d3fe3da5daad + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1117 + 2040 + 49 + 42 + + + 1143 + 2061.5 + + + + + + + + true + Script input trajectory. + 120bae85-d34a-4caf-8ea5-953d9524ed70 + trajectory + trajectory + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1117 + 2082 + 49 + 42 + + + 1143 + 2103.167 + + + + + + + + Script output start_configuration. + 7dade1d5-4247-400d-9bd7-eb4b0b06927f + start_configuration + start_configuration + false + 0 + + + + + + 1196 + 1999 + 97 + 25 + + + 1244.5 + 2011.5 + + + + + + + + Script output configurations. + 4d980fad-4382-4c12-8ffa-80fb83ba449a + configurations + configurations + false + 0 + + + + + + 1196 + 2024 + 97 + 25 + + + 1244.5 + 2036.5 + + + + + + + + Script output fraction. + cc787af3-0b87-42c5-9e1a-1aff8eb7520e + fraction + fraction + false + 0 + + + + + + 1196 + 2049 + 97 + 25 + + + 1244.5 + 2061.5 + + + + + + + + Script output time. + 121fb4b2-8d79-43d2-bc51-0b7e5232d7a9 + time + time + false + 0 + + + + + + 1196 + 2074 + 97 + 25 + + + 1244.5 + 2086.5 + + + + + + + + Script output planes. + 11b58743-03db-4a58-80c9-8836f9ae9411 + planes + planes + false + 0 + + + + + + 1196 + 2099 + 97 + 25 + + + 1244.5 + 2111.5 + + + + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;94;183;255 + + A group of Grasshopper objects + 7e5ecafa-f262-4bc9-bf78-cdd729868c56 + 75f40b4a-213f-4c07-bcdf-183c023e5064 + 5843fe19-3312-4902-90b0-4907edaaea8e + 7625ad28-8f4f-447a-8b20-cf7423d5b247 + de06f11d-053b-436f-a4b7-ec786a0dc23b + 8f47cb0e-8ca4-47ac-bf46-da24d5601bb1 + adff66ab-0602-4f7d-b92e-faf711f84523 + f6427ccb-25e5-49e1-b12d-f3a8f65ae3f4 + 8f786953-34c8-47f7-9814-b8a909da5855 + 9 + 236cda68-3616-4c47-a812-e2e5c94e5667 + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 1363.55 + 707.3336 + + + 1658.578 + 707.3336 + + + 1658.578 + 744.7701 + + + 1363.55 + 744.7701 + + A quick note + Arial + 7625ad28-8f4f-447a-8b20-cf7423d5b247 + false + Scribble + Scribble + 41 + Placement plan + + + + + + 1358.55 + 702.3336 + 305.0278 + 47.43652 + + + 1363.55 + 707.3336 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas_ghpython import draw_frame +from compas_fab.ghpython.components import create_id +from compas_fab.ghpython.components import coerce_frame +from compas_fab.ghpython.components.icons import trajectory_visualize_icon + +class TrajectoryVisualize(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "group", "group", "The planning group for which this trajectory was planned.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "trajectory", "trajectory", "The calculated trajectory.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "start_configuration", "start_configuration", "The start configuration of the trajectory.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "configurations", "configurations", "The full configurations along the trajectory.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Number() + self.SetUpParam(p, "fraction", "fraction", "Indicates the percentage of requested trajectory that was calculated, e.g. 1 means the full trajectory was found.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Number() + self.SetUpParam(p, "time", "time", "The time which is needed to execute that trajectory at full speed.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Plane() + self.SetUpParam(p, "planes", "planes", "The planes of the robot's end-effector.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + result = self.RunScript(p0, p1, p2) + + if result is not None: + if not hasattr(result, '__getitem__'): + self.marshal.SetOutput(result, DA, 0, True) + else: + self.marshal.SetOutput(result[0], DA, 0, True) + self.marshal.SetOutput(result[1], DA, 1, True) + self.marshal.SetOutput(result[2], DA, 2, True) + self.marshal.SetOutput(result[3], DA, 3, True) + self.marshal.SetOutput(result[4], DA, 4, True) + + def get_Internal_Icon_24x24(self): + return trajectory_visualize_icon + + def RunScript(self, robot, group, trajectory): + start_configuration = None + configurations = [] + fraction = 0. + time = 0. + + planes = [] + positions = [] + velocities = [] + accelerations = [] + + if robot and trajectory: + group = group or robot.main_group_name + + for c in trajectory.points: + configurations.append(robot.merge_group_with_full_configuration(c, trajectory.start_configuration, group)) + frame = robot.forward_kinematics(c, group, options=dict(solver='model')) + planes.append(draw_frame(frame)) + positions.append(c.positions) + velocities.append(c.velocities) + accelerations.append(c.accelerations) + + start_configuration = trajectory.start_configuration + fraction = trajectory.fraction + time = trajectory.time_from_start + + # return outputs if you have them; here I try it for you: + return (start_configuration, configurations, fraction, time, planes) + + GhPython provides a Python script component + + 416 + 248 + + + 684 + 571 + + true + true + true + 1 + a4a20321-c7d8-4f60-83e2-fc6f1521f4ff + true + true + GhPython Script + Visualize Trajectory + + + + + + 1830 + 471 + 180 + 129 + + + 1896 + 536 + + + + + + 3 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 5 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + 6e6d3e65-b6e0-43b0-b415-b43dca813531 + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 1832 + 473 + 49 + 41 + + + 1858 + 493.8333 + + + + + + + + true + Script input group. + c36175cb-fc64-4b4a-8d5e-79c9cdd01900 + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1832 + 514 + 49 + 42 + + + 1858 + 535.5 + + + + + + + + true + Script input trajectory. + 04c836a6-6b1a-447b-8bb9-cdbef0ca71f3 + trajectory + trajectory + true + 0 + true + 7d158313-5514-47eb-a080-3408700613a7 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1832 + 556 + 49 + 42 + + + 1858 + 577.1666 + + + + + + + + Script output start_configuration. + bdb96450-90c7-411f-ade5-cbf6343d0364 + start_configuration + start_configuration + false + 0 + + + + + + 1911 + 473 + 97 + 25 + + + 1959.5 + 485.5 + + + + + + + + Script output configurations. + 018e7fe5-7b7b-4795-a848-46b5058d6488 + configurations + configurations + false + 0 + + + + + + 1911 + 498 + 97 + 25 + + + 1959.5 + 510.5 + + + + + + + + Script output fraction. + 5af05567-125f-469e-b43d-ed709d411798 + fraction + fraction + false + 0 + + + + + + 1911 + 523 + 97 + 25 + + + 1959.5 + 535.5 + + + + + + + + Script output time. + 78f0b510-c78e-4f9d-92c3-f797684b6d15 + time + time + false + 0 + + + + + + 1911 + 548 + 97 + 25 + + + 1959.5 + 560.5 + + + + + + + + Script output planes. + ffbf4940-429d-4335-9570-ec2fe3f8f6e0 + planes + planes + false + 0 + + + + + + 1911 + 573 + 97 + 25 + + + 1959.5 + 585.5 + + + + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 8b6d85ec-b58c-408c-b51f-afb7d6488efb + 1d7ea18d-2d85-4fc4-9019-b402b6066d20 + 99564794-bc9c-42c6-b727-df16f105f7df + 53fb2f80-0154-40ce-bf8e-c07a38a48af4 + b9a3cd2f-7b8f-496e-b671-e1ccdeb5ede1 + 5 + 6065bb2b-8198-4a8d-86f0-16c82a490851 + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 2195.175 + 421.2417 + + + 2459.292 + 421.2417 + + + 2459.292 + 451.6113 + + + 2195.175 + 451.6113 + + A quick note + Arial + 1d7ea18d-2d85-4fc4-9019-b402b6066d20 + false + Scribble + Scribble + 41 + Save to JSON + + + + + + 2190.175 + 416.2417 + 274.1177 + 40.3696 + + + 2195.175 + 421.2417 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + # Mac will not automatically do this so, here we go +import os +import sys +HERE = os.path.dirname(ghenv.Component.OnPingDocument().FilePath) +if HERE not in sys.path: sys.path.append(HERE) + +## Start assembly definition +from assembly import Assembly +from assembly import Element + +from compas.datastructures import Mesh +from compas.geometry import Translation +from compas_fab.ghpython.components import coerce_frame + + +assembly = Assembly() + +assembly.attributes['home_config'] = home_config +assembly.attributes['element'] = element +assembly.attributes['place_tolerance'] = place_tolerance +assembly.approach_offset = approach_offset + +source_element = assembly.attributes['element'] +assembly.pick_t0cf_frame = coerce_frame(pick_t0cf_frame) +place_t0cf_frames = [coerce_frame(f) for f in place_t0cf_frames] + +for key, frame in enumerate(robot.from_t0cf_to_tcf(place_t0cf_frames)): + x, y, z = 0, 0, (source_element.height / 2) + + frame = frame.transformed(Translation.from_vector([x, y, z])) + approach_t0cf_frame = frame.transformed(Translation.from_vector([0, 0, approach_offset])) + element = Element(frame=frame, + approach_frame=approach_t0cf_frame, + geometry_at_origin=Mesh.from_shape(source_element)) + assembly.add_element(element, key) + +pickup_t0cf_frames = assembly.pick_t0cf_frames() + GhPython provides a Python script component + + 333 + 40 + + + 558 + 571 + + true + true + 1 + feba3733-a75a-459f-a072-2fde91c330ec + false + true + GhPython Script + Create assembly + + + + + + 989 + 298 + 225 + 144 + + + 1097 + 370 + + + + + + 7 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 2 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Create assembly + 7a7f31b2-a200-4298-8ad8-18abd1ba8bb6 + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 991 + 300 + 91 + 20 + + + 1038 + 310 + + + + + + + + true + Script input pick_t0cf_frame. + f80925ae-2885-4d98-b158-e01ce2c0cdca + pick_t0cf_frame + pick_t0cf_frame + true + 0 + true + f41be9bc-bcf0-410b-a0ac-8575f4a7ba6b + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 991 + 320 + 91 + 20 + + + 1038 + 330 + + + + + + + + 1 + true + Script input place_t0cf_frames. + ad62f98b-1dcd-4277-aa16-1d3a01faa2b3 + place_t0cf_frames + place_t0cf_frames + true + 1 + true + af025e60-14ba-4c28-9dc9-21f04af24737 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 991 + 340 + 91 + 20 + + + 1038 + 350 + + + + + + + + true + Script input approach_offset. + 37860aa3-99ed-47f5-a957-0d5fee8c6ada + approach_offset + approach_offset + true + 0 + true + a17a3498-e042-4db0-b3e7-eca2f875e5b8 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 991 + 360 + 91 + 20 + + + 1038 + 370 + + + + + + + + true + Script input element. + 591065d8-7de7-4c49-92a5-428fb7867dea + element + element + true + 0 + true + e42c965a-b5a0-4604-b779-6619359cf9a2 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 991 + 380 + 91 + 20 + + + 1038 + 390 + + + + + + + + true + Script input home_config. + dd379b1f-c92c-4632-8cd1-c6064593db46 + home_config + home_config + true + 0 + true + f956b690-65c4-4b82-ac9a-488e4afed703 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 991 + 400 + 91 + 20 + + + 1038 + 410 + + + + + + + + true + Script input place_tolerance. + b32403d0-6ca1-4dc6-9aa2-85ba7cb04271 + place_tolerance + place_tolerance + true + 0 + true + 0 + 39fbc626-7a01-46ab-a18e-ec1c0c41685b + + + + + + 991 + 420 + 91 + 20 + + + 1038 + 430 + + + + + + 1 + + + + + 1 + {0} + + + + + Grasshopper.Kernel.Types.GH_Number + 0.008 + + + + + + + + + + + Script output assembly. + 1da00192-179a-4379-a6a7-562c2d4250d8 + assembly + assembly + false + 0 + + + + + + 1112 + 300 + 100 + 70 + + + 1162 + 335 + + + + + + + + Script output pickup_t0cf_frames. + 7709d326-8e7a-49da-a1d7-d642545c5ad8 + pickup_t0cf_frames + pickup_t0cf_frames + false + 0 + + + + + + 1112 + 370 + 100 + 70 + + + 1162 + 405 + + + + + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import os +import json +import compas + +HERE = os.path.dirname(ghenv.Component.OnPingDocument().FilePath) +rfile = os.path.join(HERE, 'assembly.json') + +# We are storing a full assembly representation +if save and assembly: + compas.json_dump(assembly, rfile) + + # Pretty formatting because OCD + with open(rfile, 'r+') as rf: + data = json.load(rf) + rf.seek(0) + json.dump(data, rf, indent=4, sort_keys=True) + + GhPython provides a Python script component + + 611 + 195 + + + 749 + 767 + + true + false + 1 + 53fb2f80-0154-40ce-bf8e-c07a38a48af4 + false + true + GhPython Script + Save + + + + + + 2355 + 480 + 103 + 44 + + + 2420 + 502 + + + + + + 2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 2 + 3ede854e-c753-40eb-84cb-b48008f14fd4 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Save + 22cc596b-18cf-4a04-b38e-1972d766d077 + assembly + assembly + true + 0 + true + 1da00192-179a-4379-a6a7-562c2d4250d8 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 2 + + + + + + 2357 + 482 + 48 + 20 + + + 2382.5 + 492 + + + + + + + + true + Script input save. + 4eb648c5-bdbd-45e0-9683-a7f711e507a3 + save + save + true + 0 + true + b9a3cd2f-7b8f-496e-b671-e1ccdeb5ede1 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 2357 + 502 + 48 + 20 + + + 2382.5 + 512 + + + + + + + + The execution information, as output and error streams + 8ecdb579-37d6-47a7-affa-3189cb96d870 + out + out + false + 0 + + + + + + 2435 + 482 + 21 + 20 + + + 2445.5 + 492 + + + + + + + + Script output a. + a867370a-5c9b-4dd9-a8c0-5820c5e89a9e + a + a + false + 0 + + + + + + 2435 + 502 + 21 + 20 + + + 2445.5 + 512 + + + + + + + + + + + + + + a8b97322-2d53-47cd-905e-b932c3ccd74e + Button + + + + + Button object with two values + False + True + b9a3cd2f-7b8f-496e-b671-e1ccdeb5ede1 + Button + Button + false + 0 + + + + + + 2203 + 501 + 99 + 22 + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;45;57;255 + + A group of Grasshopper objects + feba3733-a75a-459f-a072-2fde91c330ec + 64bc0273-8198-45b4-a87d-4429075d5539 + 2 + 9195d8d0-1443-46c5-92e7-eff228240756 + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 922.8066 + 266.6034 + + + 1115.855 + 266.6034 + + + 1115.855 + 304.5804 + + + 922.8066 + 304.5804 + + A quick note + Arial + 64bc0273-8198-45b4-a87d-4429075d5539 + false + Scribble + Scribble + 41 + Assembly + + + + + + 917.8066 + 261.6034 + 203.0483 + 47.97705 + + + 922.8066 + 266.6034 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + from compas.datastructures import Mesh +from compas_fab.robots import AttachedCollisionMesh +from compas_fab.robots import CollisionMesh +from compas_fab.robots import PlanningScene + + +if robot: + scene = PlanningScene(robot) + scene.remove_collision_mesh('built_elements') + + a = [] + for key in assembly.nodes(): + # Linear order assumed here! + if key >= i: break + element = assembly.element(key) + cm = CollisionMesh(element.geometry_at_placement, 'built_elements') + scene.append_collision_mesh(cm) + + # Setup attached element + scene.remove_attached_collision_mesh('brick') + scene.remove_collision_mesh('brick') + + ee_link_name = robot.get_end_effector_link_name() + if robot.attached_tool: + brick_frame = robot.attached_tool.frame.copy() + else: + brick_frame = Frame.worldXY() + + # Centered origin, get half + element = assembly.attributes['element'] + brick_frame.point.x += element.height / 2 + element = Mesh.from_shape(element) + brick_acm = AttachedCollisionMesh(CollisionMesh(element, 'brick', brick_frame), ee_link_name) + scene.add_attached_collision_mesh(brick_acm) + + GhPython provides a Python script component + + 668 + 417 + + + 558 + 571 + + true + true + 1 + de06f11d-053b-436f-a4b7-ec786a0dc23b + false + true + GhPython Script + ROS scene + + + + + + 1458 + 754 + 79 + 74 + + + 1523 + 791 + + + + + + 3 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 0 + + + + + true + Script variable Python + 4b9846a3-bb7f-4264-95f2-ca4a6b0cd663 + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1460 + 756 + 48 + 23 + + + 1485.5 + 767.6667 + + + + + + + + true + Script input assembly. + fcadabc1-cbe4-4076-ab64-415f1980b0c7 + assembly + assembly + true + 0 + true + 1da00192-179a-4379-a6a7-562c2d4250d8 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1460 + 779 + 48 + 23 + + + 1485.5 + 791 + + + + + + + + true + Script input i. + f7279d35-cbf1-4fe4-bea8-6090b1076c8f + i + i + true + 0 + true + 3cf3489b-a232-4df1-af3a-85d4e2b9062d + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1460 + 802 + 48 + 24 + + + 1485.5 + 814.3334 + + + + + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import math +from compas.geometry import Frame +from compas.geometry import Transformation +from compas.geometry import Translation +from compas_ghpython.artists import MeshArtist +from compas_fab.robots import Configuration +from compas_fab.robots import PlanningScene +from compas_fab.robots import AttachedCollisionMesh +from compas_fab.robots import CollisionMesh +from compas_fab.ghpython.components import coerce_frame +from scriptcontext import sticky as st + +key = '{}_{}'.format('trajectory', ghenv.Component.InstanceGuid) +place_key = '{}_{}'.format('place_trajectory', ghenv.Component.InstanceGuid) + +if assembly and robot and compute: + start_configuration = robot.zero_configuration() + try: + start_configuration.values = assembly.pick_trajectory.points[-1].values + except: + pass + + e = assembly.element(i) + place_t0cf_frame, approach_t0cf_frame = robot.from_tcf_to_t0cf([e.frame, e.approach_frame]) + + # Apply place tolerance + x, y, z = 0, 0, assembly.attributes['place_tolerance'] + place_t0cf_frame = place_t0cf_frame.transformed(Translation.from_vector([x, y, z])) + + tolerance_position = 0.001 + tolerance_axes = [math.radians(1)] * 3 + + # create goal constraints from frame + goal_constraints = robot.constraints_from_frame(approach_t0cf_frame, + tolerance_position, + tolerance_axes, + group) + + trajectory = robot.plan_motion(goal_constraints, + start_configuration, + group, + options=dict(planner_id='RRTstarkConfigDefault')) + st[key] = trajectory + + frames = [] + frames.append(approach_t0cf_frame) + frames.append(place_t0cf_frame) + + start_configuration = robot.zero_configuration() + start_configuration.values = trajectory.points[-1].values + + place_trajectory = robot.plan_cartesian_motion(frames, + start_configuration, + group=group, + options=dict( + max_step=0.01, + avoid_collisions=True, + )) + + if place_trajectory and place_trajectory.fraction < 1.0: + raise Exception('Incomplete trajectory. Fraction={}'.format(place_trajectory.fraction)) + + st[place_key] = place_trajectory + + # Merge and store + e.trajectory = trajectory.points + place_trajectory.points + +trajectory = st.get(key) +place_trajectory = st.get(place_key) + GhPython provides a Python script component + + 587 + 131 + + + 975 + 571 + + true + true + 1 + adff66ab-0602-4f7d-b92e-faf711f84523 + false + true + GhPython Script + Plan placement + + + + + + 1680 + 767 + 165 + 104 + + + 1745 + 819 + + + + + + 5 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 3 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Exercise + 25e58d2e-2361-44ae-bc2a-d5338a29b538 + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 1682 + 769 + 48 + 20 + + + 1707.5 + 779 + + + + + + + + true + Script input group. + 41022fae-8d81-4161-a37e-26f275698af0 + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1682 + 789 + 48 + 20 + + + 1707.5 + 799 + + + + + + + + true + Script input assembly. + 7cf17cfa-9ee1-451e-98eb-87b65f0d2f89 + assembly + assembly + true + 0 + true + 1da00192-179a-4379-a6a7-562c2d4250d8 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 1682 + 809 + 48 + 20 + + + 1707.5 + 819 + + + + + + + + true + Script input i. + ff9cce0c-8009-4e3d-8e88-457bc393484f + i + i + true + 0 + true + 3cf3489b-a232-4df1-af3a-85d4e2b9062d + 1 + 48d01794-d3d8-4aef-990e-127168822244 + 1 + + + + + + 1682 + 829 + 48 + 20 + + + 1707.5 + 839 + + + + + + + + true + Script input compute. + 57db92fa-e774-4620-aed9-31657efe84e2 + compute + compute + true + 0 + true + f6427ccb-25e5-49e1-b12d-f3a8f65ae3f4 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1682 + 849 + 48 + 20 + + + 1707.5 + 859 + + + + + + + + Script output trajectory. + dcaa9955-fb1a-4768-ae11-ebfb9edc6a8f + trajectory + trajectory + false + 0 + + + + + + 1760 + 769 + 83 + 33 + + + 1801.5 + 785.6667 + + + + + + + + Script output place_trajectory. + 455c77c0-ca36-4d93-b1b3-f34bda4eb365 + place_trajectory + place_trajectory + false + 0 + + + + + + 1760 + 802 + 83 + 33 + + + 1801.5 + 819 + + + + + + + + Script output a. + 73cf7da4-7d1a-4a88-af31-97cf97c54e95 + a + a + false + 0 + + + + + + 1760 + 835 + 83 + 34 + + + 1801.5 + 852.3334 + + + + + + + + + + + + + + a8b97322-2d53-47cd-905e-b932c3ccd74e + Button + + + + + Button object with two values + False + True + f6427ccb-25e5-49e1-b12d-f3a8f65ae3f4 + Button + Button + false + 0 + + + + + + 1540 + 848 + 99 + 22 + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas_ghpython import draw_frame +from compas_fab.ghpython.components import create_id +from compas_fab.ghpython.components import coerce_frame +from compas_fab.ghpython.components.icons import trajectory_visualize_icon + +class TrajectoryVisualize(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "group", "group", "The planning group for which this trajectory was planned.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "trajectory", "trajectory", "The calculated trajectory.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "start_configuration", "start_configuration", "The start configuration of the trajectory.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "configurations", "configurations", "The full configurations along the trajectory.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Number() + self.SetUpParam(p, "fraction", "fraction", "Indicates the percentage of requested trajectory that was calculated, e.g. 1 means the full trajectory was found.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Number() + self.SetUpParam(p, "time", "time", "The time which is needed to execute that trajectory at full speed.") + self.Params.Output.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_Plane() + self.SetUpParam(p, "planes", "planes", "The planes of the robot's end-effector.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + result = self.RunScript(p0, p1, p2) + + if result is not None: + if not hasattr(result, '__getitem__'): + self.marshal.SetOutput(result, DA, 0, True) + else: + self.marshal.SetOutput(result[0], DA, 0, True) + self.marshal.SetOutput(result[1], DA, 1, True) + self.marshal.SetOutput(result[2], DA, 2, True) + self.marshal.SetOutput(result[3], DA, 3, True) + self.marshal.SetOutput(result[4], DA, 4, True) + + def get_Internal_Icon_24x24(self): + return trajectory_visualize_icon + + def RunScript(self, robot, group, trajectory): + start_configuration = None + configurations = [] + fraction = 0. + time = 0. + + planes = [] + positions = [] + velocities = [] + accelerations = [] + + if robot and trajectory: + group = group or robot.main_group_name + + for c in trajectory.points: + configurations.append(robot.merge_group_with_full_configuration(c, trajectory.start_configuration, group)) + frame = robot.forward_kinematics(c, group, options=dict(solver='model')) + planes.append(draw_frame(frame)) + positions.append(c.positions) + velocities.append(c.velocities) + accelerations.append(c.accelerations) + + start_configuration = trajectory.start_configuration + fraction = trajectory.fraction + time = trajectory.time_from_start + + # return outputs if you have them; here I try it for you: + return (start_configuration, configurations, fraction, time, planes) + + GhPython provides a Python script component + + 416 + 248 + + + 684 + 571 + + true + true + 1 + 8f786953-34c8-47f7-9814-b8a909da5855 + true + true + GhPython Script + Visualize Trajectory + + + + + + 1876 + 722 + 180 + 129 + + + 1942 + 787 + + + + + + 3 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 5 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + 2f6123f4-8422-4aab-809e-3681423c00b0 + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 1878 + 724 + 49 + 41 + + + 1904 + 744.8333 + + + + + + + + true + Script input group. + 865c932a-f481-430e-b273-44f1b7454e05 + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1878 + 765 + 49 + 42 + + + 1904 + 786.5 + + + + + + + + true + Script input trajectory. + 197f921f-683f-46a8-83d5-db2c55b0fd00 + trajectory + trajectory + true + 0 + true + dcaa9955-fb1a-4768-ae11-ebfb9edc6a8f + 455c77c0-ca36-4d93-b1b3-f34bda4eb365 + 2 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1878 + 807 + 49 + 42 + + + 1904 + 828.1666 + + + + + + + + Script output start_configuration. + 78545dfa-3477-4eba-a564-be23a3c3d050 + start_configuration + start_configuration + false + 0 + + + + + + 1957 + 724 + 97 + 25 + + + 2005.5 + 736.5 + + + + + + + + Script output configurations. + c818cec5-fc6d-4c1d-9452-fa15ce31c9ad + configurations + configurations + false + 0 + + + + + + 1957 + 749 + 97 + 25 + + + 2005.5 + 761.5 + + + + + + + + Script output fraction. + d1c88ade-6dc2-412d-8a32-9d674ab416ec + fraction + fraction + false + 0 + + + + + + 1957 + 774 + 97 + 25 + + + 2005.5 + 786.5 + + + + + + + + Script output time. + 6bddb8ef-e70c-4bf8-b6ac-2349bc4b8573 + time + time + false + 0 + + + + + + 1957 + 799 + 97 + 25 + + + 2005.5 + 811.5 + + + + + + + + Script output planes. + edaf7f96-5c94-4b3f-830c-55d9258a6c9b + planes + planes + false + 0 + + + + + + 1957 + 824 + 97 + 25 + + + 2005.5 + 836.5 + + + + + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + if assembly: + assembly.pick_trajectory = pick_trajectory + GhPython provides a Python script component + + 130 + 130 + + + 558 + 571 + + true + true + 1 + e8574466-52dd-40f6-a8d5-e57e15b8abec + false + true + GhPython Script + Store + + + + + + 1912 + 414 + 105 + 44 + + + 2003 + 436 + + + + + + 2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 0 + + + + + true + Script variable Python + c5a19ecc-1b7b-4c3f-9e60-00d215da9e50 + assembly + assembly + true + 0 + true + 1da00192-179a-4379-a6a7-562c2d4250d8 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + 1 + + + + + + 1914 + 416 + 74 + 20 + + + 1952.5 + 426 + + + + + + + + true + Script input pick_trajectory. + 66254fff-4330-439d-b881-3142382e42da + pick_trajectory + pick_trajectory + true + 0 + true + 7d158313-5514-47eb-a080-3408700613a7 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1914 + 436 + 74 + 20 + + + 1952.5 + 446 + + + + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 2c2b473d-04b6-46e5-9f55-abf6bb0737e6 + 15d6cddc-9345-47e7-9189-ff8d5a5723fa + fcffabeb-26d9-48cd-b12a-abb686e6be89 + cfa0e56a-0f24-46b0-b795-64142d0bb9b1 + 26a7a666-dea8-4bfe-9759-718a4cb7c6cf + a4ac6406-d89d-498a-adbd-d81819c696e1 + 40c2bfa6-520e-4e34-a8a0-d167facedcc1 + 3a28a33d-a006-4d82-a9d9-5a745d26a3f3 + 12773b81-2dc4-4c3e-ba26-7422415b0e99 + ec0d2252-e2ee-475a-8a4e-462586452c12 + 10 + 0fedfe68-9645-4248-88c9-170f03fec9d0 + Group + + + + + + + + + + + a559fee2-4b76-4370-8042-c7440cd75049 + Mesh Closest Point + + + + + Finds the closest point on a mesh + 2c2b473d-04b6-46e5-9f55-abf6bb0737e6 + Mesh Closest Point + MeshCP + + + + + + 413 + 528 + 57 + 64 + + + 441 + 560 + + + + + + Point to search from + a9abe615-a57d-4267-9360-a96912a86369 + Point + P + false + 34e985cd-859f-4d13-a639-0f4a1845fc21 + 1 + + + + + + 415 + 530 + 11 + 30 + + + 422 + 545 + + + + + + + + Mesh to search for closest point + bce9ab35-7d27-4c39-9345-6eee24ab0ef7 + Mesh + M + false + cec5af33-7de8-45a7-8a88-c746edfb38bd + 1 + + + + + + 415 + 560 + 11 + 30 + + + 422 + 575 + + + + + + + + Location on mesh closest to search point + 2c217fac-49f0-4f5e-8b84-769347b3833a + Point + P + false + 0 + + + + + + 456 + 530 + 12 + 20 + + + 462 + 540 + + + + + + + + Face index of closest point + 66d4ab6d-3f5b-41a2-9ab3-f9362136f3e4 + Index + I + false + 0 + + + + + + 456 + 550 + 12 + 20 + + + 462 + 560 + + + + + + + + Mesh parameter for closest point + 83bbfea5-1ac4-44ac-ae60-6b832d32bf69 + Parameter + P + false + 0 + + + + + + 456 + 570 + 12 + 20 + + + 462 + 580 + + + + + + + + + + + + 4c619bc9-39fd-4717-82a6-1e07ea237bbe + Line SDL + + + + + Create a line segment defined by start point, tangent and length.} + true + 15d6cddc-9345-47e7-9189-ff8d5a5723fa + Line SDL + Line + + + + + + 565 + 528 + 56 + 64 + + + 592 + 560 + + + + + + Line start point + 39ebb2c8-d76d-472d-bda4-998dbb052293 + Start + S + false + 2c217fac-49f0-4f5e-8b84-769347b3833a + 1 + + + + + + 567 + 530 + 10 + 20 + + + 573.5 + 540 + + + + + + + + Line tangent (direction) + 822493eb-da1f-4dd9-bf61-6e9cbc84e83f + Direction + D + false + c194671a-7af1-42b5-b473-bd0bdba377d0 + 1 + + + + + + 567 + 550 + 10 + 20 + + + 573.5 + 560 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 1 + + + + + + + + + + + + Line length + c5f47897-3ed4-4171-adcc-aaf7f6a19483 + Length + L + false + cfa0e56a-0f24-46b0-b795-64142d0bb9b1 + 1 + + + + + + 567 + 570 + 10 + 20 + + + 573.5 + 580 + + + + + + 1 + + + + + 1 + {0} + + + + + 1 + + + + + + + + + + + Line segment + 74a2f5b6-596f-49e6-8ce5-845d158a52d6 + Line + L + false + 0 + + + + + + 607 + 530 + 12 + 60 + + + 613 + 560 + + + + + + + + + + + + 56b92eab-d121-43f7-94d3-6cd8f0ddead8 + Vector XYZ + + + + + Create a vector from {xyz} components. + fcffabeb-26d9-48cd-b12a-abb686e6be89 + Vector XYZ + Vec + + + + + + 487 + 543 + 55 + 64 + + + 513 + 575 + + + + + + Vector {x} component + 3ddc150d-416e-44ae-bfe3-1f47845cd877 + X component + X + false + 0 + + + + + + 489 + 545 + 9 + 20 + + + 495 + 555 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {y} component + 9e4f37a1-46d3-4870-a9df-3fd978399d5b + Y component + Y + false + 0 + + + + + + 489 + 565 + 9 + 20 + + + 495 + 575 + + + + + + 1 + + + + + 1 + {0} + + + + + -1 + + + + + + + + + + + Vector {z} component + e2c89a6b-0a9f-4a3e-98dd-ccb99fadd9f9 + Z component + Z + false + 0 + + + + + + 489 + 585 + 9 + 20 + + + 495 + 595 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector construct + c194671a-7af1-42b5-b473-bd0bdba377d0 + Vector + V + false + 0 + + + + + + 528 + 545 + 12 + 30 + + + 534 + 560 + + + + + + + + Vector length + 2fcac7bb-8aa4-4fc9-9aba-1490b501f75e + Length + L + false + 0 + + + + + + 528 + 575 + 12 + 30 + + + 534 + 590 + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + cfa0e56a-0f24-46b0-b795-64142d0bb9b1 + Number Slider + + false + 0 + + + + + + 376 + 613 + 163 + 20 + + + 376.1643 + 613.5756 + + + + + + 1 + 1 + 0 + 1 + 0 + 0 + 0.5 + + + + + + + + + 2162e72e-72fc-4bf8-9459-d4d82fa8aa14 + Divide Curve + + + + + Divide a curve into equal length segments + 26a7a666-dea8-4bfe-9759-718a4cb7c6cf + Divide Curve + Divide + + + + + + 731 + 548 + 56 + 64 + + + 758 + 580 + + + + + + Curve to divide + 085e6025-e238-423c-a1aa-f7bd951fffef + Curve + C + false + 12ce90af-235a-4937-8beb-aa0c694a3c75 + 1 + + + + + + 733 + 550 + 10 + 20 + + + 739.5 + 560 + + + + + + 1 + + + + + 1 + {0} + + + + + -1 + 42b29fa2-5c15-41ab-b712-10d737bed7ac + + + + + + + + + + + Number of segments + 3064ec21-265d-4bde-80d2-1b8cd023de37 + Count + N + false + 40c2bfa6-520e-4e34-a8a0-d167facedcc1 + 1 + + + + + + 733 + 570 + 10 + 20 + + + 739.5 + 580 + + + + + + 1 + + + + + 1 + {0} + + + + + 8 + + + + + + + + + + + Split segments at kinks + e32f6f5a-0f20-4efa-8482-4feed75d4434 + Kinks + K + false + 0 + + + + + + 733 + 590 + 10 + 20 + + + 739.5 + 600 + + + + + + 1 + + + + + 1 + {0} + + + + + false + + + + + + + + + + + 1 + Division points + b4e83913-46de-4496-9089-b58121746140 + Points + P + false + 0 + + + + + + 773 + 550 + 12 + 20 + + + 779 + 560 + + + + + + + + 1 + Tangent vectors at division points + f174b057-e6a3-4df3-a5f2-3eb91e26d90f + Tangents + T + false + 0 + + + + + + 773 + 570 + 12 + 20 + + + 779 + 580 + + + + + + + + 1 + Parameter values at division points + bf727536-328c-44a5-837a-36584974fef7 + Parameters + t + false + 0 + + + + + + 773 + 590 + 12 + 20 + + + 779 + 600 + + + + + + + + + + + + f31d8d7a-7536-4ac8-9c96-fde6ecda4d0a + Cluster + + + + + + 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 + + Contains a cluster of Grasshopper components + 1 + a4ac6406-d89d-498a-adbd-d81819c696e1 + Cluster + T0CF + false + + + + + 3 + a8052388-7620-4c58-8f84-8ae647b6b04c + b75d14f8-2037-487c-aada-e4a1af01a95c + f41be9bc-bcf0-410b-a0ac-8575f4a7ba6b + d0ccacbd-d43e-44d1-95fa-d65b95597d22 + 43cd6740-e900-4cb5-aac6-f6ee8442edb2 + a734e7f6-2f8f-4929-916a-9608854f6392 + + + + + + 810 + 548 + 153 + 44 + + + 872 + 570 + + + + + + 2 + 4f8984c4-7c7a-4d69-b0a2-183cbb330d20 + 3e8ca6be-fda8-4aaf-b5c0-3c54c8bb7312 + 1 + 4f8984c4-7c7a-4d69-b0a2-183cbb330d20 + + + + + Contains a collection of three-dimensional axis-systems + b75d14f8-2037-487c-aada-e4a1af01a95c + Plane + tcf_point + true + b4e83913-46de-4496-9089-b58121746140 + 1 + + + + + + 812 + 550 + 45 + 20 + + + 836 + 560 + + + + + + + + Contains a collection of floating point numbers + a8052388-7620-4c58-8f84-8ae647b6b04c + Number + z_offset + true + 9a4be73c-3082-4c74-be27-41c7c1688c53 + 1 + 1 + + + + + + 812 + 570 + 45 + 20 + + + 836 + 580 + + + + + + 1 + + + + + 1 + {0} + + + + + 0.07 + + + + + + + + + + + Contains a collection of three-dimensional axis-systems + f41be9bc-bcf0-410b-a0ac-8575f4a7ba6b + 1 + Plane + t0cf_frame + false + 0 + + + + + + 887 + 550 + 74 + 40 + + + 916 + 570 + + + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 40c2bfa6-520e-4e34-a8a0-d167facedcc1 + Number Slider + + false + 0 + + + + + + 640 + 648 + 158 + 20 + + + 640.3718 + 648.332 + + + + + + 3 + 1 + 1 + 8 + 0 + 0 + 8 + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 383.4841 + 643.7833 + + + 544.9391 + 643.7833 + + + 544.9391 + 671.1759 + + + 383.4841 + 671.1759 + + A quick note + Arial + 3a28a33d-a006-4d82-a9d9-5a745d26a3f3 + false + Scribble + Scribble + 30 + Pick planes + + + + + + 378.4841 + 638.7833 + 171.455 + 37.39258 + + + 383.4841 + 643.7833 + + + + + + + + + + 59daf374-bc21-4a5e-8282-5504fb7ae9ae + List Item + + + + + 0 + Retrieve a specific item from a list. + e6796b90-283f-4bb1-9d6c-fe8c02934230 + List Item + Item + + + + + + 1006 + 558 + 58 + 64 + + + 1035 + 590 + + + + + + 3 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 2e3ab970-8545-46bb-836c-1c11e5610bce + cb95db89-6165-43b6-9c41-5702bc5bf137 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + 1 + Base list + 30de0add-b6b2-417e-b1af-1d83c0af9224 + List + L + false + f41be9bc-bcf0-410b-a0ac-8575f4a7ba6b + 1 + + + + + + 1008 + 560 + 12 + 20 + + + 1015.5 + 570 + + + + + + + + Item index + 8b547321-c8a2-47f3-9c97-a2cd2e1b661c + Index + i + false + 750fd83e-475e-457a-8900-4ec1748903c9 + 1 + + + + + + 1008 + 580 + 12 + 20 + + + 1015.5 + 590 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Wrap index to list bounds + f4834b10-2182-4be6-ac49-a4d0a2bd9007 + Wrap + W + false + 0 + + + + + + 1008 + 600 + 12 + 20 + + + 1015.5 + 610 + + + + + + 1 + + + + + 1 + {0} + + + + + true + + + + + + + + + + + Item at {i'} + 4cc33074-a238-4554-8ff7-4a392f24c411 + false + Item + i + false + 0 + + + + + + 1050 + 560 + 12 + 60 + + + 1056 + 590 + + + + + + + + + + + + + + e9eb1dcf-92f6-4d4d-84ae-96222d60f56b + Move + + + + + Translate (move) an object along a vector. + true + 12773b81-2dc4-4c3e-ba26-7422415b0e99 + Move + Move + + + + + + 647 + 548 + 57 + 44 + + + 674 + 570 + + + + + + Base geometry + 802c5634-878b-44a3-a4c8-702d38aea069 + Geometry + G + true + 74a2f5b6-596f-49e6-8ce5-845d158a52d6 + 1 + + + + + + 649 + 550 + 10 + 20 + + + 655.5 + 560 + + + + + + + + Translation vector + e9e690c2-7247-4902-a544-d0d84c0af8b4 + Motion + T + false + 8fbc5058-a6b2-46f4-b913-d6e397c4c97f + 1 + + + + + + 649 + 570 + 10 + 20 + + + 655.5 + 580 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 10 + + + + + + + + + + + + Translated geometry + 12ce90af-235a-4937-8beb-aa0c694a3c75 + Geometry + G + false + 0 + + + + + + 689 + 550 + 13 + 20 + + + 695.5 + 560 + + + + + + + + Transformation data + 3c192d43-9f0b-447f-8aba-4d1991ab04e0 + Transform + X + false + 0 + + + + + + 689 + 570 + 13 + 20 + + + 695.5 + 580 + + + + + + + + + + + + 56b92eab-d121-43f7-94d3-6cd8f0ddead8 + Vector XYZ + + + + + Create a vector from {xyz} components. + ec0d2252-e2ee-475a-8a4e-462586452c12 + Vector XYZ + Vec + + + + + + 561 + 603 + 71 + 64 + + + 603 + 635 + + + + + + Vector {x} component + 09896520-86f7-4cd8-8556-6f05bfaa3332 + X component + X + false + 0 + + + + + + 563 + 605 + 25 + 20 + + + 585 + 615 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {y} component + 5a1526fb-45f9-4595-af5f-5f37ba3903f9 + Y component + Y + false + 0 + + + + + + 563 + 625 + 25 + 20 + + + 585 + 635 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {z} component + c53708b5-ec66-4b28-a8c7-48c696a8d56d + 1.01*x + Z component + Z + false + 38da7932-bace-4722-99e8-41530a8b7e79 + 1 + + + + + + 563 + 645 + 25 + 20 + + + 585 + 655 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector construct + 8fbc5058-a6b2-46f4-b913-d6e397c4c97f + Vector + V + false + 0 + + + + + + 618 + 605 + 12 + 30 + + + 624 + 620 + + + + + + + + Vector length + 7046fe35-39e4-48e6-9fbf-caa747aeca17 + Length + L + false + 0 + + + + + + 618 + 635 + 12 + 30 + + + 624 + 650 + + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 80ce433a-1738-4633-8ddb-deb209a263b2 + 88cb6da0-f8e7-40bf-8bc5-3b0ef7d1c70c + c26bcaf2-5573-467a-8942-f0a103c066f9 + 6d8ccd0b-20a9-480b-8796-12f89ff9b31e + 81efa3c6-8c1f-4c74-b9ba-ad9177a3e1d8 + 27946b2d-1caa-4e76-92a7-cf360a1c5933 + 6 + 7e93d271-b452-4258-a933-73f14c8fb309 + Group + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 018653fc-9c43-47d8-a9f7-d80916ba8b0f + f20d36e3-a8cb-43d7-b7b5-ab6d0f37e3b3 + 85fa7c2a-3ed0-4344-a688-e348fd1377b2 + 340e3413-4a99-4721-ae88-3e8f0a3ea9f3 + 1e9cb760-cddd-4d08-b776-e3bd3f2ff316 + 12bc71b5-9bc7-4a55-98ce-540325332373 + 5c5a5137-2a25-4a89-bc4a-5872463cf2e9 + 097f3667-b040-4f54-81c5-1a33da31df10 + 8 + 05d04219-e39c-41b1-934f-c277a9770fd8 + Group + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 8c20a3fe-d1e1-4b09-bf6a-7e0d17df3e31 + ccadf9fd-c8ea-4841-b6bd-8ebd7b99f1d4 + 58db72dd-9c73-4589-aa9d-19c2c3044808 + ed40d732-05e2-42e6-b935-4856b911cfc3 + bf977be7-bcdd-4b7d-af14-70654c973d18 + 5 + bae32e53-70a0-44e0-b03e-9632f0616320 + Group + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + f20d36e3-a8cb-43d7-b7b5-ab6d0f37e3b3 + 85fa7c2a-3ed0-4344-a688-e348fd1377b2 + 2 + 018653fc-9c43-47d8-a9f7-d80916ba8b0f + Group + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 47.86356 + 721.6266 + + + 150.384 + 721.6266 + + + 150.384 + 751.4557 + + + 47.86356 + 751.4557 + + A quick note + Arial + f20d36e3-a8cb-43d7-b7b5-ab6d0f37e3b3 + false + Scribble + Scribble + 41 + Place + + + + + + 42.86356 + 716.6266 + 112.5205 + 39.8291 + + + 47.86356 + 721.6266 + + + + + + + + + + 2162e72e-72fc-4bf8-9459-d4d82fa8aa14 + Divide Curve + + + + + Divide a curve into equal length segments + true + 80ce433a-1738-4633-8ddb-deb209a263b2 + Divide Curve + Divide + + + + + + 769 + 761 + 56 + 64 + + + 796 + 793 + + + + + + Curve to divide + 43bb8f9e-d237-4787-abc5-879e209d9f4a + Curve + C + false + 1d47708c-d758-45e4-a101-678c2cb70d69 + 1 + + + + + + 771 + 763 + 10 + 20 + + + 777.5 + 773 + + + + + + 1 + + + + + 1 + {0} + + + + + -1 + 42b29fa2-5c15-41ab-b712-10d737bed7ac + + + + + + + + + + + Number of segments + e1402a9d-a975-4fdd-a7da-93c600469836 + Count + N + false + 88cb6da0-f8e7-40bf-8bc5-3b0ef7d1c70c + 1 + + + + + + 771 + 783 + 10 + 20 + + + 777.5 + 793 + + + + + + 1 + + + + + 1 + {0} + + + + + 40 + + + + + + + + + + + Split segments at kinks + b6c0d2e0-f738-4968-92f7-a0b106f0b2e9 + Kinks + K + false + 0 + + + + + + 771 + 803 + 10 + 20 + + + 777.5 + 813 + + + + + + 1 + + + + + 1 + {0} + + + + + false + + + + + + + + + + + 1 + Division points + 0b8a0f7b-c563-4bf2-959e-9d0d31a6341f + Points + P + false + 0 + + + + + + 811 + 763 + 12 + 20 + + + 817 + 773 + + + + + + + + 1 + Tangent vectors at division points + 59590178-f869-4eb1-b436-3d41b76d447b + Tangents + T + false + 0 + + + + + + 811 + 783 + 12 + 20 + + + 817 + 793 + + + + + + + + 1 + Parameter values at division points + 32a0539a-0c33-42bd-a0ca-c8eecde36394 + Parameters + t + false + 0 + + + + + + 811 + 803 + 12 + 20 + + + 817 + 813 + + + + + + + + + + + + 410755b1-224a-4c1e-a407-bf32fb45ea7e + 00000000-0000-0000-0000-000000000000 + GhPython Script + + + + + import Grasshopper +import System +from ghpythonlib.componentbase import executingcomponent as component +from scriptcontext import sticky as st + +from compas_fab.ghpython.components import coerce_frame +from compas_fab.backends import RosValidationError + +class InverseKinematics(component): + def SetUpParam(self, p, name, nickname, description): + p.Name = name + p.NickName = nickname + p.Description = description + p.Optional = True + + def RegisterInputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "robot", "robot", "The robot.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "plane", "plane", "The plane or frame to calculate the inverse kinematic for.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "start_configuration", "start_configuration", + "If passed, the inverse will be calculated such that the calculated joint positions \ + differ the least from the start_configuration. Defaults to the zero configuration.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + p = Grasshopper.Kernel.Parameters.Param_String() + self.SetUpParam(p, "group", "group", "The planning group used for calculation. Defaults to the robot's main planning group.") + p.Access = Grasshopper.Kernel.GH_ParamAccess.item + self.Params.Input.Add(p) + + def RegisterOutputParams(self, pManager): + p = Grasshopper.Kernel.Parameters.Param_GenericObject() + self.SetUpParam(p, "a", "configuration", "The planning group's configuration.") + self.Params.Output.Add(p) + + def SolveInstance(self, DA): + p0 = self.marshal.GetInput(DA, 0) + p1 = self.marshal.GetInput(DA, 1) + p2 = self.marshal.GetInput(DA, 2) + p3 = self.marshal.GetInput(DA, 3) + result = self.RunScript(p0, p1, p2, p3) + + if result is not None: + self.marshal.SetOutput(result, DA, 0, True) + + def get_Internal_Icon_24x24(self): + return inverse_kinematics_icon + + def RunScript(self, robot, plane, start_configuration, group): + configuration = None + self.Message = '' + if robot and robot.client and robot.client.is_connected and plane: + frame = coerce_frame(plane) + try: + configuration = robot.inverse_kinematics(frame, start_configuration, group) + except RosValidationError as e: + self.Message = 'No solution found' + raise + + if configuration: + self.Message = 'Solution found' + return configuration + + GhPython provides a Python script component + + 415 + 248 + + + 684 + 571 + + true + true + 1 + f16d7522-4dad-4263-b0af-2cc276ace21a + true + true + true + GhPython Script + IK + + + + + + 1067 + 932 + 198 + 84 + + + 1178 + 974 + + + + + + 4 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + true + Script variable Python + f66f6e4a-531c-4b17-8546-b1774e7961a0 + true + robot + robot + true + 0 + true + 9a9900f7-c5de-485a-9791-63a5e1930c86 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1069 + 934 + 94 + 20 + + + 1117.5 + 944 + + + + + + + + true + Script input plane. + 75d8be80-766d-46b5-8ead-51cc37ea6108 + true + plane + plane + true + 0 + true + bd698c7d-c7c4-442d-b790-ff6930fb16a5 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1069 + 954 + 94 + 20 + + + 1117.5 + 964 + + + + + + + + true + Script input start_configuration. + d13854e6-3c95-4c3b-b627-deb01ba42bd8 + true + start_configuration + start_configuration + true + 0 + true + f956b690-65c4-4b82-ac9a-488e4afed703 + 1 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1069 + 974 + 94 + 20 + + + 1117.5 + 984 + + + + + + + + true + Script input group. + 5b28cea7-acb6-4bf7-9383-54a7d99f38f9 + true + group + group + true + 0 + true + 0 + 87f87f55-5b71-41f4-8aea-21d494016f81 + + + + + + 1069 + 994 + 94 + 20 + + + 1117.5 + 1004 + + + + + + + + Script output configuration. + 7e01d15e-4333-45e1-99e0-699a12f1ea92 + true + configuration + configuration + false + 0 + + + + + + 1193 + 934 + 70 + 80 + + + 1228 + 974 + + + + + + + + + + + + + + f31d8d7a-7536-4ac8-9c96-fde6ecda4d0a + Cluster + + + + + + 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 + + Contains a cluster of Grasshopper components + 1 + 3863e000-458a-4edf-909d-411c1c21cfe3 + Cluster + T0CF + false + + + + + 3 + 495f6bb6-b415-4a6a-a016-b4212a7ea1dc + af025e60-14ba-4c28-9dc9-21f04af24737 + bb14bf69-92c1-4f0a-8740-994afcfcf35a + 43cd6740-e900-4cb5-aac6-f6ee8442edb2 + a734e7f6-2f8f-4929-916a-9608854f6392 + d0ccacbd-d43e-44d1-95fa-d65b95597d22 + + + + + + 1025 + 777 + 137 + 44 + + + 1087 + 799 + + + + + + 2 + 4f8984c4-7c7a-4d69-b0a2-183cbb330d20 + 3e8ca6be-fda8-4aaf-b5c0-3c54c8bb7312 + 1 + 4f8984c4-7c7a-4d69-b0a2-183cbb330d20 + + + + + Contains a collection of three-dimensional axis-systems + 495f6bb6-b415-4a6a-a016-b4212a7ea1dc + Plane + tcf_point + true + 4fcc7feb-1eb1-4790-b785-38fed48eb866 + 8843c7bf-2a1c-4055-9f4f-52c97578cb42 + 266ecaa4-c6e6-4d90-b910-27572cd124b7 + 3 + + + + + + 1027 + 779 + 45 + 20 + + + 1051 + 789 + + + + + + + + Contains a collection of floating point numbers + bb14bf69-92c1-4f0a-8740-994afcfcf35a + Number + z_offset + true + 9a4be73c-3082-4c74-be27-41c7c1688c53 + 1 + 1 + + + + + + 1027 + 799 + 45 + 20 + + + 1051 + 809 + + + + + + 1 + + + + + 1 + {0} + + + + + 0.07 + + + + + + + + + + + Contains a collection of three-dimensional axis-systems + af025e60-14ba-4c28-9dc9-21f04af24737 + Plane + t0cf_frame + false + 0 + + + + + + 1102 + 779 + 58 + 40 + + + 1131 + 799 + + + + + + + + + + + + + + 7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe + Scribble + + + + + true + + 46.62631 + 756.7301 + + + 189.3029 + 756.7301 + + + 189.3029 + 766.2262 + + + 46.62631 + 766.2262 + + A quick note + Arial + 85fa7c2a-3ed0-4344-a688-e348fd1377b2 + false + Scribble + Scribble + 13 + Need more than 1 brick + + + + + + 41.62631 + 751.7301 + 152.6766 + 19.49609 + + + 46.62631 + 756.7301 + + + + + + + + + + fbac3e32-f100-4292-8692-77240a42fd1a + Point + + + + + Contains a collection of three-dimensional points + 340e3413-4a99-4721-ae88-3e8f0a3ea9f3 + Point + Pt Place + false + 0 + + + + + + 148 + 742 + 50 + 20 + + + 173.2618 + 752.2631 + + + + + + 1 + + + + + 1 + {0} + + + + + + + + 039ca913-0a0a-4c00-b95c-42d866a0fd3c + -1 + 0 + 0 + point_object + + + + + + + + + + + + + + + a559fee2-4b76-4370-8042-c7440cd75049 + Mesh Closest Point + + + + + Finds the closest point on a mesh + 1e9cb760-cddd-4d08-b776-e3bd3f2ff316 + Mesh Closest Point + MeshCP + + + + + + 221 + 733 + 57 + 64 + + + 249 + 765 + + + + + + Point to search from + 33412ca1-64b4-4a7a-9912-d124e8d2860c + Point + P + false + 340e3413-4a99-4721-ae88-3e8f0a3ea9f3 + 1 + + + + + + 223 + 735 + 11 + 30 + + + 230 + 750 + + + + + + + + Mesh to search for closest point + f0ba4826-e502-4bf3-92b5-ebfd25dbc833 + Mesh + M + false + cec5af33-7de8-45a7-8a88-c746edfb38bd + 1 + + + + + + 223 + 765 + 11 + 30 + + + 230 + 780 + + + + + + + + Location on mesh closest to search point + 79a19e6e-1d5b-4fc3-ab55-b50cd14630d9 + Point + P + false + 0 + + + + + + 264 + 735 + 12 + 20 + + + 270 + 745 + + + + + + + + Face index of closest point + 22cbb600-f2b8-474e-8c6b-2d1cf52bb686 + Index + I + false + 0 + + + + + + 264 + 755 + 12 + 20 + + + 270 + 765 + + + + + + + + Mesh parameter for closest point + 2b94d232-db39-45b5-bf6a-37ce1fdddb73 + Parameter + P + false + 0 + + + + + + 264 + 775 + 12 + 20 + + + 270 + 785 + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 88cb6da0-f8e7-40bf-8bc5-3b0ef7d1c70c + Number Slider + + false + 0 + + + + + + 587 + 829 + 158 + 20 + + + 587.6251 + 829.122 + + + + + + 3 + 1 + 1 + 8 + 0 + 0 + 3 + + + + + + + + + e9eb1dcf-92f6-4d4d-84ae-96222d60f56b + Move + + + + + Translate (move) an object along a vector. + c26bcaf2-5573-467a-8942-f0a103c066f9 + Move + Move + + + + + + 875 + 777 + 73 + 44 + + + 902 + 799 + + + + + + Base geometry + f36ca5ea-c529-47a0-97d0-fd8e38564ac3 + Geometry + G + true + 0b8a0f7b-c563-4bf2-959e-9d0d31a6341f + 1 + + + + + + 877 + 779 + 10 + 20 + + + 883.5 + 789 + + + + + + + + Translation vector + ea40ab6b-4367-4787-9dd0-992a04a8ed8e + Motion + T + false + 379a5118-4abb-43ab-a49c-212cb848d6c1 + 1 + + + + + + 877 + 799 + 10 + 20 + + + 883.5 + 809 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 10 + + + + + + + + + + + + Translated geometry + 4fcc7feb-1eb1-4790-b785-38fed48eb866 + 1 + Geometry + G + false + 0 + + + + + + 917 + 779 + 29 + 20 + + + 923.5 + 789 + + + + + + + + Transformation data + 6c0d16b4-69ed-4718-b877-c0c069401848 + Transform + X + false + 0 + + + + + + 917 + 799 + 29 + 20 + + + 923.5 + 809 + + + + + + + + + + + + 56b92eab-d121-43f7-94d3-6cd8f0ddead8 + Vector XYZ + + + + + Create a vector from {xyz} components. + 6d8ccd0b-20a9-480b-8796-12f89ff9b31e + Vector XYZ + Vec + + + + + + 787 + 829 + 71 + 64 + + + 829 + 861 + + + + + + Vector {x} component + 2f9ae5f3-b361-472c-ba24-06efaa45b249 + X component + X + false + 0 + + + + + + 789 + 831 + 25 + 20 + + + 811 + 841 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {y} component + bac903d5-2c3b-4452-9dc5-c5e717ed1f1c + Y component + Y + false + 0 + + + + + + 789 + 851 + 25 + 20 + + + 811 + 861 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {z} component + bbc7bd2b-5a82-4a55-8380-cf08c4517e0e + 0*x + Z component + Z + false + 38da7932-bace-4722-99e8-41530a8b7e79 + 1 + + + + + + 789 + 871 + 25 + 20 + + + 811 + 881 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector construct + 379a5118-4abb-43ab-a49c-212cb848d6c1 + Vector + V + false + 0 + + + + + + 844 + 831 + 12 + 30 + + + 850 + 846 + + + + + + + + Vector length + 81131129-2bdc-40e7-9e3b-3bed74d58fb1 + Length + L + false + 0 + + + + + + 844 + 861 + 12 + 30 + + + 850 + 876 + + + + + + + + + + + + 4c619bc9-39fd-4717-82a6-1e07ea237bbe + Line SDL + + + + + Create a line segment defined by start point, tangent and length.} + true + 81efa3c6-8c1f-4c74-b9ba-ad9177a3e1d8 + Line SDL + Line + + + + + + 686 + 757 + 56 + 64 + + + 713 + 789 + + + + + + Line start point + 6c2233a7-6087-443c-aa01-22b08769ad3a + Start + S + false + 79a19e6e-1d5b-4fc3-ab55-b50cd14630d9 + 1 + + + + + + 688 + 759 + 10 + 20 + + + 694.5 + 769 + + + + + + + + Line tangent (direction) + bc89ce9f-ee09-4b5d-a3a6-6a9a58a62546 + Direction + D + false + 1cc2fa64-a288-4238-a6b5-42ae97c06db9 + 1 + + + + + + 688 + 779 + 10 + 20 + + + 694.5 + 789 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 1 + + + + + + + + + + + + Line length + 6848bedd-22bb-44fd-89c6-c26495b1f511 + Length + L + false + 27946b2d-1caa-4e76-92a7-cf360a1c5933 + 1 + + + + + + 688 + 799 + 10 + 20 + + + 694.5 + 809 + + + + + + 1 + + + + + 1 + {0} + + + + + 1 + + + + + + + + + + + Line segment + 1d47708c-d758-45e4-a101-678c2cb70d69 + Line + L + false + 0 + + + + + + 728 + 759 + 12 + 60 + + + 734 + 789 + + + + + + + + + + + + 56b92eab-d121-43f7-94d3-6cd8f0ddead8 + Vector XYZ + + + + + Create a vector from {xyz} components. + 12bc71b5-9bc7-4a55-98ce-540325332373 + Vector XYZ + Vec + + + + + + 257 + 658 + 55 + 64 + + + 283 + 690 + + + + + + Vector {x} component + 8f62c3bb-68cc-4d54-b3f9-d075fa3c1c2b + X component + X + false + 097f3667-b040-4f54-81c5-1a33da31df10 + 1 + + + + + + 259 + 660 + 9 + 20 + + + 265 + 670 + + + + + + 1 + + + + + 1 + {0} + + + + + 1 + + + + + + + + + + + Vector {y} component + 65223edf-b304-4351-85fd-058599578f6e + Y component + Y + false + 5c5a5137-2a25-4a89-bc4a-5872463cf2e9 + 1 + + + + + + 259 + 680 + 9 + 20 + + + 265 + 690 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {z} component + 7e0a8439-6370-478b-aa81-48f7320a3977 + Z component + Z + false + 0 + + + + + + 259 + 700 + 9 + 20 + + + 265 + 710 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector construct + 1cc2fa64-a288-4238-a6b5-42ae97c06db9 + Vector + V + false + 0 + + + + + + 298 + 660 + 12 + 30 + + + 304 + 675 + + + + + + + + Vector length + a7757840-bbff-4e5d-ac50-1d60998ccc58 + Length + L + false + 0 + + + + + + 298 + 690 + 12 + 30 + + + 304 + 705 + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 27946b2d-1caa-4e76-92a7-cf360a1c5933 + Number Slider + + false + 0 + + + + + + 503 + 799 + 163 + 20 + + + 503.4459 + 799.6531 + + + + + + 3 + 1 + 0 + 0.1 + 0 + 0 + 0.096 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 5c5a5137-2a25-4a89-bc4a-5872463cf2e9 + Number Slider + + false + 0 + + + + + + 39 + 681 + 193 + 20 + + + 39.01688 + 681.9442 + + + + + + 3 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 097f3667-b040-4f54-81c5-1a33da31df10 + Number Slider + + false + 0 + + + + + + 37 + 661 + 194 + 20 + + + 37.7684 + 661.9609 + + + + + + 3 + 1 + 1 + 100 + 0 + 0 + 1 + + + + + + + + + 4c619bc9-39fd-4717-82a6-1e07ea237bbe + Line SDL + + + + + Create a line segment defined by start point, tangent and length.} + true + 8c20a3fe-d1e1-4b09-bf6a-7e0d17df3e31 + Line SDL + Line + + + + + + 691 + 928 + 56 + 64 + + + 718 + 960 + + + + + + Line start point + d673981e-184d-4c9f-a23e-4c102d923065 + Start + S + false + 79a19e6e-1d5b-4fc3-ab55-b50cd14630d9 + 1 + + + + + + 693 + 930 + 10 + 20 + + + 699.5 + 940 + + + + + + + + Line tangent (direction) + c008c047-16c8-43e5-952a-01963a00cf22 + Direction + D + false + 1cc2fa64-a288-4238-a6b5-42ae97c06db9 + 1 + + + + + + 693 + 950 + 10 + 20 + + + 699.5 + 960 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 1 + + + + + + + + + + + + Line length + da9e6979-fb65-4059-af07-4cfd028fe0c3 + Length + L + false + ccadf9fd-c8ea-4841-b6bd-8ebd7b99f1d4 + 1 + + + + + + 693 + 970 + 10 + 20 + + + 699.5 + 980 + + + + + + 1 + + + + + 1 + {0} + + + + + 1 + + + + + + + + + + + Line segment + f81aa5b9-12d3-451e-85c7-596106fe80e0 + Line + L + false + 0 + + + + + + 733 + 930 + 12 + 60 + + + 739 + 960 + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + ccadf9fd-c8ea-4841-b6bd-8ebd7b99f1d4 + Number Slider + + false + 0 + + + + + + 504 + 970 + 163 + 20 + + + 504.5526 + 970.2043 + + + + + + 3 + 1 + 0 + 0.1 + 0 + 0 + 0.064 + + + + + + + + + 2162e72e-72fc-4bf8-9459-d4d82fa8aa14 + Divide Curve + + + + + Divide a curve into equal length segments + true + 58db72dd-9c73-4589-aa9d-19c2c3044808 + Divide Curve + Divide + + + + + + 768 + 929 + 56 + 64 + + + 795 + 961 + + + + + + Curve to divide + 02147d24-d37e-4914-917d-65cd58d479c8 + Curve + C + false + f81aa5b9-12d3-451e-85c7-596106fe80e0 + 1 + + + + + + 770 + 931 + 10 + 20 + + + 776.5 + 941 + + + + + + 1 + + + + + 1 + {0} + + + + + -1 + 42b29fa2-5c15-41ab-b712-10d737bed7ac + + + + + + + + + + + Number of segments + ee7c63b4-d73c-4a6c-ac72-d3a5ed645923 + Count + N + false + 0 + + + + + + 770 + 951 + 10 + 20 + + + 776.5 + 961 + + + + + + 1 + + + + + 1 + {0} + + + + + 2 + + + + + + + + + + + Split segments at kinks + c574da4f-c36c-4f24-a346-411c761c7eb8 + Kinks + K + false + 0 + + + + + + 770 + 971 + 10 + 20 + + + 776.5 + 981 + + + + + + 1 + + + + + 1 + {0} + + + + + false + + + + + + + + + + + 1 + Division points + 7413f076-90d4-4edf-b09b-4148ab5455a8 + Points + P + false + 0 + + + + + + 810 + 931 + 12 + 20 + + + 816 + 941 + + + + + + + + 1 + Tangent vectors at division points + 00ddd077-1fa3-4d56-a94b-9c9d03a32b5e + Tangents + T + false + 0 + + + + + + 810 + 951 + 12 + 20 + + + 816 + 961 + + + + + + + + 1 + Parameter values at division points + d8fa5418-2a30-4945-8a89-cc984c3c97f9 + Parameters + t + false + 0 + + + + + + 810 + 971 + 12 + 20 + + + 816 + 981 + + + + + + + + + + + + e9eb1dcf-92f6-4d4d-84ae-96222d60f56b + Move + + + + + Translate (move) an object along a vector. + ed40d732-05e2-42e6-b935-4856b911cfc3 + Move + Move + + + + + + 875 + 929 + 73 + 44 + + + 902 + 951 + + + + + + Base geometry + 26dfe39e-f78d-4f85-8d82-628622882cef + Geometry + G + true + 7413f076-90d4-4edf-b09b-4148ab5455a8 + 1 + + + + + + 877 + 931 + 10 + 20 + + + 883.5 + 941 + + + + + + + + Translation vector + c32ee708-f915-49f1-99d2-dc3aae299536 + Motion + T + false + 0a564858-bb5e-4a5d-9627-a81f76fa57d8 + 1 + + + + + + 877 + 951 + 10 + 20 + + + 883.5 + 961 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 10 + + + + + + + + + + + + Translated geometry + 8843c7bf-2a1c-4055-9f4f-52c97578cb42 + 1 + Geometry + G + false + 0 + + + + + + 917 + 931 + 29 + 20 + + + 923.5 + 941 + + + + + + + + Transformation data + b71256e2-baf1-4ac1-bf9b-725cfbee6445 + Transform + X + false + 0 + + + + + + 917 + 951 + 29 + 20 + + + 923.5 + 961 + + + + + + + + + + + + 56b92eab-d121-43f7-94d3-6cd8f0ddead8 + Vector XYZ + + + + + Create a vector from {xyz} components. + bf977be7-bcdd-4b7d-af14-70654c973d18 + Vector XYZ + Vec + + + + + + 845 + 976 + 71 + 64 + + + 887 + 1008 + + + + + + Vector {x} component + abf784fc-da02-4141-aff3-3692b557eff1 + 0.5*x +0.0005 + X component + X + false + d87fb28a-1fe7-43f1-9815-d869f233b385 + 1 + + + + + + 847 + 978 + 25 + 20 + + + 869 + 988 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {y} component + 9b1a80ca-e788-4319-82d5-1284ccb5a39d + Y component + Y + false + 0 + + + + + + 847 + 998 + 25 + 20 + + + 869 + 1008 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {z} component + 884da9fc-1ed3-47ea-9d7e-2ca638702bb6 + 1*x + 0.001 + Z component + Z + false + 38da7932-bace-4722-99e8-41530a8b7e79 + 1 + + + + + + 847 + 1018 + 25 + 20 + + + 869 + 1028 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector construct + 0a564858-bb5e-4a5d-9627-a81f76fa57d8 + Vector + V + false + 0 + + + + + + 902 + 978 + 12 + 30 + + + 908 + 993 + + + + + + + + Vector length + 3ecbc8c6-7163-4f86-b8e7-15a8e4d9434d + Length + L + false + 0 + + + + + + 902 + 1008 + 12 + 30 + + + 908 + 1023 + + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + ea9e7fe6-ff02-4a88-b813-3087b50d1029 + 7fa5418f-1f66-4c96-bb86-389e5f642741 + 322851fc-2052-4674-8d38-da537933ff29 + 99734e21-0c08-4685-af12-3ba4039ac001 + 283d9bf2-6447-4402-854f-899da397a476 + 5 + 76f7fe76-8716-4e03-bc4b-255253fe5e65 + Group + + + + + + + + + + + 4c619bc9-39fd-4717-82a6-1e07ea237bbe + Line SDL + + + + + Create a line segment defined by start point, tangent and length.} + true + ea9e7fe6-ff02-4a88-b813-3087b50d1029 + Line SDL + Line + + + + + + 691 + 1073 + 56 + 64 + + + 718 + 1105 + + + + + + Line start point + 2330ed5b-4e79-4b27-a4ae-06aa32110204 + Start + S + false + 79a19e6e-1d5b-4fc3-ab55-b50cd14630d9 + 1 + + + + + + 693 + 1075 + 10 + 20 + + + 699.5 + 1085 + + + + + + + + Line tangent (direction) + 2874f894-93f7-4436-9097-0cfad337f38e + Direction + D + false + 1cc2fa64-a288-4238-a6b5-42ae97c06db9 + 1 + + + + + + 693 + 1095 + 10 + 20 + + + 699.5 + 1105 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 1 + + + + + + + + + + + + Line length + 1701dccc-7085-44b2-b477-94ad9c9a9c18 + Length + L + false + 7fa5418f-1f66-4c96-bb86-389e5f642741 + 1 + + + + + + 693 + 1115 + 10 + 20 + + + 699.5 + 1125 + + + + + + 1 + + + + + 1 + {0} + + + + + 1 + + + + + + + + + + + Line segment + 3c95dee4-5d80-4196-b2b6-9b87af071b28 + Line + L + false + 0 + + + + + + 733 + 1075 + 12 + 60 + + + 739 + 1105 + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 7fa5418f-1f66-4c96-bb86-389e5f642741 + Number Slider + + false + 0 + + + + + + 504 + 1115 + 163 + 20 + + + 504.1653 + 1115.932 + + + + + + 3 + 1 + 0 + 0.1 + 0 + 0 + 0.032 + + + + + + + + + 2162e72e-72fc-4bf8-9459-d4d82fa8aa14 + Divide Curve + + + + + Divide a curve into equal length segments + true + 322851fc-2052-4674-8d38-da537933ff29 + Divide Curve + Divide + + + + + + 766 + 1072 + 56 + 64 + + + 793 + 1104 + + + + + + Curve to divide + 8e3c91ce-05af-422f-9190-f11c625898ce + Curve + C + false + 3c95dee4-5d80-4196-b2b6-9b87af071b28 + 1 + + + + + + 768 + 1074 + 10 + 20 + + + 774.5 + 1084 + + + + + + 1 + + + + + 1 + {0} + + + + + -1 + 42b29fa2-5c15-41ab-b712-10d737bed7ac + + + + + + + + + + + Number of segments + 6b5087df-2684-4477-91f2-a2bfc64be3f8 + Count + N + false + 0 + + + + + + 768 + 1094 + 10 + 20 + + + 774.5 + 1104 + + + + + + 1 + + + + + 1 + {0} + + + + + 1 + + + + + + + + + + + Split segments at kinks + 47830475-27ab-47c9-ac1a-f8dadb50c2fd + Kinks + K + false + 0 + + + + + + 768 + 1114 + 10 + 20 + + + 774.5 + 1124 + + + + + + 1 + + + + + 1 + {0} + + + + + false + + + + + + + + + + + 1 + Division points + 4b60d3d1-8cb3-4d3f-b1dd-0d5f7e7cdc92 + Points + P + false + 0 + + + + + + 808 + 1074 + 12 + 20 + + + 814 + 1084 + + + + + + + + 1 + Tangent vectors at division points + d8c11327-2008-4e97-b8b1-c6d26da94425 + Tangents + T + false + 0 + + + + + + 808 + 1094 + 12 + 20 + + + 814 + 1104 + + + + + + + + 1 + Parameter values at division points + bc46a527-7c77-4ab3-b4b7-215a1b03f0dd + Parameters + t + false + 0 + + + + + + 808 + 1114 + 12 + 20 + + + 814 + 1124 + + + + + + + + + + + + e9eb1dcf-92f6-4d4d-84ae-96222d60f56b + Move + + + + + Translate (move) an object along a vector. + 99734e21-0c08-4685-af12-3ba4039ac001 + Move + Move + + + + + + 876 + 1072 + 73 + 44 + + + 903 + 1094 + + + + + + Base geometry + c13e0a73-d9f8-4506-b9a9-3907857eefa4 + Geometry + G + true + 4b60d3d1-8cb3-4d3f-b1dd-0d5f7e7cdc92 + 1 + + + + + + 878 + 1074 + 10 + 20 + + + 884.5 + 1084 + + + + + + + + Translation vector + 846908bb-304d-44d9-a628-b03d294f150b + Motion + T + false + d9f9b8d1-b7e4-402e-9ac4-0c6bd1616d16 + 1 + + + + + + 878 + 1094 + 10 + 20 + + + 884.5 + 1104 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 10 + + + + + + + + + + + + Translated geometry + 266ecaa4-c6e6-4d90-b910-27572cd124b7 + 1 + Geometry + G + false + 0 + + + + + + 918 + 1074 + 29 + 20 + + + 924.5 + 1084 + + + + + + + + Transformation data + 18dc0401-4798-45b3-8571-352760bbe410 + Transform + X + false + 0 + + + + + + 918 + 1094 + 29 + 20 + + + 924.5 + 1104 + + + + + + + + + + + + 56b92eab-d121-43f7-94d3-6cd8f0ddead8 + Vector XYZ + + + + + Create a vector from {xyz} components. + 283d9bf2-6447-4402-854f-899da397a476 + Vector XYZ + Vec + + + + + + 841 + 1129 + 71 + 64 + + + 883 + 1161 + + + + + + Vector {x} component + 50028188-f5a3-4cff-870e-971fcb48e9af + x+0.0005 + X component + X + false + d87fb28a-1fe7-43f1-9815-d869f233b385 + 1 + + + + + + 843 + 1131 + 25 + 20 + + + 865 + 1141 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {y} component + 03646ddd-7101-45d7-8a07-5ee9c2489c45 + Y component + Y + false + 0 + + + + + + 843 + 1151 + 25 + 20 + + + 865 + 1161 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {z} component + c245a9e5-af0e-475e-933c-156edebcaa42 + 2*x + 2*0.001 + Z component + Z + false + 38da7932-bace-4722-99e8-41530a8b7e79 + 1 + + + + + + 843 + 1171 + 25 + 20 + + + 865 + 1181 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector construct + d9f9b8d1-b7e4-402e-9ac4-0c6bd1616d16 + Vector + V + false + 0 + + + + + + 898 + 1131 + 12 + 30 + + + 904 + 1146 + + + + + + + + Vector length + fe4c9f88-32f1-4ef3-b493-c8cdf129ba8d + Length + L + false + 0 + + + + + + 898 + 1161 + 12 + 30 + + + 904 + 1176 + + + + + + + + + + + + 59daf374-bc21-4a5e-8282-5504fb7ae9ae + List Item + + + + + 0 + Retrieve a specific item from a list. + 4e636644-b823-456e-9273-04a733ed6251 + List Item + Item + + + + + + 1174 + 810 + 58 + 64 + + + 1203 + 842 + + + + + + 3 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 2e3ab970-8545-46bb-836c-1c11e5610bce + cb95db89-6165-43b6-9c41-5702bc5bf137 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + 1 + Base list + b72dae72-9131-4fd1-ac32-8d509ef8a597 + List + L + false + af025e60-14ba-4c28-9dc9-21f04af24737 + 1 + + + + + + 1176 + 812 + 12 + 20 + + + 1183.5 + 822 + + + + + + + + Item index + 665a1634-1bde-45f9-9499-1de219e8bb0f + Index + i + false + 750fd83e-475e-457a-8900-4ec1748903c9 + 1 + + + + + + 1176 + 832 + 12 + 20 + + + 1183.5 + 842 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Wrap index to list bounds + a6a1c2c5-8aba-43a5-96d8-607ae4007599 + Wrap + W + false + 0 + + + + + + 1176 + 852 + 12 + 20 + + + 1183.5 + 862 + + + + + + 1 + + + + + 1 + {0} + + + + + true + + + + + + + + + + + Item at {i'} + bd698c7d-c7c4-442d-b790-ff6930fb16a5 + false + Item + i + false + 0 + + + + + + 1218 + 812 + 12 + 60 + + + 1224 + 842 + + + + + + + + + + + + + + 59daf374-bc21-4a5e-8282-5504fb7ae9ae + List Item + + + + + 0 + Retrieve a specific item from a list. + fb9384c0-9fc4-4771-931e-12d9d1a8140c + List Item + Item + + + + + + 2110 + 873 + 58 + 64 + + + 2139 + 905 + + + + + + 3 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 2e3ab970-8545-46bb-836c-1c11e5610bce + cb95db89-6165-43b6-9c41-5702bc5bf137 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + 1 + Base list + 16f25357-db5e-4c86-8f0d-baab19cf7576 + List + L + false + c818cec5-fc6d-4c1d-9452-fa15ce31c9ad + 1 + + + + + + 2112 + 875 + 12 + 20 + + + 2119.5 + 885 + + + + + + + + Item index + 78e5a5e6-d305-425f-808b-3d8f28f05fcd + Index + i + false + e023d2b7-87c6-4ca7-9350-fd27936f7322 + 1 + + + + + + 2112 + 895 + 12 + 20 + + + 2119.5 + 905 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Wrap index to list bounds + 9cc8a9d5-9c32-48b5-afcb-10fd4d4fe7e0 + Wrap + W + false + 0 + + + + + + 2112 + 915 + 12 + 20 + + + 2119.5 + 925 + + + + + + 1 + + + + + 1 + {0} + + + + + true + + + + + + + + + + + Item at {i'} + 4f71d325-568e-44cb-a557-d39b0f640dcd + false + Item + i + false + 0 + + + + + + 2154 + 875 + 12 + 60 + + + 2160 + 905 + + + + + + + + + + + + + + 59daf374-bc21-4a5e-8282-5504fb7ae9ae + List Item + + + + + 0 + Retrieve a specific item from a list. + 3a996974-9fdf-40c8-a956-b66641f9c5bd + List Item + Item + + + + + + 2068 + 613 + 58 + 64 + + + 2097 + 645 + + + + + + 3 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + 2e3ab970-8545-46bb-836c-1c11e5610bce + cb95db89-6165-43b6-9c41-5702bc5bf137 + 1 + 8ec86459-bf01-4409-baee-174d0d2b13d0 + + + + + 1 + Base list + a9ae7317-bc7b-4d77-869c-f93099caf911 + List + L + false + 018e7fe5-7b7b-4795-a848-46b5058d6488 + 1 + + + + + + 2070 + 615 + 12 + 20 + + + 2077.5 + 625 + + + + + + + + Item index + 44ebbdc6-3053-4e94-ab6d-24348b41e457 + Index + i + false + 0255eb72-e138-4712-a86e-b6296f1f1490 + 1 + + + + + + 2070 + 635 + 12 + 20 + + + 2077.5 + 645 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Wrap index to list bounds + e9cd87fc-db59-45be-96c7-7ecfa6f4c9c7 + Wrap + W + false + 0 + + + + + + 2070 + 655 + 12 + 20 + + + 2077.5 + 665 + + + + + + 1 + + + + + 1 + {0} + + + + + true + + + + + + + + + + + Item at {i'} + 4066d8af-276e-49f9-8416-1ae7d13ef971 + false + Item + i + false + 0 + + + + + + 2112 + 615 + 12 + 60 + + + 2118 + 645 + + + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 0255eb72-e138-4712-a86e-b6296f1f1490 + Number Slider + + false + 0 + + + + + + 1873 + 636 + 157 + 20 + + + 1873.841 + 636.2581 + + + + + + 3 + 1 + 1 + 112 + 0 + 0 + 93 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 750fd83e-475e-457a-8900-4ec1748903c9 + Number Slider + + false + 0 + + + + + + 876 + 698 + 157 + 20 + + + 876.7572 + 698.089 + + + + + + 3 + 1 + 1 + 8 + 0 + 0 + 1 + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + 35751672-ebc9-4233-9be8-f68aeadf8d8a + f46e49b5-a27e-4610-b94f-dcf0d663895b + e533476e-d3b3-41dc-9462-9ffadaba3637 + b9b52d86-fc50-4ce3-b550-202f5693849d + 5cbb2f1e-7022-4588-b5fb-a85d2fe8c21a + 525a8a4c-8c1f-4a47-834b-2d42acb85441 + 3b72ac8b-7146-4b8a-911c-328bd10ac3ca + bc133248-6369-4f26-ab75-31129d6ab664 + 320bc8a7-6a2c-4cec-8e37-6b688afe3895 + 2e3ae2ac-a7c1-44bb-a86f-5a7999e61ed2 + 10 + 755672f7-d4af-4cb7-906f-a9077b832137 + Group + + + + + + + + + + + c552a431-af5b-46a9-a8a4-0fcbc27ef596 + Group + + + + + 1 + + 150;170;135;255 + + A group of Grasshopper objects + b9b52d86-fc50-4ce3-b550-202f5693849d + 320bc8a7-6a2c-4cec-8e37-6b688afe3895 + 2e3ae2ac-a7c1-44bb-a86f-5a7999e61ed2 + 3 + 35751672-ebc9-4233-9be8-f68aeadf8d8a + Group + + + + + + + + + + + 934ede4a-924a-4973-bb05-0dc4b36fae75 + Vector 2Pt + + + + + Create a vector between two points. + true + f46e49b5-a27e-4610-b94f-dcf0d663895b + Vector 2Pt + Vec2Pt + + + + + + 674 + 1293 + 56 + 64 + + + 701 + 1325 + + + + + + Base point + 0c345aba-11f4-4231-b3b4-25250bba3544 + Point A + A + false + 525a8a4c-8c1f-4a47-834b-2d42acb85441 + 1 + + + + + + 676 + 1295 + 10 + 20 + + + 682.5 + 1305 + + + + + + + + Tip point + 848400e0-b6fa-43a1-b456-ce50322a51a3 + Point B + B + false + b4e83913-46de-4496-9089-b58121746140 + 1 + + + + + + 676 + 1315 + 10 + 20 + + + 682.5 + 1325 + + + + + + + + Unitize output + 297f3dd3-f86d-4c78-bd1b-124dcd05383f + Unitize + U + false + 0 + + + + + + 676 + 1335 + 10 + 20 + + + 682.5 + 1345 + + + + + + 1 + + + + + 1 + {0} + + + + + false + + + + + + + + + + + Vector + 1e4caf5f-fc54-4a0b-b759-6ec01d965038 + Vector + V + false + 0 + + + + + + 716 + 1295 + 12 + 30 + + + 722 + 1310 + + + + + + + + Vector length + fed3c08b-9b83-43ac-89c4-04c1ae878a36 + Length + L + false + 0 + + + + + + 716 + 1325 + 12 + 30 + + + 722 + 1340 + + + + + + + + + + + + e9eb1dcf-92f6-4d4d-84ae-96222d60f56b + Move + + + + + Translate (move) an object along a vector. + true + e533476e-d3b3-41dc-9462-9ffadaba3637 + Move + Move + + + + + + 740 + 1373 + 57 + 44 + + + 767 + 1395 + + + + + + Base geometry + 896513e5-7fd1-4411-8d4b-2298a93ced19 + Geometry + G + true + 072893bb-d29b-4453-9920-6bdae29f92c8 + 1 + + + + + + 742 + 1375 + 10 + 20 + + + 748.5 + 1385 + + + + + + + + Translation vector + c9692661-855e-4de4-9176-2694fd83efd1 + Motion + T + false + 38496f12-3fa3-4951-8b4b-ec92bde66774 + 1 + + + + + + 742 + 1395 + 10 + 20 + + + 748.5 + 1405 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 10 + + + + + + + + + + + + Translated geometry + 1e3a6989-884e-4d2d-847d-94e01060038c + Geometry + G + false + 0 + + + + + + 782 + 1375 + 13 + 20 + + + 788.5 + 1385 + + + + + + + + Transformation data + 3d6f823e-ee0d-4d88-87f8-cef87dac3d52 + Transform + X + false + 0 + + + + + + 782 + 1395 + 13 + 20 + + + 788.5 + 1405 + + + + + + + + + + + + 378d0690-9da0-4dd1-ab16-1d15246e7c22 + Orient + + + + + Orient an object. Orientation is sometimes called a 'ChangeBasis tranformation'. It allows for remapping of geometry from one axis-system to another. + true + b9b52d86-fc50-4ce3-b550-202f5693849d + Orient + Orient + + + + + + 582 + 1368 + 57 + 64 + + + 609 + 1400 + + + + + + Base geometry + db60be57-34a1-45a4-b32d-0f4b52cb26bc + Geometry + G + true + 6088143e-d145-4a47-8c41-51e32cd53990 + 1 + + + + + + 584 + 1370 + 10 + 20 + + + 590.5 + 1380 + + + + + + + + Initial plane + 13ed2577-e817-47a7-9b3c-d0d2bbf4aba9 + Source + A + false + c00816ee-4bf1-4794-ace7-e6996d258d91 + 1 + + + + + + 584 + 1390 + 10 + 20 + + + 590.5 + 1400 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + + + + + + + + + + + + Final plane + 45364268-2ca9-4085-a25d-67c85ce27b0b + Target + B + false + 36430155-f01b-465b-af8d-7c97573ae688 + 1 + + + + + + 584 + 1410 + 10 + 20 + + + 590.5 + 1420 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + + + + + + + + + + + + Reoriented geometry + 072893bb-d29b-4453-9920-6bdae29f92c8 + Geometry + G + false + 0 + + + + + + 624 + 1370 + 13 + 30 + + + 630.5 + 1385 + + + + + + + + Transformation data + bce18a41-d369-4c4a-a8b7-b8c1ac413881 + Transform + X + false + 0 + + + + + + 624 + 1400 + 13 + 30 + + + 630.5 + 1415 + + + + + + + + + + + + 56b92eab-d121-43f7-94d3-6cd8f0ddead8 + Vector XYZ + + + + + Create a vector from {xyz} components. + 5cbb2f1e-7022-4588-b5fb-a85d2fe8c21a + Vector XYZ + Vec + + + + + + 659 + 1396 + 71 + 64 + + + 701 + 1428 + + + + + + Vector {x} component + 2c3fcb97-60bf-4d17-94ce-fc50af6dad69 + X component + X + false + 0 + + + + + + 661 + 1398 + 25 + 20 + + + 683 + 1408 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {y} component + 3e6f7417-04d1-4100-8ca1-9f11d51dfb18 + Y component + Y + false + 0 + + + + + + 661 + 1418 + 25 + 20 + + + 683 + 1428 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector {z} component + 35fd88ad-9e56-4e85-af9d-c9eec2954b94 + -0.5*x + Z component + Z + false + 38da7932-bace-4722-99e8-41530a8b7e79 + 1 + + + + + + 661 + 1438 + 25 + 20 + + + 683 + 1448 + + + + + + 1 + + + + + 1 + {0} + + + + + 0 + + + + + + + + + + + Vector construct + 38496f12-3fa3-4951-8b4b-ec92bde66774 + Vector + V + false + 0 + + + + + + 716 + 1398 + 12 + 30 + + + 722 + 1413 + + + + + + + + Vector length + 5dfbbc30-15b1-4c28-8a02-f9a7d4414327 + Length + L + false + 0 + + + + + + 716 + 1428 + 12 + 30 + + + 722 + 1443 + + + + + + + + + + + + fbac3e32-f100-4292-8692-77240a42fd1a + Point + + + + + Contains a collection of three-dimensional points + 525a8a4c-8c1f-4a47-834b-2d42acb85441 + Point + Pt + false + 3b72ac8b-7146-4b8a-911c-328bd10ac3ca + 1 + + + + + + 587 + 1296 + 50 + 20 + + + 612.3378 + 1306.013 + + + + + + + + + + 59e0b89a-e487-49f8-bab8-b5bab16be14c + Panel + + + + + A panel for custom notes and text values + 3b72ac8b-7146-4b8a-911c-328bd10ac3ca + Panel + + false + 0 + 0 + 0,0,0 + + + + + + 509 + 1294 + 56 + 24 + + 0 + 0 + 0 + + 509.7157 + 1294.605 + + + + + + 1 + + 255;255;250;90 + + true + true + true + false + false + true + + + + + Courier New + 8 + + + + + + + + + + + e9eb1dcf-92f6-4d4d-84ae-96222d60f56b + Move + + + + + Translate (move) an object along a vector. + bc133248-6369-4f26-ab75-31129d6ab664 + Move + Move + + + + + + 760 + 1278 + 57 + 44 + + + 787 + 1300 + + + + + + Base geometry + 6946457f-c2b3-4481-a7a0-2e31abff5fcb + Geometry + G + true + 1e3a6989-884e-4d2d-847d-94e01060038c + 1 + + + + + + 762 + 1280 + 10 + 20 + + + 768.5 + 1290 + + + + + + + + Translation vector + 8d66f433-e197-4df4-96d2-a5013283c246 + Motion + T + false + 1e4caf5f-fc54-4a0b-b759-6ec01d965038 + 1 + + + + + + 762 + 1300 + 10 + 20 + + + 768.5 + 1310 + + + + + + 1 + + + + + 1 + {0} + + + + + + 0 + 0 + 10 + + + + + + + + + + + + Translated geometry + 97ebc644-a351-4065-9935-a1f74ff41a9f + Geometry + G + false + 0 + + + + + + 802 + 1280 + 13 + 20 + + + 808.5 + 1290 + + + + + + + + Transformation data + 85ff3a85-3889-4977-9a0d-c524e73b9230 + Transform + X + false + 0 + + + + + + 802 + 1300 + 13 + 20 + + + 808.5 + 1310 + + + + + + + + + + + + fad344bc-09b1-4855-a2e6-437ef5715fe3 + YZ Plane + + + + + World YZ plane. + 320bc8a7-6a2c-4cec-8e37-6b688afe3895 + YZ Plane + YZ + + + + + + 508 + 1429 + 56 + 28 + + + 535 + 1443 + + + + + + Origin of plane + a9b8b49b-653e-43d8-85a9-52d8208a797b + Origin + O + false + 0 + + + + + + 510 + 1431 + 10 + 24 + + + 516.5 + 1443 + + + + + + 1 + + + + + 1 + {0} + + + + + + + 0 + 0 + 0 + + + + + + + + + + + + World YZ plane + 36430155-f01b-465b-af8d-7c97573ae688 + Plane + P + false + 0 + + + + + + 550 + 1431 + 12 + 24 + + + 556 + 1443 + + + + + + + + + + + + 8cc3a196-f6a0-49ea-9ed9-0cb343a3ae64 + XZ Plane + + + + + World XZ plane. + 2e3ae2ac-a7c1-44bb-a86f-5a7999e61ed2 + XZ Plane + XZ + + + + + + 507 + 1409 + 56 + 28 + + + 534 + 1423 + + + + + + Origin of plane + 80f6ce13-d8e7-452b-b513-714fcf4258d3 + Origin + O + false + 0 + + + + + + 509 + 1411 + 10 + 24 + + + 515.5 + 1423 + + + + + + 1 + + + + + 1 + {0} + + + + + + + 0 + 0 + 0 + + + + + + + + + + + + World XZ plane + c00816ee-4bf1-4794-ace7-e6996d258d91 + Plane + P + false + 0 + + + + + + 549 + 1411 + 12 + 24 + + + 555 + 1423 + + + + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + e023d2b7-87c6-4ca7-9350-fd27936f7322 + Number Slider + + false + 0 + + + + + + 1885 + 895 + 157 + 20 + + + 1885.355 + 895.4221 + + + + + + 3 + 1 + 1 + 100 + 0 + 0 + 15 + + + + + + + + + 57da07bd-ecab-415d-9d86-af36d7073abc + Number Slider + + + + + Numeric slider for single values + 3cf3489b-a232-4df1-af3a-85d4e2b9062d + Number Slider + + false + 0 + + + + + + 1355 + 851 + 157 + 20 + + + 1355.635 + 851.5984 + + + + + + 3 + 1 + 1 + 8 + 0 + 0 + 8 + + + + + + + + + + + + + + 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 + + + + + \ No newline at end of file diff --git a/lecture_06/assignment_05/asling/assembly.json b/lecture_06/assignment_05/asling/assembly.json new file mode 100644 index 0000000..5c2acd5 --- /dev/null +++ b/lecture_06/assignment_05/asling/assembly.json @@ -0,0 +1,9817 @@ +{ + "dtype": "assembly/Assembly", + "value": { + "compas": "1.1.0", + "data": { + "adjacency": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {}, + "6": {}, + "7": {}, + "8": {} + }, + "attributes": { + "approach_offset": 0.050000000000000003, + "element": { + "dtype": "compas.geometry/Box", + "value": { + "frame": { + "point": [ + 0.0, + 0.0, + 0.0 + ], + "xaxis": [ + 1.0, + 0.0, + 0.0 + ], + "yaxis": [ + 0.0, + 1.0, + 0.0 + ] + }, + "xsize": 0.016, + "ysize": 0.031, + "zsize": 0.012 + } + }, + "home_config": { + "dtype": "compas_fab.robots/Configuration", + "value": { + "joint_names": [], + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.5700000000000001, + -1.5700000000000001, + 1.5700000000000001, + -1.5700000000000001, + -1.5700000000000001, + -3.1400000000000001 + ] + } + }, + "name": "Network", + "pick_t0cf_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.63915837424403632, + -0.1580254622009728, + 0.082120000000000012 + ], + "xaxis": [ + 0.00079632671073326345, + 0.0, + -0.99999968293183472 + ], + "yaxis": [ + 0.99999968293183472, + 0.0, + 0.00079632671073326345 + ] + } + }, + "pick_trajectory": { + "dtype": "compas_fab.robots/JointTrajectory", + "value": { + "attached_collision_meshes": [ + { + "collision_mesh": { + "frame": { + "point": [ + 0.0, + 0.0, + 0.0 + ], + "xaxis": [ + 1.0, + 0.0, + 0.0 + ], + "yaxis": [ + 0.0, + 1.0, + 0.0 + ] + }, + "id": "attached_tool_link_collision_0", + "mesh": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Mesh" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2 + ], + "1": [ + 1, + 3, + 2 + ], + "10": [ + 9, + 11, + 10 + ], + "100": [ + 52, + 70, + 35 + ], + "101": [ + 52, + 35, + 13 + ], + "102": [ + 1, + 52, + 13 + ], + "103": [ + 1, + 13, + 15 + ], + "104": [ + 83, + 1, + 15 + ], + "105": [ + 83, + 15, + 49 + ], + "106": [ + 82, + 83, + 49 + ], + "107": [ + 82, + 49, + 48 + ], + "108": [ + 79, + 82, + 48 + ], + "109": [ + 79, + 48, + 45 + ], + "11": [ + 10, + 12, + 1 + ], + "110": [ + 80, + 79, + 45 + ], + "111": [ + 80, + 45, + 47 + ], + "112": [ + 81, + 80, + 47 + ], + "113": [ + 81, + 47, + 46 + ], + "114": [ + 85, + 81, + 46 + ], + "115": [ + 85, + 46, + 51 + ], + "116": [ + 10, + 85, + 51 + ], + "117": [ + 10, + 51, + 37 + ], + "118": [ + 84, + 10, + 37 + ], + "119": [ + 84, + 37, + 50 + ], + "12": [ + 6, + 1, + 12 + ], + "120": [ + 75, + 84, + 50 + ], + "121": [ + 75, + 50, + 41 + ], + "122": [ + 71, + 75, + 41 + ], + "123": [ + 71, + 41, + 36 + ], + "124": [ + 78, + 71, + 36 + ], + "125": [ + 78, + 36, + 44 + ], + "126": [ + 76, + 78, + 44 + ], + "127": [ + 76, + 44, + 43 + ], + "128": [ + 77, + 76, + 43 + ], + "129": [ + 77, + 43, + 42 + ], + "13": [ + 13, + 14, + 15 + ], + "130": [ + 72, + 77, + 42 + ], + "131": [ + 72, + 42, + 38 + ], + "132": [ + 74, + 72, + 38 + ], + "133": [ + 74, + 38, + 40 + ], + "134": [ + 9, + 74, + 40 + ], + "135": [ + 9, + 40, + 19 + ], + "136": [ + 73, + 9, + 19 + ], + "137": [ + 73, + 19, + 39 + ], + "138": [ + 58, + 73, + 39 + ], + "139": [ + 58, + 39, + 23 + ], + "14": [ + 16, + 15, + 17 + ], + "140": [ + 59, + 58, + 23 + ], + "141": [ + 59, + 23, + 25 + ], + "142": [ + 60, + 59, + 25 + ], + "143": [ + 60, + 25, + 24 + ], + "144": [ + 61, + 60, + 24 + ], + "145": [ + 61, + 24, + 26 + ], + "146": [ + 54, + 61, + 26 + ], + "147": [ + 54, + 26, + 18 + ], + "148": [ + 62, + 54, + 18 + ], + "149": [ + 62, + 18, + 27 + ], + "15": [ + 18, + 19, + 16 + ], + "150": [ + 57, + 62, + 27 + ], + "151": [ + 57, + 27, + 22 + ], + "152": [ + 5, + 57, + 22 + ], + "153": [ + 5, + 22, + 16 + ], + "154": [ + 55, + 5, + 16 + ], + "155": [ + 55, + 16, + 20 + ], + "156": [ + 56, + 55, + 20 + ], + "157": [ + 56, + 20, + 21 + ], + "158": [ + 0, + 56, + 21 + ], + "159": [ + 0, + 21, + 17 + ], + "16": [ + 20, + 16, + 21 + ], + "160": [ + 64, + 0, + 17 + ], + "161": [ + 64, + 17, + 29 + ], + "162": [ + 7, + 86, + 8 + ], + "163": [ + 8, + 86, + 87 + ], + "164": [ + 87, + 11, + 8 + ], + "165": [ + 88, + 7, + 4 + ], + "166": [ + 4, + 2, + 88 + ], + "167": [ + 12, + 89, + 6 + ], + "168": [ + 6, + 89, + 90 + ], + "169": [ + 6, + 90, + 3 + ], + "17": [ + 18, + 16, + 22 + ], + "170": [ + 3, + 90, + 2 + ], + "171": [ + 91, + 12, + 11 + ], + "172": [ + 7, + 88, + 86 + ], + "173": [ + 2, + 90, + 88 + ], + "174": [ + 89, + 12, + 91 + ], + "175": [ + 87, + 91, + 11 + ], + "176": [ + 92, + 93, + 94 + ], + "177": [ + 92, + 94, + 95 + ], + "178": [ + 93, + 96, + 97 + ], + "179": [ + 93, + 97, + 94 + ], + "18": [ + 16, + 17, + 21 + ], + "180": [ + 96, + 98, + 99 + ], + "181": [ + 96, + 99, + 97 + ], + "182": [ + 98, + 92, + 95 + ], + "183": [ + 98, + 95, + 99 + ], + "184": [ + 94, + 99, + 95 + ], + "185": [ + 99, + 94, + 97 + ], + "186": [ + 88, + 93, + 86 + ], + "187": [ + 92, + 86, + 93 + ], + "188": [ + 91, + 87, + 92 + ], + "189": [ + 86, + 92, + 87 + ], + "19": [ + 23, + 24, + 25 + ], + "190": [ + 92, + 98, + 91 + ], + "191": [ + 91, + 98, + 89 + ], + "192": [ + 96, + 89, + 98 + ], + "193": [ + 88, + 90, + 96 + ], + "194": [ + 89, + 96, + 90 + ], + "195": [ + 96, + 93, + 88 + ], + "2": [ + 2, + 4, + 0 + ], + "20": [ + 26, + 24, + 18 + ], + "21": [ + 18, + 24, + 19 + ], + "22": [ + 18, + 22, + 27 + ], + "23": [ + 28, + 29, + 17 + ], + "24": [ + 30, + 15, + 31 + ], + "25": [ + 32, + 28, + 30 + ], + "26": [ + 17, + 30, + 28 + ], + "27": [ + 15, + 30, + 17 + ], + "28": [ + 33, + 34, + 31 + ], + "29": [ + 15, + 14, + 31 + ], + "3": [ + 4, + 5, + 0 + ], + "30": [ + 33, + 31, + 14 + ], + "31": [ + 14, + 13, + 35 + ], + "32": [ + 16, + 19, + 15 + ], + "33": [ + 19, + 24, + 23 + ], + "34": [ + 36, + 37, + 19 + ], + "35": [ + 36, + 19, + 38 + ], + "36": [ + 39, + 19, + 23 + ], + "37": [ + 19, + 40, + 38 + ], + "38": [ + 36, + 41, + 37 + ], + "39": [ + 38, + 42, + 43 + ], + "4": [ + 1, + 6, + 3 + ], + "40": [ + 44, + 36, + 43 + ], + "41": [ + 36, + 38, + 43 + ], + "42": [ + 15, + 19, + 37 + ], + "43": [ + 45, + 46, + 47 + ], + "44": [ + 45, + 15, + 37 + ], + "45": [ + 15, + 45, + 48 + ], + "46": [ + 48, + 49, + 15 + ], + "47": [ + 45, + 37, + 46 + ], + "48": [ + 50, + 37, + 41 + ], + "49": [ + 37, + 51, + 46 + ], + "5": [ + 7, + 8, + 9 + ], + "50": [ + 52, + 1, + 53 + ], + "51": [ + 54, + 5, + 9 + ], + "52": [ + 55, + 56, + 5 + ], + "53": [ + 54, + 57, + 5 + ], + "54": [ + 5, + 56, + 0 + ], + "55": [ + 58, + 59, + 60 + ], + "56": [ + 61, + 54, + 60 + ], + "57": [ + 54, + 9, + 60 + ], + "58": [ + 54, + 62, + 57 + ], + "59": [ + 63, + 0, + 64 + ], + "6": [ + 4, + 7, + 5 + ], + "60": [ + 65, + 66, + 1 + ], + "61": [ + 67, + 65, + 63 + ], + "62": [ + 0, + 63, + 65 + ], + "63": [ + 1, + 0, + 65 + ], + "64": [ + 68, + 66, + 69 + ], + "65": [ + 1, + 66, + 53 + ], + "66": [ + 68, + 53, + 66 + ], + "67": [ + 53, + 70, + 52 + ], + "68": [ + 9, + 58, + 60 + ], + "69": [ + 71, + 9, + 10 + ], + "7": [ + 9, + 5, + 7 + ], + "70": [ + 71, + 72, + 9 + ], + "71": [ + 73, + 58, + 9 + ], + "72": [ + 9, + 72, + 74 + ], + "73": [ + 71, + 10, + 75 + ], + "74": [ + 72, + 76, + 77 + ], + "75": [ + 78, + 76, + 71 + ], + "76": [ + 71, + 76, + 72 + ], + "77": [ + 79, + 80, + 81 + ], + "78": [ + 79, + 10, + 1 + ], + "79": [ + 1, + 82, + 79 + ], + "8": [ + 10, + 11, + 12 + ], + "80": [ + 82, + 1, + 83 + ], + "81": [ + 79, + 81, + 10 + ], + "82": [ + 84, + 75, + 10 + ], + "83": [ + 10, + 81, + 85 + ], + "84": [ + 63, + 64, + 29 + ], + "85": [ + 63, + 29, + 28 + ], + "86": [ + 67, + 63, + 28 + ], + "87": [ + 67, + 28, + 32 + ], + "88": [ + 65, + 67, + 32 + ], + "89": [ + 65, + 32, + 30 + ], + "9": [ + 11, + 9, + 8 + ], + "90": [ + 66, + 65, + 30 + ], + "91": [ + 66, + 30, + 31 + ], + "92": [ + 69, + 66, + 31 + ], + "93": [ + 69, + 31, + 34 + ], + "94": [ + 68, + 69, + 34 + ], + "95": [ + 68, + 34, + 33 + ], + "96": [ + 53, + 68, + 33 + ], + "97": [ + 53, + 33, + 14 + ], + "98": [ + 70, + 53, + 14 + ], + "99": [ + 70, + 14, + 35 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "10": {}, + "100": {}, + "101": {}, + "102": {}, + "103": {}, + "104": {}, + "105": {}, + "106": {}, + "107": {}, + "108": {}, + "109": {}, + "11": {}, + "110": {}, + "111": {}, + "112": {}, + "113": {}, + "114": {}, + "115": {}, + "116": {}, + "117": {}, + "118": {}, + "119": {}, + "12": {}, + "120": {}, + "121": {}, + "122": {}, + "123": {}, + "124": {}, + "125": {}, + "126": {}, + "127": {}, + "128": {}, + "129": {}, + "13": {}, + "130": {}, + "131": {}, + "132": {}, + "133": {}, + "134": {}, + "135": {}, + "136": {}, + "137": {}, + "138": {}, + "139": {}, + "14": {}, + "140": {}, + "141": {}, + "142": {}, + "143": {}, + "144": {}, + "145": {}, + "146": {}, + "147": {}, + "148": {}, + "149": {}, + "15": {}, + "150": {}, + "151": {}, + "152": {}, + "153": {}, + "154": {}, + "155": {}, + "156": {}, + "157": {}, + "158": {}, + "159": {}, + "16": {}, + "160": {}, + "161": {}, + "162": {}, + "163": {}, + "164": {}, + "165": {}, + "166": {}, + "167": {}, + "168": {}, + "169": {}, + "17": {}, + "170": {}, + "171": {}, + "172": {}, + "173": {}, + "174": {}, + "175": {}, + "176": {}, + "177": {}, + "178": {}, + "179": {}, + "18": {}, + "180": {}, + "181": {}, + "182": {}, + "183": {}, + "184": {}, + "185": {}, + "186": {}, + "187": {}, + "188": {}, + "189": {}, + "19": {}, + "190": {}, + "191": {}, + "192": {}, + "193": {}, + "194": {}, + "195": {}, + "2": {}, + "20": {}, + "21": {}, + "22": {}, + "23": {}, + "24": {}, + "25": {}, + "26": {}, + "27": {}, + "28": {}, + "29": {}, + "3": {}, + "30": {}, + "31": {}, + "32": {}, + "33": {}, + "34": {}, + "35": {}, + "36": {}, + "37": {}, + "38": {}, + "39": {}, + "4": {}, + "40": {}, + "41": {}, + "42": {}, + "43": {}, + "44": {}, + "45": {}, + "46": {}, + "47": {}, + "48": {}, + "49": {}, + "5": {}, + "50": {}, + "51": {}, + "52": {}, + "53": {}, + "54": {}, + "55": {}, + "56": {}, + "57": {}, + "58": {}, + "59": {}, + "6": {}, + "60": {}, + "61": {}, + "62": {}, + "63": {}, + "64": {}, + "65": {}, + "66": {}, + "67": {}, + "68": {}, + "69": {}, + "7": {}, + "70": {}, + "71": {}, + "72": {}, + "73": {}, + "74": {}, + "75": {}, + "76": {}, + "77": {}, + "78": {}, + "79": {}, + "8": {}, + "80": {}, + "81": {}, + "82": {}, + "83": {}, + "84": {}, + "85": {}, + "86": {}, + "87": {}, + "88": {}, + "89": {}, + "9": {}, + "90": {}, + "91": {}, + "92": {}, + "93": {}, + "94": {}, + "95": {}, + "96": {}, + "97": {}, + "98": {}, + "99": {} + }, + "max_face": 195, + "max_vertex": 99, + "vertex": { + "0": { + "x": 0.014816462062299252, + "y": -0.0047768764197826385, + "z": -0.029393302276730537 + }, + "1": { + "x": 0.014816462062299252, + "y": 0.029754780232906342, + "z": 0.0011990766506642103 + }, + "10": { + "x": 0.014816462062299252, + "y": 0.011672346852719784, + "z": 0.027396004647016525 + }, + "11": { + "x": 0.014816462062299252, + "y": -0.010380548425018787, + "z": 0.011409667320549488 + }, + "12": { + "x": 0.014816462062299252, + "y": 0.010380548425018787, + "z": 0.011409667320549488 + }, + "13": { + "x": 0.0, + "y": 0.029561810195446014, + "z": -0.0035894536413252354 + }, + "14": { + "x": 0.0, + "y": 0.026903789490461349, + "z": -0.012766006402671337 + }, + "15": { + "x": 0.0, + "y": 0.029754780232906342, + "z": 0.0011990766506642103 + }, + "16": { + "x": 0.0, + "y": -0.017889462411403656, + "z": -0.023806551471352577 + }, + "17": { + "x": 0.0, + "y": -0.0047768764197826385, + "z": -0.029393302276730537 + }, + "18": { + "x": 0.0, + "y": -0.026903789490461349, + "z": -0.012766006402671337 + }, + "19": { + "x": 0.0, + "y": -0.025789311155676842, + "z": 0.014889465644955635 + }, + "2": { + "x": 0.014816462062299252, + "y": 0.010380548425018787, + "z": -0.011409667320549488 + }, + "20": { + "x": 0.0, + "y": -0.01383895892649889, + "z": -0.026367934420704842 + }, + "21": { + "x": 0.0, + "y": -0.0094300340861082077, + "z": -0.028246402740478516 + }, + "22": { + "x": 0.0, + "y": -0.021476637572050095, + "z": -0.020628591999411583 + }, + "23": { + "x": 0.0, + "y": -0.029177118092775345, + "z": 0.0059565515257418156 + }, + "24": { + "x": 0.0, + "y": -0.029561810195446014, + "z": -0.0035894536413252354 + }, + "25": { + "x": 0.0, + "y": -0.029754780232906342, + "z": 0.0011990766506642103 + }, + "26": { + "x": 0.0, + "y": -0.028603203594684601, + "z": -0.008285018615424633 + }, + "27": { + "x": 0.0, + "y": -0.024507580325007439, + "z": -0.016916360706090927 + }, + "28": { + "x": 0.0, + "y": 0.0047768764197826385, + "z": -0.029393302276730537 + }, + "29": { + "x": 0.0, + "y": -2.045294925157771e-19, + "z": -0.02977893128991127 + }, + "3": { + "x": 0.014816462062299252, + "y": 0.010380548425018787, + "z": -0.008969305083155632 + }, + "30": { + "x": 0.0, + "y": 0.01383895892649889, + "z": -0.026367934420704842 + }, + "31": { + "x": 0.0, + "y": 0.017889462411403656, + "z": -0.023806551471352577 + }, + "32": { + "x": 0.0, + "y": 0.0094300340861082077, + "z": -0.028246402740478516 + }, + "33": { + "x": 0.0, + "y": 0.024507580325007439, + "z": -0.016916360706090927 + }, + "34": { + "x": 0.0, + "y": 0.021476637572050095, + "z": -0.020628591999411583 + }, + "35": { + "x": 0.0, + "y": 0.028603203594684601, + "z": -0.008285018615424633 + }, + "36": { + "x": 0.0, + "y": -0.0023962082341313362, + "z": 0.029682368040084839 + }, + "37": { + "x": 0.0, + "y": 0.011672346852719784, + "z": 0.027396004647016525 + }, + "38": { + "x": 0.0, + "y": -0.019747084006667137, + "z": 0.022289849817752838 + }, + "39": { + "x": 0.0, + "y": -0.027843784540891647, + "z": 0.010559754446148872 + }, + "4": { + "x": 0.014816462062299252, + "y": 0.0057308273389935493, + "z": -0.011409667320549488 + }, + "40": { + "x": 0.0, + "y": -0.023066908121109009, + "z": 0.018833547830581665 + }, + "41": { + "x": 0.0, + "y": 0.0023962082341313362, + "z": 0.029682368040084839 + }, + "42": { + "x": 0.0, + "y": -0.015915822237730026, + "z": 0.025168856605887413 + }, + "43": { + "x": 0.0, + "y": -0.011672346852719784, + "z": 0.027396004647016525 + }, + "44": { + "x": 0.0, + "y": -0.0071265646256506443, + "z": 0.028913609683513641 + }, + "45": { + "x": 0.0, + "y": 0.025789311155676842, + "z": 0.014889465644955635 + }, + "46": { + "x": 0.0, + "y": 0.019747084006667137, + "z": 0.022289849817752838 + }, + "47": { + "x": 0.0, + "y": 0.023066908121109009, + "z": 0.018833547830581665 + }, + "48": { + "x": 0.0, + "y": 0.027843784540891647, + "z": 0.010559754446148872 + }, + "49": { + "x": 0.0, + "y": 0.029177118092775345, + "z": 0.0059565515257418156 + }, + "5": { + "x": 0.014816462062299252, + "y": -0.017889462411403656, + "z": -0.023806551471352577 + }, + "50": { + "x": 0.0, + "y": 0.0071265646256506443, + "z": 0.028913609683513641 + }, + "51": { + "x": 0.0, + "y": 0.015915822237730026, + "z": 0.025168856605887413 + }, + "52": { + "x": 0.014816462062299252, + "y": 0.029561810195446014, + "z": -0.0035894536413252354 + }, + "53": { + "x": 0.014816462062299252, + "y": 0.026903789490461349, + "z": -0.012766006402671337 + }, + "54": { + "x": 0.014816462062299252, + "y": -0.026903789490461349, + "z": -0.012766006402671337 + }, + "55": { + "x": 0.014816462062299252, + "y": -0.01383895892649889, + "z": -0.026367934420704842 + }, + "56": { + "x": 0.014816462062299252, + "y": -0.0094300340861082077, + "z": -0.028246402740478516 + }, + "57": { + "x": 0.014816462062299252, + "y": -0.021476637572050095, + "z": -0.020628591999411583 + }, + "58": { + "x": 0.014816462062299252, + "y": -0.029177118092775345, + "z": 0.0059565515257418156 + }, + "59": { + "x": 0.014816462062299252, + "y": -0.029754780232906342, + "z": 0.0011990766506642103 + }, + "6": { + "x": 0.014816462062299252, + "y": 0.010380548425018787, + "z": 0.0059743961319327354 + }, + "60": { + "x": 0.014816462062299252, + "y": -0.029561810195446014, + "z": -0.0035894536413252354 + }, + "61": { + "x": 0.014816462062299252, + "y": -0.028603203594684601, + "z": -0.008285018615424633 + }, + "62": { + "x": 0.014816462062299252, + "y": -0.024507580325007439, + "z": -0.016916360706090927 + }, + "63": { + "x": 0.014816462062299252, + "y": 0.0047768764197826385, + "z": -0.029393302276730537 + }, + "64": { + "x": 0.014816462062299252, + "y": -2.045294925157771e-19, + "z": -0.02977893128991127 + }, + "65": { + "x": 0.014816462062299252, + "y": 0.01383895892649889, + "z": -0.026367934420704842 + }, + "66": { + "x": 0.014816462062299252, + "y": 0.017889462411403656, + "z": -0.023806551471352577 + }, + "67": { + "x": 0.014816462062299252, + "y": 0.0094300340861082077, + "z": -0.028246402740478516 + }, + "68": { + "x": 0.014816462062299252, + "y": 0.024507580325007439, + "z": -0.016916360706090927 + }, + "69": { + "x": 0.014816462062299252, + "y": 0.021476637572050095, + "z": -0.020628591999411583 + }, + "7": { + "x": 0.014816462062299252, + "y": -0.010380548425018787, + "z": -0.011409667320549488 + }, + "70": { + "x": 0.014816462062299252, + "y": 0.028603203594684601, + "z": -0.008285018615424633 + }, + "71": { + "x": 0.014816462062299252, + "y": -0.0023962082341313362, + "z": 0.029682368040084839 + }, + "72": { + "x": 0.014816462062299252, + "y": -0.019747084006667137, + "z": 0.022289849817752838 + }, + "73": { + "x": 0.014816462062299252, + "y": -0.027843784540891647, + "z": 0.010559754446148872 + }, + "74": { + "x": 0.014816462062299252, + "y": -0.023066908121109009, + "z": 0.018833547830581665 + }, + "75": { + "x": 0.014816462062299252, + "y": 0.0023962082341313362, + "z": 0.029682368040084839 + }, + "76": { + "x": 0.014816462062299252, + "y": -0.011672346852719784, + "z": 0.027396004647016525 + }, + "77": { + "x": 0.014816462062299252, + "y": -0.015915822237730026, + "z": 0.025168856605887413 + }, + "78": { + "x": 0.014816462062299252, + "y": -0.0071265646256506443, + "z": 0.028913609683513641 + }, + "79": { + "x": 0.014816462062299252, + "y": 0.025789311155676842, + "z": 0.014889465644955635 + }, + "8": { + "x": 0.014816462062299252, + "y": -0.010380548425018787, + "z": 0.011091546155512333 + }, + "80": { + "x": 0.014816462062299252, + "y": 0.023066908121109009, + "z": 0.018833547830581665 + }, + "81": { + "x": 0.014816462062299252, + "y": 0.019747084006667137, + "z": 0.022289849817752838 + }, + "82": { + "x": 0.014816462062299252, + "y": 0.027843784540891647, + "z": 0.010559754446148872 + }, + "83": { + "x": 0.014816462062299252, + "y": 0.029177118092775345, + "z": 0.0059565515257418156 + }, + "84": { + "x": 0.014816462062299252, + "y": 0.0071265646256506443, + "z": 0.028913609683513641 + }, + "85": { + "x": 0.014816462062299252, + "y": 0.015915822237730026, + "z": 0.025168856605887413 + }, + "86": { + "x": 0.05451495572924614, + "y": -0.010380548425018787, + "z": -0.011409667320549488 + }, + "87": { + "x": 0.05451495572924614, + "y": -0.010380548425018787, + "z": 0.011409667320549488 + }, + "88": { + "x": 0.05451495572924614, + "y": -0.0068432968109846115, + "z": -0.011409667320549488 + }, + "89": { + "x": 0.05451495572924614, + "y": 0.010380548425018787, + "z": 0.011409667320549488 + }, + "9": { + "x": 0.014816462062299252, + "y": -0.025789311155676842, + "z": 0.014889465644955635 + }, + "90": { + "x": 0.05451495572924614, + "y": 0.010380548425018787, + "z": -0.011409667320549488 + }, + "91": { + "x": 0.05451495572924614, + "y": 0.0068432968109846115, + "z": 0.011409667320549488 + }, + "92": { + "x": 0.05451495572924614, + "y": -0.017271781340241432, + "z": 0.028796831145882607 + }, + "93": { + "x": 0.05451495572924614, + "y": -0.017271781340241432, + "z": -0.028796831145882607 + }, + "94": { + "x": 0.070000000298023224, + "y": -0.017271781340241432, + "z": -0.028796831145882607 + }, + "95": { + "x": 0.070000000298023224, + "y": -0.017271781340241432, + "z": 0.028796831145882607 + }, + "96": { + "x": 0.05451495572924614, + "y": 0.017271781340241432, + "z": -0.028796831145882607 + }, + "97": { + "x": 0.070000000298023224, + "y": 0.017271781340241432, + "z": -0.028796831145882607 + }, + "98": { + "x": 0.05451495572924614, + "y": 0.017271781340241432, + "z": 0.028796831145882607 + }, + "99": { + "x": 0.070000000298023224, + "y": 0.017271781340241432, + "z": 0.028796831145882607 + } + } + }, + "datatype": "compas.datastructures/Mesh" + }, + "root_name": "ee_link" + }, + "link_name": "ee_link", + "touch_links": [ + "ee_link" + ], + "weight": 0.0 + }, + { + "collision_mesh": { + "frame": { + "point": [ + 0.076000000000000012, + 0.0, + 0.0 + ], + "xaxis": [ + 0.0, + 0.0, + 1.0 + ], + "yaxis": [ + 0.0, + 1.0, + -0.0 + ] + }, + "id": "brick", + "mesh": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Mesh" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 1, + 2, + 3 + ], + "1": [ + 3, + 0, + 1 + ], + "10": [ + 5, + 6, + 7 + ], + "11": [ + 7, + 4, + 5 + ], + "2": [ + 3, + 5, + 4 + ], + "3": [ + 4, + 0, + 3 + ], + "4": [ + 2, + 6, + 5 + ], + "5": [ + 5, + 3, + 2 + ], + "6": [ + 1, + 7, + 6 + ], + "7": [ + 6, + 2, + 1 + ], + "8": [ + 0, + 4, + 7 + ], + "9": [ + 7, + 1, + 0 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "10": {}, + "11": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {}, + "6": {}, + "7": {}, + "8": {}, + "9": {} + }, + "max_face": 11, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + }, + "root_name": "ee_link" + }, + "link_name": "ee_link", + "touch_links": [ + "ee_link" + ], + "weight": 0.0 + } + ], + "fraction": 1.0, + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "points": [ + { + "accelerations": [ + -1.8266198090047343, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 0, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.5700000000000001, + -1.5700000000000001, + 1.5700000000000001, + -1.5700000000000001, + -1.5700000000000001, + -3.1400000000000001 + ], + "velocities": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ] + }, + { + "accelerations": [ + -1.9645866967081818, + -2.2451859935885601, + 3.0671114090628557, + -0.82152024738846774, + -0.0034621506179514866, + -1.9674554906226032 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 128084141, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.555016651278408, + -1.5882855981777575, + 1.595465044112802, + -1.5771751649027854, + -1.5700272556452106, + -3.1550063135917048 + ], + "velocities": [ + -0.20562821371567716, + -0.24407152243878077, + 0.33721169317334454, + -0.093088464812985453, + -0.00036901685912772611, + -0.20593695698548367 + ] + }, + { + "accelerations": [ + -2.2192851347990379, + -2.2193513695775899, + 2.907088474769739, + -0.68744751227903411, + -0.0036792577971465337, + -2.2222245018987565 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 180491295, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.539594488260644, + -1.6063860152327907, + 1.6203903277445819, + -1.5839963635945686, + -1.5700547819194952, + -3.1704514409710267 + ], + "velocities": [ + -0.34554886080640784, + -0.39665513237656602, + 0.54277193805352031, + -0.14604012685735673, + -0.00061024209599619319, + -0.34605496142050746 + ] + }, + { + "accelerations": [ + -2.517800168399853, + -2.2670848941082657, + 2.8677196258666648, + -0.60047730367881225, + -0.0039827868096784748, + -2.5208900784915667 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 220497589, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.5237191181545422, + -1.6243060191045773, + 1.6447915851466239, + -1.590474281824483, + -1.5700825961084861, + -3.1863497750852328 + ], + "velocities": [ + -0.44303069577969789, + -0.48953714998687103, + 0.66256637278911712, + -0.172942964153911, + -0.00076834093354497207, + -0.44366141440848406 + ] + }, + { + "accelerations": [ + -2.6992236228197077, + -2.1704590156320034, + 2.6377771073520861, + -0.46733883208622395, + -0.0040605389536161737, + -2.7022785923188568 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 253902819, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.5073759574445689, + -1.6420490295318952, + 1.6686829149993077, + -1.5966196232435206, + -1.5701107044897054, + -3.2027158994648723 + ], + "velocities": [ + -0.53156596641656806, + -0.56517954302973095, + 0.75656013403342359, + -0.19129176832512773, + -0.00090510964384218667, + -0.53230129861373654 + ] + }, + { + "accelerations": [ + -3.0965598685873483, + -2.282363592380777, + 2.690503053744453, + -0.40833053618980486, + -0.0044796378844258068, + -3.0998547387158224 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 283221379, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.4905502603157899, + -1.6596171325966049, + 1.6920768674721258, + -1.6024428780338582, + -1.5701391078043545, + -3.2195645599747849 + ], + "velocities": [ + -0.61691015963268725, + -0.63092128644149348, + 0.83529979396095033, + -0.20429266450564332, + -0.0010310144495517229, + -0.61773916940718276 + ] + }, + { + "accelerations": [ + -2.7348667773668245, + -1.6347775519862386, + 1.7558005977655566, + -0.12149224022855272, + -0.0036336621235929533, + -2.7373964534493873 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 309471336, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.4732271795798539, + -1.6770110936495781, + 1.7149845908503709, + -1.6079544566625539, + -1.5701678054688493, + -3.2369106037145654 + ], + "velocities": [ + -0.69459687011233573, + -0.6833516503535374, + 0.89493424864657789, + -0.21150535752095825, + -0.001139308756678789, + -0.69550372042203656 + ] + }, + { + "accelerations": [ + -2.5481680221843108, + -1.2235760927658446, + 1.1652998580863885, + 0.057582922828224449, + -0.0031173900089109564, + -2.5502239597895424 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 333927908, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.4553918381371906, + -1.6942303582112372, + 1.7374159610472477, + -1.6131648187161436, + -1.570196795589746, + -3.2547689078757234 + ], + "velocities": [ + -0.75965205118622792, + -0.7186659700123218, + 0.93108780313207729, + -0.21235880772743504, + -0.0012225454689034944, + -0.76061548582270011 + ] + }, + { + "accelerations": [ + -2.5205195474203665, + -0.99572375564065474, + 0.83399644105818005, + 0.16083746805853849, + -0.0028765577758114447, + -2.5223375081945045 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 357170357, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.4370294129254613, + -1.7112730419666131, + 1.7593796964432153, + -1.6180845976509688, + -1.5702260745572261, + -3.2731542954920694 + ], + "velocities": [ + -0.81874060236619151, + -0.74459556238476687, + 0.95448080519692691, + -0.20984061807000312, + -0.0012924762177944314, + -0.8197492554790442 + ] + }, + { + "accelerations": [ + -2.4205444385315498, + -0.72488078055108807, + 0.46473610329879311, + 0.25906318525817923, + -0.0025335153310980883, + -2.42206012273122 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 379477678, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.4181252328605678, + -1.7281359111325107, + 1.7808834605480788, + -1.6227247231732709, + -1.5702556369516714, + -3.2920814377100109 + ], + "velocities": [ + -0.87401784237912428, + -0.76389271890801413, + 0.96908019308472348, + -0.205164856126969, + -0.0013530481212380746, + -0.87506383799432852 + ] + }, + { + "accelerations": [ + -2.4941946958538317, + -0.61993000780249297, + 0.31966091185320039, + 0.29900349241573471, + -0.0024647506500919559, + -2.4956335814122927 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 401086046, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.3986648920669227, + -1.7448143542801968, + 1.8019339542894333, + -1.6270965415972718, + -1.5702854751557933, + -3.3115647403374777 + ], + "velocities": [ + -0.92716259668744927, + -0.77845502652170384, + 0.97758773068668503, + -0.1991354417642586, + -0.0014071195170453242, + -0.92824056082702044 + ] + }, + { + "accelerations": [ + -2.377095612283294, + -0.36786887789057626, + 0.0027215105575117025, + 0.36370171905798226, + -0.0021113675322966649, + -2.3782530942984237 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 422088281, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.3786343799259595, + -1.7613023467348969, + 1.8225369996538949, + -1.6312119351555621, + -1.57031557924873, + -3.33161821405634 + ], + "velocities": [ + -0.97842582074274742, + -0.78888037259739474, + 0.98102123802081387, + -0.19217210255266887, + -0.0014553086817119876, + -0.97953113683353976 + ] + }, + { + "accelerations": [ + -2.516408887601977, + -0.33072081545141713, + -0.035751796195258562, + 0.3648391474828887, + -0.002139770905369846, + -2.5175873249554543 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 442638331, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.3580202292229486, + -1.7775924085996428, + 1.8426976158909008, + -1.6350834400627015, + -1.5703459366395542, + -3.3522553261539385 + ], + "velocities": [ + -1.0287038413624283, + -0.79606429248042976, + 0.9806860171647217, + -0.18468458690511597, + -0.0014989969838975407, + -1.0298331627498605 + ] + }, + { + "accelerations": [ + -2.1400898736949125, + 0.083223530088303049, + -0.52403703415285474, + 0.43903805449030542, + -0.0014314908555107199, + -2.1407510324381942 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 462756683, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.3368096837311556, + -1.7936755575526639, + 1.8624200894160026, + -1.638724363436485, + -1.5703765316684486, + -3.3734888327746275 + ], + "velocities": [ + -1.0756925920439717, + -0.79859440175183882, + 0.97508135398168216, + -0.17658417925350955, + -0.0015350693454580496, + -1.0768405073200051 + ] + }, + { + "accelerations": [ + -2.2531394981159156, + 0.1106392928155546, + -0.52653104347871216, + 0.41271777558063949, + -0.0010034606861216535, + -2.2538338801663693 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 482644443, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.3149908864410575, + -1.8095412576818402, + 1.8817080384000657, + -1.6421488990702107, + -1.5704073454944423, + -3.3953305910382157 + ], + "velocities": [ + -1.1193700248082505, + -0.79666832175244018, + 0.96463519452502999, + -0.1681132331291102, + -0.0015593060866913111, + -1.1205314169505662 + ] + }, + { + "accelerations": [ + -2.3729352981910545, + 0.14284939025266902, + -0.5297745025980356, + 0.38600796412543148, + -0.0018310665872784354, + -2.3736678954053332 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 502298423, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.2925530525613877, + -1.8251774647042702, + 1.9005646600761834, + -1.64537280695306, + -1.5704381870249293, + -3.4177913858055247 + ], + "velocities": [ + -1.164820936489265, + -0.79417932266763325, + 0.95425563319731777, + -0.16026300525649262, + -0.0015871106766340765, + -1.1659963485441451 + ] + }, + { + "accelerations": [ + -2.5000595812787996, + 0.17922873379917845, + -0.5312021462693548, + 0.34965398076243254, + -0.0014279732162185222, + -2.5008361025903865 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 521714447, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.2694868433180702, + -1.8405701788199318, + 1.9189920408953194, + -1.6484112724593882, + -1.5704693496587281, + -3.4408805558118836 + ], + "velocities": [ + -1.2121173374426846, + -0.79105497288352433, + 0.94395640899290822, + -0.1531194652693787, + -0.0016187716663588604, + -1.2133073964533538 + ] + }, + { + "accelerations": [ + -1.9567872715594634, + 0.62610270821377711, + -1.0099897470032566, + 0.38150987328543545, + -0.00054461232463355255, + -1.9569826503230814 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 540887508, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.2457844130253037, + -1.8557039727408218, + 1.936992319695596, + -1.6512823666452208, + -1.5705006505960035, + -3.4646059468103401 + ], + "velocities": [ + -1.2549656855312685, + -0.78333309682173158, + 0.92916453479797201, + -0.14609459661261706, + -0.0016377605255367645, + -1.2561651059421042 + ] + }, + { + "accelerations": [ + -2.0229274138052009, + 0.6632828877416399, + -0.99150245442207996, + 0.32570323890868269, + -0.00048850233274021877, + -2.0231586357890055 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 560000867, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.2214398180468811, + -1.8705615566439395, + 1.9545670017918024, + -1.6540049295755483, + -1.5705320533350478, + -3.488973502485174 + ], + "velocities": [ + -1.2929924007685512, + -0.77101309720844557, + 0.91003916617199909, + -0.13933598465698857, + -0.0016476332637501566, + -1.2941958969417668 + ] + }, + { + "accelerations": [ + -2.0925187663287033, + 0.70507979381193608, + -0.97271143061474141, + 0.26495447154424567, + -0.00041804482751429023, + -2.0927912651618916 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 579044330, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.1964492808394456, + -1.885123824546018, + 1.9717171833170799, + -1.6565992021817195, + -1.5705635187195726, + -3.5139870004313716 + ], + "velocities": [ + -1.3321713635042394, + -0.75798666546823079, + 0.89133890726842746, + -0.13371159805965782, + -0.0016562651959418223, + -1.3333796544698848 + ] + }, + { + "accelerations": [ + -2.1659248270901665, + 0.7520627809421695, + -0.95361453603999147, + 0.19871695747729923, + -0.0003427382698514348, + -2.1662446324136915 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 598006437, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.1708115028381916, + -1.8993698173415643, + 1.9884435973981525, + -1.6590869199545049, + -1.5705950003156219, + -3.5396477392707388 + ], + "velocities": [ + -1.3725374879897818, + -0.74417477507730023, + 0.87307796342079036, + -0.12931479156259143, + -0.001663478658775603, + -1.3737513926397742 + ] + }, + { + "accelerations": [ + -2.2435557552471641, + 0.80489908982451197, + -0.93421925021754604, + 0.12630937642179541, + -0.00025197878467659218, + -2.243929581068385 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 616874419, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.1445279939904831, + -1.9132766917999693, + 2.004746649044161, + -1.6614913691176167, + -1.5706264479597236, + -3.5659542091162586 + ], + "velocities": [ + -1.4141267464133591, + -0.72949049367566376, + 0.85527099587530042, + -0.12624723782006406, + -0.0016690904608468568, + -1.415347192183356 + ] + }, + { + "accelerations": [ + -3.1321773249212033, + 0.48934890513155066, + -0.47334018275565592, + -0.019505792894027655, + -0.0010563335907576277, + -3.133277035858661 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 635634165, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.1176034108157495, + -1.9268197066012551, + 2.020626452828354, + -1.6638374452604485, + -1.5706578041406376, + -3.592901753513821 + ], + "velocities": [ + -1.4643698043522897, + -0.71736653796425998, + 0.84207946047603432, + -0.12524051298942934, + -0.0016812876892987705, + -1.465603997089165 + ] + }, + { + "accelerations": [ + -1.6250006352116351, + 1.3181509357164629, + -1.3481723990808794, + 0.026929666086512743, + 0.00086533391586055442, + -1.6248414241296874 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 654085699, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.0900459003860827, + -1.9399722217636379, + 2.0360828605460912, + -1.666151672945718, + -1.5706890077973785, + -3.620482225458622 + ], + "velocities": [ + -1.5085176402174709, + -0.70063875852595325, + 0.82522330599987948, + -0.12517322878375342, + -0.0016831216816398141, + -1.5097605927712969 + ] + }, + { + "accelerations": [ + -1.6545850649636034, + 1.3606297880928129, + -1.2967022724199668, + -0.067109687389981562, + 0.00097642024930190484, + -1.6544967745347914 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 672581238, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.061867438987929, + -1.9527057221269535, + 2.0511154905151852, + -1.6684622187296261, + -1.5707199902084572, + -3.6486836487356076 + ], + "velocities": [ + -1.5388388447858419, + -0.67587210145687648, + 0.80077092977541431, + -0.12554551550670773, + -0.0016660930469612092, + -1.5400795097084368 + ] + }, + { + "accelerations": [ + -1.6865523219002991, + 1.410195773188651, + -1.2474309498519143, + -0.16605374256641828, + 0.0011066347296008806, + -1.686540862232343 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 691101505, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.0330841602493426, + -1.9649898616085035, + 2.0657237459298896, + -1.6707988568608976, + -1.5707506793524442, + -3.6774898897883563 + ], + "velocities": [ + -1.5697695055660374, + -0.65022103471217807, + 0.77721881497219636, + -0.1277043738889809, + -0.0016468087244587884, + -1.571009247324946 + ] + }, + { + "accelerations": [ + -1.7211872576386009, + 1.4677660405110902, + -1.200521846889121, + -0.27062428915246772, + 0.0012358527688539483, + -1.7212591769803269 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 709625355, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 1.0037166574989087, + -1.9767925395468748, + 2.0799068339907754, + -1.6731929200316207, + -1.5707809947471205, + -3.7068803553632526 + ], + "velocities": [ + -1.6013218726279146, + -0.62357395252574299, + 0.75455300167104, + -0.13174739134367006, + -0.0016251197681442652, + -1.60256217402112 + ] + }, + { + "accelerations": [ + -1.7588035039595018, + 1.5343991284000569, + -1.1561643215507122, + -0.38172453183148952, + 0.0013881059325090447, + -1.7589661205313187 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 728129799, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.97379025369418792, + -1.9880800044232312, + 2.0936637713656445, + -1.6756771892748699, + -1.5708108549856843, + -3.7368297225742033 + ], + "velocities": [ + -1.6335084422677355, + -0.59580708203684951, + 0.73275536475680636, + -0.1377801638737704, + -0.0016008516570058455, + -1.6347509121919481 + ] + }, + { + "accelerations": [ + -1.7997461132351371, + 1.6113398199298363, + -1.1146204131886486, + -0.5003080757106636, + 0.0015431215292589465, + -1.800007607712969 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 746590060, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.94333521838444256, + -1.9988169988817563, + 2.1069933917278996, + -1.6782857672502502, + -1.570840170322664, + -3.7673077219451891 + ], + "velocities": [ + -1.6663419619573174, + -0.56678300999695108, + 0.71180263971826419, + -0.14591682054286553, + -0.0015738079651028739, + -1.6675883436598893 + ] + }, + { + "accelerations": [ + 4.7947139922207615e-14, + 2.2370822849946315, + -1.790743622813004, + -0.44893653225662283, + 0.0033244422305083307, + 0.00096962707125970672 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 764979678, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.91238692523456877, + -2.00896693845546, + 2.1198943379442912, + -1.681053880859015, + -1.5708688506231101, + -3.7982789798786234 + ], + "velocities": [ + -1.6829220686031972, + -0.53121860387210218, + 0.68494826086101601, + -0.15468396993916844, + -0.0015288008266058609, + -1.6841618785731836 + ] + }, + { + "accelerations": [ + 1.7480822733397854, + 2.681311784539175, + -2.317362696429814, + -0.36537797847864023, + 0.0048003691652986728, + 1.7501722928803745 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 783638294, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.88098592848746005, + -2.0184921361544133, + 2.1323650532850542, + -1.6840176536163809, + -1.5708968014100053, + -3.8297029421957296 + ], + "velocities": [ + -1.6663419619573174, + -0.48506707077443162, + 0.64638270515389551, + -0.16230756160833917, + -0.0014524793929433222, + -1.667552967891873 + ] + }, + { + "accelerations": [ + 1.6598460102918591, + 2.5203944565347278, + -2.0886993352532706, + -0.43296276535183281, + 0.0045580650446974333, + 1.6617025197672539 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 802918639, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.84917794954586157, + -2.0273540679750508, + 2.1444037613411795, + -1.6872138158516399, + -1.5709239278757972, + -3.8615338875504865 + ], + "velocities": [ + -1.6335084422677364, + -0.43495551684387512, + 0.60395032474144328, + -0.1700127007049011, + -0.0013623160127172031, + -1.634681445743918 + ] + }, + { + "accelerations": [ + 2.3447241134836641, + 2.5440879131751597, + -2.1444985390456854, + -0.40018666323049173, + 0.0049134809892654461, + 2.3469078455911601 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 822806778, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.81701375763476147, + -2.0355136841008648, + 2.1560084409570037, + -1.6906793702046721, + -1.570950134135493, + -3.8937210467673493 + ], + "velocities": [ + -1.5934734136376587, + -0.38447182496316545, + 0.56174672178943363, + -0.17831126062649005, + -0.001267847380610484, + -1.5946060892114282 + ] + }, + { + "accelerations": [ + 2.1905239348676031, + 2.34733833467204, + -1.9067554773582029, + -0.44103541531983004, + 0.0045596887950087213, + 2.1924477969945824 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 843489068, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.7845489363274244, + -2.0429317626753201, + 2.1671767931945154, + -1.6944512035393429, + -1.5709753254105323, + -3.9262088363130121 + ], + "velocities": [ + -1.5466095962613433, + -0.33393353894365385, + 0.51990386633955321, + -0.18701751800305777, + -0.0011699650770314895, + -1.547699850791139 + ] + }, + { + "accelerations": [ + 2.050478379665051, + 2.1751236870633255, + -1.7013464905849847, + -0.47409951409272971, + 0.0042372583498313642, + 2.0521716233864526 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 864955967, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.75184352807149746, + -2.0495693049410844, + 2.1779062028459046, + -1.69856565322968, + -1.5709994095166275, + -3.9589372137689338 + ], + "velocities": [ + -1.5011240368216117, + -0.285433715215616, + 0.48122304570412733, + -0.19684481144956201, + -0.00107562234568961, + -1.5021755188031083 + ] + }, + { + "accelerations": [ + 1.9232943852121929, + 2.0245985571471148, + -1.5241579377627017, + -0.50064589672976978, + 0.0039428850742163624, + 1.9247827579312153 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 887192738, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.71896155441422305, + -2.055387967398524, + 2.1881936954292001, + -1.7030580321537105, + -1.571022298412678, + -3.9918421576049918 + ], + "velocities": [ + -1.4569762009564309, + -0.23877868520989687, + 0.44540237294753371, + -0.20768501114927379, + -0.0009847487424380142, + -1.457992355377681 + ] + }, + { + "accelerations": [ + 2.3863767108108189, + 1.9561069129126998, + -1.5318312558871079, + -0.42392449323583575, + 0.0040134520200071694, + 2.3880850181216258 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 910179368, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.68597041463504871, + -2.060350525020179, + 2.1980358913998073, + -1.7079621200988202, + -1.5710439097767812, + -4.0248562685459603 + ], + "velocities": [ + -1.4072305990366982, + -0.19293642740644806, + 0.41019636204131826, + -0.21831945841684128, + -0.00089307827218929698, + -1.4082098813052322 + ] + }, + { + "accelerations": [ + 2.2036165456223094, + 1.786678781759111, + -1.3571117100844976, + -0.4291449772837736, + 0.003651214652511928, + 2.2051100404204784 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 934127698, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.6529401716247365, + -2.0644213574587078, + 2.2074289594459002, + -1.7133096308536102, + -1.5710641697162298, + -4.0579094836911809 + ], + "velocities": [ + -1.3523209458290459, + -0.14816670690347683, + 0.37565045799266117, + -0.22853400017981257, + -0.00080140020969702902, + -1.3532619460851207 + ] + }, + { + "accelerations": [ + 2.5237499972755972, + 1.6636610136839582, + -1.330062192205326, + -0.33271945635251976, + 0.0035706384133259599, + 2.5253950022521003 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 959023672, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.61994273800479904, + -2.0675669497908991, + 2.2163685726696025, + -1.7191296704001242, + -1.5710830113618557, + -4.0909298903970921 + ], + "velocities": [ + -1.2932484261938151, + -0.10514686998087289, + 0.34212765519091543, + -0.23801467298474965, + -0.00071130886570642832, + -1.2941502244672214 + ] + }, + { + "accelerations": [ + 2.2946807949737162, + 1.4894645803377362, + -1.1660928763985228, + -0.32247966231284003, + 0.0031720666555887086, + 2.2961108622283759 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 985105790, + "secs": 0 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.58705098498143837, + -2.069756395024092, + 2.2248498683320377, + -1.7254481945076459, + -1.5711003769085556, + -4.1238446174229102 + ], + "velocities": [ + -1.2304815030748435, + -0.064080109653041839, + 0.30962508856587889, + -0.24655576291533576, + -0.00062349862206659669, + -1.2313432645006483 + ] + }, + { + "accelerations": [ + 2.488047897752407, + 1.33413993377437, + -1.1177053952651677, + -0.21519790986645435, + 0.002989983134929639, + 2.4895754647584716 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 12369537, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.55433779915044001, + -2.0709618865611601, + 2.2328674146767495, + -1.7322874827265031, + -1.5711162224473614, + -4.1565807781240682 + ], + "velocities": [ + -1.1650546552469638, + -0.025542651459635135, + 0.27842958807073087, + -0.25386851548138717, + -0.00053934522036398519, + -1.1658759640666849 + ] + }, + { + "accelerations": [ + -2.509378313647737, + 1.365341737491313, + 0.042933475639384072, + -1.4112701146944495, + 0.00082601567337506614, + -2.5114604502209414 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 41091714, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.52187511235702877, + -2.0711591903178013, + 2.2404151903748861, + -1.7396656506132124, + -1.5711305116146579, + -4.1890664405980607 + ], + "velocities": [ + -1.1650546552469641, + 0.012078151991985274, + 0.26338145547535918, + -0.27646543965556647, + -0.00048603294037101658, + -1.1658834783689285 + ] + }, + { + "accelerations": [ + -2.3555151463064643, + 1.6722395816274036, + -0.090548884007682628, + -1.5846629516872319, + 0.0012585469661083942, + -2.3576235562073564 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 67879565, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.48973294390522171, + -2.0703280787178535, + 2.2474865740408259, + -1.7475962033123988, + -1.5711432243225252, + -4.2212315854715632 + ], + "velocities": [ + -1.2304815030748428, + 0.052751484948097636, + 0.26280085089516386, + -0.3166383454246251, + -0.00045821881713362306, + -1.2313666135946755 + ] + }, + { + "accelerations": [ + -2.636498607865474, + 2.0333684862968804, + -0.14332617134317996, + -1.8933730621095335, + 0.0015545853444605285, + -2.6389739217132862 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 93059850, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.45797847824509369, + -2.0684527196094482, + 2.2540743519515027, + -1.7560876587148566, + -1.5711543506780046, + -4.2530090282187398 + ], + "velocities": [ + -1.2932484261938137, + 0.099283376944271418, + 0.25987592770469442, + -0.36032456333835311, + -0.00042290255322978865, + -1.2941911268619717 + ] + }, + { + "accelerations": [ + 1.6393899959916836, + 1.7954793869991785, + -1.0226447418243867, + -0.77227267581832482, + 0.002984268671096644, + 1.6399343988149981 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 116677603, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.42667521469138342, + -2.0655220049854948, + 2.2601707416626819, + -1.7651432435138754, + -1.5711638907712866, + -4.2843352694441519 + ], + "velocities": [ + -1.3059223247762359, + 0.14543525501344626, + 0.24596957969158845, + -0.3926040458339134, + -0.00036845852567592407, + -1.3068887508589251 + ] + }, + { + "accelerations": [ + 2.5676167965736556, + 1.5580502889190133, + -1.1425867165481416, + -0.41390914726498984, + 0.0029965993842824379, + 2.5688309806117995 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 140614347, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.39588221647062627, + -2.0615298101607351, + 2.2657674332947293, + -1.7747606752573133, + -1.5711718612203598, + -4.3151512458346257 + ], + "velocities": [ + -1.2552141812866477, + 0.18572439682325675, + 0.2199197411032762, + -0.40681776872711972, + -0.00029654589319809757, + -1.2561593726619871 + ] + }, + { + "accelerations": [ + 2.3702016088434559, + 1.4245183512012611, + -1.049292477787686, + -0.37371787069734219, + 0.0026737983038438232, + 2.3712721279656459 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 165311110, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.36565347417688199, + -2.0564751790278732, + 2.2708556515942031, + -1.7849320428201738, + -1.5711782851474738, + -4.3454029667096057 + ], + "velocities": [ + -1.1942932240916431, + 0.22251954570152657, + 0.19287821241169825, + -0.41653359163145964, + -0.00022660458945970244, + -1.1952102374229159 + ] + }, + { + "accelerations": [ + 2.6045102464362406, + 1.1928657587725449, + -1.0246543181361272, + -0.16634763272491321, + 0.0024204240068794371, + 2.6057876054643656 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 190741568, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.33603740839281471, + -2.0503624258316249, + 2.2754262344179201, + -1.7956437830225818, + -1.5711831956944884, + -4.3750420113998825 + ], + "velocities": [ + -1.1308435398600198, + 0.25582735805318024, + 0.16645218233596495, + -0.42337232645174994, + -0.00016173550581555709, + -1.1317305868445575 + ] + }, + { + "accelerations": [ + 2.3658239248441424, + 1.0537917512028248, + -0.92909687633573412, + -0.12294253006218457, + 0.0020958863630225664, + 2.36695445862714 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 217139324, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.30707651572255179, + -2.0432011532455938, + 2.2794697286893739, + -1.8068767594884452, + -1.5711866372740093, + -4.4040258832158283 + ], + "velocities": [ + -1.0653057685431317, + 0.28544381427466442, + 0.14069085045431573, + -0.42717975402633912, + -0.00010221026239146877, + -1.066161073059003 + ] + }, + { + "accelerations": [ + 2.5471963154132671, + 0.7877483221951509, + -0.88610917350952034, + 0.10040411486313505, + 0.001819814815720053, + 2.5485346939671705 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 244491963, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.2788071596926151, + -2.0350061866506777, + 2.2829765015918602, + -1.8186064408546179, + -1.5711886626434151, + -4.4323182185490095 + ], + "velocities": [ + -0.99786547468651809, + 0.31062918130278477, + 0.1158044732138525, + -0.42742660000042243, + -4.8577353347397985e-05, + -0.99868685625798448 + ] + }, + { + "accelerations": [ + -2.6134804477557285, + 2.623996128699849, + -0.39180215666796653, + -2.235317859600551, + 0.0017455037010448773, + -2.6165398131827997 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 273121349, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.25125950160702609, + -2.0257974268062195, + 2.2859368638830233, + -1.8308031717091704, + -1.5711893242148141, + -4.459888856019341 + ], + "velocities": [ + -0.99786547468651809, + 0.35744685888577932, + 0.098058531361329554, + -0.45651235075704844, + 7.0150032969599406e-07, + -0.99870985638909793 + ] + }, + { + "accelerations": [ + -2.5603584036602185, + 3.095649221389106, + -0.61341526705990457, + -2.4854041341440758, + 0.0021859027854238908, + -2.5636646040591375 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 299054149, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.2244575695477202, + -2.0155996228793724, + 2.2883412010311268, + -1.8434325311260831, + -1.571188688572718, + -4.4867137674729971 + ], + "velocities": [ + -1.0653057685431322, + 0.43167709400036991, + 0.085097592763066165, + -0.5178636217188225, + 5.1652644647101528e-05, + -1.0662329334895251 + ] + }, + { + "accelerations": [ + -0.95242858248428053, + 2.8168472428697853, + -0.9270715629711862, + -1.891362498833326, + 0.0024064824720425233, + -0.95457963259597878 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 322787821, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.19841943477859481, + -2.0044420774059182, + 2.2901801108573974, + -1.8564557650774045, + -1.571186818497853, + -4.5127748815815423 + ], + "velocities": [ + -1.108122583330192, + 0.50272391755669044, + 0.066748773660008767, + -0.57061935894827531, + 0.00010665289222463069, + -1.1091157018101592 + ] + }, + { + "accelerations": [ + 6.9943105334726423e-14, + 2.5997498315173218, + -1.1188656623316775, + -1.4815035174536986, + 0.0024507776700067466, + -0.0014655183732822108 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 345360287, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.17315749505224709, + -1.9923582857003748, + 2.2914445413649438, + -1.8698302850624202, + -1.5711837822388408, + -4.5380598005342794 + ], + "velocities": [ + -1.1191484057770684, + 0.56421974675776276, + 0.043584488929630627, + -0.60897615502370606, + 0.00016174285084613932, + -1.120182709720636 + ] + }, + { + "accelerations": [ + -4.1269169558189206e-14, + 2.7758308388434685, + -1.2490761917236781, + -1.5276590615928456, + 0.0014488475969951287, + -0.0016182919802148472 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 367232866, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.1486788334436101, + -1.9793855226353354, + 2.2921259264412543, + -1.8835102166231203, + -1.5711796488883589, + -4.5625614412051148 + ], + "velocities": [ + -1.119148405777068, + 0.62297640215291739, + 0.017711423264870373, + -0.64187635871625148, + 0.00020456483861288558, + -1.1202164075917724 + ] + }, + { + "accelerations": [ + 0.52959018301401262, + 2.6076615601338484, + -1.3779705442786574, + -1.2295319461915484, + 0.0036912729399701744, + 0.52834887929795438 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 388403480, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.12498577397840994, + -1.965564359830587, + 2.292216332719907, + -1.8974471537239161, + -1.5711749880591195, + -4.5862774795925034 + ], + "velocities": [ + -1.1136080671346078, + 0.68012676171143949, + -0.010145353063378406, + -0.67117801005167366, + 0.00025877206291446476, + -1.1147064690342625 + ] + }, + { + "accelerations": [ + 0.53713762956550459, + 2.7034341275201359, + -1.4971609705740156, + -1.2063005627472982, + 0.002520974138864832, + 0.53578572305542138 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 409079100, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.10207578756152123, + -1.9509382827833985, + 2.2917085173389906, + -1.9115901214585187, + -1.5711688393671055, + -4.6092104446418114 + ], + "velocities": [ + -1.1025822446877305, + 0.73501561419160666, + -0.039850733406239139, + -0.69636009795239739, + 0.00032313381815394485, + -1.1037074388178005 + ] + }, + { + "accelerations": [ + 1.0797703906354148, + 2.379910228685354, + -1.5765167834414167, + -0.8028542356869327, + 0.0023484397768466559, + 1.0788890120846371 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 429253225, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.079942819466446144, + -1.9355530049472764, + 2.2905961080846233, + -1.9258871081481224, + -1.5711618010361266, + -4.6313663910740503 + ], + "velocities": [ + -1.0862881906971782, + 0.78644731543664448, + -0.0709214275144886, + -0.71671598744727283, + 0.0003723871371733815, + -1.0874360137415802 + ] + }, + { + "accelerations": [ + 1.0752661705613871, + 2.3861153635862435, + -1.6660958309796667, + -0.71947349550181838, + 0.0023086715066275043, + 1.0743168654952613 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 449119354, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.058577203432955756, + -1.9194560699284589, + 2.2888736658849931, + -1.9402851364092017, + -1.5711539361319498, + -4.6527549851793095 + ], + "velocities": [ + -1.064884021857835, + 0.83378298412807794, + -0.10312005400156346, + -0.73184225151776605, + 0.00041864465822025188, + -1.0660500219441276 + ] + }, + { + "accelerations": [ + 1.0714531910067362, + 2.3870944338622868, + -1.760859760547768, + -0.62568492957373456, + 0.0022715524894969708, + 1.0704368959242576 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 468668949, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.037966290911003946, + -1.9026962874685711, + 2.2865367531971201, + -1.9547309562489357, + -1.5711453070547723, + -4.6733888754061192 + ], + "velocities": [ + -1.0439015997037888, + 0.8804364418731907, + -0.13660767869550583, + -0.7449973746609807, + 0.00046341490908237133, + -1.0450868062894547 + ] + }, + { + "accelerations": [ + 1.0682217407243129, + 2.3824975013107004, + -1.8602994816219531, + -0.52164695552470486, + 0.0022374147179489595, + 1.0671400007097793 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 487895937, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + 0.01809491513269261, + -1.8853232182509132, + 2.2835819937732151, + -1.9691716324548698, + -1.5711359735891643, + -4.6932832285631969 + ], + "velocities": [ + -1.0233326141591892, + 0.92628696507941255, + -0.17140986249262402, + -0.75603513209629092, + 0.00050676244006631955, + -1.0245379838742226 + ] + }, + { + "accelerations": [ + 1.0788844160706974, + 2.3582529851551706, + -1.9605526941562987, + -0.39713477660045704, + 0.0021980669599702945, + 1.0777554809120036 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 506796472, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.0010541700894558823, + -1.8673866742507983, + 2.2800071085664531, + -1.9835550793466699, + -1.5711259924207559, + -4.7124552908011328 + ], + "velocities": [ + -1.0030419735282139, + 0.97109201617953067, + -0.20751117909755962, + -0.76472831539411579, + 0.00054868373558677487, + -1.0042682316829004 + ] + }, + { + "accelerations": [ + 1.2152199212395309, + 2.1870117112844403, + -2.0251851794549465, + -0.16110124600842904, + 0.002076494580177586, + 1.2142132253823517 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 525373459, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.019499882985288527, + -1.848936244830244, + 2.2758109323054856, + -1.9978305507657239, + -1.5711154169457433, + -4.7309239803757484 + ], + "velocities": [ + -0.98172947438130698, + 1.0133510809332706, + -0.2445520387820877, + -0.76993453499178888, + 0.00058842301650453756, + -0.98297559144041946 + ] + }, + { + "accelerations": [ + 1.0589497958281542, + 2.3135342902338594, + -2.1658719506411233, + -0.14711815844674764, + 0.0021338802828552396, + 1.0576945643088007 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 543675461, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.037262441624249291, + -1.8300208554973316, + 2.2709934110362453, + -2.0119490782368437, + -1.5711042972392684, + -4.7487095153211039 + ], + "velocities": [ + -0.96092138970646379, + 1.054497198356996, + -0.28286694419363562, + -0.77275412464274362, + 0.00062692083564152017, + -0.96218817247314625 + ] + }, + { + "accelerations": [ + 0.91932724696505963, + 2.454599840547536, + -2.3313477135102612, + -0.12287909823676274, + 0.0022136754861476677, + 0.91781766311002499 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 561651153, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.05436302884403791, + -1.8106883651085723, + 2.2655555816860988, + -2.0258638529076225, + -1.5710926800187159, + -4.7658330784770548 + ], + "velocities": [ + -0.94313963742525109, + 1.0973140131440546, + -0.32324818251746346, + -0.77518144749505424, + 0.00066596519866634046, + -0.94443123261364437 + ] + }, + { + "accelerations": [ + 1.3104659804859173, + 1.9391237563007948, + -2.2911348271362919, + 0.35284607248487937, + 0.0018931006711160314, + 1.3094572288147435 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 579256646, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.070823494727245195, + -1.7909852058878837, + 2.2594995349191631, + -2.0395305479275656, + -1.5710806086981679, + -4.7823165199400757 + ], + "velocities": [ + -0.92350326189538445, + 1.1361040636987934, + -0.36401984640021035, + -0.77318921472826418, + 0.00070220973082433906, + -0.9248171057830048 + ] + }, + { + "accelerations": [ + 1.1775385429983076, + 2.0272952981602237, + -2.4288505668986358, + 0.40223155726634258, + 0.0019430456750846564, + 1.1763170522333726 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 596627070, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.086666095922269995, + -1.7709560693371156, + 2.2528283630049248, + -2.0529075800126586, + -1.5710681234805504, + -4.7981820963767188 + ], + "velocities": [ + -0.90189759263244762, + 1.1705291529329314, + -0.40498315999741141, + -0.76663786147387736, + 0.00073550640668991756, + -0.90323078274689927 + ] + }, + { + "accelerations": [ + 1.0594606098646031, + 2.1242756897922486, + -2.5858389193956937, + 0.46209104779617494, + 0.0020086336333417845, + 1.0580243034569361 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 613725095, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.10191327022395447, + -1.7506436397563299, + 2.2455460946187813, + -2.0659563103615688, + -1.5710552614937614, + -4.813452245565486 + ], + "velocities": [ + -0.88277390839900294, + 1.2059973567959523, + -0.44782238916725936, + -0.75925653636280266, + 0.00076926879866707717, + -0.88412979391516 + ] + }, + { + "accelerations": [ + 0.95374615371625604, + 2.2304985609739525, + -2.7628467243379786, + 0.53273530684500514, + 0.0020892354688441836, + 0.95209047229614752 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 630518664, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.11658744423481078, + -1.7300883758278294, + 2.2376576186879538, + -2.0786411866554637, + -1.57104205691591, + -4.8281493941061813 + ], + "velocities": [ + -0.86586785105489583, + 1.242540282704226, + -0.49270198563394796, + -0.75091217498019325, + 0.0008036574532135298, + -0.86724967142782527 + ] + }, + { + "accelerations": [ + 2.486567010043621, + -0.21954682535464151, + -1.8157346690238902, + 2.0376050176374032, + 0.00048228176373792028, + 2.4874910107679402 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 646980715, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.13071087151599989, + -1.7093283395195586, + 2.2291685994100314, + -2.0909298289327602, + -1.5710285411249481, + -4.8422957955878951 + ], + "velocities": [ + -0.83735826045620021, + 1.259267342305582, + -0.53070007864791946, + -0.72961869210017105, + 0.00082501879540320604, + -0.83874619845449283 + ] + }, + { + "accelerations": [ + 1.0635702184151974, + 1.7554520208708873, + -2.7152853230771146, + 0.96038627525194109, + 0.0017724192942172674, + 1.0621977225568016 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 663624928, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.14430549842797291, + -1.6883990705273224, + 2.220085384576731, + -2.1027930632085869, + -1.5710147428992509, + -4.8559133963471863 + ], + "velocities": [ + -0.80799841271981787, + 1.2719412408880046, + -0.56814239804409039, + -0.70482647578387425, + 0.00084364148680468305, + -0.80939003291210421 + ] + }, + { + "accelerations": [ + 1.1170729048724104, + 1.590801695964742, + -2.7558353332779562, + 1.1656515673687127, + 0.0016766498324883327, + 1.1157801864303349 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 680000113, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.15739285482524909, + -1.6673335036198302, + 2.2104149093499865, + -2.1142049078217529, + -1.5710006885268717, + -4.8690237263104592 + ], + "velocities": [ + -0.79014020964353748, + 1.2993608771706642, + -0.61295368762501834, + -0.68742523578161374, + 0.00087189888389715509, + -0.79155366566678742 + ] + }, + { + "accelerations": [ + 1.0361716432617629, + 1.6481883500808243, + -2.9002983230307433, + 1.2526190811019142, + 0.0017312700584094713, + 1.034719256217151 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 696133427, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.16999396671911632, + -1.6461619254799065, + 2.2001645972898176, + -2.1251425173390928, + -1.5709864020708548, + -4.8816478114313009 + ], + "velocities": [ + -0.77277035773471003, + 1.3254780308017939, + -0.65855837608627588, + -0.66792860516401986, + 0.00089937854108503696, + -0.7742059415846001 + ] + }, + { + "accelerations": [ + 1.8836732623224302, + 2.7940836762263425e-14, + -2.1220488077927468, + 2.1236896806868439, + 0.00060807252757851926, + 1.8839024169599252 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 712007401, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.18212928826016295, + -1.6249119672089252, + 2.1893422605784529, + -2.1355860902849253, + -1.5709719054518383, + -4.8938061058767399 + ], + "velocities": [ + -0.74950962791239162, + 1.3386665404889959, + -0.69862987566851875, + -0.64102850153124291, + 0.00091806418152904181, + -0.75095501242292972 + ] + }, + { + "accelerations": [ + 2.5967640762779989, + -1.6397927135356549, + -1.1849873342528014, + 2.8274361771426562, + -0.00055441510654030733, + 2.598661337681242 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 727921252, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.1938186504249792, + -1.6036086282199344, + 2.1779560008409571, + -2.1455187459616707, + -1.5709572186149368, + -4.9055184406939256 + ], + "velocities": [ + -0.71365492894761473, + 1.3254780308017948, + -0.72502430970556908, + -0.6014111551694008, + 0.00091843746255310099, + -0.71508323309980781 + ] + }, + { + "accelerations": [ + 2.3506424757776192, + -1.5742646939565144, + -1.1040627269868064, + 2.6807352126860069, + -0.0005541068912819423, + 2.3523821952985449 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 744178564, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.20508122404763332, + -1.5822743271226785, + 2.1660141118945133, + -2.1549263761176256, + -1.5709423597819969, + -4.9168039866289828 + ], + "velocities": [ + -0.67346505474241936, + 1.2993608771706644, + -0.74362202663033328, + -0.5566551479386137, + 0.00090942781672044971, + -0.67486381217692615 + ] + }, + { + "accelerations": [ + 2.4877362024236547, + -2.2464639952765513, + -0.57079559137749325, + 2.8199448419646935, + -0.0010764055982046738, + 2.4901307448433885 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 760771239, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.21593549511598495, + -1.5609289752136166, + 2.1535249856726435, + -2.1637974775264572, + -1.5709273454484765, + -4.9276812297579307 + ], + "velocities": [ + -0.63321182912032359, + 1.2675153423865813, + -0.75749566004955748, + -0.51089359391430844, + 0.00089581308313310356, + -0.63457613529277157 + ] + }, + { + "accelerations": [ + 2.2279412862980683, + -2.1176748593451848, + -0.48967731048328067, + 2.6097698337192976, + -0.001037802849657138, + 2.230145497058472 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 777861527, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.22639925029660232, + -1.5395900681871049, + 2.1404970219090624, + -2.1721229697470212, + -1.5709121906536014, + -4.9381679567183348 + ], + "velocities": [ + -0.59294667380291566, + 1.2302379036675504, + -0.76654775496394179, + -0.46452048694590664, + 0.00087775104959866867, + -0.59427170532782503 + ] + }, + { + "accelerations": [ + 2.0007884571914949, + -1.9975889940915275, + -0.41571451957845429, + 2.4154873961255214, + -0.001000750172873794, + 2.0028265034996799 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 795451819, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.23648957107266855, + -1.5182727920179708, + 2.1269385424407665, + -2.1798960036209016, + -1.5708969090323208, + -4.9482812490203942 + ], + "velocities": [ + -0.55578099061191888, + 1.1940567889068832, + -0.77450193313358595, + -0.4203447500214561, + 0.00085982541841700866, + -0.55706872982203903 + ] + }, + { + "accelerations": [ + 1.8013992068411186, + -1.8853745291455288, + -0.34808645386255321, + 2.2354392915968244, + -0.00096487396475527024, + 1.8032905857941253 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 813545678, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.24622283491551319, + -1.4969901391568607, + 2.1128577103558319, + -2.1871117641189919, + -1.5708815130091567, + -4.9580374840622028 + ], + "velocities": [ + -0.521405805973299, + 1.1589397553791403, + -0.78140389071255956, + -0.3782881273711346, + 0.00084204591372858632, + -0.52265801214394969 + ] + }, + { + "accelerations": [ + 1.8652281566070144, + -2.3501151642980207, + 0.12796474728887766, + 2.2243048132875853, + -0.0013523570214833665, + 1.8676097550253914 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 832147905, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.25561472224888682, + -1.4757530316049172, + 2.0982624543712514, + -2.193767271835243, + -1.5708660137426878, + -4.9674523424414536 + ], + "velocities": [ + -0.48720199322931423, + 1.1193700248082505, + -0.78338445488099806, + -0.33669926525185867, + 0.000820377148160079, + -0.48841427620150363 + ] + }, + { + "accelerations": [ + 1.6562688528971707, + -2.1762613194405316, + 0.1722860981452875, + 2.0059058166100576, + -0.0012741390965094934, + 1.6584596423665345 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 851455759, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.26468022794399743, + -1.4545704477172865, + 2.0831603981726681, + -2.1998611852150787, + -1.5708504214892205, + -4.9765408189089193 + ], + "velocities": [ + -0.45323436540502993, + 1.0756925920439713, + -0.78047718206100725, + -0.29588969900176043, + 0.00079502862518962569, + -0.45440252967266015 + ] + }, + { + "accelerations": [ + 1.6624112264353315, + -2.4947430609534416, + 0.58299977146037574, + 1.913768037077632, + -0.001560780917329046, + 1.6649553966637505 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 871489079, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.27343367653775413, + -1.4334495501171469, + 2.0675587949972747, + -2.2053936074955529, + -1.570834745474371, + -4.9853172380524322 + ], + "velocities": [ + -0.41989578710238595, + 1.0287038413624283, + -0.77280380329722975, + -0.25653457452102613, + 0.00076649066442306733, + -0.42101631283546442 + ] + }, + { + "accelerations": [ + 1.4536262633643471, + -2.265890332798032, + 0.58743493788424761, + 1.6802458541520486, + -0.001439135899925778, + 1.4559346163697962 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 892477349, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.28188874018785209, + -1.4123958123424147, + 2.0514644668329924, + -2.2103658991155593, + -1.570818994108667, + -4.9937952719840979 + ], + "velocities": [ + -0.38723054073853558, + 0.97877640776560648, + -0.76051399373636042, + -0.21885695068040711, + 0.00073502334976156781, + -0.38830017595892907 + ] + }, + { + "accelerations": [ + 1.4165239807064196, + -2.445381182609196, + 0.90827194902109576, + 1.5389238686731941, + -0.0016225564928129025, + 1.419048490810731 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 914461771, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.29005845877055236, + -1.391413142345076, + 2.0348837481339448, + -2.2147804980833965, + -1.5708031749438578, + -5.0019879606863302 + ], + "velocities": [ + -0.35559325548993348, + 0.92677656990893165, + -0.74393062502090213, + -0.18340072300722549, + 0.00070121153245767233, + -0.35660953974943022 + ] + }, + { + "accelerations": [ + 1.3225276209561241, + -2.4675119944047417, + 1.1138578275040307, + 1.3554033453326133, + -0.0016872356219702058, + 1.3251010143898856 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 937716899, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.29795526143100864, + -1.3705040012241203, + 2.0178224333571504, + -2.2186407485913948, + -1.5707872949330892, + -5.0099077331887711 + ], + "velocities": [ + -0.32368124503701479, + 0.86947034835973191, + -0.72027423124353418, + -0.14970935406419325, + 0.00066258704357667966, + -0.3246380558810617 + ] + }, + { + "accelerations": [ + -0.50512578401445007, + 2.4760612612019162, + -3.0490865857899738, + 0.57186264920149299, + 0.002085418891508014, + -0.50800387808583891 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 962525141, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.3055909892196067, + -1.3496695159836529, + 2.0002857280887572, + -2.2219507396538098, + -1.5707713602648123, + -5.0175664306643437 + ], + "velocities": [ + -0.31383851669935436, + 0.86947034835973191, + -0.74340113489498982, + -0.12657535484754079, + 0.00066728503132045241, + -0.31479886937211704 + ] + }, + { + "accelerations": [ + -0.14909447658506741, + 1.6171720899091246, + -2.4645838170490642, + 0.84677951515366445, + 0.0014458003002509117, + -0.15104570677051316 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 985614317, + "secs": 1 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.31297691825986435, + -1.3289095852850745, + 1.9822782028146786, + -2.2247151529201417, + -1.5707553766305848, + -5.0249753291865433 + ], + "velocities": [ + -0.32157177013186988, + 0.91739287581121165, + -0.80776062889525546, + -0.11015945428728999, + 0.00070859344706327332, + -0.32258863411650995 + ] + }, + { + "accelerations": [ + -0.16001710233408992, + 1.7536389415170688, + -2.716618439220658, + 0.96229318786383478, + 0.0015642751343742942, + -0.16213593786477851 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 7723279, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.32012378324223051, + -1.3082229775136034, + 1.9638037489973634, + -2.2269391208218683, + -1.5707393491737229, + -5.0321451634343699 + ], + "velocities": [ + -0.32498797911735056, + 0.95464191915117613, + -0.86500522523997025, + -0.090178471395521112, + 0.00074185700374129488, + -0.32604981856040571 + ] + }, + { + "accelerations": [ + 1.1398855767694804, + -2.179845192519525, + 0.9134312045508447, + 1.267931200390918, + -0.0015161942709079664, + 1.1421574639106289 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 28897461, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.32704180089945939, + -1.2876074206094397, + 1.9448655365923633, + -2.2286280942638035, + -1.5707232825504365, + -5.0390861501425999 + ], + "velocities": [ + -0.31436448451199961, + 0.94999073840130843, + -0.88450066239831193, + -0.066022835118964465, + 0.00074234994532706793, + -0.31542462686299566 + ] + }, + { + "accelerations": [ + 1.1197065076272865, + -2.3519308549321405, + 1.2502114209258639, + 1.1032786132160124, + -0.0016917662939657954, + 1.1222030465836161 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 51078527, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.33374069327130357, + -1.2670596833206431, + 1.9254659723375636, + -2.2297877197004734, + -1.5707071809548372, + -5.0458080114035937 + ], + "velocities": [ + -0.28922978724862147, + 0.89952020808378486, + -0.86033095279128358, + -0.039687774045557851, + 0.00070660734455861942, + -0.29023681096948273 + ] + }, + { + "accelerations": [ + 1.1615659208122879, + -2.7356881751313153, + 1.8182082577265635, + 0.91919468992355868, + -0.0020349773867662604, + 1.1645271219985744 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 74551181, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.34022971056656376, + -1.2465756476513223, + 1.905606657998937, + -2.2304237248795662, + -1.570691048235578, + -5.0523199973862125 + ], + "velocities": [ + -0.26227397865983093, + 0.83928940885130121, + -0.82387176540017304, + -0.015877438996925713, + 0.00066246298272865252, + -0.26321636887512545 + ] + }, + { + "accelerations": [ + 1.0412646789602631, + -2.6000294988992518, + 1.8873767127937224, + 0.71423922197574718, + -0.0019663966880861285, + 1.0441073495426825 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 99895788, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.34651765353328923, + -1.2261503723988381, + 1.8852883478704889, + -2.2305418129388737, + -1.5706748878173515, + -5.0586309089234396 + ], + "velocities": [ + -0.23430475827327502, + 0.77146093931896564, + -0.77668065908337491, + 0.0048018665522606384, + 0.00061157962019057349, + -0.23517335364411029 + ] + }, + { + "accelerations": [ + 1.0107308413869782, + -2.7489919637940363, + 2.2440014468270997, + 0.50660490482846421, + -0.002119232421457058, + 1.0137723649144652 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 127537146, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.352612895158809, + -1.205778147700463, + 1.8645109044877883, + -2.2301475634097438, + -1.5706587029241632, + -5.064749118857991 + ], + "velocities": [ + -0.20570360102487117, + 0.69674463551331045, + -0.71880303845306204, + 0.021685216571442803, + 0.00055448323288158395, + -0.20648998011638181 + ] + }, + { + "accelerations": [ + -0.3947934309592192, + 2.0370661566006927, + -2.7289694922872387, + 0.69096106880992469, + 0.0016845719504571378, + -0.39714837018751131 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 158499139, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.35852340174019237, + -1.1854525406100103, + 1.8432732519212438, + -2.229246340210107, + -1.57064249634263, + -5.0706825936099387 + ], + "velocities": [ + -0.19674458536203993, + 0.68664962922211426, + -0.72635741782595042, + 0.039344294272925934, + 0.0005483923751351252, + -0.19752129304382013 + ] + }, + { + "accelerations": [ + 0.082668506734495509, + 0.43876420399629434, + -1.1103959048958574, + 0.67155162351010622, + 0.00040496656454205231, + 0.082125920582851841 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 186798902, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.36425675312908568, + -1.1651664316498271, + 1.8215733253188657, + -2.2278432044385204, + -1.5706262706725445, + -5.0764389130049983 + ], + "velocities": [ + -0.20143464139209516, + 0.72298097005199979, + -0.78235563820337073, + 0.058996091067832511, + 0.00057902752922129133, + -0.20225384538905006 + ] + }, + { + "accelerations": [ + 0.99755158769236052, + -3.025166111634797, + 2.7841001349319181, + 0.24276496621070559, + -0.0023904885177187, + 1.0009540352150601 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 214577660, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.36982016223250963, + -1.1449120423509345, + 1.7994080159098984, + -2.2259428319156527, + -1.5706100282934796, + -5.0820252898871523 + ], + "velocities": [ + -0.18545522606551046, + 0.68418796668207382, + -0.7565601340334247, + 0.072017709175100572, + 0.0005491899792585737, + -0.18623148740652282 + ] + }, + { + "accelerations": [ + 0.85634918789908898, + -2.7602172594429843, + 2.7039046225723617, + 0.057824606328174939, + -0.0021991166609419692, + 0.85947022720173794 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 246226138, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.37522049371521093, + -1.1246809537024391, + 1.776773110202301, + -2.2235494340613071, + -1.5705937712631866, + -5.0874485890446834 + ], + "velocities": [ + -0.15590751649685997, + 0.59177413514011912, + -0.66869622411771223, + 0.076618874831245909, + 0.00047585509730282819, + -0.15657955348247407 + ] + }, + { + "accelerations": [ + 0.79576984275746454, + -2.7806054093838397, + 2.9351733287836326, + -0.15309415264703463, + -0.0022304072620352089, + 0.79892624851479788 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 283368645, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.38046428184125902, + -1.1044641153569916, + 1.7536632219180377, + -2.2206666804593409, + -1.5705775015357819, + -5.0927153446912303 + ], + "velocities": [ + -0.12437017909319042, + 0.48556634450272629, + -0.56019174863608534, + 0.074379324708935615, + 0.0003909195096032308, + -0.1249218644521598 + ] + }, + { + "accelerations": [ + 0.70112778582661339, + -2.6630020817763285, + 3.0087179494829916, + -0.34435099249949064, + -0.0021440392661719594, + 0.7041551677045691 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 330723239, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.38555774754930561, + -1.0842518453925638, + 1.7300717153960081, + -2.2172976226376897, + -1.5705612208477275, + -5.0978317777834068 + ], + "velocities": [ + -0.085649982023210447, + 0.34360966348412658, + -0.40416636447438803, + 0.060384405961459359, + 0.00027680287415623669, + -0.086040385378377882 + ] + }, + { + "accelerations": [ + -0.53553109861910075, + 2.3746329857308659, + -2.9817545970731074, + 0.60597654693312009, + 0.0019115082860713317, + -0.53822248839332265 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 408368032, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.39050681469322612, + -1.0640338202522364, + 1.7059906185495775, + -2.2134446170267337, + -1.5705449308168145, + -5.1028038121122403 + ], + "velocities": [ + -0.080726101631449859, + 0.33571110746154215, + -0.40472124131739623, + 0.068844171216326883, + 0.00027043219516134485, + -0.081107266675281092 + ] + }, + { + "accelerations": [ + -0.43582945049488753, + 2.1645478839648487, + -2.896503508964948, + 0.73095631993361943, + 0.0017342898513116576, + -0.43826806557690018 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 457597331, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.39531712551999204, + -1.0437990543730244, + 1.6814105235228809, + -2.2091092460995387, + -1.5705286328462715, + -5.1076370899798968 + ], + "velocities": [ + -0.10742646062492077, + 0.4592760740893263, + -0.56385760127028728, + 0.10435697150621813, + 0.00036971760688383104, + -0.10794734631432425 + ] + }, + { + "accelerations": [ + 0.66821037681484785, + -2.6513304833498084, + 3.0900234734393703, + -0.4373549286494155, + -0.0021445635279676925, + 0.67123444178860947 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 497523123, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.39999405534932869, + -1.0235358687840674, + 1.6563204725582426, + -2.2042922355655645, + -1.5705123282387314, + -5.1123369866990762 + ], + "velocities": [ + -0.10165193728550632, + 0.44606529208754087, + -0.55679262979958977, + 0.11051152403751817, + 0.00035866338807025139, + -0.1021570811020289 + ] + }, + { + "accelerations": [ + 0.5647611095154863, + -2.4538409292060575, + 3.0433910245940612, + -0.5883576409814576, + -0.0019754803575132564, + 0.5675435511586413 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 550314400, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40454272652676476, + -1.0032318477514615, + 1.6307078264099661, + -2.1989933661929153, + -1.5704960181637844, + -5.1169086246268396 + ], + "velocities": [ + -0.063117158607279039, + 0.28447574565131029, + -0.36097678780052894, + 0.076364904129619771, + 0.00022834074173871168, + -0.063438663987562524 + ] + }, + { + "accelerations": [ + 0.40900652444903324, + -0.50074988098820017, + 3.1395456875551511, + -2.63790291808216, + -0.0015078614829524652, + 0.41112920796568564 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 660750735, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802164852025, + -0.98287378222602706, + 1.6045581118922119, + -2.1932113779114495, + -1.5704797036794294, + -5.1213568863708367 + ], + "velocities": [ + -0.020035509123835466, + 0.15981248086764932, + -0.082992376686073233, + -0.076863843003992127, + 7.3863757481952346e-05, + -0.020139490401020421 + ] + }, + { + "accelerations": [ + -1.6845273888241929e-07, + 2.0997876297285201, + 0.90011694399709741, + -2.9999045736723646, + 1.2310228676462573e-10, + -1.68452631476416e-07 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 746257462, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802262234322, + -0.97130618715141837, + 1.6106120457182014, + -2.2108329068117394, + -1.5704797036787177, + -5.1213568873446595 + ], + "velocities": [ + -1.6831062243675448e-08, + 0.20312087140497931, + 0.099880822524609614, + -0.30300169392426279, + 1.2299846940934833e-11, + -1.6831056826094672e-08 + ] + }, + { + "accelerations": [ + -1.7062499884971055e-07, + 2.2852858585912204, + 0.66955328900089972, + -2.9548391475379696, + 1.2468995215671902e-10, + -1.7062518586375654e-07 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 789979054, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802359616641, + -0.95945943362370179, + 1.6162504247483109, + -2.2283180393692574, + -1.570479703678006, + -5.1213568883184823 + ], + "velocities": [ + -2.5576631162157578e-08, + 0.3152027201493483, + 0.1419237316159378, + -0.45712645175719113, + 1.8690958448278742e-11, + -2.557662589525231e-08 + ] + }, + { + "accelerations": [ + 3.6070061727002047e-08, + -0.22834579289292053, + -0.53571981717254147, + 0.76406561005422635, + -2.6359446211897581e-11, + 3.6070151053693852e-08 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 823698701, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802456998926, + -0.94733902255270364, + 1.6214731424870734, + -2.2456611681787098, + -1.5704797036772944, + -5.1213568892923051 + ], + "velocities": [ + -2.825816603617196e-08, + 0.35551007002132728, + 0.14565112540076053, + -0.50116119541313819, + 2.0650579549355566e-11, + -2.8258162849998469e-08 + ] + }, + { + "accelerations": [ + 1.6828712471509873e-07, + -2.0052215771918713, + -1.0458978989890708, + 3.0511194761275671, + -1.2298131623808611e-10, + 1.6828709593631954e-07 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 858935736, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802554381223, + -0.93495061205959884, + 1.6262800294107176, + -2.2628564655951502, + -1.5704797036765827, + -5.1213568902661279 + ], + "velocities": [ + -2.4176134853768405e-08, + 0.31034348230986858, + 0.11491067019347609, + -0.42525415249568621, + 1.7667500653418387e-11, + -2.4176130719407879e-08 + ] + }, + { + "accelerations": [ + 1.5115111644809485e-07, + -1.9341914954468644, + -0.7292210398598693, + 2.6634125352588365, + -1.1045861816887501e-10, + 1.5115109059974428e-07 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 905944167, + "secs": 2 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.4089680265176352, + -0.922300014057997, + 1.6306708791607432, + -2.2798979133464692, + -1.5704797036758711, + -5.1213568912399507 + ], + "velocities": [ + -1.4757084965645828e-08, + 0.19286167618646649, + 0.064657469331878548, + -0.25751914551367228, + 1.0784222120288968e-11, + -1.4757082442036908e-08 + ] + }, + { + "accelerations": [ + 8.4847279674340636e-08, + -2.4116254743205912, + -0.74264564976197056, + 3.1542711240557315, + -6.2004914456061312e-11, + 8.4847254093374027e-08 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 16627900, + "secs": 3 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802749145816, + -0.90939318775914202, + 1.6346454609988987, + -2.2967793214831715, + -1.5704797036751594, + -5.1213568922137735 + ], + "velocities": [ + -4.3991235851211168e-09, + -0.0084269395384295662, + -0.0025950091480545015, + 0.011021948687877453, + 3.214803748661254e-12, + -4.3991234068435728e-09 + ] + }, + { + "accelerations": [ + -1.6443445293766622e-14, + -2.3093489064014872, + -0.87637182410980929, + 3.185720730511413, + 0.0, + 0.0 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 113334421, + "secs": 3 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802749145805, + -0.92230001196368783, + 1.6306708832301628, + -2.2798979195098896, + -1.5704797036751594, + -5.1213568922137735 + ], + "velocities": [ + 5.740166252936391e-16, + -0.21407983751684687, + -0.071692235353646924, + 0.2857720728705001, + 0.0, + 0.0 + ] + }, + { + "accelerations": [ + 0.0, + -1.9570172344772749, + -1.0748732115623798, + 3.0318904460396441, + 0.0, + 0.0 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 156262049, + "secs": 3 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802749145805, + -0.93495060492608018, + 1.6262800267701103, + -2.2628564700874443, + -1.5704797036751594, + -5.1213568922137735 + ], + "velocities": [ + 0.0, + -0.33210150455344567, + -0.12282980690455364, + 0.45493131145800947, + 0.0, + 0.0 + ] + }, + { + "accelerations": [ + 0.0, + 0.63237155466256423, + -0.19110959992841509, + -0.44126195473434726, + 0.0, + 0.0 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 189788882, + "secs": 3 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802749145805, + -0.94733901032165369, + 1.6214731332191481, + -2.2456611711409082, + -1.5704797036751594, + -5.1213568922137735 + ], + "velocities": [ + 0.0, + -0.35869891626827582, + -0.14664089501258198, + 0.50533981128086447, + 0.0, + 0.0 + ] + }, + { + "accelerations": [ + -8.8959833156065672e-14, + 2.2573343372851338, + 0.68766148457012144, + -2.944995821855334, + 0.0, + 0.0 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 224628582, + "secs": 3 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802749145805, + -0.95945941624069808, + 1.6162504089356813, + -2.2283180409383969, + -1.5704797036751594, + -5.1213568922137735 + ], + "velocities": [ + -1.8023161155642852e-15, + -0.30215731637105514, + -0.1359753266105346, + 0.43813264298159132, + 0.0, + 0.0 + ] + }, + { + "accelerations": [ + 7.1541371828969563e-14, + 1.9366481830752824, + 0.85855190495794109, + -2.795200088033198, + 0.0, + 0.0 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 270828428, + "secs": 3 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.40896802749145822, + -0.97130616456602625, + 1.6106120234431516, + -2.210832907120539, + -1.5704797036751594, + -5.1213568922137735 + ], + "velocities": [ + -7.99075062992806e-16, + -0.1804766348698745, + -0.088374522775123393, + 0.26885115764499889, + 0.0, + 0.0 + ] + }, + { + "accelerations": [ + -3.6262717931094992e-14, + 1.889135304371548, + 0.98868362882806271, + -2.8778189331996469, + 0.0, + 0.0 + ], + "effort": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "time_from_start": { + "nsecs": 381492064, + "secs": 3 + }, + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.408968027491458, + -0.98287375591718129, + 1.6045580959307097, + -2.193211388256942, + -1.5704797036751594, + -5.1213568922137735 + ], + "velocities": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ] + } + ], + "start_configuration": { + "joint_names": [ + "shoulder_pan_joint", + "shoulder_lift_joint", + "elbow_joint", + "wrist_1_joint", + "wrist_2_joint", + "wrist_3_joint" + ], + "types": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "values": [ + -0.408968027491458, + -0.98287375591718129, + 1.6045580959307097, + -2.193211388256942, + -1.5704797036751594, + -5.1213568922137735 + ] + } + } + }, + "place_tolerance": 0.0080000000000000002 + }, + "edge": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {}, + "6": {}, + "7": {}, + "8": {} + }, + "edge_attributes": {}, + "max_int_key": 8, + "node": { + "0": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.59326091545004345, + 0.60750268375392014, + 0.056000022194771577 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.59326091545004345, + 0.60750268375392014, + 0.0060000221947715763 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.59326091545004345, + "y": 0.60750268375392014, + "z": 0.0060000221947715763 + }, + "1": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.62526091545004348, + 0.60750268375392014, + 0.056000022194771577 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.62526091545004348, + 0.60750268375392014, + 0.0060000221947715763 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.62526091545004348, + "y": 0.60750268375392014, + "z": 0.0060000221947715763 + }, + "2": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.65726091545004339, + 0.60750268375392014, + 0.056000022194771577 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.65726091545004339, + 0.60750268375392014, + 0.0060000221947715763 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.65726091545004339, + "y": 0.60750268375392014, + "z": 0.0060000221947715763 + }, + "3": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.68926091545004342, + 0.60750268375392014, + 0.056000022194771577 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.68926091545004342, + 0.60750268375392014, + 0.0060000221947715763 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.68926091545004342, + "y": 0.60750268375392014, + "z": 0.0060000221947715763 + }, + "4": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.60926091545004346, + 0.60750268375392014, + 0.069000022194771582 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.60926091545004346, + 0.60750268375392014, + 0.019000022194771572 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.60926091545004346, + "y": 0.60750268375392014, + "z": 0.019000022194771572 + }, + "5": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.64126091545004338, + 0.60750268375392014, + 0.069000022194771582 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.64126091545004338, + 0.60750268375392014, + 0.019000022194771572 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.64126091545004338, + "y": 0.60750268375392014, + "z": 0.019000022194771572 + }, + "6": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.67326091545004341, + 0.60750268375392014, + 0.069000022194771582 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.67326091545004341, + 0.60750268375392014, + 0.019000022194771572 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.67326091545004341, + "y": 0.60750268375392014, + "z": 0.019000022194771572 + }, + "7": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.62476091545004342, + 0.60750268375392014, + 0.082000022194771566 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.62476091545004342, + 0.60750268375392014, + 0.03200002219477157 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.62476091545004342, + "y": 0.60750268375392014, + "z": 0.03200002219477157 + }, + "8": { + "element": { + "dtype": "assembly/Element", + "value": { + "approach_frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.65676091545004345, + 0.60750268375392014, + 0.082000022194771566 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "frame": { + "dtype": "compas.geometry/Frame", + "value": { + "point": [ + 0.65676091545004345, + 0.60750268375392014, + 0.03200002219477157 + ], + "xaxis": [ + 6.123233995736766e-17, + -1.0, + 0.0 + ], + "yaxis": [ + 0.99999968293183461, + 6.1232320542541972e-17, + 0.00079632671073326335 + ] + } + }, + "geometry_at_origin": { + "dtype": "compas.datastructures/Mesh", + "value": { + "compas": "1.1.0", + "data": { + "attributes": { + "name": "Box" + }, + "dea": {}, + "dfa": {}, + "dva": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "edgedata": {}, + "face": { + "0": [ + 0, + 1, + 2, + 3 + ], + "1": [ + 0, + 3, + 5, + 4 + ], + "2": [ + 3, + 2, + 6, + 5 + ], + "3": [ + 2, + 1, + 7, + 6 + ], + "4": [ + 1, + 0, + 4, + 7 + ], + "5": [ + 4, + 5, + 6, + 7 + ] + }, + "facedata": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": {}, + "5": {} + }, + "max_face": 5, + "max_vertex": 7, + "vertex": { + "0": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "1": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "2": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": -0.0060000000000000001 + }, + "3": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": -0.0060000000000000001 + }, + "4": { + "x": -0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "5": { + "x": 0.0080000000000000002, + "y": -0.0155, + "z": 0.0060000000000000001 + }, + "6": { + "x": 0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + }, + "7": { + "x": -0.0080000000000000002, + "y": 0.0155, + "z": 0.0060000000000000001 + } + } + }, + "datatype": "compas.datastructures/Mesh" + } + }, + "trajectory": null + } + }, + "x": 0.65676091545004345, + "y": 0.60750268375392014, + "z": 0.03200002219477157 + } + }, + "node_attributes": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + } + }, + "datatype": "assembly/Assembly" + } +} \ No newline at end of file diff --git a/lecture_06/assignment_05/asling/vacuum_gripper.stl b/lecture_06/assignment_05/asling/vacuum_gripper.stl new file mode 100644 index 0000000..4fbbb2e Binary files /dev/null and b/lecture_06/assignment_05/asling/vacuum_gripper.stl differ