diff --git a/.catkin_tools/profiles/default/devel_collisions.txt b/.catkin_tools/profiles/default/devel_collisions.txt index 1e89ca889ac2472418898e3b7862d151feeaf844..11f581c86b4fd6b6f1fc110e7a6e41d3a9116def 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 05f1c70aff0eee93eb2ee0d5b6d0ab1842adc985..e2192d13eef72508ec3fdf740eb49033bd7f1001 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 3e2b1a2debb5a7faa6dc913ccfdddd4758d68636..e781d070c5e3f8d4c03b927b4dfcdc713bf297e4 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 d1e6449b8700b39cad5675160b4aa6f2f41dc316..49145e13ead28d1fa383e95d75ddb66ea85a25eb 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 c121e6fca8690e7a6006c58a90cd5988f13ccf39..12af2d0de123548446f7ba476da3305789d7b07f 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 0000000000000000000000000000000000000000..c0e94427bc169c126d766a1e8a2004427310e3ce --- /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 0000000000000000000000000000000000000000..56360845700a58870273d31ba9ad4b0a361c222f --- /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 0000000000000000000000000000000000000000..588cd3feae1b6139f888fa7a8f69177bf6af5124 --- /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 0000000000000000000000000000000000000000..ca0629fb7eab0465ea2554f6b4b2053e25752e53 --- /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 8b36c727bac6d7a145ae5c3b53bb4f120983e93a..a3d64ef6a54df5c4c1a578ffbbb04395051085dd 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 1a3fad0183793689a389a503fe978211b573f1de..844a02d95a016a71a644db0dc3c42b1c7cfa796c 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 12a1d0f724ace214c88ffa5b7b7865711b14f6a8..44def2ea54bcc942b0b02d76e794865760eb9d0f 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 4da1c79b9517f01cb6d7b7659ba50d4552f6a81e..0000000000000000000000000000000000000000 --- 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 1b6694da962a4550fc31afa40426781317a7d9d2..3d718989d27a34cb305562ef1fe07d0601ea5ce2 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 0488fc5eddfdb48afaf550254ebee4288b906f5e..7351870c9a453535e3dc463387c261a02cd6ae9a 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 c8eef8c5cb961a5031aed0e91202cb55a728a892..9cf286caf155b8c0089dce1476b4e31b13ca1cfa 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 7d418e324528824ff2e5a6ee8c231adff1df205a..864db998c786cc37925192ab157cb6a5fd5d8f36 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 00116f1c41067912aaa4b616a4c8b025db7692a3..8e0b1808ed3fc11bb0cd5e4edfdee9f270559ca4 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 91c9adcc4612383dc580571ebdaaa3a409d93269..e3934a4898ee0f65b5d6f5c5afb2ccb02dd6bb05 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 0000000000000000000000000000000000000000..708f2237481f1631d5a9c472b1d252958d1d1c5a --- /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 0000000000000000000000000000000000000000..01f0694b25a462304bb3a22c8fb35534d3af454b --- /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 0000000000000000000000000000000000000000..6a8a428a25c3badf5227f1200aedf558cc1e8c58 --- /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 0000000000000000000000000000000000000000..a37ac18576c3c78bf0e8c4a34809a58bd06f2f95 --- /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