From 0baf738a1274742a88d7825d49e7ae533fd4dd10 Mon Sep 17 00:00:00 2001
From: KingMaZito <matteo.aneddama@icloud.com>
Date: Wed, 1 Dec 2021 23:04:53 +0100
Subject: [PATCH] ...

---
 .../profiles/default/devel_collisions.txt     |   2 +-
 .gitignore                                    |   1 +
 .../launch/moveit.rviz                        | 522 +++++-------------
 .../robots/dual_panda_example.urdf.xacro      |  20 +-
 .../robots/panda_arm_hand.urdf.xacro          |   2 +-
 .../Positionsanalyse/Base_eval1.yaml          |  17 +
 .../Positionsanalyse/Base_eval3.yaml          |  22 +
 .../Positionsanalyse/Single_Base_task10.yaml  |  15 +
 .../Positionsanalyse/schnitt.yaml             |  17 +
 src/reachability/include/map_analyse.h        |  81 ++-
 src/reachability/include/task_viewer.h        |  25 +-
 ...ck_and_place.launch => double_pick.launch} |   0
 src/reachability/launch/task_viewer.launch    |   4 +-
 src/reachability/launch/visualization.launch  |   5 -
 src/reachability/src/eval_analyse.cpp         |   6 +-
 src/reachability/src/map_analyse.cpp          |  18 +-
 src/reachability/src/pick_and_place.cpp       |  54 +-
 src/reachability/src/single_pick.cpp          |  12 +-
 src/reachability/src/task_viewer.cpp          |  21 -
 src/reachability/src/visualization.cpp        |  86 ++-
 src/reachability/task/eval1.yaml              |   8 +
 src/reachability/task/eval2.yaml              |  10 +
 src/reachability/task/eval3.yaml              |  11 +
 src/reachability/task/schnitt.yaml            |   8 +
 24 files changed, 442 insertions(+), 525 deletions(-)
 create mode 100644 src/reachability/Positionsanalyse/Base_eval1.yaml
 create mode 100644 src/reachability/Positionsanalyse/Base_eval3.yaml
 create mode 100644 src/reachability/Positionsanalyse/Single_Base_task10.yaml
 create mode 100644 src/reachability/Positionsanalyse/schnitt.yaml
 rename src/reachability/launch/{pick_and_place.launch => double_pick.launch} (100%)
 delete mode 100644 src/reachability/launch/visualization.launch
 create mode 100644 src/reachability/task/eval1.yaml
 create mode 100644 src/reachability/task/eval2.yaml
 create mode 100644 src/reachability/task/eval3.yaml
 create mode 100644 src/reachability/task/schnitt.yaml

diff --git a/.catkin_tools/profiles/default/devel_collisions.txt b/.catkin_tools/profiles/default/devel_collisions.txt
index 1e89ca8..11f581c 100644
--- a/.catkin_tools/profiles/default/devel_collisions.txt
+++ b/.catkin_tools/profiles/default/devel_collisions.txt
@@ -1,2 +1,2 @@
 /home/matteo/ws_panda/devel/./cmake.lock 42
-/home/matteo/reachability/devel/./cmake.lock 5987
+/home/matteo/reachability/devel/./cmake.lock 6278
diff --git a/.gitignore b/.gitignore
index 05f1c70..e2192d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ msg/*Result.msg
 msg/_*.py
 build_isolated/
 devel_isolated/
+#
\ No newline at end of file
diff --git a/src/dual_panda_moveit_config/launch/moveit.rviz b/src/dual_panda_moveit_config/launch/moveit.rviz
index 3e2b1a2..e781d07 100644
--- a/src/dual_panda_moveit_config/launch/moveit.rviz
+++ b/src/dual_panda_moveit_config/launch/moveit.rviz
@@ -4,9 +4,16 @@ Panels:
     Name: Displays
     Property Tree Widget:
       Expanded:
+        - /Global Options1
+        - /Status1
         - /MotionPlanning1
-      Splitter Ratio: 0.74256
-    Tree Height: 664
+        - /MotionPlanning1/Scene Geometry1
+        - /MotionPlanning1/Scene Robot1
+        - /MotionPlanning1/Planning Request1
+        - /MotionPlanning1/Planning Metrics1
+        - /MotionPlanning1/Planned Path1
+      Splitter Ratio: 0.7425600290298462
+    Tree Height: 398
   - Class: rviz/Help
     Name: Help
   - Class: rviz/Views
@@ -14,6 +21,10 @@ Panels:
       - /Current View1
     Name: Views
     Splitter Ratio: 0.5
+Preferences:
+  PromptSaveOnExit: true
+Toolbars:
+  toolButtonStyle: 2
 Visualization Manager:
   Class: ""
   Displays:
@@ -23,7 +34,7 @@ Visualization Manager:
       Color: 160; 160; 164
       Enabled: true
       Line Style:
-        Line Width: 0.03
+        Line Width: 0.029999999329447746
         Value: Lines
       Name: Grid
       Normal Cell Count: 0
@@ -35,302 +46,169 @@ Visualization Manager:
       Plane Cell Count: 10
       Reference Frame: <Fixed Frame>
       Value: true
-    - Class: moveit_rviz_plugin/MotionPlanning
+    - Acceleration_Scaling_Factor: 0.1
+      Class: moveit_rviz_plugin/MotionPlanning
       Enabled: true
-      MoveIt_Goal_Tolerance: 0
+      Move Group Namespace: ""
+      MoveIt_Allow_Approximate_IK: false
+      MoveIt_Allow_External_Program: false
+      MoveIt_Allow_Replanning: false
+      MoveIt_Allow_Sensor_Positioning: false
+      MoveIt_Planning_Attempts: 10
       MoveIt_Planning_Time: 5
+      MoveIt_Use_Cartesian_Path: false
       MoveIt_Use_Constraint_Aware_IK: true
       MoveIt_Warehouse_Host: 127.0.0.1
       MoveIt_Warehouse_Port: 33829
+      MoveIt_Workspace:
+        Center:
+          X: 0
+          Y: 0
+          Z: 0
+        Size:
+          X: 2
+          Y: 2
+          Z: 2
       Name: MotionPlanning
       Planned Path:
+        Color Enabled: false
+        Interrupt Display: false
         Links:
-          base_bellow_link:
+          All Links Enabled: true
+          Expand Joint Details: false
+          Expand Link Details: false
+          Expand Tree: false
+          Link Tree Style: Links in Alphabetic Order
+          panda_1_hand:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          base_footprint:
+          panda_1_leftfinger:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          base_link:
+          panda_1_link0:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          bl_caster_l_wheel_link:
+          panda_1_link1:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          bl_caster_r_wheel_link:
+          panda_1_link2:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          bl_caster_rotation_link:
+          panda_1_link3:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          br_caster_l_wheel_link:
+          panda_1_link4:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          br_caster_r_wheel_link:
+          panda_1_link5:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          br_caster_rotation_link:
+          panda_1_link6:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          double_stereo_link:
+          panda_1_link7:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          fl_caster_l_wheel_link:
+          panda_1_link8:
             Alpha: 1
             Show Axes: false
             Show Trail: false
-            Value: true
-          fl_caster_r_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fl_caster_rotation_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fr_caster_l_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fr_caster_r_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fr_caster_rotation_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_mount_kinect_ir_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_mount_kinect_rgb_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_mount_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_mount_prosilica_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_pan_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_plate_frame:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_tilt_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_elbow_flex_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_forearm_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_forearm_roll_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_l_finger_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_l_finger_tip_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_motor_accelerometer_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_palm_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_r_finger_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_r_finger_tip_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_shoulder_lift_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_shoulder_pan_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_upper_arm_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_upper_arm_roll_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_wrist_flex_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_wrist_roll_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          laser_tilt_mount_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          r_elbow_flex_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          r_forearm_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          r_forearm_roll_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          r_gripper_l_finger_link:
+          panda_1_rightfinger:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_l_finger_tip_link:
+          panda_2_hand:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_motor_accelerometer_link:
+          panda_2_leftfinger:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_palm_link:
+          panda_2_link0:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_r_finger_link:
+          panda_2_link1:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_r_finger_tip_link:
+          panda_2_link2:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_shoulder_lift_link:
+          panda_2_link3:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_shoulder_pan_link:
+          panda_2_link4:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_upper_arm_link:
+          panda_2_link5:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_upper_arm_roll_link:
+          panda_2_link6:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_wrist_flex_link:
+          panda_2_link7:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_wrist_roll_link:
+          panda_2_link8:
             Alpha: 1
             Show Axes: false
             Show Trail: false
-            Value: true
-          sensor_mount_link:
+          panda_2_rightfinger:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          torso_lift_link:
+          world:
             Alpha: 1
             Show Axes: false
             Show Trail: false
-            Value: true
-        Loop Animation: true
+        Loop Animation: false
         Robot Alpha: 0.5
+        Robot Color: 150; 50; 150
         Show Robot Collision: false
-        Show Robot Visual: true
+        Show Robot Visual: false
         Show Trail: false
         State Display Time: 0.05 s
+        Trail Step Size: 1
         Trajectory Topic: move_group/display_planned_path
       Planning Metrics:
         Payload: 1
@@ -338,13 +216,14 @@ Visualization Manager:
         Show Manipulability: false
         Show Manipulability Index: false
         Show Weight Limit: false
+        TextHeight: 0.07999999821186066
       Planning Request:
         Colliding Link Color: 255; 0; 0
         Goal State Alpha: 1
         Goal State Color: 250; 128; 0
         Interactive Marker Size: 0
         Joint Violation Color: 255; 0; 255
-        Planning Group: left_arm
+        Planning Group: hand1
         Query Goal State: true
         Query Start State: false
         Show Workspace: false
@@ -355,300 +234,151 @@ Visualization Manager:
       Scene Geometry:
         Scene Alpha: 1
         Scene Color: 50; 230; 50
-        Scene Display Time: 0.2
+        Scene Display Time: 0.20000000298023224
         Show Scene Geometry: true
         Voxel Coloring: Z-Axis
         Voxel Rendering: Occupied Voxels
       Scene Robot:
         Attached Body Color: 150; 50; 150
         Links:
-          base_bellow_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          base_footprint:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          base_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          bl_caster_l_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          bl_caster_r_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          bl_caster_rotation_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          br_caster_l_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          br_caster_r_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          br_caster_rotation_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          double_stereo_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fl_caster_l_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fl_caster_r_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fl_caster_rotation_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fr_caster_l_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fr_caster_r_wheel_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          fr_caster_rotation_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_mount_kinect_ir_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_mount_kinect_rgb_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_mount_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_mount_prosilica_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_pan_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_plate_frame:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          head_tilt_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_elbow_flex_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_forearm_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_forearm_roll_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_l_finger_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_l_finger_tip_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_motor_accelerometer_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_palm_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_r_finger_link:
-            Alpha: 1
-            Show Axes: false
-            Show Trail: false
-            Value: true
-          l_gripper_r_finger_tip_link:
+          All Links Enabled: true
+          Expand Joint Details: false
+          Expand Link Details: false
+          Expand Tree: false
+          Link Tree Style: Links in Alphabetic Order
+          panda_1_hand:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          l_shoulder_lift_link:
+          panda_1_leftfinger:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          l_shoulder_pan_link:
+          panda_1_link0:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          l_upper_arm_link:
+          panda_1_link1:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          l_upper_arm_roll_link:
+          panda_1_link2:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          l_wrist_flex_link:
+          panda_1_link3:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          l_wrist_roll_link:
+          panda_1_link4:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          laser_tilt_mount_link:
+          panda_1_link5:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_elbow_flex_link:
+          panda_1_link6:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_forearm_link:
+          panda_1_link7:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_forearm_roll_link:
+          panda_1_link8:
             Alpha: 1
             Show Axes: false
             Show Trail: false
-            Value: true
-          r_gripper_l_finger_link:
+          panda_1_rightfinger:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_l_finger_tip_link:
+          panda_2_hand:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_motor_accelerometer_link:
+          panda_2_leftfinger:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_palm_link:
+          panda_2_link0:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_r_finger_link:
+          panda_2_link1:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_gripper_r_finger_tip_link:
+          panda_2_link2:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_shoulder_lift_link:
+          panda_2_link3:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_shoulder_pan_link:
+          panda_2_link4:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_upper_arm_link:
+          panda_2_link5:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_upper_arm_roll_link:
+          panda_2_link6:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_wrist_flex_link:
+          panda_2_link7:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          r_wrist_roll_link:
+          panda_2_link8:
             Alpha: 1
             Show Axes: false
             Show Trail: false
-            Value: true
-          sensor_mount_link:
+          panda_2_rightfinger:
             Alpha: 1
             Show Axes: false
             Show Trail: false
             Value: true
-          torso_lift_link:
+          world:
             Alpha: 1
             Show Axes: false
             Show Trail: false
-            Value: true
         Robot Alpha: 0.5
-        Show Scene Robot: true
+        Show Robot Collision: false
+        Show Robot Visual: false
       Value: true
+      Velocity_Scaling_Factor: 0.1
   Enabled: true
   Global Options:
     Background Color: 48; 48; 48
+    Default Light: true
     Fixed Frame: world
+    Frame Rate: 30
   Name: root
   Tools:
     - Class: rviz/Interact
@@ -659,31 +389,41 @@ Visualization Manager:
   Views:
     Current:
       Class: rviz/XYOrbit
-      Distance: 2.9965
+      Distance: 3.546934127807617
+      Enable Stereo Rendering:
+        Stereo Eye Separation: 0.05999999865889549
+        Stereo Focal Distance: 1
+        Swap Stereo Eyes: false
+        Value: false
+      Field of View: 0.7853981852531433
       Focal Point:
-        X: 0.113567
-        Y: 0.10592
-        Z: 2.23518e-07
+        X: -0.259317547082901
+        Y: 0.2674747109413147
+        Z: 1.043086967911222e-07
+      Focal Shape Fixed Size: true
+      Focal Shape Size: 0.05000000074505806
+      Invert Z Axis: false
       Name: Current View
-      Near Clip Distance: 0.01
-      Pitch: 0.509797
-      Target Frame: /world
-      Value: XYOrbit (rviz)
-      Yaw: 5.65995
+      Near Clip Distance: 0.009999999776482582
+      Pitch: 0.5447972416877747
+      Target Frame: world
+      Yaw: 0.2699483335018158
     Saved: ~
 Window Geometry:
   Displays:
     collapsed: false
-  Height: 1337
+  Height: 1031
   Help:
     collapsed: false
   Hide Left Dock: false
   Hide Right Dock: false
-  Motion Planning:
+  MotionPlanning:
+    collapsed: false
+  MotionPlanning - Trajectory Slider:
     collapsed: false
-  QMainWindow State: 000000ff00000000fd0000000100000000000002a2000004bcfc0200000005fb000000100044006900730070006c00610079007301000000410000032d000000dd00fffffffb0000000800480065006c00700000000342000000bb0000007600fffffffb0000000a0056006900650077007300000003b0000000b0000000b000fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000017400ffffff0000047a000004bc00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+  QMainWindow State: 000000ff00000000fd0000000100000000000002a2000003adfc0200000007fb000000100044006900730070006c006100790073010000003d0000021f000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a0056006900650077007300000003b0000000b0000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000001600000016fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e00670100000262000001880000017d00ffffff00000490000003ad00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
   Views:
     collapsed: false
-  Width: 1828
-  X: 459
-  Y: -243
+  Width: 1848
+  X: 72
+  Y: 27
diff --git a/src/franka_description/robots/dual_panda_example.urdf.xacro b/src/franka_description/robots/dual_panda_example.urdf.xacro
index d1e6449..49145e1 100644
--- a/src/franka_description/robots/dual_panda_example.urdf.xacro
+++ b/src/franka_description/robots/dual_panda_example.urdf.xacro
@@ -17,25 +17,7 @@
 
   
   <link name="world"/>
-  <!-- box shaped table as base for the 2 Pandas 
-  <link name="base">
-    <visual>
-      <origin xyz="0 0 0" rpy="0 0 0"/>
-      <geometry>
-        <box size="0 0 0" />
-      </geometry>
-      <material name="White">
-        <color rgba="1.0 1.0 1.0 1.0"/>
-      </material>
-    </visual>
-    <collision>
-      <origin xyz="0 0 0" rpy="0 0 0"/>
-      <geometry>
-        <box size="0 0 0" />
-      </geometry>
-    </collision>
-  </link>
-  -->
+
   
 
   <!-- right arm with gripper -->
diff --git a/src/franka_description/robots/panda_arm_hand.urdf.xacro b/src/franka_description/robots/panda_arm_hand.urdf.xacro
index c121e6f..12af2d0 100644
--- a/src/franka_description/robots/panda_arm_hand.urdf.xacro
+++ b/src/franka_description/robots/panda_arm_hand.urdf.xacro
@@ -17,7 +17,7 @@
 
   <xacro:property name="pos_1" value="${props['Basispositionen']['panda_arm1']}" />
   
-  <xacro:panda_arm arm_id="panda" connected_to="world"  xyz="${pos_1}"/>
+  <xacro:panda_arm arm_id="panda" connected_to="world"  xyz="0 0 0"/>
   <xacro:hand ns="panda" rpy="0 0 ${-pi/4}" connected_to="panda_link8"/>
   
 
diff --git a/src/reachability/Positionsanalyse/Base_eval1.yaml b/src/reachability/Positionsanalyse/Base_eval1.yaml
new file mode 100644
index 0000000..c0e9442
--- /dev/null
+++ b/src/reachability/Positionsanalyse/Base_eval1.yaml
@@ -0,0 +1,17 @@
+Referenzsystem: Franka Emika 'Panda'
+Name_der_Aufgabe: eval1
+Roboter_Anzahl: 2
+Map_Aufloesung: 0.125
+Zeit: 489.611901452
+Move_Groups:
+  objekt0:
+    panda_arm1:
+      - -0.257868 -0.300013 0.209432
+      - -0.244427 0.322470 0.175040
+  objekt1:
+    panda_arm2:
+      - 0.212868 0.330279 0.122680
+      - 0.259288 -0.316690 0.215937
+Basispositionen:
+  panda_arm1: -0.187500 0.062500 0.000000
+  panda_arm2: 0.437500 0.062500 0.000000
\ No newline at end of file
diff --git a/src/reachability/Positionsanalyse/Base_eval3.yaml b/src/reachability/Positionsanalyse/Base_eval3.yaml
new file mode 100644
index 0000000..5636084
--- /dev/null
+++ b/src/reachability/Positionsanalyse/Base_eval3.yaml
@@ -0,0 +1,22 @@
+Referenzsystem: Franka Emika 'Panda'
+Name_der_Aufgabe: eval3
+Roboter_Anzahl: 3
+Map_Aufloesung: 0.125
+Zeit: 732.125775855
+Move_Groups:
+  objekt0:
+    panda_arm1:
+      - 0.106047 -0.812031 0.173828
+      - -0.624037 -0.633452 0.189452
+  objekt1:
+    panda_arm2:
+      - 0.697399 0.000000 0.177046
+      - 0.655525 0.702519 0.284044
+  objekt2:
+    panda_arm3:
+      - -0.688845 0.632081 0.121845
+      - -0.224445 0.270074 0.168632
+Basispositionen:
+  panda_arm1: -0.812500 -0.437500 0.000000
+  panda_arm2: 0.312500 -0.062500 0.000000
+  panda_arm3: 0.125000 0.312500 0.000000
\ No newline at end of file
diff --git a/src/reachability/Positionsanalyse/Single_Base_task10.yaml b/src/reachability/Positionsanalyse/Single_Base_task10.yaml
new file mode 100644
index 0000000..588cd3f
--- /dev/null
+++ b/src/reachability/Positionsanalyse/Single_Base_task10.yaml
@@ -0,0 +1,15 @@
+Referenzsystem: Franka Emika 'Panda'
+Name_der_Aufgabe: task7
+Roboter_Anzahl: 1
+Map_Aufloesung: 0.125
+Zeit: 483.778259198
+Move_Groups:
+  objekt0:
+    panda_arm1:
+      - 0.840637 0.000000 0.380226
+      - 0.429307 -0.706689 0.413022
+      - -0.235124 0.010056 0.351257
+      - -0.715926 -0.695213 0.358164
+      - -1.195868 0.083197 0.445089
+Basispositionen:
+  panda_arm1: 1 1 1
diff --git a/src/reachability/Positionsanalyse/schnitt.yaml b/src/reachability/Positionsanalyse/schnitt.yaml
new file mode 100644
index 0000000..ca0629f
--- /dev/null
+++ b/src/reachability/Positionsanalyse/schnitt.yaml
@@ -0,0 +1,17 @@
+Referenzsystem: Franka Emika 'Panda'
+Name_der_Aufgabe: task10
+Roboter_Anzahl: 2
+Map_Aufloesung: 0.125
+Zeit: 499.61566182
+Move_Groups:
+  objekt0:
+    panda_arm1:
+      - 0.000000 -0.690402 0.150186
+      - -0.549918 -0.093641 0.165091
+  objekt1:
+    panda_arm2:
+      - 0.073455 0.478572 0.176422
+      - -0.624557 0.957446 0.172993
+Basispositionen:
+  panda_arm1: -0.562500 -0.812500 0.000000
+  panda_arm2: -0.062500 0.750000 0.000000
\ No newline at end of file
diff --git a/src/reachability/include/map_analyse.h b/src/reachability/include/map_analyse.h
index 8b36c72..a3d64ef 100644
--- a/src/reachability/include/map_analyse.h
+++ b/src/reachability/include/map_analyse.h
@@ -25,28 +25,105 @@
 void chaining(std::vector<std::vector<tf2::Vector3>>& ok, std::vector<std::vector<std::vector<tf2::Vector3>>>& ok_total);
 
 // Orientierungen für jedes Kettenglied generieren
-void task_ring(std::vector<tf2::Quaternion>& quat );
+
+/**
+ * Generiert alle Orienteirungen für eine Aufgabe
+ * @param quat Quaternion Vektor für alle Orientierungen
+ */
 void task_sphere(std::vector<tf2::Quaternion>& quat );
-std::vector<pcl::PointXYZ> generateBoxTree(const tf2::Vector3& origin, float diameter, float resolution);
+
+/**
+ * Generiert Box Struktur zum Abtasten des Octree
+ * 
+ * @param origin Mittelpunkt der Struktur
+ * @param diameter Intervall
+ * @param resolution Auflösung 
+ * @return std::vector<pcl::PointXYZ> Input für Voxel_Search
+ */
+std::vector<pcl::PointXYZ> BoxTree(const tf2::Vector3& origin, float diameter, float resolution);
+
+/**
+ * XY-Ebene
+ * @param origin Mittelpunkt
+ * @param diameter Intervall
+ * @param resolution Auflösung
+ * @return std::vector<pcl::PointXYZ> Input für Voxel_Search
+ */
 std::vector<pcl::PointXYZ> generateGround(const tf2::Vector3& origin, float diameter, float resolution);
+
+/**
+ * Umwandlung in eine PointCloud 
+ * 
+ * @param vector Vektors mit pcl::Punkten 
+ * @return pcl::PointCloud< pcl::PointXYZ >::Ptr  PointCloud
+ */
 pcl::PointCloud< pcl::PointXYZ >::Ptr vector_to_cloud(std::vector<pcl::PointXYZ>& vector);
 
 // Filtert den Arbeitsraum nach Schnittmengen in den Subketten
+
+/**
+ * Filtert die BoxTree Struktur nach Kettengliedern bezüglich der Teilkette
+ * 
+ * @param intersections Resultat
+ * @param ok_total Operationskette mit Subketten pro kooperativem Teil
+ * @param voxel_dictionary Vektor aus Boxtree Struktur mit Kettenglied abhängigen Einträgen
+ */
 void intersection_filter(std::vector<std::vector<std::vector<std::pair<pcl::PointXYZ, float>>>>& intersections, std::vector<std::vector<std::vector<tf2::Vector3>>>& ok_total, 
   std::vector<std::vector<std::vector<std::pair<pcl::PointXYZ, std::vector<std::pair<int, float>>>>>>& voxel_dictionary);
 
 
 // Marker pro Kettenlied, voxelisiert und auf den XY Ebene projeziert 
+
+/**
+ * Voxelisierte Marker pro Kettenglied
+ * 
+ * @param marker_arr 
+ * @param ok_total 
+ * @param voxel_dictionary 
+ */
 void marker_voxel(visualization_msgs::MarkerArray& marker_arr, std::vector<std::vector<std::vector<tf2::Vector3>>>& ok_total, 
   std::vector<std::vector<std::vector<std::pair<pcl::PointXYZ, std::vector<std::pair<int, float>>>>>>& voxel_dictionary);
+
+/**
+ * Marker pro Kettenglied 
+ * 
+ * @param marker_arr 
+ * @param P_total 
+ * @param index_total 
+ */
 void marker_per_glied(visualization_msgs::MarkerArray& marker_arr, std::vector<std::vector<std::vector<pcl::PointCloud< pcl::PointXYZ >::Ptr>>>& P_total,
   std::vector<std::vector<std::vector<float>>>& index_total);
+
+/**
+ * Marker auf der XY-Ebene 
+ * 
+ * @param marker_arr 
+ * @param ok_total 
+ * @param voxel_dictionary 
+ * @param resolution 
+ * @param ground 
+ */
 void marker_voxel_ground(visualization_msgs::MarkerArray& marker_arr, std::vector<std::vector<std::vector<tf2::Vector3>>>& ok_total, 
   std::vector<std::vector<std::vector<std::pair<pcl::PointXYZ, std::vector<std::pair<int, float>>>>>>& voxel_dictionary, float& resolution,
   std::vector<pcl::PointXYZ>& ground);
 
+
 // Marker pro Schnittmenge, voxelisiert und auf den XY Ebene projeziert 
+
+/**
+ * Marker Pro Schnittmenge
+ * 
+ * @param marker_arr 
+ * @param intersections 
+ */
 void marker_per_intersection(visualization_msgs::MarkerArray& marker_arr, std::vector<std::vector<std::vector<std::pair<pcl::PointXYZ, float>>>>& intersections);
+
+/**
+ * Marker pro Schnittmenge auf XY-Ebene
+ * 
+ * @param marker_arr 
+ * @param ground 
+ */
 void marker_intersection_to_ground(visualization_msgs::MarkerArray& marker_arr, std::vector<std::vector<std::vector<std::pair<pcl::PointXYZ, float>>>>& ground);
 
 
diff --git a/src/reachability/include/task_viewer.h b/src/reachability/include/task_viewer.h
index 1a3fad0..844a02d 100644
--- a/src/reachability/include/task_viewer.h
+++ b/src/reachability/include/task_viewer.h
@@ -18,7 +18,7 @@ boost::shared_ptr<interactive_markers::InteractiveMarkerServer> server;
 std::vector<interactive_markers::MenuHandler::EntryHandle> all_entrys;
 interactive_markers::MenuHandler menu_handler;
 
-// Alle Funktionen hinsichtlich der Serverkommunkation und des erstellens von Interaktiven Markern
+// Alle Funktionen hinsichtlich der Serverkommunkation und des erstellens von Interaktiven Marker
 InteractiveMarkerControl& makeBoxControl( InteractiveMarker &msg, std_msgs::ColorRGBA& col);
 void frameCallback(const ros::TimerEvent&);
 void processFeedback( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
@@ -28,10 +28,31 @@ void make6DofMarker(visualization_msgs::InteractiveMarker& int_marker);
 void initMenu(std::vector<interactive_markers::MenuHandler::EntryHandle> &all_entrys);
 
 // Folgende Optionen sind, abhängig der Operaktionsketten-Beschaffenheit, über Rechtsklick auf das 1. Glied (glied_0), möglich.  
+/**
+ * Fügt ein Kettenglied hinzu
+ * 
+ * @param feedback 
+ */
 void add_node( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
-void reset( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
+/**
+ * Füge schneidet die Ketten in disjunkte Teilketten 
+ * 
+ * @param feedback 
+ */
 void split_here( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
+
+/**
+ * Dokemtation der Aufgabenbeschreibung
+ * 
+ * @param feedback 
+ */
 void write_yaml( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
+
+/**
+ * Transformation eines kooperativen Glieds 
+ * 
+ * @param feedback 
+ */
 void add_coop_node( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback );
 
 
diff --git a/src/reachability/launch/pick_and_place.launch b/src/reachability/launch/double_pick.launch
similarity index 100%
rename from src/reachability/launch/pick_and_place.launch
rename to src/reachability/launch/double_pick.launch
diff --git a/src/reachability/launch/task_viewer.launch b/src/reachability/launch/task_viewer.launch
index 12a1d0f..44def2e 100644
--- a/src/reachability/launch/task_viewer.launch
+++ b/src/reachability/launch/task_viewer.launch
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <launch>
-    <arg name="name" default="task" />
-    <param name="task_name" value="$(arg name)" />
+    <arg name="NAME" default="task" />
+    <param name="task_name" value="$(arg NAME)" />
     <node pkg="reachability" type="task_viewer" name="task_viewer" output="screen" required="true"/>
     <node type="rviz" name="rviz" pkg="rviz" args="-d $(find reachability)/rviz/task_viewer.rviz" required="true" />
 </launch>
\ No newline at end of file
diff --git a/src/reachability/launch/visualization.launch b/src/reachability/launch/visualization.launch
deleted file mode 100644
index 4da1c79..0000000
--- a/src/reachability/launch/visualization.launch
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<launch>
-    <include file="$(find panda_moveit_config)/launch/demo.launch"></include>
-    <node pkg="reachability" type="visualization" name="visualization" output="screen" required="true"/>    
-</launch>
\ No newline at end of file
diff --git a/src/reachability/src/eval_analyse.cpp b/src/reachability/src/eval_analyse.cpp
index 1b6694d..3d71898 100644
--- a/src/reachability/src/eval_analyse.cpp
+++ b/src/reachability/src/eval_analyse.cpp
@@ -562,8 +562,8 @@ int main(int argc, char **argv){
 
   ros::Publisher marker_pub = n.advertise< visualization_msgs::MarkerArray >("visualization_marker_array", 1);
   while (ros::ok()){
-      marker_pub.publish(marker_arr);
-      ros::spinOnce();
-      loop_rate.sleep();
+    marker_pub.publish(marker_arr);
+    ros::spinOnce();
+    loop_rate.sleep();
   }
 }
\ No newline at end of file
diff --git a/src/reachability/src/map_analyse.cpp b/src/reachability/src/map_analyse.cpp
index 0488fc5..7351870 100644
--- a/src/reachability/src/map_analyse.cpp
+++ b/src/reachability/src/map_analyse.cpp
@@ -1,16 +1,6 @@
 #include "../include/map_analyse.h"
 
 
-void task_ring(std::vector<tf2::Quaternion>& quat ){
-  const double DELTA = M_PI / 4.0f;
-  for (double phi = 0; phi < 2*M_PI; phi += DELTA){
-    tf2::Quaternion rot;
-    rot.setRPY(0, (M_PI / 2), phi);
-    rot.normalize();
-    quat.push_back(rot);
-  }
-}
-
 void task_sphere(std::vector<tf2::Quaternion>& quat ){
   const double DELTA = M_PI / 4.0f;
   for (double phi = 0; phi < 2*M_PI; phi += DELTA){
@@ -23,7 +13,7 @@ void task_sphere(std::vector<tf2::Quaternion>& quat ){
   }
 }
 
-std::vector<pcl::PointXYZ> generateBoxTree(const tf2::Vector3& origin, float diameter, float resolution){
+std::vector<pcl::PointXYZ> BoxTree(const tf2::Vector3& origin, float diameter, float resolution){
   unsigned char depth = 16;
   std::vector<pcl::PointXYZ> box; 
   octomap::OcTree* tree = new octomap::OcTree(resolution/2);
@@ -446,7 +436,7 @@ int main(int argc, char **argv){
   ROS_INFO("Anzahl: %i", cloud_count);
 
   // prepare grid structures for voxelisation
-  std::vector<pcl::PointXYZ> spCenter = generateBoxTree(p, max_abstand, resolution);
+  std::vector<pcl::PointXYZ> spCenter = BoxTree(p, max_abstand, resolution);
   std::vector<pcl::PointXYZ> grCenter = generateGround(p, max_abstand, resolution);
   ROS_INFO("Arbeitsraum erstellt, starte Voxelisierung.");
 
@@ -539,7 +529,7 @@ int main(int argc, char **argv){
   
   ROS_INFO("Ground filter");
   std::vector<std::vector<std::vector<std::vector<bool>>>> ground_voxel_filter;
-  float d = 0.325;
+  float d = 0.25;
   for(int i = 0; i < ok_total.size(); i++){
     std::vector<std::vector<std::vector<bool>>> filtere_voxel_col;
     for(int j = 0; j < ok_total[i].size(); j++){
@@ -550,7 +540,7 @@ int main(int argc, char **argv){
         for(int k = 0; k < ok_total[i][j].size(); k++){
           tf2::Vector3 task = ok_total[i][j][k];
           task.setZ(0);
-          (tf2::tf2Distance(goal, task) >= d ) ? filtere_voxel_point.push_back(true) :filtere_voxel_point.push_back(false);
+          (tf2::tf2Distance(goal, task) >= d && tf2::tf2Distance(goal, task)) ? filtere_voxel_point.push_back(true) :filtere_voxel_point.push_back(false);
         }
         filtere_voxel.push_back(filtere_voxel_point);
       }
diff --git a/src/reachability/src/pick_and_place.cpp b/src/reachability/src/pick_and_place.cpp
index c8eef8c..9cf286c 100644
--- a/src/reachability/src/pick_and_place.cpp
+++ b/src/reachability/src/pick_and_place.cpp
@@ -17,6 +17,20 @@
 // The circle constant tau = 2*pi. One tau is one rotation in radians.
 const double tau = 2 * M_PI;
 
+void task_ring(std::vector<tf2::Quaternion>& quat, std::vector<tf2::Vector3>& vecs,  tf2::Vector3& task){
+  const double DELTA = M_PI / 4.0f;
+  for (double phi = 0; phi < 2*M_PI; phi += DELTA){
+    tf2::Quaternion rot;
+    float x, y;
+    x = 0.2 * cos(phi) * sin(0) + task.getX();
+    y = 0.2 * sin(phi) * sin(0) + task.getY();
+    vecs.push_back(tf2::Vector3(x,y,0));
+    rot.setRPY(0, 0, phi);
+    rot.normalize();
+    quat.push_back(rot);
+  }
+}
+
 void openGripper(trajectory_msgs::JointTrajectory& posture, std::string& id){
   for (int i = 1; i <= 2;i++){
     posture.joint_names.push_back(id + std::to_string(i));
@@ -77,16 +91,19 @@ void pick(moveit::planning_interface::MoveGroupInterface& move_group, tf2::Vecto
   move_group.pick("object"+ std::to_string(obj), grasps);
 }
 
-void place(moveit::planning_interface::MoveGroupInterface& move_group, tf2::Vector3& pos, int obj){
+void place(moveit::planning_interface::MoveGroupInterface& move_group, tf2::Transform& trans, int obj){
+  tf2::Quaternion orientation = trans.getRotation();
+  tf2::Vector3 pos = trans.getOrigin();
+
 
   std::vector<moveit_msgs::PlaceLocation> place_location;
   std::string id;
 
   place_location.resize(1);
   place_location[0].place_pose.header.frame_id = "world";
-  tf2::Quaternion orientation;
 
-  orientation.setRPY(0, 0, 0);  // A quarter turn about the z-axis
+
+  orientation.setRPY(0, 0, -M_PI);  // A quarter turn about the z-axis
   place_location[0].place_pose.pose.orientation = tf2::toMsg(orientation);
 
   place_location[0].place_pose.pose.position.x = pos.getX();
@@ -183,6 +200,8 @@ int main(int argc, char** argv){
   ros::AsyncSpinner spinner(1);
   ros::WallDuration sleep_time(1.0);
   spinner.start();
+  ros::Time startamdal = ros::Time::now();
+
 
 
   std::regex reg("\\s+");
@@ -239,6 +258,7 @@ int main(int argc, char** argv){
 
   std::vector<moveit::planning_interface::MoveGroupInterface>  robots;
   int table_pos = 0;
+  std::vector<std::string> robot_pos;
 
   for(XmlRpc::XmlRpcValue::ValueStruct::const_iterator it = aufgabenverteilung.begin(); it != aufgabenverteilung.end(); ++it)
     for(XmlRpc::XmlRpcValue::ValueStruct::const_iterator it1 = it->second.begin(); it1 != it->second.end(); ++it1){
@@ -246,6 +266,12 @@ int main(int argc, char** argv){
       robots.push_back(std::move(moveit::planning_interface::MoveGroupInterface(it1->first)));
     }
   
+  std::string hallo;
+  nh.getParam("/Basispositionen/panda_arm1" , hallo);
+  robot_pos.push_back(hallo);
+  nh.getParam("/Basispositionen/panda_arm2" , hallo);
+  robot_pos.push_back(hallo);
+
   collision_detection::AllowedCollisionMatrix acm = ps.getAllowedCollisionMatrix();
   acm.setEntry("object0", "panda_1_leftfinger", true);
   acm.setEntry("object0" , "panda_1_rightfinger", true);
@@ -266,22 +292,38 @@ int main(int argc, char** argv){
 
   int table = 0;
   */
-  
- 
+  double amd = ros::Duration( ros::Time::now() - startamdal).toSec();
+  ROS_INFO("%f",amd);
+
   for(int i = 0; i< ok_total.size(); i++){
+    ros::Time startit = ros::Time::now();
     for(int j = 0; j < ok_total[i].size();j++){
       for(int k = 0; k < (ok_total[i][j].size()-1);k++){
+        tf2::Transform trans;
+        tf2::Quaternion orientation;
+        trans.setOrigin(ok_total[i][j][k+1]);
+
+        std::sregex_token_iterator to_it(robot_pos[i+j].begin(), robot_pos[i+j].end(),reg,-1);
+        std::vector<std::string> temp{to_it, {}};
+        tf2::Vector3 robot_vec(std::stof(temp[0]), std::stof(temp[1]), std::stof(temp[2]));
+        (robot_vec.getX()<ok_total[i][j][k].getX()) ? orientation.setRPY(0,0,0) :orientation.setRPY(0,0,M_PI);
+        trans.setRotation(orientation);
+
         robots[i+j].setSupportSurfaceName("table"+ std::to_string(table_pos));
         pick(robots[i+j], ok_total[i][j][k], i);
         table_pos++;
         robots[i+j].setSupportSurfaceName("table"+ std::to_string(table_pos));
-        place(robots[i+j], ok_total[i][j][k+1], i);
+        place(robots[i+j], trans, i);
       }
       if(ok_total[i].size()>1 && ok_total[i].size()!=j) table_pos--;
     }
+    double dif = ros::Duration( ros::Time::now() - startit).toSec();
+    ROS_INFO("%f",dif);
     table_pos++;
   }
 
+
+
   /*
 
   // take json with positions 
diff --git a/src/reachability/src/single_pick.cpp b/src/reachability/src/single_pick.cpp
index 7d418e3..864db99 100644
--- a/src/reachability/src/single_pick.cpp
+++ b/src/reachability/src/single_pick.cpp
@@ -178,6 +178,8 @@ int main(int argc, char** argv){
   ros::WallDuration sleep_time(1.0);
   spinner.start();
 
+  ros::Time startamdal = ros::Time::now();
+
 
   std::regex reg("\\s+");
 
@@ -249,19 +251,23 @@ int main(int argc, char** argv){
 
   int table = 0;
   */
-  
+  double amd = ros::Duration( ros::Time::now() - startamdal).toSec();
+  ROS_INFO("%f",amd);
  
   for(int i = 0; i< ok_total.size(); i++){
+    ros::Time startit = ros::Time::now();
     for(int j = 0; j < ok_total[i].size();j++){
       for(int k = 0; k < (ok_total[i][j].size()-1);k++){
         robots[i+j].setSupportSurfaceName("table"+ std::to_string(table_pos));
-        pick(robots[i+j], ok_total[i][j][k], i);
+        pick(robots[0], ok_total[i][j][k], i);
         table_pos++;
         robots[i+j].setSupportSurfaceName("table"+ std::to_string(table_pos));
-        place(robots[i+j], ok_total[i][j][k+1], i);
+        place(robots[0], ok_total[i][j][k+1], i);
       }
       if(ok_total[i].size()>1 && ok_total[i].size()!=j) table_pos--;
     }
+    double dif = ros::Duration( ros::Time::now() - startit).toSec();
+    ROS_INFO("%f",dif);
     table_pos++;
   }
 
diff --git a/src/reachability/src/task_viewer.cpp b/src/reachability/src/task_viewer.cpp
index 00116f1..8e0b180 100644
--- a/src/reachability/src/task_viewer.cpp
+++ b/src/reachability/src/task_viewer.cpp
@@ -101,27 +101,12 @@ void make6DofMarker(visualization_msgs::InteractiveMarker& int_marker){
   server->setCallback(int_marker.name, &processFeedback);
 }
 
-void reset( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback ){
-  menu_handler.setVisible(all_entrys[0], true);
-  menu_handler.setVisible(all_entrys[1], false);
-  menu_handler.setVisible(all_entrys[2], false);
-  menu_handler.setVisible(all_entrys[3], false);
-  menu_handler.setVisible(all_entrys[4], false);
-  menu_handler.apply( *server, "glied_0" );
-  for (int i = 1; i <= id; i++){
-    server->erase("glied_" + std::to_string(i));
-  }
-  id = 0;
-
-  server->applyChanges();
-}
 
 void add_coop_node( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback ){
   // 0 add node
   // 1 manipulate coop node
   // 2 splits the task 
   // 3 store points into yaml file
-  // 4 reset
   InteractiveMarker int_marker;
   tf::Point p(0,0,0);
   std_msgs::ColorRGBA col;
@@ -138,7 +123,6 @@ void add_coop_node( const visualization_msgs::InteractiveMarkerFeedbackConstPtr
   menu_handler.setVisible(all_entrys[1], false);
   menu_handler.setVisible(all_entrys[2], false);
   menu_handler.setVisible(all_entrys[3], false);
-  menu_handler.setVisible(all_entrys[4], true);
 
 
   menu_handler.apply( *server, "glied_0" );
@@ -150,7 +134,6 @@ void add_node( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feed
   // 1 manipulate coop node
   // 2 splits the task 
   // 3 store points into yaml file
-  // 4 reset
   InteractiveMarker int_marker;
   tf::Point p(0,0,0);
   std_msgs::ColorRGBA col;
@@ -185,7 +168,6 @@ void split_here( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &fe
   // 1 manipulate coop node
   // 2 splits the task 
   // 3 store points into yaml file
-  // 4 reset
 
   InteractiveMarker int_marker;
   std_msgs::ColorRGBA col;
@@ -241,20 +223,17 @@ void initMenu(std::vector<interactive_markers::MenuHandler::EntryHandle> &all_en
   ROS_INFO("(Option) Hier schneiden: Ab 2 Gliedern einer Operationskette beziehungsweise Teilkette ist ein Schnitt möglich, welcher die Kette in 2 disjunkte Teilketten teilt, zusätzlich wird ein weiteres grünes Glied erzeugt und initiiert den Sart der nächsten Kette.");
   ROS_INFO("(Option) Hier Kooperationsglied: Ab 2 Gliedern pro Operationskette beziehungsweise Teilkette ist ein Kooperationspunkt möglich, dies ist an der Farbe des letzten Gliedes erkennbar. Es wird kein neues Glied initiiert, sondern das letzte Gleid ist gleichzeitig erstes Glied der neuen Teilkette.");
   ROS_INFO("(Option) Generiere Aufgabenbeschreibung: Ab mehreren Teilketten mit >1 Gliedern ist die Formulierung der Aufgabenbeschreibung möglich.");
-  ROS_INFO("(Option) Reset: Stellt den Ausgangszustand der Kette wieder her.");
 
 
   all_entrys.push_back(menu_handler.insert( "Nächstes Glied", &add_node)); // 0 add node
   all_entrys.push_back(menu_handler.insert( "Hier Kooperationsglied", &add_coop_node)); // 1 manipulate coop node
   all_entrys.push_back(menu_handler.insert( "Hier schneiden", &split_here)); // 2 splits the task 
   all_entrys.push_back(menu_handler.insert( "Generiere Aufgabenbeschreibung", &write_yaml)); // 3 store points into yaml file
-  all_entrys.push_back(menu_handler.insert( "Reset", &reset)); // 4 delete helper cube
   
   menu_handler.setVisible(all_entrys[0], true);
   menu_handler.setVisible(all_entrys[1], false);
   menu_handler.setVisible(all_entrys[2], false);
   menu_handler.setVisible(all_entrys[3], false);
-  menu_handler.setVisible(all_entrys[4], false);
 }
 
 
diff --git a/src/reachability/src/visualization.cpp b/src/reachability/src/visualization.cpp
index 91c9adc..e3934a4 100644
--- a/src/reachability/src/visualization.cpp
+++ b/src/reachability/src/visualization.cpp
@@ -54,8 +54,8 @@ void cube_dec(const float& abstand, const float& resolution, std::vector<geometr
 }
 
 
-std::vector<visualization_msgs::Marker> sphere_point(tf2::Vector3& origin, double r){
-  const double DELTA = M_PI / 4.0f;
+visualization_msgs::Marker sphere_point(tf2::Vector3& origin, double r){
+  const double DELTA = M_PI / 10.0f;
   std::vector<visualization_msgs::Marker> p;
 
 
@@ -63,13 +63,25 @@ std::vector<visualization_msgs::Marker> sphere_point(tf2::Vector3& origin, doubl
   std_msgs::ColorRGBA col;
   col.a = 1.0f;
   col.g = 1.0f;
-  
-  int i = 0;
+  visualization_msgs::Marker pose;
+  pose.header.stamp = ros::Time::now();
+  pose.header.frame_id = "world";
+  pose.ns = "sp";
+  pose.scale.x = 0.03;
+  pose.scale.y = 0.03;
+  pose.scale.z = 0.03;
+
+
+  pose.action = visualization_msgs::Marker::ADD;
+  pose.type = visualization_msgs::Marker::POINTS;
+  pose.lifetime = ros::Duration();
+  pose.pose.orientation.w = 1;
+
   for (double phi = 0; phi < 2*M_PI; phi += DELTA){
-    for (double theta = 0; theta <= M_PI*0.5; theta += DELTA){
-      point.x = origin.getX();
-      point.y = origin.getY();
-      point.z = origin.getZ();
+    for (double theta = 0; theta <= M_PI; theta += DELTA){
+      point.x = 1 * sin(theta) * cos(phi);
+      point.y = 1 * sin(theta) * sin(phi);
+      point.z = 1 * cos(theta);
 
       tf2::Quaternion rot;
       rot.setRPY(0, ((M_PI / 2) + theta), phi);
@@ -95,21 +107,20 @@ std::vector<visualization_msgs::Marker> sphere_point(tf2::Vector3& origin, doubl
       p.push_back(pose);
       i++;
       */
+      std_msgs::ColorRGBA col;
+      col.a =col.g =1;
+      if (theta < M_PI *0.25f){
+        col.g = 0;
+        col.r = 1;
+      }
 
-      visualization_msgs::Marker pose;
-      pose.header.stamp = ros::Time::now();
-      pose.header.frame_id="world";
-      pose.pose.position = point;
-      pose.pose.orientation.x= rot.getX();
-      pose.pose.orientation.y= rot.getY();
-      pose.pose.orientation.z= rot.getZ();
-      pose.pose.orientation.w= rot.getW();
-      p.push_back(pose);
+      pose.points.push_back(point);
+      pose.colors.push_back(col);
 
     }
   }
 
-    return p;
+    return pose;
   }
 
 
@@ -127,46 +138,11 @@ int main(int argc, char **argv){
 
     ros::Rate loop_rate(1);
 
-    ros::WallDuration(1.0).sleep();
-    moveit::planning_interface::PlanningSceneInterface planning_scene_interface;
-    moveit::planning_interface::MoveGroupInterface group("panda_arm");
-    group.setPlanningTime(45.0);
-
-   
-
     // prepare marker for index
     visualization_msgs::MarkerArray marker_arr;
     visualization_msgs::Marker sphere_points, cube_points;
-    std_msgs::ColorRGBA col;
-
-    sphere_points.header.frame_id = "world";
-    sphere_points.ns = "sp";
-    sphere_points.header.stamp = ros::Time::now();
-    sphere_points.action = visualization_msgs::Marker::ADD;
-    sphere_points.type = visualization_msgs::Marker::MESH_RESOURCE;
-    sphere_points.lifetime = ros::Duration();
-    sphere_points.mesh_use_embedded_materials = true;
-    sphere_points.mesh_resource = "package://franka_description/meshes/visual/hand.dae";
-    sphere_points.scale.x = 1;
-    sphere_points.scale.y = 1;
-    sphere_points.scale.z = 1;
-    std::vector<visualization_msgs::Marker> points = sphere_point(origin, 0.5f);
-    sphere_points.pose.orientation.x = points[5].pose.orientation.x;
-    sphere_points.pose.orientation.y = points[5].pose.orientation.y;
-    sphere_points.pose.orientation.z = points[5].pose.orientation.z;
-    sphere_points.pose.orientation.w = points[5].pose.orientation.w;
-    /*
-    cube_dec(0.8, 0.2, points);
-
-
-    for (geometry_msgs::Point& point : points)
-      sphere_points.points.push_back(point);
-    */
-
-   
-    marker_arr.markers.push_back(points[5]);
-    marker_arr.markers.push_back(sphere_points);
-    ros::Publisher marker_pub = n.advertise< visualization_msgs::Marker>("visualization_marker_array", 1);
+    marker_arr.markers.push_back(sphere_point(origin, 0.5f));
+    ros::Publisher marker_pub = n.advertise< visualization_msgs::MarkerArray>("visualization_marker_array", 1);
     while (ros::ok()){
         marker_pub.publish(marker_arr);
         ros::spinOnce();
diff --git a/src/reachability/task/eval1.yaml b/src/reachability/task/eval1.yaml
new file mode 100644
index 0000000..708f223
--- /dev/null
+++ b/src/reachability/task/eval1.yaml
@@ -0,0 +1,8 @@
+Name_der_Aufgabe: eval1
+Aufgabenbeschreibung:
+  object0:
+    - -0.257868 -0.300013 0.209432
+    - -0.244427 0.322470 0.175040
+  object1:
+    - 0.212868 0.330279 0.122680
+    - 0.259288 -0.316690 0.215937
\ No newline at end of file
diff --git a/src/reachability/task/eval2.yaml b/src/reachability/task/eval2.yaml
new file mode 100644
index 0000000..01f0694
--- /dev/null
+++ b/src/reachability/task/eval2.yaml
@@ -0,0 +1,10 @@
+Name_der_Aufgabe: eval2
+Aufgabenbeschreibung:
+  object0:
+    - -0.384174 -1.117620 0.183886
+    - -0.358958 -0.073666 0.213993
+    - 0.332617 -0.590213 0.155456
+  object1:
+    - -0.423227 1.000479 0.172109
+    - 0.264733 1.559023 0.148107
+    - 0.524469 0.690750 0.305442
\ No newline at end of file
diff --git a/src/reachability/task/eval3.yaml b/src/reachability/task/eval3.yaml
new file mode 100644
index 0000000..6a8a428
--- /dev/null
+++ b/src/reachability/task/eval3.yaml
@@ -0,0 +1,11 @@
+Name_der_Aufgabe: eval3
+Aufgabenbeschreibung:
+  object0:
+    - 0.106047 -0.812031 0.173828
+    - -0.624037 -0.633452 0.189452
+  object1:
+    - 0.697399 0.000000 0.177046
+    - 0.655525 0.702519 0.284044
+  object2:
+    - -0.688845 0.632081 0.121845
+    - -0.224445 0.270074 0.168632
\ No newline at end of file
diff --git a/src/reachability/task/schnitt.yaml b/src/reachability/task/schnitt.yaml
new file mode 100644
index 0000000..a37ac18
--- /dev/null
+++ b/src/reachability/task/schnitt.yaml
@@ -0,0 +1,8 @@
+Name_der_Aufgabe: task10
+Aufgabenbeschreibung:
+  object0:
+    - 0.000000 -0.690402 0.150186
+    - -0.549918 -0.093641 0.165091
+  object1:
+    - 0.073455 0.478572 0.176422
+    - -0.624557 0.957446 0.172993
-- 
GitLab