[ { "constraint_list": [ { "keypoint_name": "tool_tail", "target_keypoint_name": "articulated_object_head", "tolerance": 0.0001, "type": "point2point_constraint" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_side", "target_axis": [ 1.0, 0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": 1, "type": "frame_axis_parallel" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_tail", "target_axis_from_keypoint_name": "articulated_object_head", "target_axis_to_keypoint_name": "articulated_object_tail", "tolerance": 0.01, "target_inner_product": -1, "type": "keypoint_axis_parallel" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_side", "target_axis_from_keypoint_name": "articulated_object_head", "target_axis_to_keypoint_name": "articulated_object_tail", "tolerance": 0.01, "target_inner_product": 0, "type": "keypoint_axis_orthogonal" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_tail", "target_axis": [ 1.0, 0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": 0, "type": "frame_axis_orthogonal" } ] }, { "constraint_list": [ { "keypoint_name": "tool_head", "target_keypoint_name": "articulated_object_head", "tolerance": 0.0001, "type": "point2point_constraint" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_side", "target_axis": [ 1.0, 0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": 1, "type": "frame_axis_parallel" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_tail", "target_axis": [ 0, 0, 1.0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": 0, "type": "frame_axis_orthogonal" } ] }, { "constraint_list": [ { "keypoint_name": "tool_tail", "target_keypoint_name": "articulated_object_head", "tolerance": 0.0001, "type": "point2point_constraint" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_side", "target_axis": [ 1.0, 0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": 1, "type": "frame_axis_parallel" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_tail", "target_axis": [ 0, 0, 1.0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": 0, "type": "frame_axis_orthogonal" } ] }, { "constraint_list": [ { "keypoint_name": "tool_head", "target_keypoint_name": "rigidbody_object_head", "tolerance": 0.0001, "type": "point2point_constraint" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_side", "target_axis": [ 1.0, 0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": -1, "type": "frame_axis_parallel" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_tail", "target_axis": [ 0, 0, 1.0 ], "target_axis_frame": "world", "tolerance": 0.01, "target_inner_product": 1, "type": "frame_axis_parallel" } ] }, { "constraint_list": [ { "keypoint_name": "tool_head", "target_keypoint_name": "rigidbody_object_head", "tolerance": 0.001, "type": "point2point_constraint" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_side", "target_axis": [ 0, 1.0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": -1, "type": "frame_axis_parallel" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_tail", "target_axis": [ 0, 0, 1.0 ], "target_axis_frame": "world", "tolerance": 0.01, "target_inner_product": 1, "type": "frame_axis_parallel" } ] }, { "constraint_list": [ { "keypoint_name": "tool_tail", "target_keypoint_name": "articulated_object_head", "tolerance": 0.0001, "type": "point2point_constraint" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_side", "target_axis": [ 0, 1.0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": -1, "type": "frame_axis_parallel" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_tail", "target_axis": [ 1.0, 0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": 1, "type": "frame_axis_parallel" } ] }, { "constraint_list": [ { "keypoint_name": "tool_tail", "target_keypoint_name": "articulated_object_head", "tolerance": 0.0001, "type": "point2point_constraint" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_side", "target_axis": [ 0, 1.0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": 1, "type": "frame_axis_parallel" }, { "axis_from_keypoint_name": "tool_head", "axis_to_keypoint_name": "tool_tail", "target_axis": [ 1.0, 0, 0 ], "target_axis_frame": "object", "tolerance": 0.01, "target_inner_product": -1, "type": "frame_axis_parallel" } ] } ]