From 0c32c1a1d4c65c09d28cf08c2d74abdbc150f4ad Mon Sep 17 00:00:00 2001 From: BarisYazici Date: Thu, 26 Sep 2024 14:14:35 +0000 Subject: [PATCH] deploy: a6ef9fbe8232573ebd61c18e30d0e68c54b65f7d --- 0.13.6/Logo_FRANKA_EMIKA_dark.png | Bin 0 -> 4620 bytes 0.13.6/active__control_8h.html | 151 ++ 0.13.6/active__control_8h__dep__incl.map | 5 + 0.13.6/active__control_8h__dep__incl.md5 | 1 + 0.13.6/active__control_8h__dep__incl.png | Bin 0 -> 7409 bytes 0.13.6/active__control_8h__incl.map | 28 + 0.13.6/active__control_8h__incl.md5 | 1 + 0.13.6/active__control_8h__incl.png | Bin 0 -> 103876 bytes 0.13.6/active__control_8h_source.html | 193 ++ 0.13.6/active__control__base_8h.html | 148 ++ .../active__control__base_8h__dep__incl.map | 6 + .../active__control__base_8h__dep__incl.md5 | 1 + .../active__control__base_8h__dep__incl.png | Bin 0 -> 11609 bytes 0.13.6/active__control__base_8h__incl.map | 22 + 0.13.6/active__control__base_8h__incl.md5 | 1 + 0.13.6/active__control__base_8h__incl.png | Bin 0 -> 49532 bytes 0.13.6/active__control__base_8h_source.html | 150 ++ 0.13.6/active__motion__generator_8h.html | 139 ++ 0.13.6/active__motion__generator_8h__incl.map | 29 + 0.13.6/active__motion__generator_8h__incl.md5 | 1 + 0.13.6/active__motion__generator_8h__incl.png | Bin 0 -> 106653 bytes .../active__motion__generator_8h_source.html | 124 ++ 0.13.6/active__torque__control_8h.html | 139 ++ 0.13.6/active__torque__control_8h__incl.map | 29 + 0.13.6/active__torque__control_8h__incl.md5 | 1 + 0.13.6/active__torque__control_8h__incl.png | Bin 0 -> 106461 bytes 0.13.6/active__torque__control_8h_source.html | 119 ++ 0.13.6/annotated.html | 120 ++ 0.13.6/bc_s.png | Bin 0 -> 676 bytes 0.13.6/bdwn.png | Bin 0 -> 147 bytes ...tesian_impedance_control_8cpp-example.html | 224 ++ 0.13.6/classMotionGenerator-members.html | 89 + 0.13.6/classMotionGenerator.html | 188 ++ 0.13.6/classes.html | 129 ++ .../classfranka_1_1ActiveControl-members.html | 110 + 0.13.6/classfranka_1_1ActiveControl.html | 619 ++++++ ...ssfranka_1_1ActiveControlBase-members.html | 103 + 0.13.6/classfranka_1_1ActiveControlBase.html | 525 +++++ ...a_1_1ActiveControlBase__inherit__graph.map | 6 + ...a_1_1ActiveControlBase__inherit__graph.md5 | 1 + ...a_1_1ActiveControlBase__inherit__graph.png | Bin 0 -> 12036 bytes ...ssfranka_1_1ActiveControl__coll__graph.map | 4 + ...ssfranka_1_1ActiveControl__coll__graph.md5 | 1 + ...ssfranka_1_1ActiveControl__coll__graph.png | Bin 0 -> 4463 bytes ...ranka_1_1ActiveControl__inherit__graph.map | 6 + ...ranka_1_1ActiveControl__inherit__graph.md5 | 1 + ...ranka_1_1ActiveControl__inherit__graph.png | Bin 0 -> 12032 bytes ...anka_1_1ActiveMotionGenerator-members.html | 112 + .../classfranka_1_1ActiveMotionGenerator.html | 254 +++ ..._1_1ActiveMotionGenerator__coll__graph.map | 5 + ..._1_1ActiveMotionGenerator__coll__graph.md5 | 1 + ..._1_1ActiveMotionGenerator__coll__graph.png | Bin 0 -> 8096 bytes ...1ActiveMotionGenerator__inherit__graph.map | 5 + ...1ActiveMotionGenerator__inherit__graph.md5 | 1 + ...1ActiveMotionGenerator__inherit__graph.png | Bin 0 -> 8096 bytes ...franka_1_1ActiveTorqueControl-members.html | 111 + .../classfranka_1_1ActiveTorqueControl.html | 237 +++ ...ka_1_1ActiveTorqueControl__coll__graph.map | 5 + ...ka_1_1ActiveTorqueControl__coll__graph.md5 | 1 + ...ka_1_1ActiveTorqueControl__coll__graph.png | Bin 0 -> 7670 bytes ...1_1ActiveTorqueControl__inherit__graph.map | 5 + ...1_1ActiveTorqueControl__inherit__graph.md5 | 1 + ...1_1ActiveTorqueControl__inherit__graph.png | Bin 0 -> 7670 bytes .../classfranka_1_1CartesianPose-members.html | 99 + 0.13.6/classfranka_1_1CartesianPose.html | 385 ++++ ...ssfranka_1_1CartesianPose__coll__graph.map | 4 + ...ssfranka_1_1CartesianPose__coll__graph.md5 | 1 + ...ssfranka_1_1CartesianPose__coll__graph.png | Bin 0 -> 3873 bytes ...ranka_1_1CartesianPose__inherit__graph.map | 4 + ...ranka_1_1CartesianPose__inherit__graph.md5 | 1 + ...ranka_1_1CartesianPose__inherit__graph.png | Bin 0 -> 3873 bytes ...franka_1_1CartesianVelocities-members.html | 99 + .../classfranka_1_1CartesianVelocities.html | 368 ++++ ...ka_1_1CartesianVelocities__coll__graph.map | 4 + ...ka_1_1CartesianVelocities__coll__graph.md5 | 1 + ...ka_1_1CartesianVelocities__coll__graph.png | Bin 0 -> 4207 bytes ...1_1CartesianVelocities__inherit__graph.map | 4 + ...1_1CartesianVelocities__inherit__graph.md5 | 1 + ...1_1CartesianVelocities__inherit__graph.png | Bin 0 -> 4207 bytes 0.13.6/classfranka_1_1Duration-members.html | 118 ++ 0.13.6/classfranka_1_1Duration.html | 1044 ++++++++++ 0.13.6/classfranka_1_1Gripper-members.html | 102 + 0.13.6/classfranka_1_1Gripper.html | 490 +++++ ...classfranka_1_1JointPositions-members.html | 95 + 0.13.6/classfranka_1_1JointPositions.html | 211 ++ ...sfranka_1_1JointPositions__coll__graph.map | 4 + ...sfranka_1_1JointPositions__coll__graph.md5 | 1 + ...sfranka_1_1JointPositions__coll__graph.png | Bin 0 -> 3250 bytes ...anka_1_1JointPositions__inherit__graph.map | 4 + ...anka_1_1JointPositions__inherit__graph.md5 | 1 + ...anka_1_1JointPositions__inherit__graph.png | Bin 0 -> 3250 bytes ...lassfranka_1_1JointVelocities-members.html | 95 + 0.13.6/classfranka_1_1JointVelocities.html | 211 ++ ...franka_1_1JointVelocities__coll__graph.map | 4 + ...franka_1_1JointVelocities__coll__graph.md5 | 1 + ...franka_1_1JointVelocities__coll__graph.png | Bin 0 -> 3608 bytes ...nka_1_1JointVelocities__inherit__graph.map | 4 + ...nka_1_1JointVelocities__inherit__graph.md5 | 1 + ...nka_1_1JointVelocities__inherit__graph.png | Bin 0 -> 3608 bytes 0.13.6/classfranka_1_1Model-members.html | 108 + 0.13.6/classfranka_1_1Model.html | 897 ++++++++ 0.13.6/classfranka_1_1Robot-members.html | 126 ++ 0.13.6/classfranka_1_1Robot.html | 1815 +++++++++++++++++ 0.13.6/classfranka_1_1Torques-members.html | 95 + 0.13.6/classfranka_1_1Torques.html | 211 ++ .../classfranka_1_1Torques__coll__graph.map | 4 + .../classfranka_1_1Torques__coll__graph.md5 | 1 + .../classfranka_1_1Torques__coll__graph.png | Bin 0 -> 3264 bytes ...classfranka_1_1Torques__inherit__graph.map | 4 + ...classfranka_1_1Torques__inherit__graph.md5 | 1 + ...classfranka_1_1Torques__inherit__graph.png | Bin 0 -> 3264 bytes .../classfranka_1_1VacuumGripper-members.html | 102 + 0.13.6/classfranka_1_1VacuumGripper.html | 439 ++++ 0.13.6/closed.png | Bin 0 -> 132 bytes 0.13.6/communication_test_8cpp-example.html | 227 +++ 0.13.6/control__tools_8h.html | 370 ++++ 0.13.6/control__tools_8h__incl.map | 8 + 0.13.6/control__tools_8h__incl.md5 | 1 + 0.13.6/control__tools_8h__incl.png | Bin 0 -> 10328 bytes 0.13.6/control__tools_8h_source.html | 165 ++ 0.13.6/control__types_8h.html | 392 ++++ 0.13.6/control__types_8h__dep__incl.map | 12 + 0.13.6/control__types_8h__dep__incl.md5 | 1 + 0.13.6/control__types_8h__dep__incl.png | Bin 0 -> 39196 bytes 0.13.6/control__types_8h__incl.map | 6 + 0.13.6/control__types_8h__incl.md5 | 1 + 0.13.6/control__types_8h__incl.png | Bin 0 -> 7677 bytes 0.13.6/control__types_8h_source.html | 231 +++ 0.13.6/dir_000001_000002.html | 84 + .../dir_5f30c89189ebb3336d6b33aa932838ba.html | 149 ++ .../dir_d28a4824dc47e487b107a5db32ef43c4.html | 105 + ...r_d28a4824dc47e487b107a5db32ef43c4_dep.map | 5 + ...r_d28a4824dc47e487b107a5db32ef43c4_dep.md5 | 1 + ...r_d28a4824dc47e487b107a5db32ef43c4_dep.png | Bin 0 -> 3212 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 92 + .../dir_e68e8157741866f444e17edd764ebbae.html | 88 + 0.13.6/doc.png | Bin 0 -> 746 bytes 0.13.6/doxygen.css | 1793 ++++++++++++++++ 0.13.6/doxygen.svg | 26 + 0.13.6/duration_8h.html | 194 ++ 0.13.6/duration_8h__dep__incl.map | 17 + 0.13.6/duration_8h__dep__incl.md5 | 1 + 0.13.6/duration_8h__dep__incl.png | Bin 0 -> 65546 bytes 0.13.6/duration_8h__incl.map | 6 + 0.13.6/duration_8h__incl.md5 | 1 + 0.13.6/duration_8h__incl.png | Bin 0 -> 6069 bytes 0.13.6/duration_8h_source.html | 154 ++ 0.13.6/dynsections.js | 121 ++ 0.13.6/echo_robot_state_8cpp-example.html | 123 ++ 0.13.6/errors_8h.html | 182 ++ 0.13.6/errors_8h__dep__incl.map | 13 + 0.13.6/errors_8h__dep__incl.md5 | 1 + 0.13.6/errors_8h__dep__incl.png | Bin 0 -> 49640 bytes 0.13.6/errors_8h__incl.map | 5 + 0.13.6/errors_8h__incl.md5 | 1 + 0.13.6/errors_8h__incl.png | Bin 0 -> 5511 bytes 0.13.6/errors_8h_source.html | 206 ++ 0.13.6/examples.html | 128 ++ 0.13.6/examples__common_8h.html | 173 ++ 0.13.6/examples__common_8h__incl.map | 22 + 0.13.6/examples__common_8h__incl.md5 | 1 + 0.13.6/examples__common_8h__incl.png | Bin 0 -> 86539 bytes 0.13.6/examples__common_8h_source.html | 146 ++ 0.13.6/exception_8h.html | 166 ++ 0.13.6/exception_8h__dep__incl.map | 7 + 0.13.6/exception_8h__dep__incl.md5 | 1 + 0.13.6/exception_8h__dep__incl.png | Bin 0 -> 15889 bytes 0.13.6/exception_8h__incl.map | 18 + 0.13.6/exception_8h__incl.md5 | 1 + 0.13.6/exception_8h__incl.png | Bin 0 -> 34488 bytes 0.13.6/exception_8h_source.html | 156 ++ 0.13.6/files.html | 111 + 0.13.6/folderclosed.png | Bin 0 -> 616 bytes 0.13.6/folderopen.png | Bin 0 -> 597 bytes 0.13.6/force_control_8cpp-example.html | 214 ++ 0.13.6/functions.html | 93 + 0.13.6/functions_b.html | 93 + 0.13.6/functions_c.html | 183 ++ 0.13.6/functions_d.html | 115 ++ 0.13.6/functions_e.html | 101 + 0.13.6/functions_enum.html | 85 + 0.13.6/functions_f.html | 105 + 0.13.6/functions_func.html | 399 ++++ 0.13.6/functions_g.html | 93 + 0.13.6/functions_h.html | 91 + 0.13.6/functions_i.html | 105 + 0.13.6/functions_j.html | 135 ++ 0.13.6/functions_k.html | 87 + 0.13.6/functions_l.html | 99 + 0.13.6/functions_m.html | 120 ++ 0.13.6/functions_n.html | 87 + 0.13.6/functions_o.html | 180 ++ 0.13.6/functions_p.html | 99 + 0.13.6/functions_q.html | 91 + 0.13.6/functions_r.html | 105 + 0.13.6/functions_rela.html | 86 + 0.13.6/functions_s.html | 155 ++ 0.13.6/functions_t.html | 120 ++ 0.13.6/functions_type.html | 87 + 0.13.6/functions_v.html | 91 + 0.13.6/functions_vars.html | 513 +++++ 0.13.6/functions_w.html | 93 + 0.13.6/functions_z.html | 87 + 0.13.6/functions_~.html | 96 + ...te_cartesian_pose_motion_8cpp-example.html | 169 ++ ...on_external_control_loop_8cpp-example.html | 188 ++ ...artesian_velocity_motion_8cpp-example.html | 179 ++ ...on_external_control_loop_8cpp-example.html | 199 ++ ...rate_consecutive_motions_8cpp-example.html | 173 ++ .../generate_elbow_motion_8cpp-example.html | 170 ++ ...te_joint_position_motion_8cpp-example.html | 167 ++ ...on_external_control_loop_8cpp-example.html | 185 ++ ...te_joint_velocity_motion_8cpp-example.html | 161 ++ ...on_external_control_loop_8cpp-example.html | 181 ++ 0.13.6/globals.html | 85 + 0.13.6/globals_func.html | 85 + 0.13.6/graph_legend.html | 144 ++ 0.13.6/graph_legend.md5 | 1 + 0.13.6/graph_legend.png | Bin 0 -> 20615 bytes 0.13.6/grasp_object_8cpp-example.html | 159 ++ 0.13.6/gripper_8h.html | 124 ++ 0.13.6/gripper_8h__incl.map | 11 + 0.13.6/gripper_8h__incl.md5 | 1 + 0.13.6/gripper_8h__incl.png | Bin 0 -> 24665 bytes 0.13.6/gripper_8h_source.html | 154 ++ 0.13.6/gripper__state_8h.html | 175 ++ 0.13.6/gripper__state_8h__dep__incl.map | 4 + 0.13.6/gripper__state_8h__dep__incl.md5 | 1 + 0.13.6/gripper__state_8h__dep__incl.png | Bin 0 -> 5015 bytes 0.13.6/gripper__state_8h__incl.map | 8 + 0.13.6/gripper__state_8h__incl.md5 | 1 + 0.13.6/gripper__state_8h__incl.png | Bin 0 -> 12351 bytes 0.13.6/gripper__state_8h_source.html | 123 ++ 0.13.6/hierarchy.html | 122 ++ 0.13.6/index.html | 89 + 0.13.6/inherit_graph_0.map | 6 + 0.13.6/inherit_graph_0.md5 | 1 + 0.13.6/inherit_graph_0.png | Bin 0 -> 11062 bytes 0.13.6/inherit_graph_1.map | 3 + 0.13.6/inherit_graph_1.md5 | 1 + 0.13.6/inherit_graph_1.png | Bin 0 -> 1323 bytes 0.13.6/inherit_graph_10.map | 3 + 0.13.6/inherit_graph_10.md5 | 1 + 0.13.6/inherit_graph_10.png | Bin 0 -> 1867 bytes 0.13.6/inherit_graph_11.map | 3 + 0.13.6/inherit_graph_11.md5 | 1 + 0.13.6/inherit_graph_11.png | Bin 0 -> 1636 bytes 0.13.6/inherit_graph_12.map | 3 + 0.13.6/inherit_graph_12.md5 | 1 + 0.13.6/inherit_graph_12.png | Bin 0 -> 1804 bytes 0.13.6/inherit_graph_13.map | 3 + 0.13.6/inherit_graph_13.md5 | 1 + 0.13.6/inherit_graph_13.png | Bin 0 -> 2076 bytes 0.13.6/inherit_graph_14.map | 3 + 0.13.6/inherit_graph_14.md5 | 1 + 0.13.6/inherit_graph_14.png | Bin 0 -> 1485 bytes 0.13.6/inherit_graph_2.map | 3 + 0.13.6/inherit_graph_2.md5 | 1 + 0.13.6/inherit_graph_2.png | Bin 0 -> 1128 bytes 0.13.6/inherit_graph_3.map | 12 + 0.13.6/inherit_graph_3.md5 | 1 + 0.13.6/inherit_graph_3.png | Bin 0 -> 39755 bytes 0.13.6/inherit_graph_4.map | 8 + 0.13.6/inherit_graph_4.md5 | 1 + 0.13.6/inherit_graph_4.png | Bin 0 -> 14761 bytes 0.13.6/inherit_graph_5.map | 3 + 0.13.6/inherit_graph_5.md5 | 1 + 0.13.6/inherit_graph_5.png | Bin 0 -> 1285 bytes 0.13.6/inherit_graph_6.map | 3 + 0.13.6/inherit_graph_6.md5 | 1 + 0.13.6/inherit_graph_6.png | Bin 0 -> 1570 bytes 0.13.6/inherit_graph_7.map | 3 + 0.13.6/inherit_graph_7.md5 | 1 + 0.13.6/inherit_graph_7.png | Bin 0 -> 1403 bytes 0.13.6/inherit_graph_8.map | 3 + 0.13.6/inherit_graph_8.md5 | 1 + 0.13.6/inherit_graph_8.png | Bin 0 -> 1612 bytes 0.13.6/inherit_graph_9.map | 3 + 0.13.6/inherit_graph_9.md5 | 1 + 0.13.6/inherit_graph_9.png | Bin 0 -> 1229 bytes 0.13.6/inherits.html | 180 ++ .../joint_impedance_control_8cpp-example.html | 322 +++ ...nt_point_to_point_motion_8cpp-example.html | 145 ++ 0.13.6/jquery.js | 35 + 0.13.6/log_8h.html | 182 ++ 0.13.6/log_8h__dep__incl.map | 8 + 0.13.6/log_8h__dep__incl.md5 | 1 + 0.13.6/log_8h__dep__incl.png | Bin 0 -> 18098 bytes 0.13.6/log_8h__incl.map | 15 + 0.13.6/log_8h__incl.md5 | 1 + 0.13.6/log_8h__incl.png | Bin 0 -> 28286 bytes 0.13.6/log_8h_source.html | 132 ++ 0.13.6/lowpass__filter_8h.html | 268 +++ 0.13.6/lowpass__filter_8h__dep__incl.map | 9 + 0.13.6/lowpass__filter_8h__dep__incl.md5 | 1 + 0.13.6/lowpass__filter_8h__dep__incl.png | Bin 0 -> 21776 bytes 0.13.6/lowpass__filter_8h__incl.map | 5 + 0.13.6/lowpass__filter_8h__incl.md5 | 1 + 0.13.6/lowpass__filter_8h__incl.png | Bin 0 -> 5987 bytes 0.13.6/lowpass__filter_8h_source.html | 109 + 0.13.6/menu.js | 51 + 0.13.6/menudata.js | 107 + 0.13.6/model_8h.html | 209 ++ 0.13.6/model_8h__incl.map | 21 + 0.13.6/model_8h__incl.md5 | 1 + 0.13.6/model_8h__incl.png | Bin 0 -> 75754 bytes 0.13.6/model_8h_source.html | 211 ++ 0.13.6/motion_with_control_8cpp-example.html | 305 +++ ...ol_external_control_loop_8cpp-example.html | 326 +++ 0.13.6/nav_f.png | Bin 0 -> 153 bytes 0.13.6/nav_g.png | Bin 0 -> 95 bytes 0.13.6/nav_h.png | Bin 0 -> 98 bytes 0.13.6/open.png | Bin 0 -> 123 bytes 0.13.6/print_joint_poses_8cpp-example.html | 133 ++ 0.13.6/rate__limiting_8h.html | 1095 ++++++++++ 0.13.6/rate__limiting_8h__incl.map | 7 + 0.13.6/rate__limiting_8h__incl.md5 | 1 + 0.13.6/rate__limiting_8h__incl.png | Bin 0 -> 8972 bytes 0.13.6/rate__limiting_8h_source.html | 255 +++ 0.13.6/robot_8h.html | 151 ++ 0.13.6/robot_8h__dep__incl.map | 8 + 0.13.6/robot_8h__dep__incl.md5 | 1 + 0.13.6/robot_8h__dep__incl.png | Bin 0 -> 17905 bytes 0.13.6/robot_8h__incl.map | 20 + 0.13.6/robot_8h__incl.md5 | 1 + 0.13.6/robot_8h__incl.png | Bin 0 -> 50455 bytes 0.13.6/robot_8h_source.html | 291 +++ 0.13.6/robot__state_8h.html | 244 +++ 0.13.6/robot__state_8h__dep__incl.map | 12 + 0.13.6/robot__state_8h__dep__incl.md5 | 1 + 0.13.6/robot__state_8h__dep__incl.png | Bin 0 -> 46603 bytes 0.13.6/robot__state_8h__incl.map | 10 + 0.13.6/robot__state_8h__incl.md5 | 1 + 0.13.6/robot__state_8h__incl.png | Bin 0 -> 16165 bytes 0.13.6/robot__state_8h_source.html | 265 +++ 0.13.6/search/all_0.html | 37 + 0.13.6/search/all_0.js | 13 + 0.13.6/search/all_1.html | 37 + 0.13.6/search/all_1.js | 6 + 0.13.6/search/all_10.html | 37 + 0.13.6/search/all_10.js | 5 + 0.13.6/search/all_11.html | 37 + 0.13.6/search/all_11.js | 17 + 0.13.6/search/all_12.html | 37 + 0.13.6/search/all_12.js | 24 + 0.13.6/search/all_13.html | 37 + 0.13.6/search/all_13.js | 14 + 0.13.6/search/all_14.html | 37 + 0.13.6/search/all_14.js | 9 + 0.13.6/search/all_15.html | 37 + 0.13.6/search/all_15.js | 5 + 0.13.6/search/all_16.html | 37 + 0.13.6/search/all_16.js | 4 + 0.13.6/search/all_17.html | 37 + 0.13.6/search/all_17.js | 7 + 0.13.6/search/all_2.html | 37 + 0.13.6/search/all_2.js | 46 + 0.13.6/search/all_3.html | 37 + 0.13.6/search/all_3.js | 14 + 0.13.6/search/all_4.html | 37 + 0.13.6/search/all_4.js | 12 + 0.13.6/search/all_5.html | 37 + 0.13.6/search/all_5.js | 12 + 0.13.6/search/all_6.html | 37 + 0.13.6/search/all_6.js | 9 + 0.13.6/search/all_7.html | 37 + 0.13.6/search/all_7.js | 6 + 0.13.6/search/all_8.html | 37 + 0.13.6/search/all_8.js | 13 + 0.13.6/search/all_9.html | 37 + 0.13.6/search/all_9.js | 20 + 0.13.6/search/all_a.html | 37 + 0.13.6/search/all_a.js | 28 + 0.13.6/search/all_b.html | 37 + 0.13.6/search/all_b.js | 14 + 0.13.6/search/all_c.html | 37 + 0.13.6/search/all_c.js | 18 + 0.13.6/search/all_d.html | 37 + 0.13.6/search/all_d.js | 5 + 0.13.6/search/all_e.html | 37 + 0.13.6/search/all_e.js | 35 + 0.13.6/search/all_f.html | 37 + 0.13.6/search/all_f.js | 9 + 0.13.6/search/classes_0.html | 37 + 0.13.6/search/classes_0.js | 7 + 0.13.6/search/classes_1.html | 37 + 0.13.6/search/classes_1.js | 7 + 0.13.6/search/classes_2.html | 37 + 0.13.6/search/classes_2.js | 4 + 0.13.6/search/classes_3.html | 37 + 0.13.6/search/classes_3.js | 5 + 0.13.6/search/classes_4.html | 37 + 0.13.6/search/classes_4.js | 4 + 0.13.6/search/classes_5.html | 37 + 0.13.6/search/classes_5.js | 5 + 0.13.6/search/classes_6.html | 37 + 0.13.6/search/classes_6.js | 5 + 0.13.6/search/classes_7.html | 37 + 0.13.6/search/classes_7.js | 5 + 0.13.6/search/classes_8.html | 37 + 0.13.6/search/classes_8.js | 6 + 0.13.6/search/classes_9.html | 37 + 0.13.6/search/classes_9.js | 4 + 0.13.6/search/classes_a.html | 37 + 0.13.6/search/classes_a.js | 4 + 0.13.6/search/classes_b.html | 37 + 0.13.6/search/classes_b.js | 8 + 0.13.6/search/classes_c.html | 37 + 0.13.6/search/classes_c.js | 4 + 0.13.6/search/classes_d.html | 37 + 0.13.6/search/classes_d.js | 5 + 0.13.6/search/close.svg | 31 + 0.13.6/search/enums_0.html | 37 + 0.13.6/search/enums_0.js | 4 + 0.13.6/search/enums_1.html | 37 + 0.13.6/search/enums_1.js | 4 + 0.13.6/search/enums_2.html | 37 + 0.13.6/search/enums_2.js | 4 + 0.13.6/search/enums_3.html | 37 + 0.13.6/search/enums_3.js | 5 + 0.13.6/search/enums_4.html | 37 + 0.13.6/search/enums_4.js | 4 + 0.13.6/search/enumvalues_0.html | 37 + 0.13.6/search/enumvalues_0.js | 7 + 0.13.6/search/files_0.html | 37 + 0.13.6/search/files_0.js | 7 + 0.13.6/search/files_1.html | 37 + 0.13.6/search/files_1.js | 5 + 0.13.6/search/files_2.html | 37 + 0.13.6/search/files_2.js | 4 + 0.13.6/search/files_3.html | 37 + 0.13.6/search/files_3.js | 6 + 0.13.6/search/files_4.html | 37 + 0.13.6/search/files_4.js | 5 + 0.13.6/search/files_5.html | 37 + 0.13.6/search/files_5.js | 5 + 0.13.6/search/files_6.html | 37 + 0.13.6/search/files_6.js | 4 + 0.13.6/search/files_7.html | 37 + 0.13.6/search/files_7.js | 6 + 0.13.6/search/files_8.html | 37 + 0.13.6/search/files_8.js | 5 + 0.13.6/search/functions_0.html | 37 + 0.13.6/search/functions_0.js | 5 + 0.13.6/search/functions_1.html | 37 + 0.13.6/search/functions_1.js | 4 + 0.13.6/search/functions_10.html | 37 + 0.13.6/search/functions_10.js | 5 + 0.13.6/search/functions_11.html | 37 + 0.13.6/search/functions_11.js | 4 + 0.13.6/search/functions_12.html | 37 + 0.13.6/search/functions_12.js | 4 + 0.13.6/search/functions_13.html | 37 + 0.13.6/search/functions_13.js | 7 + 0.13.6/search/functions_2.html | 37 + 0.13.6/search/functions_2.js | 14 + 0.13.6/search/functions_3.html | 37 + 0.13.6/search/functions_3.js | 5 + 0.13.6/search/functions_4.html | 37 + 0.13.6/search/functions_4.js | 4 + 0.13.6/search/functions_5.html | 37 + 0.13.6/search/functions_5.js | 6 + 0.13.6/search/functions_6.html | 37 + 0.13.6/search/functions_6.js | 6 + 0.13.6/search/functions_7.html | 37 + 0.13.6/search/functions_7.js | 6 + 0.13.6/search/functions_8.html | 37 + 0.13.6/search/functions_8.js | 5 + 0.13.6/search/functions_9.html | 37 + 0.13.6/search/functions_9.js | 7 + 0.13.6/search/functions_a.html | 37 + 0.13.6/search/functions_a.js | 8 + 0.13.6/search/functions_b.html | 37 + 0.13.6/search/functions_b.js | 26 + 0.13.6/search/functions_c.html | 37 + 0.13.6/search/functions_c.js | 4 + 0.13.6/search/functions_d.html | 37 + 0.13.6/search/functions_d.js | 6 + 0.13.6/search/functions_e.html | 37 + 0.13.6/search/functions_e.js | 19 + 0.13.6/search/functions_f.html | 37 + 0.13.6/search/functions_f.js | 6 + 0.13.6/search/mag_sel.svg | 74 + 0.13.6/search/nomatches.html | 13 + 0.13.6/search/pages_0.html | 37 + 0.13.6/search/pages_0.js | 4 + 0.13.6/search/related_0.html | 37 + 0.13.6/search/related_0.js | 4 + 0.13.6/search/search.css | 257 +++ 0.13.6/search/search.js | 816 ++++++++ 0.13.6/search/search_l.png | Bin 0 -> 567 bytes 0.13.6/search/search_m.png | Bin 0 -> 158 bytes 0.13.6/search/search_r.png | Bin 0 -> 553 bytes 0.13.6/search/searchdata.js | 42 + 0.13.6/search/typedefs_0.html | 37 + 0.13.6/search/typedefs_0.js | 4 + 0.13.6/search/variables_0.html | 37 + 0.13.6/search/variables_0.js | 4 + 0.13.6/search/variables_1.html | 37 + 0.13.6/search/variables_1.js | 5 + 0.13.6/search/variables_10.html | 37 + 0.13.6/search/variables_10.js | 7 + 0.13.6/search/variables_11.html | 37 + 0.13.6/search/variables_11.js | 11 + 0.13.6/search/variables_12.html | 37 + 0.13.6/search/variables_12.js | 4 + 0.13.6/search/variables_13.html | 37 + 0.13.6/search/variables_13.js | 4 + 0.13.6/search/variables_2.html | 37 + 0.13.6/search/variables_2.js | 31 + 0.13.6/search/variables_3.html | 37 + 0.13.6/search/variables_3.js | 11 + 0.13.6/search/variables_4.html | 37 + 0.13.6/search/variables_4.js | 7 + 0.13.6/search/variables_5.html | 37 + 0.13.6/search/variables_5.js | 10 + 0.13.6/search/variables_6.html | 37 + 0.13.6/search/variables_6.js | 9 + 0.13.6/search/variables_7.html | 37 + 0.13.6/search/variables_7.js | 18 + 0.13.6/search/variables_8.html | 37 + 0.13.6/search/variables_8.js | 24 + 0.13.6/search/variables_9.html | 37 + 0.13.6/search/variables_9.js | 7 + 0.13.6/search/variables_a.html | 37 + 0.13.6/search/variables_a.js | 11 + 0.13.6/search/variables_b.html | 37 + 0.13.6/search/variables_b.js | 4 + 0.13.6/search/variables_c.html | 37 + 0.13.6/search/variables_c.js | 12 + 0.13.6/search/variables_d.html | 37 + 0.13.6/search/variables_d.js | 6 + 0.13.6/search/variables_e.html | 37 + 0.13.6/search/variables_e.js | 5 + 0.13.6/search/variables_f.html | 37 + 0.13.6/search/variables_f.js | 5 + 0.13.6/splitbar.png | Bin 0 -> 314 bytes 0.13.6/structfranka_1_1CommandException.html | 118 ++ ...ranka_1_1CommandException__coll__graph.map | 5 + ...ranka_1_1CommandException__coll__graph.md5 | 1 + ...ranka_1_1CommandException__coll__graph.png | Bin 0 -> 6766 bytes ...ka_1_1CommandException__inherit__graph.map | 5 + ...ka_1_1CommandException__inherit__graph.md5 | 1 + ...ka_1_1CommandException__inherit__graph.png | Bin 0 -> 6766 bytes ...uctfranka_1_1ControlException-members.html | 93 + 0.13.6/structfranka_1_1ControlException.html | 185 ++ ...ranka_1_1ControlException__coll__graph.map | 5 + ...ranka_1_1ControlException__coll__graph.md5 | 1 + ...ranka_1_1ControlException__coll__graph.png | Bin 0 -> 6413 bytes ...ka_1_1ControlException__inherit__graph.map | 5 + ...ka_1_1ControlException__inherit__graph.md5 | 1 + ...ka_1_1ControlException__inherit__graph.png | Bin 0 -> 6413 bytes 0.13.6/structfranka_1_1Errors-members.html | 138 ++ 0.13.6/structfranka_1_1Errors.html | 462 +++++ 0.13.6/structfranka_1_1Exception.html | 126 ++ ...structfranka_1_1Exception__coll__graph.map | 4 + ...structfranka_1_1Exception__coll__graph.md5 | 1 + ...structfranka_1_1Exception__coll__graph.png | Bin 0 -> 3508 bytes ...uctfranka_1_1Exception__inherit__graph.map | 12 + ...uctfranka_1_1Exception__inherit__graph.md5 | 1 + ...uctfranka_1_1Exception__inherit__graph.png | Bin 0 -> 40258 bytes .../structfranka_1_1Finishable-members.html | 92 + 0.13.6/structfranka_1_1Finishable.html | 124 ++ ...ctfranka_1_1Finishable__inherit__graph.map | 8 + ...ctfranka_1_1Finishable__inherit__graph.md5 | 1 + ...ctfranka_1_1Finishable__inherit__graph.png | Bin 0 -> 15399 bytes .../structfranka_1_1GripperState-members.html | 96 + 0.13.6/structfranka_1_1GripperState.html | 188 ++ ...uctfranka_1_1GripperState__coll__graph.map | 4 + ...uctfranka_1_1GripperState__coll__graph.md5 | 1 + ...uctfranka_1_1GripperState__coll__graph.png | Bin 0 -> 4233 bytes ...1IncompatibleVersionException-members.html | 94 + ...ranka_1_1IncompatibleVersionException.html | 186 ++ ...ompatibleVersionException__coll__graph.map | 5 + ...ompatibleVersionException__coll__graph.md5 | 1 + ...ompatibleVersionException__coll__graph.png | Bin 0 -> 7209 bytes ...atibleVersionException__inherit__graph.map | 5 + ...atibleVersionException__inherit__graph.md5 | 1 + ...atibleVersionException__inherit__graph.png | Bin 0 -> 7209 bytes ...ctfranka_1_1InvalidOperationException.html | 118 ++ ...InvalidOperationException__coll__graph.map | 5 + ...InvalidOperationException__coll__graph.md5 | 1 + ...InvalidOperationException__coll__graph.png | Bin 0 -> 6477 bytes ...alidOperationException__inherit__graph.map | 5 + ...alidOperationException__inherit__graph.md5 | 1 + ...alidOperationException__inherit__graph.png | Bin 0 -> 6477 bytes 0.13.6/structfranka_1_1ModelException.html | 118 ++ ...tfranka_1_1ModelException__coll__graph.map | 5 + ...tfranka_1_1ModelException__coll__graph.md5 | 1 + ...tfranka_1_1ModelException__coll__graph.png | Bin 0 -> 6511 bytes ...anka_1_1ModelException__inherit__graph.map | 5 + ...anka_1_1ModelException__inherit__graph.md5 | 1 + ...anka_1_1ModelException__inherit__graph.png | Bin 0 -> 6511 bytes 0.13.6/structfranka_1_1NetworkException.html | 118 ++ ...ranka_1_1NetworkException__coll__graph.map | 5 + ...ranka_1_1NetworkException__coll__graph.md5 | 1 + ...ranka_1_1NetworkException__coll__graph.png | Bin 0 -> 6621 bytes ...ka_1_1NetworkException__inherit__graph.map | 5 + ...ka_1_1NetworkException__inherit__graph.md5 | 1 + ...ka_1_1NetworkException__inherit__graph.png | Bin 0 -> 6621 bytes 0.13.6/structfranka_1_1ProtocolException.html | 118 ++ ...anka_1_1ProtocolException__coll__graph.map | 5 + ...anka_1_1ProtocolException__coll__graph.md5 | 1 + ...anka_1_1ProtocolException__coll__graph.png | Bin 0 -> 6380 bytes ...a_1_1ProtocolException__inherit__graph.map | 5 + ...a_1_1ProtocolException__inherit__graph.md5 | 1 + ...a_1_1ProtocolException__inherit__graph.png | Bin 0 -> 6380 bytes 0.13.6/structfranka_1_1RealtimeException.html | 118 ++ ...anka_1_1RealtimeException__coll__graph.map | 5 + ...anka_1_1RealtimeException__coll__graph.md5 | 1 + ...anka_1_1RealtimeException__coll__graph.png | Bin 0 -> 6578 bytes ...a_1_1RealtimeException__inherit__graph.map | 5 + ...a_1_1RealtimeException__inherit__graph.md5 | 1 + ...a_1_1RealtimeException__inherit__graph.png | Bin 0 -> 6578 bytes 0.13.6/structfranka_1_1Record-members.html | 93 + 0.13.6/structfranka_1_1Record.html | 132 ++ .../structfranka_1_1Record__coll__graph.map | 13 + .../structfranka_1_1Record__coll__graph.md5 | 1 + .../structfranka_1_1Record__coll__graph.png | Bin 0 -> 47102 bytes .../structfranka_1_1RobotCommand-members.html | 96 + 0.13.6/structfranka_1_1RobotCommand.html | 140 ++ ...uctfranka_1_1RobotCommand__coll__graph.map | 9 + ...uctfranka_1_1RobotCommand__coll__graph.md5 | 1 + ...uctfranka_1_1RobotCommand__coll__graph.png | Bin 0 -> 26922 bytes .../structfranka_1_1RobotState-members.html | 138 ++ 0.13.6/structfranka_1_1RobotState.html | 942 +++++++++ ...tructfranka_1_1RobotState__coll__graph.map | 5 + ...tructfranka_1_1RobotState__coll__graph.md5 | 1 + ...tructfranka_1_1RobotState__coll__graph.png | Bin 0 -> 7168 bytes ...tfranka_1_1VacuumGripperState-members.html | 98 + .../structfranka_1_1VacuumGripperState.html | 194 ++ ...nka_1_1VacuumGripperState__coll__graph.map | 4 + ...nka_1_1VacuumGripperState__coll__graph.md5 | 1 + ...nka_1_1VacuumGripperState__coll__graph.png | Bin 0 -> 4946 bytes 0.13.6/sync_off.png | Bin 0 -> 853 bytes 0.13.6/sync_on.png | Bin 0 -> 845 bytes 0.13.6/tab_a.png | Bin 0 -> 142 bytes 0.13.6/tab_b.png | Bin 0 -> 169 bytes 0.13.6/tab_h.png | Bin 0 -> 177 bytes 0.13.6/tab_s.png | Bin 0 -> 184 bytes 0.13.6/tabs.css | 1 + 0.13.6/vacuum__gripper_8h.html | 125 ++ 0.13.6/vacuum__gripper_8h__incl.map | 11 + 0.13.6/vacuum__gripper_8h__incl.md5 | 1 + 0.13.6/vacuum__gripper_8h__incl.png | Bin 0 -> 30772 bytes 0.13.6/vacuum__gripper_8h_source.html | 153 ++ 0.13.6/vacuum__gripper__state_8h.html | 223 ++ .../vacuum__gripper__state_8h__dep__incl.map | 4 + .../vacuum__gripper__state_8h__dep__incl.md5 | 1 + .../vacuum__gripper__state_8h__dep__incl.png | Bin 0 -> 5306 bytes 0.13.6/vacuum__gripper__state_8h__incl.map | 9 + 0.13.6/vacuum__gripper__state_8h__incl.md5 | 1 + 0.13.6/vacuum__gripper__state_8h__incl.png | Bin 0 -> 16523 bytes 0.13.6/vacuum__gripper__state_8h_source.html | 143 ++ 0.13.6/vacuum_object_8cpp-example.html | 144 ++ index.html | 2 +- 656 files changed, 40250 insertions(+), 1 deletion(-) create mode 100644 0.13.6/Logo_FRANKA_EMIKA_dark.png create mode 100644 0.13.6/active__control_8h.html create mode 100644 0.13.6/active__control_8h__dep__incl.map create mode 100644 0.13.6/active__control_8h__dep__incl.md5 create mode 100644 0.13.6/active__control_8h__dep__incl.png create mode 100644 0.13.6/active__control_8h__incl.map create mode 100644 0.13.6/active__control_8h__incl.md5 create mode 100644 0.13.6/active__control_8h__incl.png create mode 100644 0.13.6/active__control_8h_source.html create mode 100644 0.13.6/active__control__base_8h.html create mode 100644 0.13.6/active__control__base_8h__dep__incl.map create mode 100644 0.13.6/active__control__base_8h__dep__incl.md5 create mode 100644 0.13.6/active__control__base_8h__dep__incl.png create mode 100644 0.13.6/active__control__base_8h__incl.map create mode 100644 0.13.6/active__control__base_8h__incl.md5 create mode 100644 0.13.6/active__control__base_8h__incl.png create mode 100644 0.13.6/active__control__base_8h_source.html create mode 100644 0.13.6/active__motion__generator_8h.html create mode 100644 0.13.6/active__motion__generator_8h__incl.map create mode 100644 0.13.6/active__motion__generator_8h__incl.md5 create mode 100644 0.13.6/active__motion__generator_8h__incl.png create mode 100644 0.13.6/active__motion__generator_8h_source.html create mode 100644 0.13.6/active__torque__control_8h.html create mode 100644 0.13.6/active__torque__control_8h__incl.map create mode 100644 0.13.6/active__torque__control_8h__incl.md5 create mode 100644 0.13.6/active__torque__control_8h__incl.png create mode 100644 0.13.6/active__torque__control_8h_source.html create mode 100644 0.13.6/annotated.html create mode 100644 0.13.6/bc_s.png create mode 100644 0.13.6/bdwn.png create mode 100644 0.13.6/cartesian_impedance_control_8cpp-example.html create mode 100644 0.13.6/classMotionGenerator-members.html create mode 100644 0.13.6/classMotionGenerator.html create mode 100644 0.13.6/classes.html create mode 100644 0.13.6/classfranka_1_1ActiveControl-members.html create mode 100644 0.13.6/classfranka_1_1ActiveControl.html create mode 100644 0.13.6/classfranka_1_1ActiveControlBase-members.html create mode 100644 0.13.6/classfranka_1_1ActiveControlBase.html create mode 100644 0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1ActiveControl__coll__graph.map create mode 100644 0.13.6/classfranka_1_1ActiveControl__coll__graph.md5 create mode 100644 0.13.6/classfranka_1_1ActiveControl__coll__graph.png create mode 100644 0.13.6/classfranka_1_1ActiveControl__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1ActiveControl__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1ActiveControl__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1ActiveMotionGenerator-members.html create mode 100644 0.13.6/classfranka_1_1ActiveMotionGenerator.html create mode 100644 0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.map create mode 100644 0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.md5 create mode 100644 0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.png create mode 100644 0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1ActiveTorqueControl-members.html create mode 100644 0.13.6/classfranka_1_1ActiveTorqueControl.html create mode 100644 0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.map create mode 100644 0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.md5 create mode 100644 0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.png create mode 100644 0.13.6/classfranka_1_1ActiveTorqueControl__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1ActiveTorqueControl__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1ActiveTorqueControl__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1CartesianPose-members.html create mode 100644 0.13.6/classfranka_1_1CartesianPose.html create mode 100644 0.13.6/classfranka_1_1CartesianPose__coll__graph.map create mode 100644 0.13.6/classfranka_1_1CartesianPose__coll__graph.md5 create mode 100644 0.13.6/classfranka_1_1CartesianPose__coll__graph.png create mode 100644 0.13.6/classfranka_1_1CartesianPose__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1CartesianPose__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1CartesianPose__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1CartesianVelocities-members.html create mode 100644 0.13.6/classfranka_1_1CartesianVelocities.html create mode 100644 0.13.6/classfranka_1_1CartesianVelocities__coll__graph.map create mode 100644 0.13.6/classfranka_1_1CartesianVelocities__coll__graph.md5 create mode 100644 0.13.6/classfranka_1_1CartesianVelocities__coll__graph.png create mode 100644 0.13.6/classfranka_1_1CartesianVelocities__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1CartesianVelocities__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1CartesianVelocities__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1Duration-members.html create mode 100644 0.13.6/classfranka_1_1Duration.html create mode 100644 0.13.6/classfranka_1_1Gripper-members.html create mode 100644 0.13.6/classfranka_1_1Gripper.html create mode 100644 0.13.6/classfranka_1_1JointPositions-members.html create mode 100644 0.13.6/classfranka_1_1JointPositions.html create mode 100644 0.13.6/classfranka_1_1JointPositions__coll__graph.map create mode 100644 0.13.6/classfranka_1_1JointPositions__coll__graph.md5 create mode 100644 0.13.6/classfranka_1_1JointPositions__coll__graph.png create mode 100644 0.13.6/classfranka_1_1JointPositions__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1JointPositions__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1JointPositions__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1JointVelocities-members.html create mode 100644 0.13.6/classfranka_1_1JointVelocities.html create mode 100644 0.13.6/classfranka_1_1JointVelocities__coll__graph.map create mode 100644 0.13.6/classfranka_1_1JointVelocities__coll__graph.md5 create mode 100644 0.13.6/classfranka_1_1JointVelocities__coll__graph.png create mode 100644 0.13.6/classfranka_1_1JointVelocities__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1JointVelocities__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1JointVelocities__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1Model-members.html create mode 100644 0.13.6/classfranka_1_1Model.html create mode 100644 0.13.6/classfranka_1_1Robot-members.html create mode 100644 0.13.6/classfranka_1_1Robot.html create mode 100644 0.13.6/classfranka_1_1Torques-members.html create mode 100644 0.13.6/classfranka_1_1Torques.html create mode 100644 0.13.6/classfranka_1_1Torques__coll__graph.map create mode 100644 0.13.6/classfranka_1_1Torques__coll__graph.md5 create mode 100644 0.13.6/classfranka_1_1Torques__coll__graph.png create mode 100644 0.13.6/classfranka_1_1Torques__inherit__graph.map create mode 100644 0.13.6/classfranka_1_1Torques__inherit__graph.md5 create mode 100644 0.13.6/classfranka_1_1Torques__inherit__graph.png create mode 100644 0.13.6/classfranka_1_1VacuumGripper-members.html create mode 100644 0.13.6/classfranka_1_1VacuumGripper.html create mode 100644 0.13.6/closed.png create mode 100644 0.13.6/communication_test_8cpp-example.html create mode 100644 0.13.6/control__tools_8h.html create mode 100644 0.13.6/control__tools_8h__incl.map create mode 100644 0.13.6/control__tools_8h__incl.md5 create mode 100644 0.13.6/control__tools_8h__incl.png create mode 100644 0.13.6/control__tools_8h_source.html create mode 100644 0.13.6/control__types_8h.html create mode 100644 0.13.6/control__types_8h__dep__incl.map create mode 100644 0.13.6/control__types_8h__dep__incl.md5 create mode 100644 0.13.6/control__types_8h__dep__incl.png create mode 100644 0.13.6/control__types_8h__incl.map create mode 100644 0.13.6/control__types_8h__incl.md5 create mode 100644 0.13.6/control__types_8h__incl.png create mode 100644 0.13.6/control__types_8h_source.html create mode 100644 0.13.6/dir_000001_000002.html create mode 100644 0.13.6/dir_5f30c89189ebb3336d6b33aa932838ba.html create mode 100644 0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4.html create mode 100644 0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.map create mode 100644 0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5 create mode 100644 0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.png create mode 100644 0.13.6/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 0.13.6/dir_e68e8157741866f444e17edd764ebbae.html create mode 100644 0.13.6/doc.png create mode 100644 0.13.6/doxygen.css create mode 100644 0.13.6/doxygen.svg create mode 100644 0.13.6/duration_8h.html create mode 100644 0.13.6/duration_8h__dep__incl.map create mode 100644 0.13.6/duration_8h__dep__incl.md5 create mode 100644 0.13.6/duration_8h__dep__incl.png create mode 100644 0.13.6/duration_8h__incl.map create mode 100644 0.13.6/duration_8h__incl.md5 create mode 100644 0.13.6/duration_8h__incl.png create mode 100644 0.13.6/duration_8h_source.html create mode 100644 0.13.6/dynsections.js create mode 100644 0.13.6/echo_robot_state_8cpp-example.html create mode 100644 0.13.6/errors_8h.html create mode 100644 0.13.6/errors_8h__dep__incl.map create mode 100644 0.13.6/errors_8h__dep__incl.md5 create mode 100644 0.13.6/errors_8h__dep__incl.png create mode 100644 0.13.6/errors_8h__incl.map create mode 100644 0.13.6/errors_8h__incl.md5 create mode 100644 0.13.6/errors_8h__incl.png create mode 100644 0.13.6/errors_8h_source.html create mode 100644 0.13.6/examples.html create mode 100644 0.13.6/examples__common_8h.html create mode 100644 0.13.6/examples__common_8h__incl.map create mode 100644 0.13.6/examples__common_8h__incl.md5 create mode 100644 0.13.6/examples__common_8h__incl.png create mode 100644 0.13.6/examples__common_8h_source.html create mode 100644 0.13.6/exception_8h.html create mode 100644 0.13.6/exception_8h__dep__incl.map create mode 100644 0.13.6/exception_8h__dep__incl.md5 create mode 100644 0.13.6/exception_8h__dep__incl.png create mode 100644 0.13.6/exception_8h__incl.map create mode 100644 0.13.6/exception_8h__incl.md5 create mode 100644 0.13.6/exception_8h__incl.png create mode 100644 0.13.6/exception_8h_source.html create mode 100644 0.13.6/files.html create mode 100644 0.13.6/folderclosed.png create mode 100644 0.13.6/folderopen.png create mode 100644 0.13.6/force_control_8cpp-example.html create mode 100644 0.13.6/functions.html create mode 100644 0.13.6/functions_b.html create mode 100644 0.13.6/functions_c.html create mode 100644 0.13.6/functions_d.html create mode 100644 0.13.6/functions_e.html create mode 100644 0.13.6/functions_enum.html create mode 100644 0.13.6/functions_f.html create mode 100644 0.13.6/functions_func.html create mode 100644 0.13.6/functions_g.html create mode 100644 0.13.6/functions_h.html create mode 100644 0.13.6/functions_i.html create mode 100644 0.13.6/functions_j.html create mode 100644 0.13.6/functions_k.html create mode 100644 0.13.6/functions_l.html create mode 100644 0.13.6/functions_m.html create mode 100644 0.13.6/functions_n.html create mode 100644 0.13.6/functions_o.html create mode 100644 0.13.6/functions_p.html create mode 100644 0.13.6/functions_q.html create mode 100644 0.13.6/functions_r.html create mode 100644 0.13.6/functions_rela.html create mode 100644 0.13.6/functions_s.html create mode 100644 0.13.6/functions_t.html create mode 100644 0.13.6/functions_type.html create mode 100644 0.13.6/functions_v.html create mode 100644 0.13.6/functions_vars.html create mode 100644 0.13.6/functions_w.html create mode 100644 0.13.6/functions_z.html create mode 100644 0.13.6/functions_~.html create mode 100644 0.13.6/generate_cartesian_pose_motion_8cpp-example.html create mode 100644 0.13.6/generate_cartesian_pose_motion_external_control_loop_8cpp-example.html create mode 100644 0.13.6/generate_cartesian_velocity_motion_8cpp-example.html create mode 100644 0.13.6/generate_cartesian_velocity_motion_external_control_loop_8cpp-example.html create mode 100644 0.13.6/generate_consecutive_motions_8cpp-example.html create mode 100644 0.13.6/generate_elbow_motion_8cpp-example.html create mode 100644 0.13.6/generate_joint_position_motion_8cpp-example.html create mode 100644 0.13.6/generate_joint_position_motion_external_control_loop_8cpp-example.html create mode 100644 0.13.6/generate_joint_velocity_motion_8cpp-example.html create mode 100644 0.13.6/generate_joint_velocity_motion_external_control_loop_8cpp-example.html create mode 100644 0.13.6/globals.html create mode 100644 0.13.6/globals_func.html create mode 100644 0.13.6/graph_legend.html create mode 100644 0.13.6/graph_legend.md5 create mode 100644 0.13.6/graph_legend.png create mode 100644 0.13.6/grasp_object_8cpp-example.html create mode 100644 0.13.6/gripper_8h.html create mode 100644 0.13.6/gripper_8h__incl.map create mode 100644 0.13.6/gripper_8h__incl.md5 create mode 100644 0.13.6/gripper_8h__incl.png create mode 100644 0.13.6/gripper_8h_source.html create mode 100644 0.13.6/gripper__state_8h.html create mode 100644 0.13.6/gripper__state_8h__dep__incl.map create mode 100644 0.13.6/gripper__state_8h__dep__incl.md5 create mode 100644 0.13.6/gripper__state_8h__dep__incl.png create mode 100644 0.13.6/gripper__state_8h__incl.map create mode 100644 0.13.6/gripper__state_8h__incl.md5 create mode 100644 0.13.6/gripper__state_8h__incl.png create mode 100644 0.13.6/gripper__state_8h_source.html create mode 100644 0.13.6/hierarchy.html create mode 100644 0.13.6/index.html create mode 100644 0.13.6/inherit_graph_0.map create mode 100644 0.13.6/inherit_graph_0.md5 create mode 100644 0.13.6/inherit_graph_0.png create mode 100644 0.13.6/inherit_graph_1.map create mode 100644 0.13.6/inherit_graph_1.md5 create mode 100644 0.13.6/inherit_graph_1.png create mode 100644 0.13.6/inherit_graph_10.map create mode 100644 0.13.6/inherit_graph_10.md5 create mode 100644 0.13.6/inherit_graph_10.png create mode 100644 0.13.6/inherit_graph_11.map create mode 100644 0.13.6/inherit_graph_11.md5 create mode 100644 0.13.6/inherit_graph_11.png create mode 100644 0.13.6/inherit_graph_12.map create mode 100644 0.13.6/inherit_graph_12.md5 create mode 100644 0.13.6/inherit_graph_12.png create mode 100644 0.13.6/inherit_graph_13.map create mode 100644 0.13.6/inherit_graph_13.md5 create mode 100644 0.13.6/inherit_graph_13.png create mode 100644 0.13.6/inherit_graph_14.map create mode 100644 0.13.6/inherit_graph_14.md5 create mode 100644 0.13.6/inherit_graph_14.png create mode 100644 0.13.6/inherit_graph_2.map create mode 100644 0.13.6/inherit_graph_2.md5 create mode 100644 0.13.6/inherit_graph_2.png create mode 100644 0.13.6/inherit_graph_3.map create mode 100644 0.13.6/inherit_graph_3.md5 create mode 100644 0.13.6/inherit_graph_3.png create mode 100644 0.13.6/inherit_graph_4.map create mode 100644 0.13.6/inherit_graph_4.md5 create mode 100644 0.13.6/inherit_graph_4.png create mode 100644 0.13.6/inherit_graph_5.map create mode 100644 0.13.6/inherit_graph_5.md5 create mode 100644 0.13.6/inherit_graph_5.png create mode 100644 0.13.6/inherit_graph_6.map create mode 100644 0.13.6/inherit_graph_6.md5 create mode 100644 0.13.6/inherit_graph_6.png create mode 100644 0.13.6/inherit_graph_7.map create mode 100644 0.13.6/inherit_graph_7.md5 create mode 100644 0.13.6/inherit_graph_7.png create mode 100644 0.13.6/inherit_graph_8.map create mode 100644 0.13.6/inherit_graph_8.md5 create mode 100644 0.13.6/inherit_graph_8.png create mode 100644 0.13.6/inherit_graph_9.map create mode 100644 0.13.6/inherit_graph_9.md5 create mode 100644 0.13.6/inherit_graph_9.png create mode 100644 0.13.6/inherits.html create mode 100644 0.13.6/joint_impedance_control_8cpp-example.html create mode 100644 0.13.6/joint_point_to_point_motion_8cpp-example.html create mode 100644 0.13.6/jquery.js create mode 100644 0.13.6/log_8h.html create mode 100644 0.13.6/log_8h__dep__incl.map create mode 100644 0.13.6/log_8h__dep__incl.md5 create mode 100644 0.13.6/log_8h__dep__incl.png create mode 100644 0.13.6/log_8h__incl.map create mode 100644 0.13.6/log_8h__incl.md5 create mode 100644 0.13.6/log_8h__incl.png create mode 100644 0.13.6/log_8h_source.html create mode 100644 0.13.6/lowpass__filter_8h.html create mode 100644 0.13.6/lowpass__filter_8h__dep__incl.map create mode 100644 0.13.6/lowpass__filter_8h__dep__incl.md5 create mode 100644 0.13.6/lowpass__filter_8h__dep__incl.png create mode 100644 0.13.6/lowpass__filter_8h__incl.map create mode 100644 0.13.6/lowpass__filter_8h__incl.md5 create mode 100644 0.13.6/lowpass__filter_8h__incl.png create mode 100644 0.13.6/lowpass__filter_8h_source.html create mode 100644 0.13.6/menu.js create mode 100644 0.13.6/menudata.js create mode 100644 0.13.6/model_8h.html create mode 100644 0.13.6/model_8h__incl.map create mode 100644 0.13.6/model_8h__incl.md5 create mode 100644 0.13.6/model_8h__incl.png create mode 100644 0.13.6/model_8h_source.html create mode 100644 0.13.6/motion_with_control_8cpp-example.html create mode 100644 0.13.6/motion_with_control_external_control_loop_8cpp-example.html create mode 100644 0.13.6/nav_f.png create mode 100644 0.13.6/nav_g.png create mode 100644 0.13.6/nav_h.png create mode 100644 0.13.6/open.png create mode 100644 0.13.6/print_joint_poses_8cpp-example.html create mode 100644 0.13.6/rate__limiting_8h.html create mode 100644 0.13.6/rate__limiting_8h__incl.map create mode 100644 0.13.6/rate__limiting_8h__incl.md5 create mode 100644 0.13.6/rate__limiting_8h__incl.png create mode 100644 0.13.6/rate__limiting_8h_source.html create mode 100644 0.13.6/robot_8h.html create mode 100644 0.13.6/robot_8h__dep__incl.map create mode 100644 0.13.6/robot_8h__dep__incl.md5 create mode 100644 0.13.6/robot_8h__dep__incl.png create mode 100644 0.13.6/robot_8h__incl.map create mode 100644 0.13.6/robot_8h__incl.md5 create mode 100644 0.13.6/robot_8h__incl.png create mode 100644 0.13.6/robot_8h_source.html create mode 100644 0.13.6/robot__state_8h.html create mode 100644 0.13.6/robot__state_8h__dep__incl.map create mode 100644 0.13.6/robot__state_8h__dep__incl.md5 create mode 100644 0.13.6/robot__state_8h__dep__incl.png create mode 100644 0.13.6/robot__state_8h__incl.map create mode 100644 0.13.6/robot__state_8h__incl.md5 create mode 100644 0.13.6/robot__state_8h__incl.png create mode 100644 0.13.6/robot__state_8h_source.html create mode 100644 0.13.6/search/all_0.html create mode 100644 0.13.6/search/all_0.js create mode 100644 0.13.6/search/all_1.html create mode 100644 0.13.6/search/all_1.js create mode 100644 0.13.6/search/all_10.html create mode 100644 0.13.6/search/all_10.js create mode 100644 0.13.6/search/all_11.html create mode 100644 0.13.6/search/all_11.js create mode 100644 0.13.6/search/all_12.html create mode 100644 0.13.6/search/all_12.js create mode 100644 0.13.6/search/all_13.html create mode 100644 0.13.6/search/all_13.js create mode 100644 0.13.6/search/all_14.html create mode 100644 0.13.6/search/all_14.js create mode 100644 0.13.6/search/all_15.html create mode 100644 0.13.6/search/all_15.js create mode 100644 0.13.6/search/all_16.html create mode 100644 0.13.6/search/all_16.js create mode 100644 0.13.6/search/all_17.html create mode 100644 0.13.6/search/all_17.js create mode 100644 0.13.6/search/all_2.html create mode 100644 0.13.6/search/all_2.js create mode 100644 0.13.6/search/all_3.html create mode 100644 0.13.6/search/all_3.js create mode 100644 0.13.6/search/all_4.html create mode 100644 0.13.6/search/all_4.js create mode 100644 0.13.6/search/all_5.html create mode 100644 0.13.6/search/all_5.js create mode 100644 0.13.6/search/all_6.html create mode 100644 0.13.6/search/all_6.js create mode 100644 0.13.6/search/all_7.html create mode 100644 0.13.6/search/all_7.js create mode 100644 0.13.6/search/all_8.html create mode 100644 0.13.6/search/all_8.js create mode 100644 0.13.6/search/all_9.html create mode 100644 0.13.6/search/all_9.js create mode 100644 0.13.6/search/all_a.html create mode 100644 0.13.6/search/all_a.js create mode 100644 0.13.6/search/all_b.html create mode 100644 0.13.6/search/all_b.js create mode 100644 0.13.6/search/all_c.html create mode 100644 0.13.6/search/all_c.js create mode 100644 0.13.6/search/all_d.html create mode 100644 0.13.6/search/all_d.js create mode 100644 0.13.6/search/all_e.html create mode 100644 0.13.6/search/all_e.js create mode 100644 0.13.6/search/all_f.html create mode 100644 0.13.6/search/all_f.js create mode 100644 0.13.6/search/classes_0.html create mode 100644 0.13.6/search/classes_0.js create mode 100644 0.13.6/search/classes_1.html create mode 100644 0.13.6/search/classes_1.js create mode 100644 0.13.6/search/classes_2.html create mode 100644 0.13.6/search/classes_2.js create mode 100644 0.13.6/search/classes_3.html create mode 100644 0.13.6/search/classes_3.js create mode 100644 0.13.6/search/classes_4.html create mode 100644 0.13.6/search/classes_4.js create mode 100644 0.13.6/search/classes_5.html create mode 100644 0.13.6/search/classes_5.js create mode 100644 0.13.6/search/classes_6.html create mode 100644 0.13.6/search/classes_6.js create mode 100644 0.13.6/search/classes_7.html create mode 100644 0.13.6/search/classes_7.js create mode 100644 0.13.6/search/classes_8.html create mode 100644 0.13.6/search/classes_8.js create mode 100644 0.13.6/search/classes_9.html create mode 100644 0.13.6/search/classes_9.js create mode 100644 0.13.6/search/classes_a.html create mode 100644 0.13.6/search/classes_a.js create mode 100644 0.13.6/search/classes_b.html create mode 100644 0.13.6/search/classes_b.js create mode 100644 0.13.6/search/classes_c.html create mode 100644 0.13.6/search/classes_c.js create mode 100644 0.13.6/search/classes_d.html create mode 100644 0.13.6/search/classes_d.js create mode 100644 0.13.6/search/close.svg create mode 100644 0.13.6/search/enums_0.html create mode 100644 0.13.6/search/enums_0.js create mode 100644 0.13.6/search/enums_1.html create mode 100644 0.13.6/search/enums_1.js create mode 100644 0.13.6/search/enums_2.html create mode 100644 0.13.6/search/enums_2.js create mode 100644 0.13.6/search/enums_3.html create mode 100644 0.13.6/search/enums_3.js create mode 100644 0.13.6/search/enums_4.html create mode 100644 0.13.6/search/enums_4.js create mode 100644 0.13.6/search/enumvalues_0.html create mode 100644 0.13.6/search/enumvalues_0.js create mode 100644 0.13.6/search/files_0.html create mode 100644 0.13.6/search/files_0.js create mode 100644 0.13.6/search/files_1.html create mode 100644 0.13.6/search/files_1.js create mode 100644 0.13.6/search/files_2.html create mode 100644 0.13.6/search/files_2.js create mode 100644 0.13.6/search/files_3.html create mode 100644 0.13.6/search/files_3.js create mode 100644 0.13.6/search/files_4.html create mode 100644 0.13.6/search/files_4.js create mode 100644 0.13.6/search/files_5.html create mode 100644 0.13.6/search/files_5.js create mode 100644 0.13.6/search/files_6.html create mode 100644 0.13.6/search/files_6.js create mode 100644 0.13.6/search/files_7.html create mode 100644 0.13.6/search/files_7.js create mode 100644 0.13.6/search/files_8.html create mode 100644 0.13.6/search/files_8.js create mode 100644 0.13.6/search/functions_0.html create mode 100644 0.13.6/search/functions_0.js create mode 100644 0.13.6/search/functions_1.html create mode 100644 0.13.6/search/functions_1.js create mode 100644 0.13.6/search/functions_10.html create mode 100644 0.13.6/search/functions_10.js create mode 100644 0.13.6/search/functions_11.html create mode 100644 0.13.6/search/functions_11.js create mode 100644 0.13.6/search/functions_12.html create mode 100644 0.13.6/search/functions_12.js create mode 100644 0.13.6/search/functions_13.html create mode 100644 0.13.6/search/functions_13.js create mode 100644 0.13.6/search/functions_2.html create mode 100644 0.13.6/search/functions_2.js create mode 100644 0.13.6/search/functions_3.html create mode 100644 0.13.6/search/functions_3.js create mode 100644 0.13.6/search/functions_4.html create mode 100644 0.13.6/search/functions_4.js create mode 100644 0.13.6/search/functions_5.html create mode 100644 0.13.6/search/functions_5.js create mode 100644 0.13.6/search/functions_6.html create mode 100644 0.13.6/search/functions_6.js create mode 100644 0.13.6/search/functions_7.html create mode 100644 0.13.6/search/functions_7.js create mode 100644 0.13.6/search/functions_8.html create mode 100644 0.13.6/search/functions_8.js create mode 100644 0.13.6/search/functions_9.html create mode 100644 0.13.6/search/functions_9.js create mode 100644 0.13.6/search/functions_a.html create mode 100644 0.13.6/search/functions_a.js create mode 100644 0.13.6/search/functions_b.html create mode 100644 0.13.6/search/functions_b.js create mode 100644 0.13.6/search/functions_c.html create mode 100644 0.13.6/search/functions_c.js create mode 100644 0.13.6/search/functions_d.html create mode 100644 0.13.6/search/functions_d.js create mode 100644 0.13.6/search/functions_e.html create mode 100644 0.13.6/search/functions_e.js create mode 100644 0.13.6/search/functions_f.html create mode 100644 0.13.6/search/functions_f.js create mode 100644 0.13.6/search/mag_sel.svg create mode 100644 0.13.6/search/nomatches.html create mode 100644 0.13.6/search/pages_0.html create mode 100644 0.13.6/search/pages_0.js create mode 100644 0.13.6/search/related_0.html create mode 100644 0.13.6/search/related_0.js create mode 100644 0.13.6/search/search.css create mode 100644 0.13.6/search/search.js create mode 100644 0.13.6/search/search_l.png create mode 100644 0.13.6/search/search_m.png create mode 100644 0.13.6/search/search_r.png create mode 100644 0.13.6/search/searchdata.js create mode 100644 0.13.6/search/typedefs_0.html create mode 100644 0.13.6/search/typedefs_0.js create mode 100644 0.13.6/search/variables_0.html create mode 100644 0.13.6/search/variables_0.js create mode 100644 0.13.6/search/variables_1.html create mode 100644 0.13.6/search/variables_1.js create mode 100644 0.13.6/search/variables_10.html create mode 100644 0.13.6/search/variables_10.js create mode 100644 0.13.6/search/variables_11.html create mode 100644 0.13.6/search/variables_11.js create mode 100644 0.13.6/search/variables_12.html create mode 100644 0.13.6/search/variables_12.js create mode 100644 0.13.6/search/variables_13.html create mode 100644 0.13.6/search/variables_13.js create mode 100644 0.13.6/search/variables_2.html create mode 100644 0.13.6/search/variables_2.js create mode 100644 0.13.6/search/variables_3.html create mode 100644 0.13.6/search/variables_3.js create mode 100644 0.13.6/search/variables_4.html create mode 100644 0.13.6/search/variables_4.js create mode 100644 0.13.6/search/variables_5.html create mode 100644 0.13.6/search/variables_5.js create mode 100644 0.13.6/search/variables_6.html create mode 100644 0.13.6/search/variables_6.js create mode 100644 0.13.6/search/variables_7.html create mode 100644 0.13.6/search/variables_7.js create mode 100644 0.13.6/search/variables_8.html create mode 100644 0.13.6/search/variables_8.js create mode 100644 0.13.6/search/variables_9.html create mode 100644 0.13.6/search/variables_9.js create mode 100644 0.13.6/search/variables_a.html create mode 100644 0.13.6/search/variables_a.js create mode 100644 0.13.6/search/variables_b.html create mode 100644 0.13.6/search/variables_b.js create mode 100644 0.13.6/search/variables_c.html create mode 100644 0.13.6/search/variables_c.js create mode 100644 0.13.6/search/variables_d.html create mode 100644 0.13.6/search/variables_d.js create mode 100644 0.13.6/search/variables_e.html create mode 100644 0.13.6/search/variables_e.js create mode 100644 0.13.6/search/variables_f.html create mode 100644 0.13.6/search/variables_f.js create mode 100644 0.13.6/splitbar.png create mode 100644 0.13.6/structfranka_1_1CommandException.html create mode 100644 0.13.6/structfranka_1_1CommandException__coll__graph.map create mode 100644 0.13.6/structfranka_1_1CommandException__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1CommandException__coll__graph.png create mode 100644 0.13.6/structfranka_1_1CommandException__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1CommandException__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1CommandException__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1ControlException-members.html create mode 100644 0.13.6/structfranka_1_1ControlException.html create mode 100644 0.13.6/structfranka_1_1ControlException__coll__graph.map create mode 100644 0.13.6/structfranka_1_1ControlException__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1ControlException__coll__graph.png create mode 100644 0.13.6/structfranka_1_1ControlException__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1ControlException__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1ControlException__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1Errors-members.html create mode 100644 0.13.6/structfranka_1_1Errors.html create mode 100644 0.13.6/structfranka_1_1Exception.html create mode 100644 0.13.6/structfranka_1_1Exception__coll__graph.map create mode 100644 0.13.6/structfranka_1_1Exception__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1Exception__coll__graph.png create mode 100644 0.13.6/structfranka_1_1Exception__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1Exception__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1Exception__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1Finishable-members.html create mode 100644 0.13.6/structfranka_1_1Finishable.html create mode 100644 0.13.6/structfranka_1_1Finishable__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1Finishable__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1Finishable__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1GripperState-members.html create mode 100644 0.13.6/structfranka_1_1GripperState.html create mode 100644 0.13.6/structfranka_1_1GripperState__coll__graph.map create mode 100644 0.13.6/structfranka_1_1GripperState__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1GripperState__coll__graph.png create mode 100644 0.13.6/structfranka_1_1IncompatibleVersionException-members.html create mode 100644 0.13.6/structfranka_1_1IncompatibleVersionException.html create mode 100644 0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.map create mode 100644 0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.png create mode 100644 0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1InvalidOperationException.html create mode 100644 0.13.6/structfranka_1_1InvalidOperationException__coll__graph.map create mode 100644 0.13.6/structfranka_1_1InvalidOperationException__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1InvalidOperationException__coll__graph.png create mode 100644 0.13.6/structfranka_1_1InvalidOperationException__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1InvalidOperationException__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1InvalidOperationException__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1ModelException.html create mode 100644 0.13.6/structfranka_1_1ModelException__coll__graph.map create mode 100644 0.13.6/structfranka_1_1ModelException__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1ModelException__coll__graph.png create mode 100644 0.13.6/structfranka_1_1ModelException__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1ModelException__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1ModelException__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1NetworkException.html create mode 100644 0.13.6/structfranka_1_1NetworkException__coll__graph.map create mode 100644 0.13.6/structfranka_1_1NetworkException__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1NetworkException__coll__graph.png create mode 100644 0.13.6/structfranka_1_1NetworkException__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1NetworkException__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1NetworkException__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1ProtocolException.html create mode 100644 0.13.6/structfranka_1_1ProtocolException__coll__graph.map create mode 100644 0.13.6/structfranka_1_1ProtocolException__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1ProtocolException__coll__graph.png create mode 100644 0.13.6/structfranka_1_1ProtocolException__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1ProtocolException__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1ProtocolException__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1RealtimeException.html create mode 100644 0.13.6/structfranka_1_1RealtimeException__coll__graph.map create mode 100644 0.13.6/structfranka_1_1RealtimeException__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1RealtimeException__coll__graph.png create mode 100644 0.13.6/structfranka_1_1RealtimeException__inherit__graph.map create mode 100644 0.13.6/structfranka_1_1RealtimeException__inherit__graph.md5 create mode 100644 0.13.6/structfranka_1_1RealtimeException__inherit__graph.png create mode 100644 0.13.6/structfranka_1_1Record-members.html create mode 100644 0.13.6/structfranka_1_1Record.html create mode 100644 0.13.6/structfranka_1_1Record__coll__graph.map create mode 100644 0.13.6/structfranka_1_1Record__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1Record__coll__graph.png create mode 100644 0.13.6/structfranka_1_1RobotCommand-members.html create mode 100644 0.13.6/structfranka_1_1RobotCommand.html create mode 100644 0.13.6/structfranka_1_1RobotCommand__coll__graph.map create mode 100644 0.13.6/structfranka_1_1RobotCommand__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1RobotCommand__coll__graph.png create mode 100644 0.13.6/structfranka_1_1RobotState-members.html create mode 100644 0.13.6/structfranka_1_1RobotState.html create mode 100644 0.13.6/structfranka_1_1RobotState__coll__graph.map create mode 100644 0.13.6/structfranka_1_1RobotState__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1RobotState__coll__graph.png create mode 100644 0.13.6/structfranka_1_1VacuumGripperState-members.html create mode 100644 0.13.6/structfranka_1_1VacuumGripperState.html create mode 100644 0.13.6/structfranka_1_1VacuumGripperState__coll__graph.map create mode 100644 0.13.6/structfranka_1_1VacuumGripperState__coll__graph.md5 create mode 100644 0.13.6/structfranka_1_1VacuumGripperState__coll__graph.png create mode 100644 0.13.6/sync_off.png create mode 100644 0.13.6/sync_on.png create mode 100644 0.13.6/tab_a.png create mode 100644 0.13.6/tab_b.png create mode 100644 0.13.6/tab_h.png create mode 100644 0.13.6/tab_s.png create mode 100644 0.13.6/tabs.css create mode 100644 0.13.6/vacuum__gripper_8h.html create mode 100644 0.13.6/vacuum__gripper_8h__incl.map create mode 100644 0.13.6/vacuum__gripper_8h__incl.md5 create mode 100644 0.13.6/vacuum__gripper_8h__incl.png create mode 100644 0.13.6/vacuum__gripper_8h_source.html create mode 100644 0.13.6/vacuum__gripper__state_8h.html create mode 100644 0.13.6/vacuum__gripper__state_8h__dep__incl.map create mode 100644 0.13.6/vacuum__gripper__state_8h__dep__incl.md5 create mode 100644 0.13.6/vacuum__gripper__state_8h__dep__incl.png create mode 100644 0.13.6/vacuum__gripper__state_8h__incl.map create mode 100644 0.13.6/vacuum__gripper__state_8h__incl.md5 create mode 100644 0.13.6/vacuum__gripper__state_8h__incl.png create mode 100644 0.13.6/vacuum__gripper__state_8h_source.html create mode 100644 0.13.6/vacuum_object_8cpp-example.html diff --git a/0.13.6/Logo_FRANKA_EMIKA_dark.png b/0.13.6/Logo_FRANKA_EMIKA_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b38bb6b4d885527281e680762b1f71f8ee1bf83f GIT binary patch literal 4620 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 + + + + + + +libfranka: include/franka/active_control.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libfranka +  0.13.6 +
+
FCI C++ API
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
active_control.h File Reference
+
+
+ +

Implements the ActiveControlBase abstract class. +More...

+
#include <franka/active_control_base.h>
+#include <franka/exception.h>
+#include "robot.h"
+
+Include dependency graph for active_control.h:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  franka::ActiveControl
 Documented in ActiveControlBase. More...
 
+

Detailed Description

+

Implements the ActiveControlBase abstract class.

+

Contains the franka::ActiveControl, franka::ActiveTorqueControl and franka::ActiveMotionGenerator type.

+
+ + + + diff --git a/0.13.6/active__control_8h__dep__incl.map b/0.13.6/active__control_8h__dep__incl.map new file mode 100644 index 00000000..0e04e39c --- /dev/null +++ b/0.13.6/active__control_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/active__control_8h__dep__incl.md5 b/0.13.6/active__control_8h__dep__incl.md5 new file mode 100644 index 00000000..76ef17fe --- /dev/null +++ b/0.13.6/active__control_8h__dep__incl.md5 @@ -0,0 +1 @@ +9a374d8e50e3a608f6533cbfcd76543f \ No newline at end of file diff --git a/0.13.6/active__control_8h__dep__incl.png b/0.13.6/active__control_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..8e40e06f2208fbae4bef0c39a30ad5a0cf7b7a5d GIT binary patch literal 7409 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 literal 0 HcmV?d00001 diff --git a/0.13.6/active__control_8h__incl.map b/0.13.6/active__control_8h__incl.map new file mode 100644 index 00000000..593793d3 --- /dev/null +++ b/0.13.6/active__control_8h__incl.map @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/active__control_8h__incl.md5 b/0.13.6/active__control_8h__incl.md5 new file mode 100644 index 00000000..ee39c085 --- /dev/null +++ b/0.13.6/active__control_8h__incl.md5 @@ -0,0 +1 @@ +ece797da63f194c8900f1d416eed4460 \ No newline at end of file diff --git a/0.13.6/active__control_8h__incl.png b/0.13.6/active__control_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd6848e61cc37c4d860f94299e36111b0376211 GIT binary patch literal 103876 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 literal 0 HcmV?d00001 diff --git a/0.13.6/active__control_8h_source.html b/0.13.6/active__control_8h_source.html new file mode 100644 index 00000000..ed6de148 --- /dev/null +++ b/0.13.6/active__control_8h_source.html @@ -0,0 +1,193 @@ + + + + + + + +libfranka: include/franka/active_control.h Source File + + + + + + + + + + + +
+
+ + + + + + + +
+
libfranka +  0.13.6 +
+
FCI C++ API
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
active_control.h
+
+
+Go to the documentation of this file.
1 // Copyright (c) 2023 Franka Robotics GmbH
+
2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
+
3 #pragma once
+
4 
+ +
6 #include <franka/exception.h>
+
7 
+
8 #include "robot.h"
+
9 
+
16 namespace franka {
+
17 
+ +
22  public:
+
23  ~ActiveControl() override;
+
24 
+
25  std::pair<RobotState, Duration> readOnce() override;
+
26 
+
27  void writeOnce(const Torques& /* control_input */) override {
+
28  throw franka::ControlException(wrong_write_once_method_called);
+
29  };
+
30 
+
31  void writeOnce(const JointPositions& /* motion_generator_input */,
+
32  const std::optional<const Torques>& /*control_input*/) override {
+
33  throw franka::ControlException(wrong_write_once_method_called);
+
34  };
+
35 
+
36  void writeOnce(const JointVelocities& /* motion_generator_input */,
+
37  const std::optional<const Torques>& /* control_input */) override {
+
38  throw franka::ControlException(wrong_write_once_method_called);
+
39  };
+
40 
+
41  void writeOnce(const CartesianPose& /* motion_generator_input */,
+
42  const std::optional<const Torques>& /* control_input */) override {
+
43  throw franka::ControlException(wrong_write_once_method_called);
+
44  };
+
45 
+
46  void writeOnce(const CartesianVelocities& /* motion_generator_input */,
+
47  const std::optional<const Torques>& /* control_input */) override {
+
48  throw franka::ControlException(wrong_write_once_method_called);
+
49  };
+
50 
+
51  void writeOnce(const JointPositions& motion_generator_input) override {
+
52  writeOnce(motion_generator_input, std::optional<const Torques>());
+
53  };
+
54 
+
55  void writeOnce(const JointVelocities& motion_generator_input) override {
+
56  writeOnce(motion_generator_input, std::optional<const Torques>());
+
57  };
+
58 
+
59  void writeOnce(const CartesianPose& motion_generator_input) override {
+
60  writeOnce(motion_generator_input, std::optional<const Torques>());
+
61  };
+
62 
+
63  void writeOnce(const CartesianVelocities& motion_generator_input) override {
+
64  writeOnce(motion_generator_input, std::optional<const Torques>());
+
65  };
+
66 
+
67  protected:
+
76  ActiveControl(std::shared_ptr<Robot::Impl> robot_impl,
+
77  uint32_t motion_id,
+
78  std::unique_lock<std::mutex> control_lock);
+
79 
+
81  std::shared_ptr<Robot::Impl> robot_impl;
+
82 
+
84  uint32_t motion_id;
+
85 
+
87  std::unique_lock<std::mutex> control_lock;
+
88 
+ +
91 
+
93  std::optional<Duration> last_read_access;
+
94 
+
95  private:
+
96  const std::string wrong_write_once_method_called{
+
97  "Wrong writeOnce method called for currently active control!"};
+
98 };
+
99 
+
100 } // namespace franka
+
Abstract interface class as the base of the active controllers.
+
Allows the user to read the state of a Robot and to send new control commands after starting a contro...
Definition: active_control_base.h:27
+
Documented in ActiveControlBase.
Definition: active_control.h:21
+
uint32_t motion_id
motion id of running motion
Definition: active_control.h:84
+
void writeOnce(const CartesianVelocities &, const std::optional< const Torques > &) override
Updates the cartesian velocity and torque commands of an active control.
Definition: active_control.h:46
+
std::optional< Duration > last_read_access
duration to last read access
Definition: active_control.h:93
+
void writeOnce(const JointVelocities &, const std::optional< const Torques > &) override
Updates the joint velocity and torque commands of an active control.
Definition: active_control.h:36
+
ActiveControl(std::shared_ptr< Robot::Impl > robot_impl, uint32_t motion_id, std::unique_lock< std::mutex > control_lock)
Construct a new ActiveControl object.
+
void writeOnce(const CartesianPose &, const std::optional< const Torques > &) override
Updates the cartesian position and torque commands of an active control.
Definition: active_control.h:41
+
std::pair< RobotState, Duration > readOnce() override
Waits for a robot state update and returns it.
+
void writeOnce(const CartesianPose &motion_generator_input) override
Updates the cartesian pose commands of an active control, with internal controller.
Definition: active_control.h:59
+
void writeOnce(const JointPositions &, const std::optional< const Torques > &) override
Updates the joint position and torque commands of an active control.
Definition: active_control.h:31
+
void writeOnce(const JointVelocities &motion_generator_input) override
Updates the joint velocity commands of an active control, with internal controller.
Definition: active_control.h:55
+
void writeOnce(const JointPositions &motion_generator_input) override
Updates the joint position commands of an active control, with internal controller.
Definition: active_control.h:51
+
void writeOnce(const Torques &) override
Updates torque commands of an active control.
Definition: active_control.h:27
+
std::shared_ptr< Robot::Impl > robot_impl
shared pointer to Robot::Impl instance for read and write accesses
Definition: active_control.h:81
+
void writeOnce(const CartesianVelocities &motion_generator_input) override
Updates the cartesian velocity commands of an active control, with internal controller.
Definition: active_control.h:63
+
std::unique_lock< std::mutex > control_lock
control-lock preventing parallel control processes
Definition: active_control.h:87
+
bool control_finished
flag indicating if control process is finished
Definition: active_control.h:90
+
Stores values for Cartesian pose motion generation.
Definition: control_types.h:127
+
Stores values for Cartesian velocity motion generation.
Definition: control_types.h:211
+
Stores values for joint position motion generation.
Definition: control_types.h:72
+
Stores values for joint velocity motion generation.
Definition: control_types.h:99
+
Stores joint-level torque commands without gravity and friction.
Definition: control_types.h:45
+
Contains exception definitions.
+
Contains the franka::Robot type.
+
ControlException is thrown if an error occurs during motion generation or torque control.
Definition: exception.h:73
+
+ + + + diff --git a/0.13.6/active__control__base_8h.html b/0.13.6/active__control__base_8h.html new file mode 100644 index 00000000..18206c21 --- /dev/null +++ b/0.13.6/active__control__base_8h.html @@ -0,0 +1,148 @@ + + + + + + + +libfranka: include/franka/active_control_base.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libfranka +  0.13.6 +
+
FCI C++ API
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
active_control_base.h File Reference
+
+
+ +

Abstract interface class as the base of the active controllers. +More...

+
#include <franka/control_types.h>
+#include <franka/exception.h>
+#include <franka/robot_state.h>
+#include <memory>
+#include <optional>
+#include <utility>
+
+Include dependency graph for active_control_base.h:
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  franka::ActiveControlBase
 Allows the user to read the state of a Robot and to send new control commands after starting a control process of a Robot. More...
 
+

Detailed Description

+

Abstract interface class as the base of the active controllers.

+
+ + + + diff --git a/0.13.6/active__control__base_8h__dep__incl.map b/0.13.6/active__control__base_8h__dep__incl.map new file mode 100644 index 00000000..14f7dc36 --- /dev/null +++ b/0.13.6/active__control__base_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/0.13.6/active__control__base_8h__dep__incl.md5 b/0.13.6/active__control__base_8h__dep__incl.md5 new file mode 100644 index 00000000..a915c99e --- /dev/null +++ b/0.13.6/active__control__base_8h__dep__incl.md5 @@ -0,0 +1 @@ +a4c32c995e7506a493bc22231017038b \ No newline at end of file diff --git a/0.13.6/active__control__base_8h__dep__incl.png b/0.13.6/active__control__base_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5dff5530f4053df94a1d1ac51ed4e2e280022bce GIT binary patch literal 11609 zcmdUVg;!NwyD!}>or07!k^+K+fP{e3Dz%Z$7f_LwZV*9A8tD=c6{OinDIn6)-QB`{ z_IbZ??;Yok^9NiVW2w0JT5Hbv#4nz3?FTBv1oQ-GXlTUuRh1s1p`n|>-I*JMi64;_5)mdpB*V8%TL;bk+gWMK{dDI`_ai1!Wwh1H1Jq4 zvj4BEFqssZ&(WB5CMyTWy%nLb4C5LbavV}-K6lzz(G->b4<9~s*_yol`O6o4CV~Nx z!1cXXaSDIGqd2*+ZOaB45q$t7cCEPc*c9268Zv(S}LHZ04!mV;IL zEHzD3tSgw1CN3i*roCOM9f>4hin;E-ddRM+f^XQfF7g+;6VqA-$g)F z6j8&$pt_KR1dSAXq8-91roUgCQO@_ttnky9cf!xO(G$cI6BC0!e!K-s%5G?23<(KQ z2+e!=CmG-NzB_YeQVP7Qx3~9#mnJJKEA1^yJg3Re0S5=}HO|w_ zWqdDaGrjll2L}iHs}L$t3=$8_&%3+THYUGZTmG4;;^}$&)!|z3@ste~Q zB6?B0o_B&Oc6K~yGvDKHyj*_&VrQ#%CqlZOrdwWHXyUgi;HV{2cU#O`h<%lv$-98z8ITM(1y?l(G4X3@(+HZh2jO3vnVk&~Y&^k$g+x;GKeSmMtwI>qKj$}jwaO8u#P-tD6CKU+ z7M;^{V>GGU1=)M)7f1%@h8BAwyE~qHSg4JRWxhj3PL3Y08U$Nc>`*VhG`?Ku@E3{n zI$Znxy{juAGm~Y?_k0tl^F@0Y`N>|7V0?T$x`BZKTJ!FF=j_%N$>Yb5rw|%7xJ%*WOqc~s8p86`-?a`5kW*7r?;IZL@t(@Q+(EOo zwKe?g!U_ux{qbHJakMeEw|IJbdUCp)x$Adz>{nS`9hj0rx73>wn4Zo!`OS+4P21Qw z;^5!_=U8KXZ-2k7N3e+~Ue)zggc4iBPAeg;oUe?)lh4ht#AjAk7MB;NFE?vPDqUt3 zrW_@x-4xd)UNrFY^9#GLXfsMbCqiqcZ41A~C1f|mjdp=dwxJov97f+9uT7X17Z=CT z-q$&YRg#4(txSG#t3HSL4Gj+uS1|RM=y(s~ z!A1uM2g3iyVhW8>oroC&infw+}*bp~G= ztE#FL26=dR-b`E8(f5Lg8lQyd`@6)4^jj?Li)4gY?^noCKouAK9@o61dYUiUj z|J1Ldp0%R!j3+88D(=mj*O`8obS5Sydw$&BsC|>d%5H;Y3%%Sia~Q9|hi%{%6zm+x zRbk){SY2C-nD30uEiEO2a8q!1ukkj5$~jPNt>q2T!p*~@;N&FGczI?Y+!#W_6j4~n zZE0)03_A&r2Nj!t|xYHv}m{-@E$3(gPsVNuP1Ni``7225gh7CW|N;?M?XFzguHR2rKg`ep7vAejA2?d<=lN{ zZyyOI*!y5Wg;vat^7+OnIw@)F2jbSNPFKb$zbl`E%?X;>*;%s44z-DL7LiQDx6v=) zT?C$f#d3Cb?oE@Z7?6Y#i z@Zo$V(XHV513{HKX-r%CRIRC85227YxPDF>sNVfk$qv&e=5ouc)4t z6=!Q(o9p?JgGp|{0Jpgpyp?k_`$DQw6yN1K=1ACHM6wDl8}(-O%cKMKg(zRO~;Z`ze0u; z|49FVu%IBRMU`Q8lA>cr#l?lU`$|8$|Juhm;-bgCZ=B^c&8@AEd;h|Jpmq1CkB^O+ z|1Q=$Su3f~e)5EfhK5EXSqNP~K)~)@h_1DF*w%kuzNV@wK$qv9iAjcx`O?AyTH#H- zE)~Qg?RrwCL%8o+$z$>Aqs#tmMbE@sMnDrGM06NP+6V8Yf_HXYph-TmRUKse&-)Gh z_(4+9uty+!b>Vhe;pp(^D-|X#$-*~-?gB=H`oW`V)ZRia5K~c6sj8~p_4SnvA!hjS zv0Uq7% z4Gi4Qi<}Qu21dWQ6R>)MH@AOa zAg1ie3}$j_Dn{Y$KsEsZ5>&-8H)lCyr#$dreZ#m)4ZV)X zs&w5QPa#&u`-DthUY=NB|L6$$@mbHfWX{q+?XuzlDTmn|3n(uTj(AMUk^laT>Gk!0 zQ~3YB8m}Xxy|Wds=NUoH2mFOz3rLT?xFmXaCP0Ld>55v4Qej9L-|+51!tz?Z-!y@q z-UlIxI%vd7D=sxLO-*uN-B;NF5yzGX-7vQ8&+_=}cO^XKwaw3GbnD@Y3!V-k6DFrI z7e7DY@%G42zotfm26kWgFoa0Wk8DK)b4y*f13s<-vXKgFd`5ECH9+7s5gN$2x9-?l znZu07VxpqW@Hy<52(m*|`QZ>d6el21TRbi);ZRlkN>rrFX{H-g7)l{Dz!OUHG&nok zaJH(ol^`$A5|0w@2NkJC*`t;+l+;wwqjpZvj+Qh`>2=5{|Ca{^M!b}%xcX_yy=pzioR<`itH4057Ive3=aB@3-KtVqTY}I?ug#MGaG9B z`?uKrWHLv2{A8PkoE(C5>31Y48o$3ZMhSFZHx7>2C5txD<7jCM?I4JKFLlVJU#6z4 z)~y!Y*$e3Z@vxBF@keJI(|8sN{EhdJEl6ie}fC4SUGo8#);oksx>yHm%^8e!% zM*%nMC$Ouy#6%8vTI1F6+D_IoZdUTa|H#J}L~Y2RQ4}2= zk+R5Qb-F^1YTKU!=FrHLWrE(dGFDwM?pipvwH0%6a-wgaN#>!0F?_2}Gc|Q#XSVIL z_vx*V)zz-^NaE}^@*sh48F{PR==Lc?L%P7=AQ!7q-R0)Zo1cCEO5u<&;sKh^R(x0_ zzO;m*PtUif%65_k8Zwl8-umB9Q`6E?(a|A?&xOs+S%>H=R|hKr!1Qz)8}jn7fRMR7e~xtfc_$P=#@l!ABt}0$v4Qf+(UkfA zJ#oyuwyrJ~+V{S`;ED>t($dnIrKONSTv8qfQ+@rAurNGHDXE;N_0IvH-?Os%&?*Ip zG$1yX6dFySd?#J%NesGAL!XX}+UHSL#w&u7=y31jB3Q-sfKY(#mi z4`**3Di#CLiijYHVv?o?S_*K`VC?yyYe+s(~)Q5d16rDaBv1gP7qrNhZj zjtpl9tGWHh(DqrWBVD(r?x3gz-i_D0$H&${E;PrjW|{-|I60Mln_g^BmD-P#Z$Kk1 zZD>d@dt4VYHaaSlqJgAEIP@k9JB(JEZ^X)7ngs_3^GQjiGTr_sujSLm=H^&e0@vbk z^~aC2X!?eR-{I3IJF^b0LHHX0SNU$-2t3@L&O|o@8WJUpytud+1)ezu?ZnX4Rrqnk zOX2lj1*8dT`FrAbWMm8CW5^k=I{LfB zAf=>)ccR*wbX$1kPrbzXQkt_NAl`L2{WKA4lI?$i>a+Pj6{d333=Adx5B`kIz+3i? zjwZu#Xf}ES8SCxoQTNUKNxP5k&%w?vYRfRV$Bj-{m`||-*n+3&YN6{Ij{h@j>+0TK z4IKYJUp*oX9(Pl?C@bS&HZ$LO#ct}mHgwYyqx`7^7ne%o6Q0Cdyu7>+-JG#~y}eP1 zZ{G?b>9v~Ihsz#G;h1{wVyB7PQd9^RK4qq(>w?B)q^ql&Fka45{qayQx~>?jmllDJ zj?O0|lP-)**5E|M#KiE)%4P^7Uq%a?zV#QwMDal&QF{{~K72s)2VOr}{{rv^EntSe ztsBzP3`h7-Don&6P6ThLcD^=VThjU$ zG!GO!1_B8o1F`=7#}9qOf-2!cKzsry6vW3@df#y*)@baEUw8^4YZSITL)ItaSAkY8 za8ckOxXsQ{;m@vUlhZIZuIv zRF*%jZygz-fi~W5>i0JoiU8n~8F(^r`8HIb(NRO7d8{HL*8mVE3c9(vwg8+G_Pg{3 zkUI|~IxH$mcf}qOAXylJgW@odgHIa0>3n^C3yX_iE3vhpi2M5bMBcKtkr9511`gCC zS~@ybF)=DorkwT+X=!QAfUH8<;{tIi{@uHRkDF)0CB~+|UrvmTvGVh4uF8>uVqp90 zgLzL9zv_brNWhm=;|AhLrE_hJVb|T=-Id=ZG=Q)N${tIg(mW$0gSh-0)Rf$;EVQGe zBd9Qmeg|cVadG}A?dkL9W?1sC51Nk*nQ3T3X-vJzZ>Yos{RjEdiC8s{j?#iA6bjW0 z4lb3lDIwvSxZ`+GR@QYxBO~*HoO?gpJKn)jX=o5NG&F!Nf{uxanGeB`qQ%#Z^a6M% z`Fw*`LsN6nT3(c0Qj!)3Xdvh_I7GBr|MDlrLw{^h*EuD$ejrbgG=d>jRl?#9qu1TJ z8*CB1-mZ))hyG${DAwe<@I9WB#g{Bq9H~)5NM*_8IJeZ7rV!e1IZi7wAW(z*A64-n zwb;&5xBE>Er&@Cm85YvGW;=f}CGO}=5# z(bx#0qN1WbN06X`i5bMRAXfqc0vgVA@~b5AY{lj6D#?+_uNJv$gFg;N)j3aFp^ZX? zUX1;FdA?1A=Cw0}j?nN3?+Q_q9u|DoRgihMczyj5Rp=*-#M~h~*bZaV_l%5;goK2& z3khe})_6?y)%D;DL;TOW>R9xK!UM@rB6-#CF79iV{O(~&oq(44=LT{q+B;3#4NTwP)6)}U zr@+awvI|#A_ud|9zU$U>TvncB@jdSF+6FZR%uIdO>q9(@sZfe#LVn$^x_hZ zm5C8(49*tqcoM;9Z9$?`AX8XI38&vli*cOrRZvsIAtGvzQ_UkT=cRCUarb7HyJ9TT zv6dB8=1H8b9m#RoHbJ-i7&1+dgTtoEe(Uqs=L&|&G#3|VgRT}i)O~+tR7Lg8&9U{% zWy0RRO*O5z;XB0;>w2|1sAC-OjeeJp+I;L5OTLEy`$Myr z)T?Yxq}{lAljyzl0ptMrQz$freN&gWHzp)-t*k=GBB_pp?y-^Fc{SQHQD1O(K^!xh-`SDi3q=xiOOoH`F-T)vox3kNNE2YIu52D0=9Mr3h@>Gv^Wj-pHj`fu@o-5)%&#uL2;HJk?k)lCcBg{VPBonoY<#0HZj*a)jN z=XFIy@Q_g+P<{N!Jl`DP`EoV?2kN|cceBYN@5QM-GyK%6vLf`jeQ&WbPSsLKhzzkk zrG2orh~{;^?6RUQ$;YoL;_ty8`im9_@7n$)5D~f2-qF`uX)btOXonXV z<5WmIxuXi4r~CTwjVOjXs?G6~*$L<6TsZP<#X)XJb0rn6&Xs|!WO06+X}_zqepYgR zpq$(u^U5U1*l8S2NRghAS$x3Mzyu)%ZL4=(F>$ zogJPh%iN|HY?`F2e-R4)mf=dAC_Thl{V?h9@CU;h8#y)gD|ywh(0+4rVrBefQErY! z@ef+DEi*0UCui$)LgF8aT1VzOoZH&l$x00TBIoAR_)IqVpozMjl?!-tk8o#y z9gHVLZ^k!<{QN7>;kbTr5wNMySdgLJ_4X!6;#Y5<{9ixoW8s!?r_3fVh}5Dv$C!bn!E2b z`MqVK%e18>`_9ouisrK3`fau5R~rdhF^K&omfZmr-{jkFpZjN5q9^M1g=`1kRn~~M zT>f=i?N+!0+6$>L61+t7jqyVf*;7jjPEGpj?y9f2r0dBNIDb=$tEnbO{&>$&Q6}$B z1G>+R#O_MV`)qIC2q4anij0o~Q@*mxHBklxm}ckYQQ(sF23NbOWGk{cMm^XYy791x zD3W@!vn8-;ZoR@Z8px^)3TN==d}6Qq7$O z5+5`t!V#Um5T%1SC}8~NjhaSk4d&`9X?(g2i_e)ml@xnUP=LIq=4|*i(|a~6PK=T+ zMk{fuyt(VF9=h`KbQqXTO0KRPBuvJ4rz`F8s|Pn9VZri27((?eYAL=!HMo0L zL&HNX9A5y-1(1S)xd>d?F3o0FM*TASz@yE+D%jqLNM2#*jCcL!@%nf14LdEZY1pot z;Sv!kNxIvhJ2;lX&J^C{+aOL(p#z3)NlC4*{howL39OqTlezK6Z?|EMfh0_PK_ua# zk6d zmfO+=gt?wBw`pjjl4W^xx!DDQ)n+1gNrj)@5eoH+m)!^o!%$pNds zURZo5J4?j&**o7JLsfzDa`BU&epW5r-Aa&;si1HGjJ#|wHL9Y$y+`FRb}Kjre=Q{{ zDpl}Frr#8X*Kx=oO}TNzRITv}NNn>^`dX&1^c*IRNH|RIEUeiDDuz;L)g1h}l>P=& z0~n}T0G5+e$9qmr@ldkF`lSteKw@jTIGr}@ek(s(W6SpbO!W}_;+zm%pPem zTsi{i%%%{+8xKFc14`mOhYbxP2IYIlVoV%n#7Nq>ZkUJ z*3ZwcCDU}`!nJq&Ow-DIz!cLWyJ@@$)FkUA%UtU%K(?Zv!s7I+JolIMw-NnW@?fHx zmmJ>^Mbi4*FOlceOdXn;kLH~5_xIN)42cT?H|5hS77`K?(YpI-_I&8SjL7~aB>(3c zt=^0>(1Aeyp1PcE3k8aejlK3X$>{0RXmAJH1_vqbczv3>DYLb;6&4%oTzeG0l>J3> z%|0G$axy&sJ_(C#6d1}VVlUw|NhZZ8zcRQ!_T;N5wP>B#_Mt;OR(fh`L|j~4l8u@W zum=@2HG*=}rWo)+TE~s|{dzzCcRh^%9u4yK($SU8_}PMffHtfwS5AFbFoKVO$}vnTU%Sp98bF8 z5fk6@^z;mLl$Ml4**1IUV`F2m*n9WH4z=9e+)zpu2qQ2KF+0-|NHFm(F_D#x4Flv2 zn~`!RZy%rdlp@1YV1PGvc6VEVW24+IB^4Evz5nFP!%J`dQp11|Q$Lh&INIbV2j2h- zL5YnVG?Xf*KT<>AiXZ=`9n#a$2>^?{wX+j{31pcsC)u&`J- z2Gh9@oXBqQ4BNYVdd9$>P6j5O&;>vk2~u7gxFpESlX+5<`jwNLI~IRKh2EiOYAWNs zjORmNIbPmKbd+cYp9cT=2d73dNW)$H{<|#^S<^~le z&&tco9YAYn=*$8=ZzIjQ(frGoFQtB0mkvMDZ#RGiT3vjY82zHj_phOYL#cwahiM>} zR)!D)fdH~9cDe`Rng|^DsgEq8H?*nAuf#NBa_Gp`>DQ!F_?Kv9fqPE1SQo1WncdrR zo_j&)W^mYiA|eUsW_3<~=6)xAyq_8$--1>N!P50EQ_4e4_P+f{UsqSW;5)Va-tO)Q z7}w}Rh=_s*qf(u$ymVT0o&_fh=o>F@tw1%F4GOxTvY9e&_v{oe!3CncbUP zNJE%)AtWWW2F*I5D>*m!Mr3R({KEv%`|cCFS?YvnT^gL7dUM%xqERGL*>?iWcr?&t z!r=q~B)4^RmchY? zwx%E#>V3{kPW~@*zqJ*Eu@e=&uxf&JQE{AF*feZd4bWz>BG7brA2)FzArWZ3jy76A zC38JHumyF={NiL6?IgOY91`5EK7Z+Xnjil1!U9&2Zp1{L^S<#kNZYf)eLX!1)6f4$ zy=Tq4HfV!zygq)n5lCKW9K`f63<@hu$<|pksVd}({qFY*~xK=YP z8zpI5{YVdQx;!Iy)rcu92^{! z*7)jZ10PKGg~i1phkD=M;$Z`^sprq1!!XCAGn{MTO3C7m^q(BYUW304PV%E{pJ#|t zEgPpR(mqFDtlPx=va-ym84{RJK#i0@5orGPtGdNQ?(zgdNlDo}HO1W6*ti#qTT4Mf zp{=iv11{{z*_p+7jV(dX{M_8mT%@1{RHn+RsunQKQA+{;VE*EC-^InnKOx~!!rY60 z{%HjTh>VgF3yK^#=_@IpPaq#*w*ub1qmhx3F*7sEs)5kh55G6|Qqbrl7C7O7pblN6 z&4pm$;?Bb$1QFJ@^vvDdp>J_vA_=T3hsrhPYi0o<2%UzUtfq-J8 z5Zan1j_e(QK{@mq6Qk~7C({I*d6@xZ^68u;2|hml&$kM{*9nDTENpNg)<)qMGWq_* zFQjKqw6KIhF80`A3ru1KlVo?*2wM#v)wpKZAbR`qN4%QzP7C*_21JVqwrmE|e-~ku z+9t+;O-fg$**vbjs`^V*)GBYY|Ae<7c0RWjrMT5RO=C9$FBaB~*A_||8XSxbGkY$p zgB;#xs|Bb{s;w2X`k6tTqQN=M3HEpbmsSXrPSgMy^uT$LLUMlLQw z)ipJi)mD8LFj8eD;XGye>C>l;<^aq+M-#72F>#n+N=is*+nR3r38L*7Oc5^hoKlW! z{|+fGe$Y+CB=r^>2j^o$gUoY~yv5C${WD9#q17g3Hr{52_Ds&y@L zw4q@kNZZBG=u`g=T0hjuj6f{9FC!|E*{*3)}W z@3ub7AB_K#79scd;86mP-p%#2?IX=H3q8NylbHCAzC%oHAuEqD^sO)S^zI`xJTaX9 zeIetyzr%(Y<>wct2W?#FbwlZkB~@6HR-OJZ_QKudXkmc?WiB}_jaNqhaWXsTppc>j z?{vO?{o4I*x25jCp8X~v0TVTccy+PA*9jTN+0<7T@etv&|HtG#kG{t)Q|{T{p@JW@ z6o*Jty+l#H)JL=GMu%0y-c7%KF8SjbhN5%DY!=?RJpJk(0J1vhsf)4CEG@skLoeoK z+O<`D3PLwGFYluhkMR%s#ScUN&%$*6_=cSsTcFm2`PRV5{>P-QzE3H~lymgAf_2%e zVQ*7H`5V_pWSXx4fxiC&Zd;1^ujg1Yo!gBZa0%DIZU%y)H%(NI*ngtjq z7VGL*d&%mRuEnNEAt)&*UX$NY-eKZ-sG=U#RLo=RzsFuFjw zeTsiTs+#uyqlrFfOxMc4q30+n(Fm9eCD3FeE*JjcfW*N%)<**QhNI8Va6Ld zh57&PkKS;qh(w|ui~ZJX^Dm~*!W-v)4S${L6A}`B zFqO~jr%S?zhra(Ia(91-t=||H(Ix&cK!*xw^)Ba(-TC zcMiZtv@RU^a!Kv;#)iX_hL<{pFT*m{2lEMGPI!{Xu^=x`w8(;*mEZPz94pim?Ux%V zs0pb&$A01eOiukfKLyt?bhJOkeJXgY#&cKb*ULB7r3MPiVOARL{=ElE + + + + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/active__control__base_8h__incl.md5 b/0.13.6/active__control__base_8h__incl.md5 new file mode 100644 index 00000000..45664dd5 --- /dev/null +++ b/0.13.6/active__control__base_8h__incl.md5 @@ -0,0 +1 @@ +4bffc3ae33d90eb6762ee332775cfebe \ No newline at end of file diff --git a/0.13.6/active__control__base_8h__incl.png b/0.13.6/active__control__base_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..943e7f587eede271a6b0b95afcf8f44f638a3a47 GIT binary patch literal 49532 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 literal 0 HcmV?d00001 diff --git a/0.13.6/active__control__base_8h_source.html b/0.13.6/active__control__base_8h_source.html new file mode 100644 index 00000000..dacd5560 --- /dev/null +++ b/0.13.6/active__control__base_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +libfranka: include/franka/active_control_base.h Source File + + + + + + + + + + + + +
+
+
active_control_base.h
+
+
+Go to the documentation of this file.
1 // Copyright (c) 2023 Franka Robotics GmbH
+
2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
+
3 #pragma once
+
4 
+
5 #include <franka/control_types.h>
+
6 #include <franka/exception.h>
+
7 #include <franka/robot_state.h>
+
8 #include <memory>
+
9 #include <optional>
+
10 #include <utility>
+
11 
+
17 namespace franka {
+
18 
+ +
28  public:
+
29  virtual ~ActiveControlBase() = default;
+
30 
+
40  virtual std::pair<RobotState, Duration> readOnce() = 0;
+
41 
+
48  virtual void writeOnce(const Torques& /* control_input */) = 0;
+
49 
+
56  virtual void writeOnce(const JointPositions& /* motion_generator_input */,
+
57  const std::optional<const Torques>& /*control_input*/) = 0;
+
58 
+
65  virtual void writeOnce(const JointVelocities& /* motion_generator_input */,
+
66  const std::optional<const Torques>& /* control_input */) = 0;
+
73  virtual void writeOnce(const CartesianPose& /* motion_generator_input */,
+
74  const std::optional<const Torques>& /* control_input */) = 0;
+
75 
+
82  virtual void writeOnce(const CartesianVelocities& /* motion_generator_input */,
+
83  const std::optional<const Torques>& /* control_input */) = 0;
+
90  virtual void writeOnce(const JointPositions& motion_generator_input) = 0;
+
91 
+
98  virtual void writeOnce(const JointVelocities& motion_generator_input) = 0;
+
105  virtual void writeOnce(const CartesianPose& motion_generator_input) = 0;
+
106 
+
113  virtual void writeOnce(const CartesianVelocities& motion_generator_input) = 0;
+
114 
+
115  protected:
+
116  ActiveControlBase() = default;
+
117 };
+
118 
+
119 } // namespace franka
+
Allows the user to read the state of a Robot and to send new control commands after starting a contro...
Definition: active_control_base.h:27
+
virtual void writeOnce(const Torques &)=0
Updates torque commands of an active control.
+
virtual void writeOnce(const CartesianVelocities &motion_generator_input)=0
Updates the cartesian velocity commands of an active control, with internal controller.
+
virtual void writeOnce(const JointVelocities &, const std::optional< const Torques > &)=0
Updates the joint velocity and torque commands of an active control.
+
virtual void writeOnce(const CartesianPose &, const std::optional< const Torques > &)=0
Updates the cartesian position and torque commands of an active control.
+
virtual void writeOnce(const JointPositions &motion_generator_input)=0
Updates the joint position commands of an active control, with internal controller.
+
virtual void writeOnce(const CartesianPose &motion_generator_input)=0
Updates the cartesian pose commands of an active control, with internal controller.
+
virtual void writeOnce(const JointPositions &, const std::optional< const Torques > &)=0
Updates the joint position and torque commands of an active control.
+
virtual void writeOnce(const CartesianVelocities &, const std::optional< const Torques > &)=0
Updates the cartesian velocity and torque commands of an active control.
+
virtual void writeOnce(const JointVelocities &motion_generator_input)=0
Updates the joint velocity commands of an active control, with internal controller.
+
virtual std::pair< RobotState, Duration > readOnce()=0
Waits for a robot state update and returns it.
+
Stores values for Cartesian pose motion generation.
Definition: control_types.h:127
+
Stores values for Cartesian velocity motion generation.
Definition: control_types.h:211
+
Stores values for joint position motion generation.
Definition: control_types.h:72
+
Stores values for joint velocity motion generation.
Definition: control_types.h:99
+
Stores joint-level torque commands without gravity and friction.
Definition: control_types.h:45
+
Contains helper types for returning motion generation and joint-level torque commands.
+
Contains exception definitions.
+
Contains the franka::RobotState types.
+
+ + + + diff --git a/0.13.6/active__motion__generator_8h.html b/0.13.6/active__motion__generator_8h.html new file mode 100644 index 00000000..4f136441 --- /dev/null +++ b/0.13.6/active__motion__generator_8h.html @@ -0,0 +1,139 @@ + + + + + + + +libfranka: include/franka/active_motion_generator.h File Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libfranka +  0.13.6 +
+
FCI C++ API
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
active_motion_generator.h File Reference
+
+
+ +

Contains the franka::ActiveMotionGenerator type. +More...

+
#include "active_control.h"
+
+Include dependency graph for active_motion_generator.h:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  franka::ActiveMotionGenerator< MotionGeneratorType >
 Allows the user to read the state of a Robot and to send new motion generator commands after starting a control process of a Robot. More...
 
+

Detailed Description

+

Contains the franka::ActiveMotionGenerator type.

+
+ + + + diff --git a/0.13.6/active__motion__generator_8h__incl.map b/0.13.6/active__motion__generator_8h__incl.map new file mode 100644 index 00000000..08879699 --- /dev/null +++ b/0.13.6/active__motion__generator_8h__incl.map @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/active__motion__generator_8h__incl.md5 b/0.13.6/active__motion__generator_8h__incl.md5 new file mode 100644 index 00000000..476c9bdb --- /dev/null +++ b/0.13.6/active__motion__generator_8h__incl.md5 @@ -0,0 +1 @@ +c13c6a55b3ef563d239440570acd281a \ No newline at end of file diff --git a/0.13.6/active__motion__generator_8h__incl.png b/0.13.6/active__motion__generator_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed6268ebde633dcb730870a4cc872afce5db5cb GIT binary patch literal 106653 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ťBYI;V?Nb*fDTlc}*%E7X%%$@97 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
  • -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 DUg!3d literal 0 HcmV?d00001 diff --git a/0.13.6/active__motion__generator_8h_source.html b/0.13.6/active__motion__generator_8h_source.html new file mode 100644 index 00000000..e38c1b27 --- /dev/null +++ b/0.13.6/active__motion__generator_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +libfranka: include/franka/active_motion_generator.h Source File + + + + + + + + + + + + +
    +
    +
    active_motion_generator.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include "active_control.h"
    +
    6 
    +
    12 namespace franka {
    +
    13 
    +
    21 template <typename MotionGeneratorType>
    + +
    23  public:
    +
    36  void writeOnce(const MotionGeneratorType& motion_generator_input,
    +
    37  const std::optional<const Torques>& control_input) override;
    +
    43  friend class Robot;
    +
    44 
    +
    45  private:
    +
    55  ActiveMotionGenerator(std::shared_ptr<Robot::Impl> robot_impl,
    +
    56  uint32_t motion_id,
    +
    57  std::unique_lock<std::mutex> control_lock,
    +
    58  research_interface::robot::Move::ControllerMode controller_type)
    + +
    60  controller_type_(controller_type){};
    +
    61 
    +
    62  bool isTorqueControlFinished(const std::optional<const Torques>& control_input);
    +
    63 
    +
    64  research_interface::robot::Move::ControllerMode controller_type_;
    +
    65 };
    +
    66 } // namespace franka
    +
    Implements the ActiveControlBase abstract class.
    +
    Documented in ActiveControlBase.
    Definition: active_control.h:21
    +
    uint32_t motion_id
    motion id of running motion
    Definition: active_control.h:84
    +
    std::shared_ptr< Robot::Impl > robot_impl
    shared pointer to Robot::Impl instance for read and write accesses
    Definition: active_control.h:81
    +
    std::unique_lock< std::mutex > control_lock
    control-lock preventing parallel control processes
    Definition: active_control.h:87
    +
    Allows the user to read the state of a Robot and to send new motion generator commands after starting...
    Definition: active_motion_generator.h:22
    +
    void writeOnce(const MotionGeneratorType &motion_generator_input, const std::optional< const Torques > &control_input) override
    Updates the motion generator commands of an active control.
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    + + + + diff --git a/0.13.6/active__torque__control_8h.html b/0.13.6/active__torque__control_8h.html new file mode 100644 index 00000000..718555e2 --- /dev/null +++ b/0.13.6/active__torque__control_8h.html @@ -0,0 +1,139 @@ + + + + + + + +libfranka: include/franka/active_torque_control.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    active_torque_control.h File Reference
    +
    +
    + +

    Contains the franka::ActiveTorqueControl type. +More...

    +
    #include "active_control.h"
    +
    +Include dependency graph for active_torque_control.h:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  franka::ActiveTorqueControl
     Allows the user to read the state of a Robot and to send new torque control commands after starting a control process of a Robot. More...
     
    +

    Detailed Description

    +

    Contains the franka::ActiveTorqueControl type.

    +
    + + + + diff --git a/0.13.6/active__torque__control_8h__incl.map b/0.13.6/active__torque__control_8h__incl.map new file mode 100644 index 00000000..553dd841 --- /dev/null +++ b/0.13.6/active__torque__control_8h__incl.map @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/active__torque__control_8h__incl.md5 b/0.13.6/active__torque__control_8h__incl.md5 new file mode 100644 index 00000000..6d37bf23 --- /dev/null +++ b/0.13.6/active__torque__control_8h__incl.md5 @@ -0,0 +1 @@ +b18a79c61b6f34bd78d2cd30d8180842 \ No newline at end of file diff --git a/0.13.6/active__torque__control_8h__incl.png b/0.13.6/active__torque__control_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1f07579f2e8c5e5932ff97e14607b5d11bc5f9 GIT binary patch literal 106461 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 Yy;9NW?5`sS*pQD|nAjSZ8(z5kAF#7Z-~a#s literal 0 HcmV?d00001 diff --git a/0.13.6/active__torque__control_8h_source.html b/0.13.6/active__torque__control_8h_source.html new file mode 100644 index 00000000..e20909b6 --- /dev/null +++ b/0.13.6/active__torque__control_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +libfranka: include/franka/active_torque_control.h Source File + + + + + + + + + + + + +
    +
    +
    active_torque_control.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include "active_control.h"
    +
    6 
    +
    12 namespace franka {
    +
    13 
    + +
    22  public:
    +
    32  void writeOnce(const Torques& control_input) override;
    +
    33 
    +
    39  friend class Robot;
    +
    40 
    +
    41  private:
    +
    50  ActiveTorqueControl(std::shared_ptr<Robot::Impl> robot_impl,
    +
    51  uint32_t motion_id,
    +
    52  std::unique_lock<std::mutex> control_lock)
    +
    53  : ActiveControl(std::move(robot_impl), motion_id, std::move(control_lock)){};
    +
    54 };
    +
    55 
    +
    56 } // namespace franka
    +
    Implements the ActiveControlBase abstract class.
    +
    Documented in ActiveControlBase.
    Definition: active_control.h:21
    +
    uint32_t motion_id
    motion id of running motion
    Definition: active_control.h:84
    +
    std::shared_ptr< Robot::Impl > robot_impl
    shared pointer to Robot::Impl instance for read and write accesses
    Definition: active_control.h:81
    +
    std::unique_lock< std::mutex > control_lock
    control-lock preventing parallel control processes
    Definition: active_control.h:87
    +
    Allows the user to read the state of a Robot and to send new torque control commands after starting a...
    Definition: active_torque_control.h:21
    +
    void writeOnce(const Torques &control_input) override
    Updates the joint-level based torque commands of an active joint effort control.
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    + + + + diff --git a/0.13.6/annotated.html b/0.13.6/annotated.html new file mode 100644 index 00000000..4492dbd9 --- /dev/null +++ b/0.13.6/annotated.html @@ -0,0 +1,120 @@ + + + + + + + +libfranka: Class List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Class List
    +
    +
    +
    Here are the classes, structs, unions and interfaces with brief descriptions:
    +
    [detail level 12]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Nfranka
     CActiveControlDocumented in ActiveControlBase
     CActiveControlBaseAllows the user to read the state of a Robot and to send new control commands after starting a control process of a Robot
     CActiveMotionGeneratorAllows the user to read the state of a Robot and to send new motion generator commands after starting a control process of a Robot
     CActiveTorqueControlAllows the user to read the state of a Robot and to send new torque control commands after starting a control process of a Robot
     CFinishableHelper type for control and motion generation loops
     CTorquesStores joint-level torque commands without gravity and friction
     CJointPositionsStores values for joint position motion generation
     CJointVelocitiesStores values for joint velocity motion generation
     CCartesianPoseStores values for Cartesian pose motion generation
     CCartesianVelocitiesStores values for Cartesian velocity motion generation
     CDurationRepresents a duration with millisecond resolution
     CErrorsEnumerates errors that can occur while controlling a franka::Robot
     CExceptionBase class for all exceptions used by libfranka
     CModelExceptionModelException is thrown if an error occurs when loading the model library
     CNetworkExceptionNetworkException is thrown if a connection to the robot cannot be established, or when a timeout occurs
     CProtocolExceptionProtocolException is thrown if the robot returns an incorrect message
     CIncompatibleVersionExceptionIncompatibleVersionException is thrown if the robot does not support this version of libfranka
     CControlExceptionControlException is thrown if an error occurs during motion generation or torque control
     CCommandExceptionCommandException is thrown if an error occurs during command execution
     CRealtimeExceptionRealtimeException is thrown if realtime priority cannot be set
     CInvalidOperationExceptionInvalidOperationException is thrown if an operation cannot be performed
     CGripperMaintains a network connection to the gripper, provides the current gripper state, and allows the execution of commands
     CGripperStateDescribes the gripper state
     CRobotCommandCommand sent to the robot
     CRecordOne row of the log contains a robot command of timestamp n and a corresponding robot state of timestamp n+1
     CModelCalculates poses of joints and dynamic properties of the robot
     CRobotMaintains a network connection to the robot, provides the current robot state, gives access to the model library and allows to control the robot
     CRobotStateDescribes the robot state
     CVacuumGripperMaintains a network connection to the vacuum gripper, provides the current vacuum gripper state, and allows the execution of commands
     CVacuumGripperStateDescribes the vacuum gripper state
     CMotionGeneratorAn example showing how to generate a joint pose motion to a goal position
    +
    +
    + + + + diff --git a/0.13.6/bc_s.png b/0.13.6/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/0.13.6/bdwn.png b/0.13.6/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +libfranka: cartesian_impedance_control.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    cartesian_impedance_control.cpp
    +
    +
    +

    An example showing a simple cartesian impedance controller without inertia shaping that renders a spring damper system where the equilibrium is the initial configuration.After starting the controller try to push the robot around and try different stiffness levels.

    +
    Warning
    collision thresholds are set to high values. Make sure you have the user stop at hand!
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <array>
    +
    #include <cmath>
    +
    #include <functional>
    +
    #include <iostream>
    +
    +
    #include <Eigen/Dense>
    +
    + + +
    #include <franka/model.h>
    +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    // Check whether the required arguments were passed
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    // Compliance parameters
    +
    const double translational_stiffness{150.0};
    +
    const double rotational_stiffness{10.0};
    +
    Eigen::MatrixXd stiffness(6, 6), damping(6, 6);
    +
    stiffness.setZero();
    +
    stiffness.topLeftCorner(3, 3) << translational_stiffness * Eigen::MatrixXd::Identity(3, 3);
    +
    stiffness.bottomRightCorner(3, 3) << rotational_stiffness * Eigen::MatrixXd::Identity(3, 3);
    +
    damping.setZero();
    +
    damping.topLeftCorner(3, 3) << 2.0 * sqrt(translational_stiffness) *
    +
    Eigen::MatrixXd::Identity(3, 3);
    +
    damping.bottomRightCorner(3, 3) << 2.0 * sqrt(rotational_stiffness) *
    +
    Eigen::MatrixXd::Identity(3, 3);
    +
    +
    try {
    +
    // connect to robot
    +
    franka::Robot robot(argv[1]);
    + +
    // load the kinematics and dynamics model
    +
    franka::Model model = robot.loadModel();
    +
    +
    franka::RobotState initial_state = robot.readOnce();
    +
    +
    // equilibrium point is the initial position
    +
    Eigen::Affine3d initial_transform(Eigen::Matrix4d::Map(initial_state.O_T_EE.data()));
    +
    Eigen::Vector3d position_d(initial_transform.translation());
    +
    Eigen::Quaterniond orientation_d(initial_transform.rotation());
    +
    +
    // set collision behavior
    +
    robot.setCollisionBehavior({{100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0}},
    +
    {{100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0}},
    +
    {{100.0, 100.0, 100.0, 100.0, 100.0, 100.0}},
    +
    {{100.0, 100.0, 100.0, 100.0, 100.0, 100.0}});
    +
    +
    // define callback for the torque control loop
    + +
    impedance_control_callback = [&](const franka::RobotState& robot_state,
    +
    franka::Duration /*duration*/) -> franka::Torques {
    +
    // get state variables
    +
    std::array<double, 7> coriolis_array = model.coriolis(robot_state);
    +
    std::array<double, 42> jacobian_array =
    +
    model.zeroJacobian(franka::Frame::kEndEffector, robot_state);
    +
    +
    // convert to Eigen
    +
    Eigen::Map<const Eigen::Matrix<double, 7, 1>> coriolis(coriolis_array.data());
    +
    Eigen::Map<const Eigen::Matrix<double, 6, 7>> jacobian(jacobian_array.data());
    +
    Eigen::Map<const Eigen::Matrix<double, 7, 1>> q(robot_state.q.data());
    +
    Eigen::Map<const Eigen::Matrix<double, 7, 1>> dq(robot_state.dq.data());
    +
    Eigen::Affine3d transform(Eigen::Matrix4d::Map(robot_state.O_T_EE.data()));
    +
    Eigen::Vector3d position(transform.translation());
    +
    Eigen::Quaterniond orientation(transform.rotation());
    +
    +
    // compute error to desired equilibrium pose
    +
    // position error
    +
    Eigen::Matrix<double, 6, 1> error;
    +
    error.head(3) << position - position_d;
    +
    +
    // orientation error
    +
    // "difference" quaternion
    +
    if (orientation_d.coeffs().dot(orientation.coeffs()) < 0.0) {
    +
    orientation.coeffs() << -orientation.coeffs();
    +
    }
    +
    // "difference" quaternion
    +
    Eigen::Quaterniond error_quaternion(orientation.inverse() * orientation_d);
    +
    error.tail(3) << error_quaternion.x(), error_quaternion.y(), error_quaternion.z();
    +
    // Transform to base frame
    +
    error.tail(3) << -transform.rotation() * error.tail(3);
    +
    +
    // compute control
    +
    Eigen::VectorXd tau_task(7), tau_d(7);
    +
    +
    // Spring damper system with damping ratio=1
    +
    tau_task << jacobian.transpose() * (-stiffness * error - damping * (jacobian * dq));
    +
    tau_d << tau_task + coriolis;
    +
    +
    std::array<double, 7> tau_d_array{};
    +
    Eigen::VectorXd::Map(&tau_d_array[0], 7) = tau_d;
    +
    return tau_d_array;
    +
    };
    +
    +
    // start real-time control loop
    +
    std::cout << "WARNING: Collision thresholds are set to high values. "
    +
    << "Make sure you have the user stop at hand!" << std::endl
    +
    << "After starting try to push the robot and see how it reacts." << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(impedance_control_callback);
    +
    +
    } catch (const franka::Exception& ex) {
    +
    // print exception
    +
    std::cout << ex.what() << std::endl;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Calculates poses of joints and dynamic properties of the robot.
    Definition: model.h:51
    +
    std::array< double, 42 > zeroJacobian(Frame frame, const franka::RobotState &robot_state) const
    Gets the 6x7 Jacobian for the given joint relative to the base frame.
    +
    std::array< double, 7 > coriolis(const franka::RobotState &robot_state) const noexcept
    Calculates the Coriolis force vector (state-space equation): , in .
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    Model loadModel()
    Loads the model library from the robot.
    +
    virtual RobotState readOnce()
    Waits for a robot state update and returns it.
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Contains the franka::Duration type.
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains model library types.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    std::array< double, 16 > O_T_EE
    Measured end effector pose in base frame.
    Definition: robot_state.h:40
    +
    std::array< double, 7 > q
    Measured joint position.
    Definition: robot_state.h:233
    +
    std::array< double, 7 > dq
    Measured joint velocity.
    Definition: robot_state.h:245
    +
    + + + + diff --git a/0.13.6/classMotionGenerator-members.html b/0.13.6/classMotionGenerator-members.html new file mode 100644 index 00000000..a6e0b221 --- /dev/null +++ b/0.13.6/classMotionGenerator-members.html @@ -0,0 +1,89 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    MotionGenerator Member List
    +
    +
    + +

    This is the complete list of members for MotionGenerator, including all inherited members.

    + + + +
    MotionGenerator(double speed_factor, const std::array< double, 7 > q_goal)MotionGenerator
    operator()(const franka::RobotState &robot_state, franka::Duration period)MotionGenerator
    + + + + diff --git a/0.13.6/classMotionGenerator.html b/0.13.6/classMotionGenerator.html new file mode 100644 index 00000000..03e27188 --- /dev/null +++ b/0.13.6/classMotionGenerator.html @@ -0,0 +1,188 @@ + + + + + + + +libfranka: MotionGenerator Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    MotionGenerator Class Reference
    +
    +
    + +

    An example showing how to generate a joint pose motion to a goal position. + More...

    + +

    #include <examples_common.h>

    + + + + + + + + +

    +Public Member Functions

     MotionGenerator (double speed_factor, const std::array< double, 7 > q_goal)
     Creates a new MotionGenerator instance for a target q. More...
     
    franka::JointPositions operator() (const franka::RobotState &robot_state, franka::Duration period)
     Sends joint position calculations. More...
     
    +

    Detailed Description

    +

    Constructor & Destructor Documentation

    + +

    ◆ MotionGenerator()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    MotionGenerator::MotionGenerator (double speed_factor,
    const std::array< double, 7 > q_goal 
    )
    +
    + +

    Creates a new MotionGenerator instance for a target q.

    +
    Parameters
    + + + +
    [in]speed_factorGeneral speed factor in range [0, 1].
    [in]q_goalTarget joint positions.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    franka::JointPositions MotionGenerator::operator() (const franka::RobotStaterobot_state,
    franka::Duration period 
    )
    +
    + +

    Sends joint position calculations.

    +
    Parameters
    + + + +
    [in]robot_stateCurrent state of the robot.
    [in]periodDuration of execution.
    +
    +
    +
    Returns
    Joint positions for use inside a control loop.
    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/0.13.6/classes.html b/0.13.6/classes.html new file mode 100644 index 00000000..e2663fd5 --- /dev/null +++ b/0.13.6/classes.html @@ -0,0 +1,129 @@ + + + + + + + +libfranka: Class Index + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Class Index
    +
    +
    +
    A | C | D | E | F | G | I | J | M | N | P | R | T | V
    +
    +
    +
    A
    +
    ActiveControl (franka)
    ActiveControlBase (franka)
    ActiveMotionGenerator (franka)
    ActiveTorqueControl (franka)
    +
    +
    C
    +
    CartesianPose (franka)
    CartesianVelocities (franka)
    CommandException (franka)
    ControlException (franka)
    +
    +
    D
    +
    Duration (franka)
    +
    +
    E
    +
    Errors (franka)
    Exception (franka)
    +
    +
    F
    +
    Finishable (franka)
    +
    +
    G
    +
    Gripper (franka)
    GripperState (franka)
    +
    +
    I
    +
    IncompatibleVersionException (franka)
    InvalidOperationException (franka)
    +
    +
    J
    +
    JointPositions (franka)
    JointVelocities (franka)
    +
    +
    M
    +
    Model (franka)
    ModelException (franka)
    MotionGenerator
    +
    +
    N
    +
    NetworkException (franka)
    +
    +
    P
    +
    ProtocolException (franka)
    +
    +
    R
    +
    RealtimeException (franka)
    Record (franka)
    Robot (franka)
    RobotCommand (franka)
    RobotState (franka)
    +
    +
    T
    +
    Torques (franka)
    +
    +
    V
    +
    VacuumGripper (franka)
    VacuumGripperState (franka)
    +
    +
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveControl-members.html b/0.13.6/classfranka_1_1ActiveControl-members.html new file mode 100644 index 00000000..2ee54030 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControl-members.html @@ -0,0 +1,110 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::ActiveControl Member List
    +
    +
    + +

    This is the complete list of members for franka::ActiveControl, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    ActiveControl(std::shared_ptr< Robot::Impl > robot_impl, uint32_t motion_id, std::unique_lock< std::mutex > control_lock)franka::ActiveControlprotected
    ActiveControlBase()=default (defined in franka::ActiveControlBase)franka::ActiveControlBaseprotected
    control_finishedfranka::ActiveControlprotected
    control_lockfranka::ActiveControlprotected
    last_read_accessfranka::ActiveControlprotected
    motion_idfranka::ActiveControlprotected
    readOnce() overridefranka::ActiveControlvirtual
    robot_implfranka::ActiveControlprotected
    writeOnce(const Torques &) overridefranka::ActiveControlinlinevirtual
    writeOnce(const JointPositions &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    writeOnce(const JointVelocities &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    writeOnce(const CartesianPose &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    writeOnce(const CartesianVelocities &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    writeOnce(const JointPositions &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    writeOnce(const JointVelocities &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    writeOnce(const CartesianPose &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    writeOnce(const CartesianVelocities &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    ~ActiveControl() override (defined in franka::ActiveControl)franka::ActiveControl
    ~ActiveControlBase()=default (defined in franka::ActiveControlBase)franka::ActiveControlBasevirtual
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveControl.html b/0.13.6/classfranka_1_1ActiveControl.html new file mode 100644 index 00000000..5fd35944 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControl.html @@ -0,0 +1,619 @@ + + + + + + + +libfranka: franka::ActiveControl Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::ActiveControl Class Reference
    +
    +
    + +

    Documented in ActiveControlBase. + More...

    + +

    #include <active_control.h>

    +
    +Inheritance diagram for franka::ActiveControl:
    +
    +
    Inheritance graph
    + + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::ActiveControl:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    std::pair< RobotState, DurationreadOnce () override
     Waits for a robot state update and returns it. More...
     
    void writeOnce (const Torques &) override
     Updates torque commands of an active control. More...
     
    void writeOnce (const JointPositions &, const std::optional< const Torques > &) override
     Updates the joint position and torque commands of an active control. More...
     
    void writeOnce (const JointVelocities &, const std::optional< const Torques > &) override
     Updates the joint velocity and torque commands of an active control. More...
     
    void writeOnce (const CartesianPose &, const std::optional< const Torques > &) override
     Updates the cartesian position and torque commands of an active control. More...
     
    void writeOnce (const CartesianVelocities &, const std::optional< const Torques > &) override
     Updates the cartesian velocity and torque commands of an active control. More...
     
    void writeOnce (const JointPositions &motion_generator_input) override
     Updates the joint position commands of an active control, with internal controller. More...
     
    void writeOnce (const JointVelocities &motion_generator_input) override
     Updates the joint velocity commands of an active control, with internal controller. More...
     
    void writeOnce (const CartesianPose &motion_generator_input) override
     Updates the cartesian pose commands of an active control, with internal controller. More...
     
    void writeOnce (const CartesianVelocities &motion_generator_input) override
     Updates the cartesian velocity commands of an active control, with internal controller. More...
     
    + + + + +

    +Protected Member Functions

     ActiveControl (std::shared_ptr< Robot::Impl > robot_impl, uint32_t motion_id, std::unique_lock< std::mutex > control_lock)
     Construct a new ActiveControl object. More...
     
    + + + + + + + + + + + + + + + + +

    +Protected Attributes

    +std::shared_ptr< Robot::Impl > robot_impl
     shared pointer to Robot::Impl instance for read and write accesses
     
    +uint32_t motion_id
     motion id of running motion
     
    +std::unique_lock< std::mutex > control_lock
     control-lock preventing parallel control processes
     
    +bool control_finished
     flag indicating if control process is finished
     
    +std::optional< Durationlast_read_access
     duration to last read access
     
    +

    Detailed Description

    +

    Documented in ActiveControlBase.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ActiveControl()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    franka::ActiveControl::ActiveControl (std::shared_ptr< Robot::Impl > robot_impl,
    uint32_t motion_id,
    std::unique_lock< std::mutex > control_lock 
    )
    +
    +protected
    +
    + +

    Construct a new ActiveControl object.

    +
    Parameters
    + + + + +
    robot_implshared_ptr to the Robot::Impl in the Robot
    motion_idid of the managed motion
    control_lockof the Robot, preventing other read and write accesses during the active control
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ readOnce()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::pair<RobotState, Duration> franka::ActiveControl::readOnce ()
    +
    +overridevirtual
    +
    + +

    Waits for a robot state update and returns it.

    +
    Returns
    Current robot state & time since last read operation
    +
    Exceptions
    + + + + +
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    ProtocolExceptionif robot returns an unexpected message.
    ControlExceptionif robot is in an error state.
    +
    +
    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [1/9]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void franka::ActiveControl::writeOnce (const CartesianPose,
    const std::optional< const Torques > &  
    )
    +
    +inlineoverridevirtual
    +
    + +

    Updates the cartesian position and torque commands of an active control.

    +

    hint: implemented in ActiveMotionGenerator<CartesianPose>

    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [2/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void franka::ActiveControl::writeOnce (const CartesianPosemotion_generator_input)
    +
    +inlineoverridevirtual
    +
    + +

    Updates the cartesian pose commands of an active control, with internal controller.

    +
    Parameters
    + + +
    motion_generator_inputthe new motion generator input
    +
    +
    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [3/9]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void franka::ActiveControl::writeOnce (const CartesianVelocities,
    const std::optional< const Torques > &  
    )
    +
    +inlineoverridevirtual
    +
    + +

    Updates the cartesian velocity and torque commands of an active control.

    +

    hint: implemented in ActiveMotionGenerator<CartesianVelocities>

    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [4/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void franka::ActiveControl::writeOnce (const CartesianVelocitiesmotion_generator_input)
    +
    +inlineoverridevirtual
    +
    + +

    Updates the cartesian velocity commands of an active control, with internal controller.

    +
    Parameters
    + + +
    motion_generator_inputthe new motion generator input
    +
    +
    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [5/9]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void franka::ActiveControl::writeOnce (const JointPositions,
    const std::optional< const Torques > &  
    )
    +
    +inlineoverridevirtual
    +
    + +

    Updates the joint position and torque commands of an active control.

    +

    hint: implemented in ActiveMotionGenerator<JointPositions>

    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [6/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void franka::ActiveControl::writeOnce (const JointPositionsmotion_generator_input)
    +
    +inlineoverridevirtual
    +
    + +

    Updates the joint position commands of an active control, with internal controller.

    +
    Parameters
    + + +
    motion_generator_inputthe new motion generator input
    +
    +
    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [7/9]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void franka::ActiveControl::writeOnce (const JointVelocities,
    const std::optional< const Torques > &  
    )
    +
    +inlineoverridevirtual
    +
    + +

    Updates the joint velocity and torque commands of an active control.

    +

    hint: implemented in ActiveMotionGenerator<JointVelocities>

    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [8/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void franka::ActiveControl::writeOnce (const JointVelocitiesmotion_generator_input)
    +
    +inlineoverridevirtual
    +
    + +

    Updates the joint velocity commands of an active control, with internal controller.

    +
    Parameters
    + + +
    motion_generator_inputthe new motion generator input
    +
    +
    + +

    Implements franka::ActiveControlBase.

    + +
    +
    + +

    ◆ writeOnce() [9/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void franka::ActiveControl::writeOnce (const Torques)
    +
    +inlineoverridevirtual
    +
    + +

    Updates torque commands of an active control.

    +

    hint: implemented in ActiveTorqueControl

    + +

    Implements franka::ActiveControlBase.

    + +

    Reimplemented in franka::ActiveTorqueControl.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveControlBase-members.html b/0.13.6/classfranka_1_1ActiveControlBase-members.html new file mode 100644 index 00000000..b8150dbd --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControlBase-members.html @@ -0,0 +1,103 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::ActiveControlBase Member List
    +
    +
    + +

    This is the complete list of members for franka::ActiveControlBase, including all inherited members.

    + + + + + + + + + + + + + +
    ActiveControlBase()=default (defined in franka::ActiveControlBase)franka::ActiveControlBaseprotected
    readOnce()=0franka::ActiveControlBasepure virtual
    writeOnce(const Torques &)=0franka::ActiveControlBasepure virtual
    writeOnce(const JointPositions &, const std::optional< const Torques > &)=0franka::ActiveControlBasepure virtual
    writeOnce(const JointVelocities &, const std::optional< const Torques > &)=0franka::ActiveControlBasepure virtual
    writeOnce(const CartesianPose &, const std::optional< const Torques > &)=0franka::ActiveControlBasepure virtual
    writeOnce(const CartesianVelocities &, const std::optional< const Torques > &)=0franka::ActiveControlBasepure virtual
    writeOnce(const JointPositions &motion_generator_input)=0franka::ActiveControlBasepure virtual
    writeOnce(const JointVelocities &motion_generator_input)=0franka::ActiveControlBasepure virtual
    writeOnce(const CartesianPose &motion_generator_input)=0franka::ActiveControlBasepure virtual
    writeOnce(const CartesianVelocities &motion_generator_input)=0franka::ActiveControlBasepure virtual
    ~ActiveControlBase()=default (defined in franka::ActiveControlBase)franka::ActiveControlBasevirtual
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveControlBase.html b/0.13.6/classfranka_1_1ActiveControlBase.html new file mode 100644 index 00000000..559d2daf --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControlBase.html @@ -0,0 +1,525 @@ + + + + + + + +libfranka: franka::ActiveControlBase Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::ActiveControlBase Class Referenceabstract
    +
    +
    + +

    Allows the user to read the state of a Robot and to send new control commands after starting a control process of a Robot. + More...

    + +

    #include <active_control_base.h>

    +
    +Inheritance diagram for franka::ActiveControlBase:
    +
    +
    Inheritance graph
    + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    virtual std::pair< RobotState, DurationreadOnce ()=0
     Waits for a robot state update and returns it. More...
     
    virtual void writeOnce (const Torques &)=0
     Updates torque commands of an active control. More...
     
    virtual void writeOnce (const JointPositions &, const std::optional< const Torques > &)=0
     Updates the joint position and torque commands of an active control. More...
     
    virtual void writeOnce (const JointVelocities &, const std::optional< const Torques > &)=0
     Updates the joint velocity and torque commands of an active control. More...
     
    virtual void writeOnce (const CartesianPose &, const std::optional< const Torques > &)=0
     Updates the cartesian position and torque commands of an active control. More...
     
    virtual void writeOnce (const CartesianVelocities &, const std::optional< const Torques > &)=0
     Updates the cartesian velocity and torque commands of an active control. More...
     
    virtual void writeOnce (const JointPositions &motion_generator_input)=0
     Updates the joint position commands of an active control, with internal controller. More...
     
    virtual void writeOnce (const JointVelocities &motion_generator_input)=0
     Updates the joint velocity commands of an active control, with internal controller. More...
     
    virtual void writeOnce (const CartesianPose &motion_generator_input)=0
     Updates the cartesian pose commands of an active control, with internal controller. More...
     
    virtual void writeOnce (const CartesianVelocities &motion_generator_input)=0
     Updates the cartesian velocity commands of an active control, with internal controller. More...
     
    +

    Detailed Description

    +

    Allows the user to read the state of a Robot and to send new control commands after starting a control process of a Robot.

    +

    hint: To create an ActiveControlBase, see franka::ActiveTorqueControl or franka::ActiveMotionGenerator

    +

    Member Function Documentation

    + +

    ◆ readOnce()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual std::pair<RobotState, Duration> franka::ActiveControlBase::readOnce ()
    +
    +pure virtual
    +
    + +

    Waits for a robot state update and returns it.

    +
    Returns
    Current robot state & time since last read operation
    +
    Exceptions
    + + + + +
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    ProtocolExceptionif robot returns an unexpected message.
    ControlExceptionif robot is in an error state.
    +
    +
    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [1/9]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const CartesianPose,
    const std::optional< const Torques > &  
    )
    +
    +pure virtual
    +
    + +

    Updates the cartesian position and torque commands of an active control.

    +

    hint: implemented in ActiveMotionGenerator<CartesianPose>

    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [2/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const CartesianPosemotion_generator_input)
    +
    +pure virtual
    +
    + +

    Updates the cartesian pose commands of an active control, with internal controller.

    +
    Parameters
    + + +
    motion_generator_inputthe new motion generator input
    +
    +
    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [3/9]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const CartesianVelocities,
    const std::optional< const Torques > &  
    )
    +
    +pure virtual
    +
    + +

    Updates the cartesian velocity and torque commands of an active control.

    +

    hint: implemented in ActiveMotionGenerator<CartesianVelocities>

    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [4/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const CartesianVelocitiesmotion_generator_input)
    +
    +pure virtual
    +
    + +

    Updates the cartesian velocity commands of an active control, with internal controller.

    +
    Parameters
    + + +
    motion_generator_inputthe new motion generator input
    +
    +
    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [5/9]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const JointPositions,
    const std::optional< const Torques > &  
    )
    +
    +pure virtual
    +
    + +

    Updates the joint position and torque commands of an active control.

    +

    hint: implemented in ActiveMotionGenerator<JointPositions>

    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [6/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const JointPositionsmotion_generator_input)
    +
    +pure virtual
    +
    + +

    Updates the joint position commands of an active control, with internal controller.

    +
    Parameters
    + + +
    motion_generator_inputthe new motion generator input
    +
    +
    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [7/9]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const JointVelocities,
    const std::optional< const Torques > &  
    )
    +
    +pure virtual
    +
    + +

    Updates the joint velocity and torque commands of an active control.

    +

    hint: implemented in ActiveMotionGenerator<JointVelocities>

    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [8/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const JointVelocitiesmotion_generator_input)
    +
    +pure virtual
    +
    + +

    Updates the joint velocity commands of an active control, with internal controller.

    +
    Parameters
    + + +
    motion_generator_inputthe new motion generator input
    +
    +
    + +

    Implemented in franka::ActiveControl.

    + +
    +
    + +

    ◆ writeOnce() [9/9]

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual void franka::ActiveControlBase::writeOnce (const Torques)
    +
    +pure virtual
    +
    + +

    Updates torque commands of an active control.

    +

    hint: implemented in ActiveTorqueControl

    + +

    Implemented in franka::ActiveTorqueControl, and franka::ActiveControl.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.map b/0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.map new file mode 100644 index 00000000..002eb182 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.md5 b/0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.md5 new file mode 100644 index 00000000..7ba6e473 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.md5 @@ -0,0 +1 @@ +aa03fd1901c28b61a439fe458b0e5614 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.png b/0.13.6/classfranka_1_1ActiveControlBase__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..230e2662981f7a9405d0c1187e67146d7798ad81 GIT binary patch literal 12036 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 JiyoT1{%^4IiS_^h literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1ActiveControl__coll__graph.map b/0.13.6/classfranka_1_1ActiveControl__coll__graph.map new file mode 100644 index 00000000..dd4e764f --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControl__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1ActiveControl__coll__graph.md5 b/0.13.6/classfranka_1_1ActiveControl__coll__graph.md5 new file mode 100644 index 00000000..c8f07a3c --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControl__coll__graph.md5 @@ -0,0 +1 @@ +e649630b56bc1d780882f73637fc8cdd \ No newline at end of file diff --git a/0.13.6/classfranka_1_1ActiveControl__coll__graph.png b/0.13.6/classfranka_1_1ActiveControl__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..61ee01887f27a3634e657f2ec503ac7e37ceef88 GIT binary patch literal 4463 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 literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1ActiveControl__inherit__graph.map b/0.13.6/classfranka_1_1ActiveControl__inherit__graph.map new file mode 100644 index 00000000..ac16dbee --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControl__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/0.13.6/classfranka_1_1ActiveControl__inherit__graph.md5 b/0.13.6/classfranka_1_1ActiveControl__inherit__graph.md5 new file mode 100644 index 00000000..0ae66989 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveControl__inherit__graph.md5 @@ -0,0 +1 @@ +dbf0db27a226cca34edfe498f13494fe \ No newline at end of file diff --git a/0.13.6/classfranka_1_1ActiveControl__inherit__graph.png b/0.13.6/classfranka_1_1ActiveControl__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..31500519f79e6a19785608f2304baa2c256f5590 GIT binary patch literal 12032 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 IG + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::ActiveMotionGenerator< MotionGeneratorType > Member List
    +
    +
    + +

    This is the complete list of members for franka::ActiveMotionGenerator< MotionGeneratorType >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + +
    ActiveControl(std::shared_ptr< Robot::Impl > robot_impl, uint32_t motion_id, std::unique_lock< std::mutex > control_lock)franka::ActiveControlprotected
    ActiveControlBase()=default (defined in franka::ActiveControlBase)franka::ActiveControlBaseprotected
    control_finishedfranka::ActiveControlprotected
    control_lockfranka::ActiveControlprotected
    last_read_accessfranka::ActiveControlprotected
    motion_idfranka::ActiveControlprotected
    readOnce() overridefranka::ActiveControlvirtual
    Robot classfranka::ActiveMotionGenerator< MotionGeneratorType >friend
    robot_implfranka::ActiveControlprotected
    writeOnce(const MotionGeneratorType &motion_generator_input, const std::optional< const Torques > &control_input) overridefranka::ActiveMotionGenerator< MotionGeneratorType >
    franka::ActiveControl::writeOnce(const Torques &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const JointPositions &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const JointVelocities &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const CartesianPose &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const CartesianVelocities &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const JointPositions &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const JointVelocities &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const CartesianPose &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const CartesianVelocities &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    ~ActiveControl() override (defined in franka::ActiveControl)franka::ActiveControl
    ~ActiveControlBase()=default (defined in franka::ActiveControlBase)franka::ActiveControlBasevirtual
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveMotionGenerator.html b/0.13.6/classfranka_1_1ActiveMotionGenerator.html new file mode 100644 index 00000000..1d333dda --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveMotionGenerator.html @@ -0,0 +1,254 @@ + + + + + + + +libfranka: franka::ActiveMotionGenerator< MotionGeneratorType > Class Template Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::ActiveMotionGenerator< MotionGeneratorType > Class Template Reference
    +
    +
    + +

    Allows the user to read the state of a Robot and to send new motion generator commands after starting a control process of a Robot. + More...

    + +

    #include <active_motion_generator.h>

    +
    +Inheritance diagram for franka::ActiveMotionGenerator< MotionGeneratorType >:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::ActiveMotionGenerator< MotionGeneratorType >:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    void writeOnce (const MotionGeneratorType &motion_generator_input, const std::optional< const Torques > &control_input) override
     Updates the motion generator commands of an active control. More...
     
    - Public Member Functions inherited from franka::ActiveControl
    std::pair< RobotState, DurationreadOnce () override
     Waits for a robot state update and returns it. More...
     
    void writeOnce (const Torques &) override
     Updates torque commands of an active control. More...
     
    void writeOnce (const JointPositions &, const std::optional< const Torques > &) override
     Updates the joint position and torque commands of an active control. More...
     
    void writeOnce (const JointVelocities &, const std::optional< const Torques > &) override
     Updates the joint velocity and torque commands of an active control. More...
     
    void writeOnce (const CartesianPose &, const std::optional< const Torques > &) override
     Updates the cartesian position and torque commands of an active control. More...
     
    void writeOnce (const CartesianVelocities &, const std::optional< const Torques > &) override
     Updates the cartesian velocity and torque commands of an active control. More...
     
    void writeOnce (const JointPositions &motion_generator_input) override
     Updates the joint position commands of an active control, with internal controller. More...
     
    void writeOnce (const JointVelocities &motion_generator_input) override
     Updates the joint velocity commands of an active control, with internal controller. More...
     
    void writeOnce (const CartesianPose &motion_generator_input) override
     Updates the cartesian pose commands of an active control, with internal controller. More...
     
    void writeOnce (const CartesianVelocities &motion_generator_input) override
     Updates the cartesian velocity commands of an active control, with internal controller. More...
     
    + + + + +

    +Friends

    +class Robot
     franka::Robot as friend to allow construction of ActiveMotionGenerator<MotionGeneratorType> in start<MotionGeneratorType>Control methods
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Protected Member Functions inherited from franka::ActiveControl
     ActiveControl (std::shared_ptr< Robot::Impl > robot_impl, uint32_t motion_id, std::unique_lock< std::mutex > control_lock)
     Construct a new ActiveControl object. More...
     
    - Protected Attributes inherited from franka::ActiveControl
    +std::shared_ptr< Robot::Impl > robot_impl
     shared pointer to Robot::Impl instance for read and write accesses
     
    +uint32_t motion_id
     motion id of running motion
     
    +std::unique_lock< std::mutex > control_lock
     control-lock preventing parallel control processes
     
    +bool control_finished
     flag indicating if control process is finished
     
    +std::optional< Durationlast_read_access
     duration to last read access
     
    +

    Detailed Description

    +

    template<typename MotionGeneratorType>
    +class franka::ActiveMotionGenerator< MotionGeneratorType >

    + +

    Allows the user to read the state of a Robot and to send new motion generator commands after starting a control process of a Robot.

    +

    hint: To create an ActiveMotionGenerator, see franka::Robot

    +

    Member Function Documentation

    + +

    ◆ writeOnce()

    + +
    +
    +
    +template<typename MotionGeneratorType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void franka::ActiveMotionGenerator< MotionGeneratorType >::writeOnce (const MotionGeneratorType & motion_generator_input,
    const std::optional< const Torques > & control_input 
    )
    +
    +override
    +
    + +

    Updates the motion generator commands of an active control.

    +
    Parameters
    + + + +
    motion_generator_inputthe new motion generator input
    control_inputoptional: the external control input for each joint, if an external controller is used
    +
    +
    +
    Exceptions
    + + + +
    ControlExceptionif an error related to torque control or motion generation occurred, or the motion was already finished.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.map b/0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.map new file mode 100644 index 00000000..952cec4f --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.md5 b/0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.md5 new file mode 100644 index 00000000..291f0ddc --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.md5 @@ -0,0 +1 @@ +f15dced3563b4a11398c9b07dbca4622 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.png b/0.13.6/classfranka_1_1ActiveMotionGenerator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..96f6fe082a045a2b78fdf6812974b03a8c085660 GIT binary patch literal 8096 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 literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.map b/0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.map new file mode 100644 index 00000000..952cec4f --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.md5 b/0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.md5 new file mode 100644 index 00000000..291f0ddc --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.md5 @@ -0,0 +1 @@ +f15dced3563b4a11398c9b07dbca4622 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.png b/0.13.6/classfranka_1_1ActiveMotionGenerator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..96f6fe082a045a2b78fdf6812974b03a8c085660 GIT binary patch literal 8096 zcmc(EcRZK>yZ;?RvXWg!va&NGn~-d>_sAAP$jlBQBqOr2viBy05ZPqQ-r1XT_4)qJ zd7STg{C@wQ-`%6!y~pi!y1^#wmqQJjTj(vUM z2fDHBV+rK)@1K|R5OX2b=n=ash6Rh`hbiQnNXi{3#I``&j+ zaz6dZM!cDb;MUq{v!YAJ>WHG6(28n}*9|mDWyA*`KdR!YD76rp8;Q7Tipw2|tAB48 z>n(Mal>Q7TisZ;*&C8l}zQ1QZoVW5~SAWvwmEhFMK$iQ>D?6ua`* z?W-rIFnl~Lf5dZT#on0tx94%s>P1SI+0TkUderh_u5Dj9At_1E*w}b$&ZC&`;ltMU zc59sg@?L)zcHJub!_CRn)z!xll$J9NG1nou!1!|AKz^euiGN5EG*c#xSQKAwnqA4mWo@syNwUbgF93FNa$dn(*Qsm{};Cs1BsD4EZAKkCmdW0=UHH4?EynM36 z^m=p$H#hffAvY%l1zdfvo%tt(k~-Sjb@laHEb5Mqr6tsTeSLSO-YN-7DRVP3TSN5E zpFig&&o3(@WGBHyvw85b$q<`TkdK!3b9MDYYHDQ5H$DAsNLqM!_=^`W7(*!eoxb<< z;M(cv>nqSiGBGhJ5k9xFGA{k)#6LMYIyx{=T2ewFshp$QX~^+`RcClsv)=uXjf10i zaPYlM2AgKl%=zgdQ=qtV%*0ow(7@2g%7fkAIJ<0ZZ^^huZ7SBk-NUt%lf(9F>Kz$L ze(+rT#f$suqekXxb6bC}X-giWy=oU_LY(W@ujAmfD#GHsfBdkWtf3VxVU&_WrZ^? zbxTT8@}(vhJv}{~M`4BCwD9^-OAsFNdUe$*&ttAF?8Ao-w{f!us5@tNkKqkFJG;lq zWep8pqeVvIsrZt8BZUU2h<=^x9Swtc*t{eG7dGd@D47gmV&dT7V8)OgS3v|x{@K1N zO-pe1ZhBNyRIWxL3i9R47ecyvw|y++^<=3sAuB8ERiy6Ku2icMqZQg= z>*<9xN@S=MqY4QLA;?9*;&Na5$;pY4k&)iD{yR_tf|QDnA7hB&-@F;kYd2-M)zaB1 z!x=AV{OwJ_q3QPT)+bM%Y;0_36zE#o*dz+MKR{B_(ohgXTibBYn>5iKR3ct^d3oGC zJXeuF#~!VGf|L>BsT`!(>rV6EBQ;Z3Q{SOdX%6*0Yuc4|V%WWt5F))HsQc~dDzbxB~v=^CMwAW(#8e)tluyAsgWM)b+#cWPD8n6(%j3u_r zzNHeG8X783O-;oRgW~t_@X*pCyTI+~>N?#YF}Q+YqoaP5tfr@p>i0=_=(zaR2bGJH zGn`69*ltSjhYlPBEkRC0gZ_c=?81U6B()(2zlX4p$B})prmmV=KvILpF#)q`-wjE% zqp!}qJ_T{P{C9(fjc~#>TXX#Q1LGI(J11_4M?hBX21Lhzl3j z*LAi3UNTt&=G_TIgoJzZ9XEYM@kvNxBO|XMDSZ}nbaWIAbkel_zE`i~QVO~rtZSWR zN@fkz*VmJAmOv7AeawJnh@kr;Z&qfe zwwBgI0fC@^fT6*`KdyogK5op;ilz6dzV*XWn+yv~voJMX@V?lk($UdL@zCGd*?I7M zY;R{lHd2~4Qo6|M|AboNLWbQoRqu|9iW>Iz?Qou!pXZG8Rf1qb5|W_${dEF z+T2`SzkgU>Uao=y#_J-ud9yu&YHM-P%+yp(SNF#=&MU}`8#iEmg98JO4h|~VRj%8= zp%k^WwG}=IlCcZE`28*JzKNiqV7BUNXACn0>Mz9T_dEomb*^RqIySC~?7m7xz}&RdUYMGgO&aSv>YPlSG;S`P}OKq(D=>dklqbX>^CQ z+sUJD+0}OVbiglH4 zL0}=~NG*OEO8xaaOucZk^UzI$mVi~as<*e-exm9{eT130d2C$V=qaB8i-Ll}_V)Ie zdf%1g^#4K5bVA*ZY_gJjJ;JBXH!7!ZQ&2#$l(R~F%Fbp)6H`d!>$8-HJ`9yLmlY5Y z(A3l<)UXK)f&L10wzt3k+{Wf${nxc{r%}= zKS14E?bJYrg#MN;6;|VU>g?(1>EKWzN-eFZIPy90C!xHpzhN!Gmo-;6x8GwA?55tP zW#{K_WXgZcR7|!tG_+qGyqAaKOO1_gGE$(Yl0#^1VQpP&+C@wsZE0b_=eD<;n0UMH zY`!C!F{Glb%+=k!R5R~yTMWfz%>DkYL@4C6{4ObpVydF9E>VI;O;t68acpq# zn_20KQw^|`tSoa=Q@W5em7MoYhAcW2c`e0m&~gn8Q*v_d#mMLt88$&TQNs>MW2*L1 zBgP>qB=`3A#@WjCbe@t_=4N4G;pQe3DK9VQ;o_=&x%NSmrR{pF@iuU@$Kki*-@o_Q zNFP{{l#~Qi1TLk@MC3@jIGK<@4rh`f8~X(}t+`fMSa{T(nu*D3p)d46>$7kT~V3zOuNLj8Im9*6J+V47DDyQwSvtCP%|+xF`1c}2qK(ZNE*~Wr_4x*?&p&PI1E%mh|pmMHJ5*E>Dv9e zP-;x)*ZCbZckfzTS$$Snxi~*^ zkn`H!j_!bmsNL{ynKi7u{c8@C74mho*ks!ZYCGef%Zc9;&|geUO!1T84NNp(L}X-S z2tppFuAo4WT!fM8XQi8NilMMYN;>|{gwKY}0wzM=dJRC^<9kc`i z0l@>C(LcXiucs<$s;gJL+Fb-RW@csvMORc*1jRrZ(QZ~MBq(UXoe=UuDfJ6RUm0#w zU6&!p!RF*GQc{a&&&tfY$=6XUncqo&uBzfAAt5n0H^&O-&!>hG1_@C@$Is8t#>O_< zQu6KFH`u${>S`@5Eg}*Uu6Q{_R6^n#r04$LUSeV*Au5}G-O*UNHE{lD2F14Piiv#p z&3=&L;o&jG)Hp13N`?{};bBcqP8RCb9vp3(FfcFxiT?Uk6jU!eJ3Au!f8`{$-1&Yf zj9-dFGcq%cr$e}%CEv8gahc=x+R)PiNyf*--DC657TpqmgY`dd4(=@doF1w0zj#aR zH5V>~c}7s>J-t3+aQV>Uo%Fakw-}K6ARS82AgQfd&?bk6ha>Yu<C+7sqdi&AIm!ETTa6~ecq?dY#td$kLuL3JceE3u@ z^-Q?PxR{nX_j7r6o?; zjJfS9igfS(A&rP#URyIheg1ALJ>YE8>uqG@C*9zNhJxbl*eLWIqnU&&|8K_l|AB)5 zrQZT9SRJplvzC=<{G5_9Gr(|!p*7UCFyTj=}2BS z0XZ2ipg2oDKR!NAh`s8QZ3ZphfzJLvnaDqsL}iXg^c! zU@h%^tF5%1bURoli|rC}UXL5QY8kN56>Dy0W~I}*MB~Q@A7D3V0DelzZSihwXfF!t zj5Gen#KeSxbzop15SzKb{p(=rQ~Pz*AIoY^B=w`o4d80dZ)njI8XypN#yxJT~2` z*U6a~8PEVMH6JM}-}u=5fQu_MIQWU8;*vd|Nqe}woZMg$wtW9aV@C~WxaMYYMAXgg z1W)9w=vhb9%#0z_6F6T&Aj~($%3r;D1>oae*QcxBBJrtu9>WC7a)&DzBZ53vQpmI`+HA8 z_QAIDoBfD`hjqoWV_;xh?sT!cj*#EFb-7>Y4b2i2p;!D=XWWVf1|fvN6rGwETw)}l zya#HVh1mLdXJM46`=4vuy^(XflU`EtTwzJO*nsJT=2mxWYle>cdWB1RdODB^T7r%Q z9_v5Nf75588u(>`1dS0EU?Vsq&g-N1ZAOc>8ZRkxKSW2DnzZ8r_Or#-x*u*rxW?gV z2=ELeFzcp0cI91N`GO@v!o$^xCCI>3f{aL2Vr*z=08nDqDEQV18#M`xZq_~!o6KQ< zbqE8GQbI~<=h#C;M8w6#rJ9<{><6F2{C9{MIN3D>?6->2QZ6p87XGQJDX*EYS4>Ri zyf06ubt-LvJh$%M#r(an@bcp980Xf5`NhSt(NU!w)n7$WXH)>r9v*cPG_&@6wJuwW z_Iymw7_HN6NCAka8axFY7v+dbGvz#jqSMm6vK;eA*@-+O!!q5xh?IYFae|JwYdlv! z*r6q`9L!dRNE=?R5$i8+ZHWK?0ZX8wN^WawJKUN!StvAU)Gsz}-CG&ZDAdpA|88)x zLvkj??0yE+0@O7Jz}joT+;Zy?VD1P41hmp_TEEe&9#YlErzuaX^uqj+?iD!5oTpjf zT-`ukr&)ld8QO}13=R!VR=qHpta-^zE^lDqz0#in9vk>Sc6{J3gID^1hX;tj@zK%u zw!EC2S4V$lzo_NH?uuuqfMcYks_K7O|45Zr`8KRp3V9tId`pF$IUMEiEQsO?Q1@WxjXM($@B3Ao&6f z$A# zjX=W)Kk z4EMITGYATLz%df1vFZ?@dd z3x1T_G^!p-+UC^+BpePwo+uGga9i}gzJf|A;`L*}p|(Fnj^6H9No#-q-@1X^XY!?G zVECCVVz7DClO%v36IBSJqcaYzV`s;KDTd#)^F6rH4PNIp85wk7bf%;r$RDuhVq;@v zX$d6nWBOKAS0@2@pX{%V`d&dqGgPt^k~(MY!7>5a2K}ez<(fL!PUF38ZS+u|)YPJE z)L~Mk#l;WpXTE~cvbMIyqu`%kUVbzA@_mO=-{(j8Xju3W$Hi3&@>#FexmYs~sFHwyfJ^ZmUuv+QlK5WGeC(!= z?wG`i`tV_Kd6`j1JXMKaF7Dl@Pq@fv-K)}!3{wdS2}8pfXr>HuaR`Emjm^Tu?8892T-YX_Fx%1@e9$=G>?oNLLzT&Zt8g}RXrbnAS6@|a@jvHFd;6^ zW}@l_v&NlAS~pGk`1#wuefx8KM#QXMq?uP##6cP10%i3ncuU5U$dPrVaPuG|l$tT* zH$x7j@|7zb7z8_HC4dJ{pFaInEAXS$2cKwJ4^!D^D&Su?E0t3L$NuM(`|I-Ap>N(` z+C-x$US(ltHz;}50o}UTQ=14@(YcvA7ZK#v21a^xbTsr>7-aHZh@l{dy>n-&QP5;X9jpEXjYsa!eqE z9#94+X<#r7#31!i(D2Ae?ECk$^z;SLx1u@S0>i^`FWx(jS3E~YM_(JxUrV>95ca65 zub&(m+8?)T+(?(r7ImBgwEofEUGKC)5HELeak|xbx><{x+vL&Q@SQNJXW7lZ&U?fm+$Qd?VFD03<0GUj7{58+GLZa6d$O%UhN zMYu8d&^|jzjLODy*1LCGT3i2W6A_V17@7d||LEvwazG_K%}8S}>6_=St*L1M(1RdH zE#2H|{QOWiTg%GIQc|edV!NJk!rURkG$ZF-Sc@S?b8~Z*t}TFJ@=rWmT(i<&fPa9+ zol=TnFwp^V;(c+vbmOiR_|nk*p)+R=>|Kvj%s%iCUvGGGo+d#{U}|puGlA#2_t5zG zcu$Xlfq}?BbEQ3)nItWGbc)kN(#t250VA59e+HZ8d3s>ED5AN#%k#*>V)@ODyHE_M zC@67qi!f_y3%ivy*1(aBzb7V~3XNM@`g;fwb4W^w{K(19{@&d^S?$OWARd3;Brq$BK^P{EL zMnQosjIi|H!}EgAJ2~#(e=*w}kigB>d&b3yCbkX}lZ_4c+eVPqB9~{oFrCCli|4k4 z0W7IHB`N7qg!kDTK%gMi?bz>LhW*y12GAEdwWsQ*XutsgcS{O=VPyjqydtQ z3=M6Z;GqaR3Kt3)Nl(uL3K<&W-?(w-lr^k(FWOd=pAJ}W%g)h}D-N?ViG4TnFJtn* z9LoMCmvZ24R=VhD{nuW;eCZ%?OyTO%9!`P literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1ActiveTorqueControl-members.html b/0.13.6/classfranka_1_1ActiveTorqueControl-members.html new file mode 100644 index 00000000..cbdfba30 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveTorqueControl-members.html @@ -0,0 +1,111 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::ActiveTorqueControl Member List
    +
    +
    + +

    This is the complete list of members for franka::ActiveTorqueControl, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + +
    ActiveControl(std::shared_ptr< Robot::Impl > robot_impl, uint32_t motion_id, std::unique_lock< std::mutex > control_lock)franka::ActiveControlprotected
    ActiveControlBase()=default (defined in franka::ActiveControlBase)franka::ActiveControlBaseprotected
    control_finishedfranka::ActiveControlprotected
    control_lockfranka::ActiveControlprotected
    last_read_accessfranka::ActiveControlprotected
    motion_idfranka::ActiveControlprotected
    readOnce() overridefranka::ActiveControlvirtual
    Robot classfranka::ActiveTorqueControlfriend
    robot_implfranka::ActiveControlprotected
    writeOnce(const Torques &control_input) overridefranka::ActiveTorqueControlvirtual
    franka::ActiveControl::writeOnce(const JointPositions &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const JointVelocities &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const CartesianPose &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const CartesianVelocities &, const std::optional< const Torques > &) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const JointPositions &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const JointVelocities &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const CartesianPose &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    franka::ActiveControl::writeOnce(const CartesianVelocities &motion_generator_input) overridefranka::ActiveControlinlinevirtual
    ~ActiveControl() override (defined in franka::ActiveControl)franka::ActiveControl
    ~ActiveControlBase()=default (defined in franka::ActiveControlBase)franka::ActiveControlBasevirtual
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveTorqueControl.html b/0.13.6/classfranka_1_1ActiveTorqueControl.html new file mode 100644 index 00000000..b06e4783 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveTorqueControl.html @@ -0,0 +1,237 @@ + + + + + + + +libfranka: franka::ActiveTorqueControl Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::ActiveTorqueControl Class Reference
    +
    +
    + +

    Allows the user to read the state of a Robot and to send new torque control commands after starting a control process of a Robot. + More...

    + +

    #include <active_torque_control.h>

    +
    +Inheritance diagram for franka::ActiveTorqueControl:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::ActiveTorqueControl:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    void writeOnce (const Torques &control_input) override
     Updates the joint-level based torque commands of an active joint effort control. More...
     
    - Public Member Functions inherited from franka::ActiveControl
    std::pair< RobotState, DurationreadOnce () override
     Waits for a robot state update and returns it. More...
     
    void writeOnce (const JointPositions &, const std::optional< const Torques > &) override
     Updates the joint position and torque commands of an active control. More...
     
    void writeOnce (const JointVelocities &, const std::optional< const Torques > &) override
     Updates the joint velocity and torque commands of an active control. More...
     
    void writeOnce (const CartesianPose &, const std::optional< const Torques > &) override
     Updates the cartesian position and torque commands of an active control. More...
     
    void writeOnce (const CartesianVelocities &, const std::optional< const Torques > &) override
     Updates the cartesian velocity and torque commands of an active control. More...
     
    void writeOnce (const JointPositions &motion_generator_input) override
     Updates the joint position commands of an active control, with internal controller. More...
     
    void writeOnce (const JointVelocities &motion_generator_input) override
     Updates the joint velocity commands of an active control, with internal controller. More...
     
    void writeOnce (const CartesianPose &motion_generator_input) override
     Updates the cartesian pose commands of an active control, with internal controller. More...
     
    void writeOnce (const CartesianVelocities &motion_generator_input) override
     Updates the cartesian velocity commands of an active control, with internal controller. More...
     
    + + + + +

    +Friends

    +class Robot
     franka::Robot as friend to allow construction of ActiveTorqueControl in startTorqueControl methods
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Protected Member Functions inherited from franka::ActiveControl
     ActiveControl (std::shared_ptr< Robot::Impl > robot_impl, uint32_t motion_id, std::unique_lock< std::mutex > control_lock)
     Construct a new ActiveControl object. More...
     
    - Protected Attributes inherited from franka::ActiveControl
    +std::shared_ptr< Robot::Impl > robot_impl
     shared pointer to Robot::Impl instance for read and write accesses
     
    +uint32_t motion_id
     motion id of running motion
     
    +std::unique_lock< std::mutex > control_lock
     control-lock preventing parallel control processes
     
    +bool control_finished
     flag indicating if control process is finished
     
    +std::optional< Durationlast_read_access
     duration to last read access
     
    +

    Detailed Description

    +

    Allows the user to read the state of a Robot and to send new torque control commands after starting a control process of a Robot.

    +

    hint: To create an ActiveTorqueControl, see franka::Robot

    +

    Member Function Documentation

    + +

    ◆ writeOnce()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void franka::ActiveTorqueControl::writeOnce (const Torquescontrol_input)
    +
    +overridevirtual
    +
    + +

    Updates the joint-level based torque commands of an active joint effort control.

    +
    Parameters
    + + +
    control_inputthe new joint-level based torques
    +
    +
    +
    Exceptions
    + + + +
    ControlExceptionif an error related to torque control or motion generation occurred, or the motion was already finished.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    + +

    Reimplemented from franka::ActiveControl.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.map b/0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.map new file mode 100644 index 00000000..c409c1e9 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.md5 b/0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.md5 new file mode 100644 index 00000000..e7810a63 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.md5 @@ -0,0 +1 @@ +d5b6f841bc0f1b25e2f9a049ecced612 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.png b/0.13.6/classfranka_1_1ActiveTorqueControl__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4150b6748d83a38d5be4f0672519cacdaf03504d GIT binary patch literal 7670 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 + + + + diff --git a/0.13.6/classfranka_1_1ActiveTorqueControl__inherit__graph.md5 b/0.13.6/classfranka_1_1ActiveTorqueControl__inherit__graph.md5 new file mode 100644 index 00000000..e7810a63 --- /dev/null +++ b/0.13.6/classfranka_1_1ActiveTorqueControl__inherit__graph.md5 @@ -0,0 +1 @@ +d5b6f841bc0f1b25e2f9a049ecced612 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1ActiveTorqueControl__inherit__graph.png b/0.13.6/classfranka_1_1ActiveTorqueControl__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4150b6748d83a38d5be4f0672519cacdaf03504d GIT binary patch literal 7670 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 + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::CartesianPose Member List
    +
    +
    + +

    This is the complete list of members for franka::CartesianPose, including all inherited members.

    + + + + + + + + + +
    CartesianPose(const std::array< double, 16 > &cartesian_pose) noexceptfranka::CartesianPose
    CartesianPose(const std::array< double, 16 > &cartesian_pose, const std::array< double, 2 > &elbow) noexceptfranka::CartesianPose
    CartesianPose(std::initializer_list< double > cartesian_pose)franka::CartesianPose
    CartesianPose(std::initializer_list< double > cartesian_pose, std::initializer_list< double > elbow)franka::CartesianPose
    elbowfranka::CartesianPose
    hasElbow() const noexceptfranka::CartesianPose
    motion_finishedfranka::Finishable
    O_T_EEfranka::CartesianPose
    + + + + diff --git a/0.13.6/classfranka_1_1CartesianPose.html b/0.13.6/classfranka_1_1CartesianPose.html new file mode 100644 index 00000000..0d332f43 --- /dev/null +++ b/0.13.6/classfranka_1_1CartesianPose.html @@ -0,0 +1,385 @@ + + + + + + + +libfranka: franka::CartesianPose Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::CartesianPose Class Reference
    +
    +
    + +

    Stores values for Cartesian pose motion generation. + More...

    + +

    #include <control_types.h>

    +
    +Inheritance diagram for franka::CartesianPose:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for franka::CartesianPose:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     CartesianPose (const std::array< double, 16 > &cartesian_pose) noexcept
     Creates a new CartesianPose instance. More...
     
     CartesianPose (const std::array< double, 16 > &cartesian_pose, const std::array< double, 2 > &elbow) noexcept
     Creates a new CartesianPose instance. More...
     
     CartesianPose (std::initializer_list< double > cartesian_pose)
     Creates a new CartesianPose instance. More...
     
     CartesianPose (std::initializer_list< double > cartesian_pose, std::initializer_list< double > elbow)
     Creates a new CartesianPose instance. More...
     
    bool hasElbow () const noexcept
     Determines whether there is a stored elbow configuration. More...
     
    + + + + + + + + + + + +

    +Public Attributes

    std::array< double, 16 > O_T_EE {}
     Homogeneous transformation \(^O{\mathbf{T}_{EE}}_{d}\), column major, that transforms from the end effector frame \(EE\) to base frame \(O\). More...
     
    std::array< double, 2 > elbow {}
     Elbow configuration. More...
     
    - Public Attributes inherited from franka::Finishable
    +bool motion_finished = false
     Determines whether to finish a currently running motion.
     
    +

    Detailed Description

    +

    Constructor & Destructor Documentation

    + +

    ◆ CartesianPose() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::CartesianPose::CartesianPose (const std::array< double, 16 > & cartesian_pose)
    +
    +noexcept
    +
    + +

    Creates a new CartesianPose instance.

    +
    Parameters
    + + +
    [in]cartesian_poseDesired vectorized homogeneous transformation matrix \(^O {\mathbf{T}_{EE}}_{d}\), column major, that transforms from the end effector frame \(EE\) to base frame \(O\). Equivalently, it is the desired end effector pose in base frame.
    +
    +
    + +
    +
    + +

    ◆ CartesianPose() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    franka::CartesianPose::CartesianPose (const std::array< double, 16 > & cartesian_pose,
    const std::array< double, 2 > & elbow 
    )
    +
    +noexcept
    +
    + +

    Creates a new CartesianPose instance.

    +
    Parameters
    + + + +
    [in]cartesian_poseDesired vectorized homogeneous transformation matrix \(^O {\mathbf{T}_{EE}}_{d}\), column major, that transforms from the end effector frame \(EE\) to base frame \(O\). Equivalently, it is the desired end effector pose in base frame.
    [in]elbowElbow configuration (see elbow member for more details).
    +
    +
    + +
    +
    + +

    ◆ CartesianPose() [3/4]

    + +
    +
    + + + + + + + + +
    franka::CartesianPose::CartesianPose (std::initializer_list< double > cartesian_pose)
    +
    + +

    Creates a new CartesianPose instance.

    +
    Parameters
    + + +
    [in]cartesian_poseDesired vectorized homogeneous transformation matrix \(^O {\mathbf{T}_{EE}}_{d}\), column major, that transforms from the end effector frame \(EE\) to base frame \(O\). Equivalently, it is the desired end effector pose in base frame.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif the given initializer list has an invalid number of arguments.
    +
    +
    + +
    +
    + +

    ◆ CartesianPose() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    franka::CartesianPose::CartesianPose (std::initializer_list< double > cartesian_pose,
    std::initializer_list< double > elbow 
    )
    +
    + +

    Creates a new CartesianPose instance.

    +
    Parameters
    + + + +
    [in]cartesian_poseDesired vectorized homogeneous transformation matrix \(^O {\mathbf{T}_{EE}}_{d}\), column major, that transforms from the end effector frame \(EE\) to base frame \(O\). Equivalently, it is the desired end effector pose in base frame.
    [in]elbowElbow configuration (see elbow member for more details).
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif a given initializer list has an invalid number of arguments.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ hasElbow()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool franka::CartesianPose::hasElbow () const
    +
    +noexcept
    +
    + +

    Determines whether there is a stored elbow configuration.

    +
    Returns
    True if there is a stored elbow configuration, false otherwise.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ elbow

    + +
    +
    + + + + +
    std::array<double, 2> franka::CartesianPose::elbow {}
    +
    + +

    Elbow configuration.

    +

    The values of the array are:

      +
    • elbow[0]: Position of the 3rd joint in \([rad]\).
    • +
    • elbow[1]: Flip direction of the elbow (4th joint):
        +
      • +1 if \(q_4 > q_{elbow-flip}\)
      • +
      • 0 if \(q_4 == q_{elbow-flip} \)
      • +
      • -1 if \(q_4 < q_{elbow-flip} \)
      • +
      +
    • +
    +

    with \(q_{elbow-flip}\) as specified in the robot interface specification page in the FCI Documentation.

    + +
    +
    + +

    ◆ O_T_EE

    + +
    +
    + + + + +
    std::array<double, 16> franka::CartesianPose::O_T_EE {}
    +
    + +

    Homogeneous transformation \(^O{\mathbf{T}_{EE}}_{d}\), column major, that transforms from the end effector frame \(EE\) to base frame \(O\).

    +

    Equivalently, it is the desired end effector pose in base frame.

    +
    Examples
    joint_impedance_control.cpp.
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1CartesianPose__coll__graph.map b/0.13.6/classfranka_1_1CartesianPose__coll__graph.map new file mode 100644 index 00000000..d0e17a63 --- /dev/null +++ b/0.13.6/classfranka_1_1CartesianPose__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1CartesianPose__coll__graph.md5 b/0.13.6/classfranka_1_1CartesianPose__coll__graph.md5 new file mode 100644 index 00000000..befdc6df --- /dev/null +++ b/0.13.6/classfranka_1_1CartesianPose__coll__graph.md5 @@ -0,0 +1 @@ +81c49068e9ce62a88cba1af25c92fd08 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1CartesianPose__coll__graph.png b/0.13.6/classfranka_1_1CartesianPose__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..486464cd573a4ae5e47c58d412fb4930e2977643 GIT binary patch literal 3873 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

    Tue}P#hmEtuDj*uh4C>$gY2n4A1 z?)HY+hmH=%`JQb2QfbYlrF8X&hu7BDz&@USavH91WLHvBy0j+VZk2>x~I*|TSpQ&W%MzE#==IZo*#N6fFX-k@($hb%^~oYwcF&Q2_;=jfb6yXNkJm?`Zu+mfjB@ zwD#p))3m*vnc}4tz$mo+k}+loUt-g7c9sa8)v3nr?FO@0tTU35hyVPd!M(iX3`xS# zpkEw+d`z%i{nVpnYGwux2+#n*mpxiPEIj;>nxgpN0yJpun9S**m9P8jZi|4etn$aSn-`%#eCXRoTA@%7$elZPG?oXR`}kSM zH@4-QOEn7+8XK>al$7kJ-;Yjj5knwx>iGIz0vWHhtPnj^1J{ym)9x)O`#DObh^P zYHC{h;3p@br@4j2fjlHf^{qHS^TGj-#1+fnh@*mGLw13%dK`@kNM~{51`+dqhtD$q zdP~+-0$6m9+HddT*MxI0Xd-_od^( z10~A6k+8PNV~!iM-5}&e=!>`XLHl*}$EISQ^N>Zh*+ggdlFh^naY0oF>6 z6>NQ=QqdDl!8Y}Na%!YDAxy*L$w_;N!muZN<_BAcfMY35?a{WHRoR{B@89p(spuHt ze*F9?s-<<>3(W~ps#A!B@)61Zwo=Ab&reTJ2b9BfeFIta>~a5<);~a}ml~dj9e?QU v + + + diff --git a/0.13.6/classfranka_1_1CartesianPose__inherit__graph.md5 b/0.13.6/classfranka_1_1CartesianPose__inherit__graph.md5 new file mode 100644 index 00000000..befdc6df --- /dev/null +++ b/0.13.6/classfranka_1_1CartesianPose__inherit__graph.md5 @@ -0,0 +1 @@ +81c49068e9ce62a88cba1af25c92fd08 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1CartesianPose__inherit__graph.png b/0.13.6/classfranka_1_1CartesianPose__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..486464cd573a4ae5e47c58d412fb4930e2977643 GIT binary patch literal 3873 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

    Tue}P#hmEtuDj*uh4C>$gY2n4A1 z?)HY+hmH=%`JQb2QfbYlrF8X&hu7BDz&@USavH91WLHvBy0j+VZk2>x~I*|TSpQ&W%MzE#==IZo*#N6fFX-k@($hb%^~oYwcF&Q2_;=jfb6yXNkJm?`Zu+mfjB@ zwD#p))3m*vnc}4tz$mo+k}+loUt-g7c9sa8)v3nr?FO@0tTU35hyVPd!M(iX3`xS# zpkEw+d`z%i{nVpnYGwux2+#n*mpxiPEIj;>nxgpN0yJpun9S**m9P8jZi|4etn$aSn-`%#eCXRoTA@%7$elZPG?oXR`}kSM zH@4-QOEn7+8XK>al$7kJ-;Yjj5knwx>iGIz0vWHhtPnj^1J{ym)9x)O`#DObh^P zYHC{h;3p@br@4j2fjlHf^{qHS^TGj-#1+fnh@*mGLw13%dK`@kNM~{51`+dqhtD$q zdP~+-0$6m9+HddT*MxI0Xd-_od^( z10~A6k+8PNV~!iM-5}&e=!>`XLHl*}$EISQ^N>Zh*+ggdlFh^naY0oF>6 z6>NQ=QqdDl!8Y}Na%!YDAxy*L$w_;N!muZN<_BAcfMY35?a{WHRoR{B@89p(spuHt ze*F9?s-<<>3(W~ps#A!B@)61Zwo=Ab&reTJ2b9BfeFIta>~a5<);~a}ml~dj9e?QU v + + + + + + +libfranka: Member List + + + + + + + + + + + +

    +
    +
    +
    franka::CartesianVelocities Member List
    +
    +
    + +

    This is the complete list of members for franka::CartesianVelocities, including all inherited members.

    + + + + + + + + + +
    CartesianVelocities(const std::array< double, 6 > &cartesian_velocities) noexceptfranka::CartesianVelocities
    CartesianVelocities(const std::array< double, 6 > &cartesian_velocities, const std::array< double, 2 > &elbow) noexceptfranka::CartesianVelocities
    CartesianVelocities(std::initializer_list< double > cartesian_velocities)franka::CartesianVelocities
    CartesianVelocities(std::initializer_list< double > cartesian_velocities, std::initializer_list< double > elbow)franka::CartesianVelocities
    elbowfranka::CartesianVelocities
    hasElbow() const noexceptfranka::CartesianVelocities
    motion_finishedfranka::Finishable
    O_dP_EEfranka::CartesianVelocities
    + + + + diff --git a/0.13.6/classfranka_1_1CartesianVelocities.html b/0.13.6/classfranka_1_1CartesianVelocities.html new file mode 100644 index 00000000..8d79057e --- /dev/null +++ b/0.13.6/classfranka_1_1CartesianVelocities.html @@ -0,0 +1,368 @@ + + + + + + + +libfranka: franka::CartesianVelocities Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::CartesianVelocities Class Reference
    +
    +
    + +

    Stores values for Cartesian velocity motion generation. + More...

    + +

    #include <control_types.h>

    +
    +Inheritance diagram for franka::CartesianVelocities:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for franka::CartesianVelocities:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     CartesianVelocities (const std::array< double, 6 > &cartesian_velocities) noexcept
     Creates a new CartesianVelocities instance. More...
     
     CartesianVelocities (const std::array< double, 6 > &cartesian_velocities, const std::array< double, 2 > &elbow) noexcept
     Creates a new CartesianVelocities instance. More...
     
     CartesianVelocities (std::initializer_list< double > cartesian_velocities)
     Creates a new CartesianVelocities instance. More...
     
     CartesianVelocities (std::initializer_list< double > cartesian_velocities, std::initializer_list< double > elbow)
     Creates a new CartesianVelocities instance. More...
     
    bool hasElbow () const noexcept
     Determines whether there is a stored elbow configuration. More...
     
    + + + + + + + + + + + +

    +Public Attributes

    +std::array< double, 6 > O_dP_EE {}
     Cartesian velocity with respect to the base frame O with \((\dot x, \dot y, \dot z)\) in \([m/s]\) and \((\omega_x, \omega_y, \omega_z)\) in \([rad/s]\).
     
    std::array< double, 2 > elbow {}
     Elbow configuration. More...
     
    - Public Attributes inherited from franka::Finishable
    +bool motion_finished = false
     Determines whether to finish a currently running motion.
     
    +

    Detailed Description

    +

    Stores values for Cartesian velocity motion generation.

    +

    The Cartesian velocity of the end-effector is expressed in a frame parallel to the fixed/base frame, whose origin is the same as the end-effector frame. Rotations are thus expressed around the end-effector and parallel to the base frame.

    +
    Examples
    generate_cartesian_velocity_motion.cpp, and generate_cartesian_velocity_motion_external_control_loop.cpp.
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ CartesianVelocities() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::CartesianVelocities::CartesianVelocities (const std::array< double, 6 > & cartesian_velocities)
    +
    +noexcept
    +
    + +

    Creates a new CartesianVelocities instance.

    +
    Parameters
    + + +
    [in]cartesian_velocitiesDesired Cartesian velocity with respect to the base frame O with \((\dot x, \dot y, \dot z)\) in \([m/s]\) and \((\omega_x, \omega_y, \omega_z)\) in \([rad/s]\).
    +
    +
    + +
    +
    + +

    ◆ CartesianVelocities() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    franka::CartesianVelocities::CartesianVelocities (const std::array< double, 6 > & cartesian_velocities,
    const std::array< double, 2 > & elbow 
    )
    +
    +noexcept
    +
    + +

    Creates a new CartesianVelocities instance.

    +
    Parameters
    + + + +
    [in]cartesian_velocitiesDesired Cartesian velocity with respect to the base frame O with \((\dot x, \dot y, \dot z)\) in \([m/s]\) and \((\omega_x, \omega_y, \omega_z)\) in \([rad/s]\).
    [in]elbowElbow configuration (see elbow member for more details).
    +
    +
    + +
    +
    + +

    ◆ CartesianVelocities() [3/4]

    + +
    +
    + + + + + + + + +
    franka::CartesianVelocities::CartesianVelocities (std::initializer_list< double > cartesian_velocities)
    +
    + +

    Creates a new CartesianVelocities instance.

    +
    Parameters
    + + +
    [in]cartesian_velocitiesDesired Cartesian velocity with respect to the base frame O with \((\dot x, \dot y, \dot z)\) in \([m/s]\) and \((\omega_x, \omega_y, \omega_z)\) in \([rad/s]\).
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif the given initializer list has an invalid number of arguments.
    +
    +
    + +
    +
    + +

    ◆ CartesianVelocities() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    franka::CartesianVelocities::CartesianVelocities (std::initializer_list< double > cartesian_velocities,
    std::initializer_list< double > elbow 
    )
    +
    + +

    Creates a new CartesianVelocities instance.

    +
    Parameters
    + + + +
    [in]cartesian_velocitiesDesired Cartesian velocity with respect to the base frame O with \((\dot x, \dot y, \dot z)\) in \([m/s]\) and \((\omega_x, \omega_y, \omega_z)\) in \([rad/s]\).
    [in]elbowElbow configuration (see elbow member for more details).
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif a given initializer list has an invalid number of arguments.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ hasElbow()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool franka::CartesianVelocities::hasElbow () const
    +
    +noexcept
    +
    + +

    Determines whether there is a stored elbow configuration.

    +
    Returns
    True if there is a stored elbow configuration, false otherwise.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ elbow

    + +
    +
    + + + + +
    std::array<double, 2> franka::CartesianVelocities::elbow {}
    +
    + +

    Elbow configuration.

    +

    The values of the array are:

      +
    • elbow[0]: Position of the 3rd joint in \([rad]\).
    • +
    • elbow[1]: Flip direction of the elbow (4th joint):
        +
      • +1 if \(q_4 > \alpha\)
      • +
      • 0 if \(q_4 == \alpha \)
      • +
      • -1 if \(q_4 < \alpha \)
      • +
      +
    • +
    +

    with \(\alpha = -0.467002423653011\) \(rad\)

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1CartesianVelocities__coll__graph.map b/0.13.6/classfranka_1_1CartesianVelocities__coll__graph.map new file mode 100644 index 00000000..2a929887 --- /dev/null +++ b/0.13.6/classfranka_1_1CartesianVelocities__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1CartesianVelocities__coll__graph.md5 b/0.13.6/classfranka_1_1CartesianVelocities__coll__graph.md5 new file mode 100644 index 00000000..5ce9c197 --- /dev/null +++ b/0.13.6/classfranka_1_1CartesianVelocities__coll__graph.md5 @@ -0,0 +1 @@ +32bed61017a88b35679a2bc229a0ebf7 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1CartesianVelocities__coll__graph.png b/0.13.6/classfranka_1_1CartesianVelocities__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2c627a598f68b41bbe84419cbb8c922a41d7d884 GIT binary patch literal 4207 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 WjvC$3Hv~@*AO + + + diff --git a/0.13.6/classfranka_1_1CartesianVelocities__inherit__graph.md5 b/0.13.6/classfranka_1_1CartesianVelocities__inherit__graph.md5 new file mode 100644 index 00000000..5ce9c197 --- /dev/null +++ b/0.13.6/classfranka_1_1CartesianVelocities__inherit__graph.md5 @@ -0,0 +1 @@ +32bed61017a88b35679a2bc229a0ebf7 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1CartesianVelocities__inherit__graph.png b/0.13.6/classfranka_1_1CartesianVelocities__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2c627a598f68b41bbe84419cbb8c922a41d7d884 GIT binary patch literal 4207 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 WjvC$3Hv~@*AO + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::Duration Member List
    +
    +
    + +

    This is the complete list of members for franka::Duration, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Duration() noexceptfranka::Duration
    Duration(uint64_t milliseconds) noexceptfranka::Durationexplicit
    Duration(std::chrono::duration< uint64_t, std::milli > duration) noexceptfranka::Duration
    Duration(const Duration &)=defaultfranka::Duration
    operator std::chrono::duration< uint64_t, std::milli >() const noexceptfranka::Duration
    operator!=(const Duration &rhs) const noexceptfranka::Duration
    operator%(const Duration &rhs) const noexceptfranka::Duration
    operator%(uint64_t rhs) const noexceptfranka::Duration
    operator%=(const Duration &rhs) noexceptfranka::Duration
    operator%=(uint64_t rhs) noexceptfranka::Duration
    operator*(uint64_t rhs) const noexceptfranka::Duration
    operator*=(uint64_t rhs) noexceptfranka::Duration
    operator+(const Duration &rhs) const noexceptfranka::Duration
    operator+=(const Duration &rhs) noexceptfranka::Duration
    operator-(const Duration &rhs) const noexceptfranka::Duration
    operator-=(const Duration &rhs) noexceptfranka::Duration
    operator/(const Duration &rhs) const noexceptfranka::Duration
    operator/(uint64_t rhs) const noexceptfranka::Duration
    operator/=(uint64_t rhs) noexceptfranka::Duration
    operator<(const Duration &rhs) const noexceptfranka::Duration
    operator<=(const Duration &rhs) const noexceptfranka::Duration
    operator=(const Duration &)=defaultfranka::Duration
    operator==(const Duration &rhs) const noexceptfranka::Duration
    operator>(const Duration &rhs) const noexceptfranka::Duration
    operator>=(const Duration &rhs) const noexceptfranka::Duration
    toMSec() const noexceptfranka::Duration
    toSec() const noexceptfranka::Duration
    + + + + diff --git a/0.13.6/classfranka_1_1Duration.html b/0.13.6/classfranka_1_1Duration.html new file mode 100644 index 00000000..f7a2b806 --- /dev/null +++ b/0.13.6/classfranka_1_1Duration.html @@ -0,0 +1,1044 @@ + + + + + + + +libfranka: franka::Duration Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::Duration Class Reference
    +
    +
    + +

    Represents a duration with millisecond resolution. + More...

    + +

    #include <duration.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    Duration () noexcept
     Creates a new Duration instance with zero milliseconds.
     
     Duration (uint64_t milliseconds) noexcept
     Creates a new Duration instance from the given number of milliseconds. More...
     
     Duration (std::chrono::duration< uint64_t, std::milli > duration) noexcept
     Creates a new Duration instance from an std::chrono::duration. More...
     
    Duration (const Duration &)=default
     Creates a copy of a Duration instance.
     
    Durationoperator= (const Duration &)=default
     Assigns the contents of one Duration to another. More...
     
     operator std::chrono::duration< uint64_t, std::milli > () const noexcept
     Returns the stored duration as an std::chrono::duration. More...
     
    double toSec () const noexcept
     Returns the stored duration in \([s]\). More...
     
    uint64_t toMSec () const noexcept
     Returns the stored duration in \([ms]\). More...
     
    Arithmetic operators
    Duration operator+ (const Duration &rhs) const noexcept
     Performs addition. More...
     
    Durationoperator+= (const Duration &rhs) noexcept
     Performs addition. More...
     
    Duration operator- (const Duration &rhs) const noexcept
     Performs subtraction. More...
     
    Durationoperator-= (const Duration &rhs) noexcept
     Performs subtraction. More...
     
    Duration operator* (uint64_t rhs) const noexcept
     Performs multiplication. More...
     
    Durationoperator*= (uint64_t rhs) noexcept
     Performs multiplication. More...
     
    uint64_t operator/ (const Duration &rhs) const noexcept
     Performs division. More...
     
    Duration operator/ (uint64_t rhs) const noexcept
     Performs division. More...
     
    Durationoperator/= (uint64_t rhs) noexcept
     Performs division. More...
     
    Duration operator% (const Duration &rhs) const noexcept
     Performs the modulo operation. More...
     
    Duration operator% (uint64_t rhs) const noexcept
     Performs the modulo operation. More...
     
    Durationoperator%= (const Duration &rhs) noexcept
     Performs the modulo operation. More...
     
    Durationoperator%= (uint64_t rhs) noexcept
     Performs the modulo operation. More...
     
    Comparison operators
    bool operator== (const Duration &rhs) const noexcept
     Compares two durations for equality. More...
     
    bool operator!= (const Duration &rhs) const noexcept
     Compares two durations for inequality. More...
     
    bool operator< (const Duration &rhs) const noexcept
     Compares two durations. More...
     
    bool operator<= (const Duration &rhs) const noexcept
     Compares two durations. More...
     
    bool operator> (const Duration &rhs) const noexcept
     Compares two durations. More...
     
    bool operator>= (const Duration &rhs) const noexcept
     Compares two durations. More...
     
    +

    Detailed Description

    +

    Constructor & Destructor Documentation

    + +

    ◆ Duration() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Duration::Duration (uint64_t milliseconds)
    +
    +explicitnoexcept
    +
    + +

    Creates a new Duration instance from the given number of milliseconds.

    +
    Parameters
    + + +
    [in]millisecondsNumber of milliseconds.
    +
    +
    + +
    +
    + +

    ◆ Duration() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Duration::Duration (std::chrono::duration< uint64_t, std::milli > duration)
    +
    +noexcept
    +
    + +

    Creates a new Duration instance from an std::chrono::duration.

    +
    Parameters
    + + +
    [in]durationDuration.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator std::chrono::duration< uint64_t, std::milli >()

    + +
    +
    + + + + + +
    + + + + + + + +
    franka::Duration::operator std::chrono::duration< uint64_t, std::milli > () const
    +
    +noexcept
    +
    + +

    Returns the stored duration as an std::chrono::duration.

    +
    Returns
    Duration as std::chrono::duration.
    + +
    +
    + +

    ◆ operator!=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool franka::Duration::operator!= (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Compares two durations for inequality.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the comparison.
    +
    +
    +
    Returns
    True if the duration are not equal, false otherwise.
    + +
    +
    + +

    ◆ operator%() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration franka::Duration::operator% (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Performs the modulo operation.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    Result of the operation.
    + +
    +
    + +

    ◆ operator%() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration franka::Duration::operator% (uint64_t rhs) const
    +
    +noexcept
    +
    + +

    Performs the modulo operation.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    Result of the operation.
    + +
    +
    + +

    ◆ operator%=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration& franka::Duration::operator%= (const Durationrhs)
    +
    +noexcept
    +
    + +

    Performs the modulo operation.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    This duration.
    + +
    +
    + +

    ◆ operator%=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration& franka::Duration::operator%= (uint64_t rhs)
    +
    +noexcept
    +
    + +

    Performs the modulo operation.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    This duration.
    + +
    +
    + +

    ◆ operator*()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration franka::Duration::operator* (uint64_t rhs) const
    +
    +noexcept
    +
    + +

    Performs multiplication.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    Result of the operation.
    + +
    +
    + +

    ◆ operator*=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration& franka::Duration::operator*= (uint64_t rhs)
    +
    +noexcept
    +
    + +

    Performs multiplication.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    This duration.
    + +
    +
    + +

    ◆ operator+()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration franka::Duration::operator+ (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Performs addition.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    Result of the operation.
    + +
    +
    + +

    ◆ operator+=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration& franka::Duration::operator+= (const Durationrhs)
    +
    +noexcept
    +
    + +

    Performs addition.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    This duration.
    + +
    +
    + +

    ◆ operator-()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration franka::Duration::operator- (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Performs subtraction.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    Result of the operation.
    + +
    +
    + +

    ◆ operator-=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration& franka::Duration::operator-= (const Durationrhs)
    +
    +noexcept
    +
    + +

    Performs subtraction.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    This duration.
    + +
    +
    + +

    ◆ operator/() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    uint64_t franka::Duration::operator/ (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Performs division.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    Result of the operation.
    + +
    +
    + +

    ◆ operator/() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration franka::Duration::operator/ (uint64_t rhs) const
    +
    +noexcept
    +
    + +

    Performs division.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    Result of the operation.
    + +
    +
    + +

    ◆ operator/=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration& franka::Duration::operator/= (uint64_t rhs)
    +
    +noexcept
    +
    + +

    Performs division.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the operation.
    +
    +
    +
    Returns
    This duration.
    + +
    +
    + +

    ◆ operator<()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool franka::Duration::operator< (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Compares two durations.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the comparison.
    +
    +
    +
    Returns
    True if this duration is shorter than rhs, false otherwise.
    + +
    +
    + +

    ◆ operator<=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool franka::Duration::operator<= (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Compares two durations.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the comparison.
    +
    +
    +
    Returns
    True if this duration is shorter than or equal to rhs, false otherwise.
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Duration& franka::Duration::operator= (const Duration)
    +
    +default
    +
    + +

    Assigns the contents of one Duration to another.

    +
    Returns
    Result of the operation.
    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool franka::Duration::operator== (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Compares two durations for equality.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the comparison.
    +
    +
    +
    Returns
    True if the duration are equal, false otherwise.
    + +
    +
    + +

    ◆ operator>()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool franka::Duration::operator> (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Compares two durations.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the comparison.
    +
    +
    +
    Returns
    True if this duration is longer than rhs, false otherwise.
    + +
    +
    + +

    ◆ operator>=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool franka::Duration::operator>= (const Durationrhs) const
    +
    +noexcept
    +
    + +

    Compares two durations.

    +
    Parameters
    + + +
    [in]rhsRight-hand side of the comparison.
    +
    +
    +
    Returns
    True if this duration is longer than or equal to rhs, false otherwise.
    + +
    +
    + +

    ◆ toMSec()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint64_t franka::Duration::toMSec () const
    +
    +noexcept
    +
    + +

    Returns the stored duration in \([ms]\).

    +
    Returns
    Duration in \([ms]\).
    +
    Examples
    communication_test.cpp.
    +
    + +
    +
    + +

    ◆ toSec()

    + +
    +
    + + + + + +
    + + + + + + + +
    double franka::Duration::toSec () const
    +
    +noexcept
    +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1Gripper-members.html b/0.13.6/classfranka_1_1Gripper-members.html new file mode 100644 index 00000000..15d8c345 --- /dev/null +++ b/0.13.6/classfranka_1_1Gripper-members.html @@ -0,0 +1,102 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::Gripper Member List
    +
    +
    + +

    This is the complete list of members for franka::Gripper, including all inherited members.

    + + + + + + + + + + + + +
    grasp(double width, double speed, double force, double epsilon_inner=0.005, double epsilon_outer=0.005) constfranka::Gripper
    Gripper(const std::string &franka_address)franka::Gripperexplicit
    Gripper(Gripper &&gripper) noexceptfranka::Gripper
    homing() constfranka::Gripper
    move(double width, double speed) constfranka::Gripper
    operator=(Gripper &&gripper) noexceptfranka::Gripper
    readOnce() constfranka::Gripper
    ServerVersion typedeffranka::Gripper
    serverVersion() const noexceptfranka::Gripper
    stop() constfranka::Gripper
    ~Gripper() noexceptfranka::Gripper
    + + + + diff --git a/0.13.6/classfranka_1_1Gripper.html b/0.13.6/classfranka_1_1Gripper.html new file mode 100644 index 00000000..16f1df6f --- /dev/null +++ b/0.13.6/classfranka_1_1Gripper.html @@ -0,0 +1,490 @@ + + + + + + + +libfranka: franka::Gripper Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::Gripper Class Reference
    +
    +
    + +

    Maintains a network connection to the gripper, provides the current gripper state, and allows the execution of commands. + More...

    + +

    #include <gripper.h>

    + + + + + +

    +Public Types

    +using ServerVersion = uint16_t
     Version of the gripper server.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Gripper (const std::string &franka_address)
     Establishes a connection with a gripper connected to a robot. More...
     
     Gripper (Gripper &&gripper) noexcept
     Move-constructs a new Gripper instance. More...
     
    Gripperoperator= (Gripper &&gripper) noexcept
     Move-assigns this Gripper from another Gripper instance. More...
     
    ~Gripper () noexcept
     Closes the connection.
     
    bool homing () const
     Performs homing of the gripper. More...
     
    bool grasp (double width, double speed, double force, double epsilon_inner=0.005, double epsilon_outer=0.005) const
     Grasps an object. More...
     
    bool move (double width, double speed) const
     Moves the gripper fingers to a specified width. More...
     
    bool stop () const
     Stops a currently running gripper move or grasp. More...
     
    GripperState readOnce () const
     Waits for a gripper state update and returns it. More...
     
    ServerVersion serverVersion () const noexcept
     Returns the software version reported by the connected server. More...
     
    +

    Detailed Description

    +

    Maintains a network connection to the gripper, provides the current gripper state, and allows the execution of commands.

    +
    Note
    The members of this class are threadsafe.
    +
    Examples
    grasp_object.cpp.
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Gripper() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Gripper::Gripper (const std::string & franka_address)
    +
    +explicit
    +
    + +

    Establishes a connection with a gripper connected to a robot.

    +
    Parameters
    + + +
    [in]franka_addressIP/hostname of the robot the gripper is connected to.
    +
    +
    +
    Exceptions
    + + + +
    NetworkExceptionif the connection is unsuccessful.
    IncompatibleVersionExceptionif this version of libfranka is not supported.
    +
    +
    + +
    +
    + +

    ◆ Gripper() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Gripper::Gripper (Gripper && gripper)
    +
    +noexcept
    +
    + +

    Move-constructs a new Gripper instance.

    +
    Parameters
    + + +
    [in]gripperOther Gripper instance.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ grasp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool franka::Gripper::grasp (double width,
    double speed,
    double force,
    double epsilon_inner = 0.005,
    double epsilon_outer = 0.005 
    ) const
    +
    + +

    Grasps an object.

    +

    An object is considered grasped if the distance \(d\) between the gripper fingers satisfies \((\text{width} - \text{epsilon_inner}) < d < (\text{width} + \text{epsilon_outer})\).

    +
    Parameters
    + + + + + + +
    [in]widthSize of the object to grasp in \([m]\).
    [in]speedClosing speed in \([\frac{m}{s}]\).
    [in]forceGrasping force in \([N]\).
    [in]epsilon_innerMaximum tolerated deviation when the actual grasped width is smaller than the commanded grasp width.
    [in]epsilon_outerMaximum tolerated deviation when the actual grasped width is larger than the commanded grasp width.
    +
    +
    +
    Returns
    True if an object has been grasped, false otherwise.
    +
    Exceptions
    + + + +
    CommandExceptionif an error occurred.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    grasp_object.cpp.
    +
    + +
    +
    + +

    ◆ homing()

    + +
    +
    + + + + + + + +
    bool franka::Gripper::homing () const
    +
    + +

    Performs homing of the gripper.

    +

    After changing the gripper fingers, a homing needs to be done. This is needed to estimate the maximum grasping width.

    +
    Returns
    True if command was successful, false otherwise.
    +
    Exceptions
    + + + +
    CommandExceptionif an error occurred.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    See also
    GripperState for the maximum grasping width.
    +
    Examples
    grasp_object.cpp.
    +
    + +
    +
    + +

    ◆ move()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool franka::Gripper::move (double width,
    double speed 
    ) const
    +
    + +

    Moves the gripper fingers to a specified width.

    +
    Parameters
    + + + +
    [in]widthIntended opening width in \([m]\).
    [in]speedClosing speed in \([\frac{m}{s}]\).
    +
    +
    +
    Returns
    True if command was successful, false otherwise.
    +
    Exceptions
    + + + +
    CommandExceptionif an error occurred.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Gripper& franka::Gripper::operator= (Gripper && gripper)
    +
    +noexcept
    +
    + +

    Move-assigns this Gripper from another Gripper instance.

    +
    Parameters
    + + +
    [in]gripperOther Gripper instance.
    +
    +
    +
    Returns
    Model instance.
    + +
    +
    + +

    ◆ readOnce()

    + +
    +
    + + + + + + + +
    GripperState franka::Gripper::readOnce () const
    +
    + +

    Waits for a gripper state update and returns it.

    +
    Returns
    Current gripper state.
    +
    Exceptions
    + + + +
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    InvalidOperationExceptionif another readOnce is already running.
    +
    +
    +
    Examples
    grasp_object.cpp.
    +
    + +
    +
    + +

    ◆ serverVersion()

    + +
    +
    + + + + + +
    + + + + + + + +
    ServerVersion franka::Gripper::serverVersion () const
    +
    +noexcept
    +
    + +

    Returns the software version reported by the connected server.

    +
    Returns
    Software version of the connected server.
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + + + +
    bool franka::Gripper::stop () const
    +
    + +

    Stops a currently running gripper move or grasp.

    +
    Returns
    True if command was successful, false otherwise.
    +
    Exceptions
    + + + +
    CommandExceptionif an error occurred.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    grasp_object.cpp.
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1JointPositions-members.html b/0.13.6/classfranka_1_1JointPositions-members.html new file mode 100644 index 00000000..d3141779 --- /dev/null +++ b/0.13.6/classfranka_1_1JointPositions-members.html @@ -0,0 +1,95 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::JointPositions Member List
    +
    +
    + +

    This is the complete list of members for franka::JointPositions, including all inherited members.

    + + + + + +
    JointPositions(const std::array< double, 7 > &joint_positions) noexceptfranka::JointPositions
    JointPositions(std::initializer_list< double > joint_positions)franka::JointPositions
    motion_finishedfranka::Finishable
    qfranka::JointPositions
    + + + + diff --git a/0.13.6/classfranka_1_1JointPositions.html b/0.13.6/classfranka_1_1JointPositions.html new file mode 100644 index 00000000..86b5737e --- /dev/null +++ b/0.13.6/classfranka_1_1JointPositions.html @@ -0,0 +1,211 @@ + + + + + + + +libfranka: franka::JointPositions Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::JointPositions Class Reference
    +
    +
    + +

    Stores values for joint position motion generation. + More...

    + +

    #include <control_types.h>

    +
    +Inheritance diagram for franka::JointPositions:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for franka::JointPositions:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + +

    +Public Member Functions

     JointPositions (const std::array< double, 7 > &joint_positions) noexcept
     Creates a new JointPositions instance. More...
     
     JointPositions (std::initializer_list< double > joint_positions)
     Creates a new JointPositions instance. More...
     
    + + + + + + + + +

    +Public Attributes

    +std::array< double, 7 > q {}
     Desired joint angles in [rad].
     
    - Public Attributes inherited from franka::Finishable
    +bool motion_finished = false
     Determines whether to finish a currently running motion.
     
    +

    Detailed Description

    +

    Stores values for joint position motion generation.

    +
    Examples
    generate_joint_position_motion.cpp, and generate_joint_position_motion_external_control_loop.cpp.
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ JointPositions() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::JointPositions::JointPositions (const std::array< double, 7 > & joint_positions)
    +
    +noexcept
    +
    + +

    Creates a new JointPositions instance.

    +
    Parameters
    + + +
    [in]joint_positionsDesired joint angles in \([rad]\).
    +
    +
    + +
    +
    + +

    ◆ JointPositions() [2/2]

    + +
    +
    + + + + + + + + +
    franka::JointPositions::JointPositions (std::initializer_list< double > joint_positions)
    +
    + +

    Creates a new JointPositions instance.

    +
    Parameters
    + + +
    [in]joint_positionsDesired joint angles in \([rad]\).
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif the given initializer list has an invalid number of arguments.
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1JointPositions__coll__graph.map b/0.13.6/classfranka_1_1JointPositions__coll__graph.map new file mode 100644 index 00000000..262848ce --- /dev/null +++ b/0.13.6/classfranka_1_1JointPositions__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1JointPositions__coll__graph.md5 b/0.13.6/classfranka_1_1JointPositions__coll__graph.md5 new file mode 100644 index 00000000..9cca88b9 --- /dev/null +++ b/0.13.6/classfranka_1_1JointPositions__coll__graph.md5 @@ -0,0 +1 @@ +c5f3272f047935d0f40484fdb8d71742 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1JointPositions__coll__graph.png b/0.13.6/classfranka_1_1JointPositions__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..081de5b8d4789cf8f7b22d3dfca85d39076ec2ae GIT binary patch literal 3250 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 literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1JointPositions__inherit__graph.map b/0.13.6/classfranka_1_1JointPositions__inherit__graph.map new file mode 100644 index 00000000..262848ce --- /dev/null +++ b/0.13.6/classfranka_1_1JointPositions__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1JointPositions__inherit__graph.md5 b/0.13.6/classfranka_1_1JointPositions__inherit__graph.md5 new file mode 100644 index 00000000..9cca88b9 --- /dev/null +++ b/0.13.6/classfranka_1_1JointPositions__inherit__graph.md5 @@ -0,0 +1 @@ +c5f3272f047935d0f40484fdb8d71742 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1JointPositions__inherit__graph.png b/0.13.6/classfranka_1_1JointPositions__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..081de5b8d4789cf8f7b22d3dfca85d39076ec2ae GIT binary patch literal 3250 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 literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1JointVelocities-members.html b/0.13.6/classfranka_1_1JointVelocities-members.html new file mode 100644 index 00000000..1365e1dc --- /dev/null +++ b/0.13.6/classfranka_1_1JointVelocities-members.html @@ -0,0 +1,95 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::JointVelocities Member List
    +
    +
    + +

    This is the complete list of members for franka::JointVelocities, including all inherited members.

    + + + + + +
    dqfranka::JointVelocities
    JointVelocities(const std::array< double, 7 > &joint_velocities) noexceptfranka::JointVelocities
    JointVelocities(std::initializer_list< double > joint_velocities)franka::JointVelocities
    motion_finishedfranka::Finishable
    + + + + diff --git a/0.13.6/classfranka_1_1JointVelocities.html b/0.13.6/classfranka_1_1JointVelocities.html new file mode 100644 index 00000000..384419c0 --- /dev/null +++ b/0.13.6/classfranka_1_1JointVelocities.html @@ -0,0 +1,211 @@ + + + + + + + +libfranka: franka::JointVelocities Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::JointVelocities Class Reference
    +
    +
    + +

    Stores values for joint velocity motion generation. + More...

    + +

    #include <control_types.h>

    +
    +Inheritance diagram for franka::JointVelocities:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for franka::JointVelocities:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + +

    +Public Member Functions

     JointVelocities (const std::array< double, 7 > &joint_velocities) noexcept
     Creates a new JointVelocities instance. More...
     
     JointVelocities (std::initializer_list< double > joint_velocities)
     Creates a new JointVelocities instance. More...
     
    + + + + + + + + +

    +Public Attributes

    +std::array< double, 7 > dq {}
     Desired joint velocities in \([\frac{rad}{s}]\).
     
    - Public Attributes inherited from franka::Finishable
    +bool motion_finished = false
     Determines whether to finish a currently running motion.
     
    +

    Detailed Description

    +

    Constructor & Destructor Documentation

    + +

    ◆ JointVelocities() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::JointVelocities::JointVelocities (const std::array< double, 7 > & joint_velocities)
    +
    +noexcept
    +
    + +

    Creates a new JointVelocities instance.

    +
    Parameters
    + + +
    [in]joint_velocitiesDesired joint velocities in \([\frac{rad}{s}]\).
    +
    +
    + +
    +
    + +

    ◆ JointVelocities() [2/2]

    + +
    +
    + + + + + + + + +
    franka::JointVelocities::JointVelocities (std::initializer_list< double > joint_velocities)
    +
    + +

    Creates a new JointVelocities instance.

    +
    Parameters
    + + +
    [in]joint_velocitiesDesired joint velocities in \([\frac{rad}{s}]\).
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif the given initializer list has an invalid number of arguments.
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1JointVelocities__coll__graph.map b/0.13.6/classfranka_1_1JointVelocities__coll__graph.map new file mode 100644 index 00000000..a8a2195a --- /dev/null +++ b/0.13.6/classfranka_1_1JointVelocities__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1JointVelocities__coll__graph.md5 b/0.13.6/classfranka_1_1JointVelocities__coll__graph.md5 new file mode 100644 index 00000000..dad6b14e --- /dev/null +++ b/0.13.6/classfranka_1_1JointVelocities__coll__graph.md5 @@ -0,0 +1 @@ +94bb303f7a32ad60e8c00cad1f7d60a0 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1JointVelocities__coll__graph.png b/0.13.6/classfranka_1_1JointVelocities__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bab0183f61b013cd73016c218cbcee2b5ef371 GIT binary patch literal 3608 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 E0b}~~9{>OV literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1JointVelocities__inherit__graph.map b/0.13.6/classfranka_1_1JointVelocities__inherit__graph.map new file mode 100644 index 00000000..a8a2195a --- /dev/null +++ b/0.13.6/classfranka_1_1JointVelocities__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1JointVelocities__inherit__graph.md5 b/0.13.6/classfranka_1_1JointVelocities__inherit__graph.md5 new file mode 100644 index 00000000..dad6b14e --- /dev/null +++ b/0.13.6/classfranka_1_1JointVelocities__inherit__graph.md5 @@ -0,0 +1 @@ +94bb303f7a32ad60e8c00cad1f7d60a0 \ No newline at end of file diff --git a/0.13.6/classfranka_1_1JointVelocities__inherit__graph.png b/0.13.6/classfranka_1_1JointVelocities__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bab0183f61b013cd73016c218cbcee2b5ef371 GIT binary patch literal 3608 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 E0b}~~9{>OV literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1Model-members.html b/0.13.6/classfranka_1_1Model-members.html new file mode 100644 index 00000000..ce308598 --- /dev/null +++ b/0.13.6/classfranka_1_1Model-members.html @@ -0,0 +1,108 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::Model Member List
    +
    +
    + +

    This is the complete list of members for franka::Model, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    bodyJacobian(Frame frame, const franka::RobotState &robot_state) constfranka::Model
    bodyJacobian(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) constfranka::Model
    coriolis(const franka::RobotState &robot_state) const noexceptfranka::Model
    coriolis(const std::array< double, 7 > &q, const std::array< double, 7 > &dq, const std::array< double, 9 > &I_total, double m_total, const std::array< double, 3 > &F_x_Ctotal) const noexceptfranka::Model
    gravity(const std::array< double, 7 > &q, double m_total, const std::array< double, 3 > &F_x_Ctotal, const std::array< double, 3 > &gravity_earth={{0., 0., -9.81}}) const noexceptfranka::Model
    gravity(const franka::RobotState &robot_state, const std::array< double, 3 > &gravity_earth) const noexceptfranka::Model
    gravity(const franka::RobotState &robot_state) const noexceptfranka::Model
    mass(const franka::RobotState &robot_state) const noexceptfranka::Model
    mass(const std::array< double, 7 > &q, const std::array< double, 9 > &I_total, double m_total, const std::array< double, 3 > &F_x_Ctotal) const noexceptfranka::Model
    Model(franka::Network &network)franka::Modelexplicit
    Model(Model &&model) noexceptfranka::Model
    operator=(Model &&model) noexceptfranka::Model
    pose(Frame frame, const franka::RobotState &robot_state) constfranka::Model
    pose(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) constfranka::Model
    zeroJacobian(Frame frame, const franka::RobotState &robot_state) constfranka::Model
    zeroJacobian(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) constfranka::Model
    ~Model() noexceptfranka::Model
    + + + + diff --git a/0.13.6/classfranka_1_1Model.html b/0.13.6/classfranka_1_1Model.html new file mode 100644 index 00000000..2aa25e89 --- /dev/null +++ b/0.13.6/classfranka_1_1Model.html @@ -0,0 +1,897 @@ + + + + + + + +libfranka: franka::Model Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::Model Class Reference
    +
    +
    + +

    Calculates poses of joints and dynamic properties of the robot. + More...

    + +

    #include <model.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Model (franka::Network &network)
     Creates a new Model instance. More...
     
     Model (Model &&model) noexcept
     Move-constructs a new Model instance. More...
     
    Modeloperator= (Model &&model) noexcept
     Move-assigns this Model from another Model instance. More...
     
    ~Model () noexcept
     Unloads the model library.
     
    std::array< double, 16 > pose (Frame frame, const franka::RobotState &robot_state) const
     Gets the 4x4 pose matrix for the given frame in base frame. More...
     
    std::array< double, 16 > pose (Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const
     Gets the 4x4 pose matrix for the given frame in base frame. More...
     
    std::array< double, 42 > bodyJacobian (Frame frame, const franka::RobotState &robot_state) const
     Gets the 6x7 Jacobian for the given frame, relative to that frame. More...
     
    std::array< double, 42 > bodyJacobian (Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const
     Gets the 6x7 Jacobian for the given frame, relative to that frame. More...
     
    std::array< double, 42 > zeroJacobian (Frame frame, const franka::RobotState &robot_state) const
     Gets the 6x7 Jacobian for the given joint relative to the base frame. More...
     
    std::array< double, 42 > zeroJacobian (Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const
     Gets the 6x7 Jacobian for the given joint relative to the base frame. More...
     
    std::array< double, 49 > mass (const franka::RobotState &robot_state) const noexcept
     Calculates the 7x7 mass matrix. More...
     
    std::array< double, 49 > mass (const std::array< double, 7 > &q, const std::array< double, 9 > &I_total, double m_total, const std::array< double, 3 > &F_x_Ctotal) const noexcept
     Calculates the 7x7 mass matrix. More...
     
    std::array< double, 7 > coriolis (const franka::RobotState &robot_state) const noexcept
     Calculates the Coriolis force vector (state-space equation): \( c= C \times dq\), in \([Nm]\). More...
     
    std::array< double, 7 > coriolis (const std::array< double, 7 > &q, const std::array< double, 7 > &dq, const std::array< double, 9 > &I_total, double m_total, const std::array< double, 3 > &F_x_Ctotal) const noexcept
     Calculates the Coriolis force vector (state-space equation): \( c= C \times dq\), in \([Nm]\). More...
     
    std::array< double, 7 > gravity (const std::array< double, 7 > &q, double m_total, const std::array< double, 3 > &F_x_Ctotal, const std::array< double, 3 > &gravity_earth={{0., 0., -9.81}}) const noexcept
     Calculates the gravity vector. More...
     
    std::array< double, 7 > gravity (const franka::RobotState &robot_state, const std::array< double, 3 > &gravity_earth) const noexcept
     Calculates the gravity vector. More...
     
    std::array< double, 7 > gravity (const franka::RobotState &robot_state) const noexcept
     Calculates the gravity vector using the robot state. More...
     
    +

    Detailed Description

    +

    Calculates poses of joints and dynamic properties of the robot.

    +
    Examples
    cartesian_impedance_control.cpp, force_control.cpp, joint_impedance_control.cpp, and print_joint_poses.cpp.
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Model() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Model::Model (franka::Network & network)
    +
    +explicit
    +
    + +

    Creates a new Model instance.

    +

    This constructor is for internal use only.

    +
    See also
    Robot::loadModel
    +
    Parameters
    + + +
    [in]networkFor internal use.
    +
    +
    +
    Exceptions
    + + +
    ModelExceptionif the model library cannot be loaded.
    +
    +
    + +
    +
    + +

    ◆ Model() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Model::Model (Model && model)
    +
    +noexcept
    +
    + +

    Move-constructs a new Model instance.

    +
    Parameters
    + + +
    [in]modelOther Model instance.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ bodyJacobian() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::array<double, 42> franka::Model::bodyJacobian (Frame frame,
    const franka::RobotStaterobot_state 
    ) const
    +
    + +

    Gets the 6x7 Jacobian for the given frame, relative to that frame.

    +

    The Jacobian is represented as a 6x7 matrix in column-major format.

    +
    Parameters
    + + + +
    [in]frameThe desired frame.
    [in]robot_stateState from which the pose should be calculated.
    +
    +
    +
    Returns
    Vectorized 6x7 Jacobian, column-major.
    + +
    +
    + +

    ◆ bodyJacobian() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 42> franka::Model::bodyJacobian (Frame frame,
    const std::array< double, 7 > & q,
    const std::array< double, 16 > & F_T_EE,
    const std::array< double, 16 > & EE_T_K 
    ) const
    +
    + +

    Gets the 6x7 Jacobian for the given frame, relative to that frame.

    +

    The Jacobian is represented as a 6x7 matrix in column-major format.

    +
    Parameters
    + + + + + +
    [in]frameThe desired frame.
    [in]qJoint position.
    [in]F_T_EEEnd effector in flange frame.
    [in]EE_T_KStiffness frame K in the end effector frame.
    +
    +
    +
    Returns
    Vectorized 6x7 Jacobian, column-major.
    + +
    +
    + +

    ◆ coriolis() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::array<double, 7> franka::Model::coriolis (const franka::RobotStaterobot_state) const
    +
    +noexcept
    +
    + +

    Calculates the Coriolis force vector (state-space equation): \( c= C \times dq\), in \([Nm]\).

    +
    Parameters
    + + +
    [in]robot_stateState from which the Coriolis force vector should be calculated.
    +
    +
    +
    Returns
    Coriolis force vector.
    +
    Examples
    cartesian_impedance_control.cpp.
    +
    + +
    +
    + +

    ◆ coriolis() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 7> franka::Model::coriolis (const std::array< double, 7 > & q,
    const std::array< double, 7 > & dq,
    const std::array< double, 9 > & I_total,
    double m_total,
    const std::array< double, 3 > & F_x_Ctotal 
    ) const
    +
    +noexcept
    +
    + +

    Calculates the Coriolis force vector (state-space equation): \( c= C \times dq\), in \([Nm]\).

    +
    Parameters
    + + + + + + +
    [in]qJoint position.
    [in]dqJoint velocity.
    [in]I_totalInertia of the attached total load including end effector, relative to center of mass, given as vectorized 3x3 column-major matrix. Unit: \([kg \times m^2]\).
    [in]m_totalWeight of the attached total load including end effector. Unit: \([kg]\).
    [in]F_x_CtotalTranslation from flange to center of mass of the attached total load. Unit: \([m]\).
    +
    +
    +
    Returns
    Coriolis force vector.
    + +
    +
    + +

    ◆ gravity() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::array<double, 7> franka::Model::gravity (const franka::RobotStaterobot_state) const
    +
    +noexcept
    +
    + +

    Calculates the gravity vector using the robot state.

    +

    Unit: \([Nm]\).

    +
    Parameters
    + + +
    [in]robot_stateState from which the gravity vector should be calculated.
    +
    +
    +
    Returns
    Gravity vector.
    + +
    +
    + +

    ◆ gravity() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::array<double, 7> franka::Model::gravity (const franka::RobotStaterobot_state,
    const std::array< double, 3 > & gravity_earth 
    ) const
    +
    +noexcept
    +
    + +

    Calculates the gravity vector.

    +

    Unit: \([Nm]\).

    +
    Parameters
    + + + +
    [in]robot_stateState from which the gravity vector should be calculated.
    [in]gravity_earthEarth's gravity vector. Unit: \(\frac{m}{s^2}\).
    +
    +
    +
    Returns
    Gravity vector.
    + +
    +
    + +

    ◆ gravity() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 7> franka::Model::gravity (const std::array< double, 7 > & q,
    double m_total,
    const std::array< double, 3 > & F_x_Ctotal,
    const std::array< double, 3 > & gravity_earth = {{0., 0., -9.81}} 
    ) const
    +
    +noexcept
    +
    + +

    Calculates the gravity vector.

    +

    Unit: \([Nm]\).

    +
    Parameters
    + + + + + +
    [in]qJoint position.
    [in]m_totalWeight of the attached total load including end effector. Unit: \([kg]\).
    [in]F_x_CtotalTranslation from flange to center of mass of the attached total load. Unit: \([m]\).
    [in]gravity_earthEarth's gravity vector. Unit: \(\frac{m}{s^2}\). Default to {0.0, 0.0, -9.81}.
    +
    +
    +
    Returns
    Gravity vector.
    +
    Examples
    force_control.cpp.
    +
    + +
    +
    + +

    ◆ mass() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::array<double, 49> franka::Model::mass (const franka::RobotStaterobot_state) const
    +
    +noexcept
    +
    + +

    Calculates the 7x7 mass matrix.

    +

    Unit: \([kg \times m^2]\).

    +
    Parameters
    + + +
    [in]robot_stateState from which the mass matrix should be calculated.
    +
    +
    +
    Returns
    Vectorized 7x7 mass matrix, column-major.
    + +
    +
    + +

    ◆ mass() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 49> franka::Model::mass (const std::array< double, 7 > & q,
    const std::array< double, 9 > & I_total,
    double m_total,
    const std::array< double, 3 > & F_x_Ctotal 
    ) const
    +
    +noexcept
    +
    + +

    Calculates the 7x7 mass matrix.

    +

    Unit: \([kg \times m^2]\).

    +
    Parameters
    + + + + + +
    [in]qJoint position.
    [in]I_totalInertia of the attached total load including end effector, relative to center of mass, given as vectorized 3x3 column-major matrix. Unit: \([kg \times m^2]\).
    [in]m_totalWeight of the attached total load including end effector. Unit: \([kg]\).
    [in]F_x_CtotalTranslation from flange to center of mass of the attached total load. Unit: \([m]\).
    +
    +
    +
    Returns
    Vectorized 7x7 mass matrix, column-major.
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Model& franka::Model::operator= (Model && model)
    +
    +noexcept
    +
    + +

    Move-assigns this Model from another Model instance.

    +
    Parameters
    + + +
    [in]modelOther Model instance.
    +
    +
    +
    Returns
    Model instance.
    + +
    +
    + +

    ◆ pose() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::array<double, 16> franka::Model::pose (Frame frame,
    const franka::RobotStaterobot_state 
    ) const
    +
    + +

    Gets the 4x4 pose matrix for the given frame in base frame.

    +

    The pose is represented as a 4x4 matrix in column-major format.

    +
    Parameters
    + + + +
    [in]frameThe desired frame.
    [in]robot_stateState from which the pose should be calculated.
    +
    +
    +
    Returns
    Vectorized 4x4 pose matrix, column-major.
    + +
    +
    + +

    ◆ pose() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 16> franka::Model::pose (Frame frame,
    const std::array< double, 7 > & q,
    const std::array< double, 16 > & F_T_EE,
    const std::array< double, 16 > & EE_T_K 
    ) const
    +
    + +

    Gets the 4x4 pose matrix for the given frame in base frame.

    +

    The pose is represented as a 4x4 matrix in column-major format.

    +
    Parameters
    + + + + + +
    [in]frameThe desired frame.
    [in]qJoint position.
    [in]F_T_EEEnd effector in flange frame.
    [in]EE_T_KStiffness frame K in the end effector frame.
    +
    +
    +
    Returns
    Vectorized 4x4 pose matrix, column-major.
    + +
    +
    + +

    ◆ zeroJacobian() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::array<double, 42> franka::Model::zeroJacobian (Frame frame,
    const franka::RobotStaterobot_state 
    ) const
    +
    + +

    Gets the 6x7 Jacobian for the given joint relative to the base frame.

    +

    The Jacobian is represented as a 6x7 matrix in column-major format.

    +
    Parameters
    + + + +
    [in]frameThe desired frame.
    [in]robot_stateState from which the pose should be calculated.
    +
    +
    +
    Returns
    Vectorized 6x7 Jacobian, column-major.
    +
    Examples
    cartesian_impedance_control.cpp, and force_control.cpp.
    +
    + +
    +
    + +

    ◆ zeroJacobian() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 42> franka::Model::zeroJacobian (Frame frame,
    const std::array< double, 7 > & q,
    const std::array< double, 16 > & F_T_EE,
    const std::array< double, 16 > & EE_T_K 
    ) const
    +
    + +

    Gets the 6x7 Jacobian for the given joint relative to the base frame.

    +

    The Jacobian is represented as a 6x7 matrix in column-major format.

    +
    Parameters
    + + + + + +
    [in]frameThe desired frame.
    [in]qJoint position.
    [in]F_T_EEEnd effector in flange frame.
    [in]EE_T_KStiffness frame K in the end effector frame.
    +
    +
    +
    Returns
    Vectorized 6x7 Jacobian, column-major.
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1Robot-members.html b/0.13.6/classfranka_1_1Robot-members.html new file mode 100644 index 00000000..42f0a4e0 --- /dev/null +++ b/0.13.6/classfranka_1_1Robot-members.html @@ -0,0 +1,126 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::Robot Member List
    +
    +
    + +

    This is the complete list of members for franka::Robot, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    automaticErrorRecovery()franka::Robot
    control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    control(std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    control(std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    control(std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    control(std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)franka::Robot
    loadModel()franka::Robot
    operator=(Robot &&other) noexceptfranka::Robot
    read(std::function< bool(const RobotState &)> read_callback)franka::Robot
    readOnce()franka::Robotvirtual
    Robot(const std::string &franka_address, RealtimeConfig realtime_config=RealtimeConfig::kEnforce, size_t log_size=50)franka::Robotexplicit
    Robot(Robot &&other) noexceptfranka::Robot
    Robot(std::shared_ptr< Impl > robot_impl)franka::Robotprotected
    Robot()=defaultfranka::Robotprotected
    serverVersion() const noexceptfranka::Robot
    ServerVersion typedeffranka::Robot
    setCartesianImpedance(const std::array< double, 6 > &K_x)franka::Robot
    setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)franka::Robot
    setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds, const std::array< double, 7 > &upper_torque_thresholds, const std::array< double, 6 > &lower_force_thresholds, const std::array< double, 6 > &upper_force_thresholds)franka::Robot
    setEE(const std::array< double, 16 > &NE_T_EE)franka::Robot
    setGuidingMode(const std::array< bool, 6 > &guiding_mode, bool elbow)franka::Robot
    setJointImpedance(const std::array< double, 7 > &K_theta)franka::Robot
    setK(const std::array< double, 16 > &EE_T_K)franka::Robot
    setLoad(double load_mass, const std::array< double, 3 > &F_x_Cload, const std::array< double, 9 > &load_inertia)franka::Robot
    startCartesianPoseControl(const research_interface::robot::Move::ControllerMode &control_type)franka::Robotvirtual
    startCartesianVelocityControl(const research_interface::robot::Move::ControllerMode &control_type)franka::Robotvirtual
    startJointPositionControl(const research_interface::robot::Move::ControllerMode &control_type)franka::Robotvirtual
    startJointVelocityControl(const research_interface::robot::Move::ControllerMode &control_type)franka::Robotvirtual
    startTorqueControl()franka::Robotvirtual
    stop()franka::Robot
    ~Robot() noexceptfranka::Robotvirtual
    + + + + diff --git a/0.13.6/classfranka_1_1Robot.html b/0.13.6/classfranka_1_1Robot.html new file mode 100644 index 00000000..cac932f3 --- /dev/null +++ b/0.13.6/classfranka_1_1Robot.html @@ -0,0 +1,1815 @@ + + + + + + + +libfranka: franka::Robot Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    + +
    + +

    Maintains a network connection to the robot, provides the current robot state, gives access to the model library and allows to control the robot. + More...

    + +

    #include <robot.h>

    + + + + + +

    +Public Types

    +using ServerVersion = uint16_t
     Version of the robot server.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Robot (const std::string &franka_address, RealtimeConfig realtime_config=RealtimeConfig::kEnforce, size_t log_size=50)
     Establishes a connection with the robot. More...
     
     Robot (Robot &&other) noexcept
     Move-constructs a new Robot instance. More...
     
    Robotoperator= (Robot &&other) noexcept
     Move-assigns this Robot from another Robot instance. More...
     
    +virtual ~Robot () noexcept
     Closes the connection.
     
    void read (std::function< bool(const RobotState &)> read_callback)
     Starts a loop for reading the current robot state. More...
     
    virtual RobotState readOnce ()
     Waits for a robot state update and returns it. More...
     
    Model loadModel ()
     Loads the model library from the robot. More...
     
    ServerVersion serverVersion () const noexcept
     Returns the software version reported by the connected server. More...
     
    Motion generation and joint-level torque commands

    The following methods allow to perform motion generation and/or send joint-level torque commands without gravity and friction by providing callback functions.

    +

    Only one of these methods can be active at the same time; a franka::ControlException is thrown otherwise.

    +

    When a robot state is received, the callback function is used to calculate the response: the desired values for that time step. After sending back the response, the callback function will be called again with the most recently received robot state. Since the robot is controlled with a 1 kHz frequency, the callback functions have to compute their result in a short time frame in order to be accepted. Callback functions take two parameters:

    +
      +
    • A franka::RobotState showing the current robot state.
    • +
    • A franka::Duration to indicate the time since the last callback invocation. Thus, the duration is zero on the first invocation of the callback function!
    • +
    +

    The following incomplete example shows the general structure of a callback function:

    +
    double time = 0.0;
    +
    auto control_callback = [&time](const franka::RobotState& robot_state,
    + +
    time += time_step.toSec(); // Update time at the beginning of the callback.
    +
    +
    franka::JointPositions output = getJointPositions(time);
    +
    +
    if (time >= max_time) {
    +
    // Return MotionFinished at the end of the trajectory.
    +
    return franka::MotionFinished(output);
    +
    }
    +
    +
    return output;
    +
    }
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Stores values for joint position motion generation.
    Definition: control_types.h:72
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    void control (std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for sending joint-level torque commands. More...
     
    void control (std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for sending joint-level torque commands and joint positions. More...
     
    void control (std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for sending joint-level torque commands and joint velocities. More...
     
    void control (std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for sending joint-level torque commands and Cartesian poses. More...
     
    void control (std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for sending joint-level torque commands and Cartesian velocities. More...
     
    void control (std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for a joint position motion generator with a given controller mode. More...
     
    void control (std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for a joint velocity motion generator with a given controller mode. More...
     
    void control (std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for a Cartesian pose motion generator with a given controller mode. More...
     
    void control (std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
     Starts a control loop for a Cartesian velocity motion generator with a given controller mode. More...
     
    Commands

    Commands are executed by communicating with the robot over the network.

    +

    These functions should therefore not be called from within control or motion generator loops.

    +
    void setCollisionBehavior (const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
     Changes the collision behavior. More...
     
    void setCollisionBehavior (const std::array< double, 7 > &lower_torque_thresholds, const std::array< double, 7 > &upper_torque_thresholds, const std::array< double, 6 > &lower_force_thresholds, const std::array< double, 6 > &upper_force_thresholds)
     Changes the collision behavior. More...
     
    void setJointImpedance (const std::array< double, 7 > &K_theta)
     Sets the impedance for each joint in the internal controller. More...
     
    void setCartesianImpedance (const std::array< double, 6 > &K_x)
     Sets the Cartesian stiffness/compliance (for x, y, z, roll, pitch, yaw) in the internal controller. More...
     
    void setGuidingMode (const std::array< bool, 6 > &guiding_mode, bool elbow)
     Locks or unlocks guiding mode movement in (x, y, z, roll, pitch, yaw). More...
     
    void setK (const std::array< double, 16 > &EE_T_K)
     Sets the transformation \(^{EE}T_K\) from end effector frame to stiffness frame. More...
     
    void setEE (const std::array< double, 16 > &NE_T_EE)
     Sets the transformation \(^{NE}T_{EE}\) from nominal end effector to end effector frame. More...
     
    void setLoad (double load_mass, const std::array< double, 3 > &F_x_Cload, const std::array< double, 9 > &load_inertia)
     Sets dynamic parameters of a payload. More...
     
    void automaticErrorRecovery ()
     Runs automatic error recovery on the robot. More...
     
    virtual std::unique_ptr< ActiveControlBasestartTorqueControl ()
     Starts a new torque controller. More...
     
    virtual std::unique_ptr< ActiveControlBasestartJointPositionControl (const research_interface::robot::Move::ControllerMode &control_type)
     Starts a new joint position motion generator. More...
     
    virtual std::unique_ptr< ActiveControlBasestartJointVelocityControl (const research_interface::robot::Move::ControllerMode &control_type)
     Starts a new joint velocity motion generator. More...
     
    virtual std::unique_ptr< ActiveControlBasestartCartesianPoseControl (const research_interface::robot::Move::ControllerMode &control_type)
     Starts a new cartesian position motion generator. More...
     
    virtual std::unique_ptr< ActiveControlBasestartCartesianVelocityControl (const research_interface::robot::Move::ControllerMode &control_type)
     Starts a new cartesian velocity motion generator. More...
     
    void stop ()
     Stops all currently running motions. More...
     
    + + + + + + + +

    +Protected Member Functions

     Robot (std::shared_ptr< Impl > robot_impl)
     Constructs a new Robot given a Robot::Impl. More...
     
    Robot ()=default
     Default constructor to enable mocking and testing.
     
    +

    Detailed Description

    +

    Maintains a network connection to the robot, provides the current robot state, gives access to the model library and allows to control the robot.

    +
    Note
    The members of this class are threadsafe.
    +

    Base frame O
    The base frame is located at the center of the robot's base. Its z-axis is identical with the axis of rotation of the first joint.
    +

    Flange frame F
    The flange frame is located at the center of the flange surface. Its z-axis is identical with the axis of rotation of the last joint. This frame is fixed and cannot be changed.
    +

    Nominal end effector frame NE
    The nominal end effector frame is configured outside of libfranka (in DESK) and cannot be changed here. It may be used to set end effector frames which are rarely changed.
    +

    end effector frame EE
    By default, the end effector frame EE is the same as the nominal end effector frame NE (i.e. the transformation between NE and EE is the identity transformation). It may be used to set end effector frames which are changed more frequently (such as a tool that is grasped with the end effector). With Robot::setEE, a custom transformation matrix can be set.
    +

    Stiffness frame K
    This frame describes the transformation from the end effector frame EE to the stiffness frame K. The stiffness frame is used for Cartesian impedance control, and for measuring and applying forces. The values set using Robot::setCartesianImpedance are used in the direction of the stiffness frame. It can be set with Robot::setK. This frame allows to modify the compliance behavior of the robot (e.g. to have a low stiffness around a specific point which is not the end effector). The stiffness frame does not affect where the robot will move to. The user should always command the desired end effector frame (and not the desired stiffness frame).
    +
    Examples
    cartesian_impedance_control.cpp, communication_test.cpp, echo_robot_state.cpp, force_control.cpp, generate_cartesian_pose_motion.cpp, generate_cartesian_pose_motion_external_control_loop.cpp, generate_cartesian_velocity_motion.cpp, generate_cartesian_velocity_motion_external_control_loop.cpp, generate_consecutive_motions.cpp, generate_elbow_motion.cpp, generate_joint_position_motion.cpp, generate_joint_position_motion_external_control_loop.cpp, generate_joint_velocity_motion.cpp, generate_joint_velocity_motion_external_control_loop.cpp, joint_impedance_control.cpp, joint_point_to_point_motion.cpp, motion_with_control.cpp, motion_with_control_external_control_loop.cpp, and print_joint_poses.cpp.
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ Robot() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    franka::Robot::Robot (const std::string & franka_address,
    RealtimeConfig realtime_config = RealtimeConfig::kEnforce,
    size_t log_size = 50 
    )
    +
    +explicit
    +
    + +

    Establishes a connection with the robot.

    +
    Parameters
    + + + + +
    [in]franka_addressIP/hostname of the robot.
    [in]realtime_configif set to Enforce, an exception will be thrown if realtime priority cannot be set when required. Setting realtime_config to Ignore disables this behavior.
    [in]log_sizesets how many last states should be kept for logging purposes. The log is provided when a ControlException is thrown.
    +
    +
    +
    Exceptions
    + + + +
    NetworkExceptionif the connection is unsuccessful.
    IncompatibleVersionExceptionif this version of libfranka is not supported.
    +
    +
    + +
    +
    + +

    ◆ Robot() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Robot::Robot (Robot && other)
    +
    +noexcept
    +
    + +

    Move-constructs a new Robot instance.

    +
    Parameters
    + + +
    [in]otherOther Robot instance.
    +
    +
    + +
    +
    + +

    ◆ Robot() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Robot::Robot (std::shared_ptr< Impl > robot_impl)
    +
    +protected
    +
    + +

    Constructs a new Robot given a Robot::Impl.

    +

    This enables unittests with Robot::Impl-Mocks.

    +
    Parameters
    + + +
    robot_implRobot::Impl to use
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ automaticErrorRecovery()

    + +
    +
    + + + + + + + +
    void franka::Robot::automaticErrorRecovery ()
    +
    + +

    Runs automatic error recovery on the robot.

    +

    Automatic error recovery e.g. resets the robot after a collision occurred.

    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    generate_consecutive_motions.cpp.
    +
    + +
    +
    + +

    ◆ control() [1/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback,
    ControllerMode controller_mode = ControllerMode::kJointImpedance,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for a Cartesian pose motion generator with a given controller mode.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + + +
    [in]motion_generator_callbackCallback function for motion generation. See here for more details.
    [in]controller_modeController to use to execute the motion.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif Cartesian pose command elements are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    + +
    +
    + +

    ◆ control() [2/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback,
    ControllerMode controller_mode = ControllerMode::kJointImpedance,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for a Cartesian velocity motion generator with a given controller mode.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + + +
    [in]motion_generator_callbackCallback function for motion generation. See here for more details.
    [in]controller_modeController to use to execute the motion.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif Cartesian velocity command elements are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    + +
    +
    + +

    ◆ control() [3/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback,
    ControllerMode controller_mode = ControllerMode::kJointImpedance,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for a joint position motion generator with a given controller mode.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + + +
    [in]motion_generator_callbackCallback function for motion generation. See here for more details.
    [in]controller_modeController to use to execute the motion.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif joint position commands are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    + +
    +
    + +

    ◆ control() [4/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback,
    ControllerMode controller_mode = ControllerMode::kJointImpedance,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for a joint velocity motion generator with a given controller mode.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + + +
    [in]motion_generator_callbackCallback function for motion generation. See here for more details.
    [in]controller_modeController to use to execute the motion.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif joint velocity commands are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    + +
    +
    + +

    ◆ control() [5/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< Torques(const RobotState &, franka::Duration)> control_callback,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for sending joint-level torque commands.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + +
    [in]control_callbackCallback function providing joint-level torque commands. See here for more details.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif joint-level torque commands are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    +
    Examples
    cartesian_impedance_control.cpp, communication_test.cpp, force_control.cpp, generate_cartesian_pose_motion.cpp, generate_cartesian_pose_motion_external_control_loop.cpp, generate_cartesian_velocity_motion.cpp, generate_cartesian_velocity_motion_external_control_loop.cpp, generate_consecutive_motions.cpp, generate_elbow_motion.cpp, generate_joint_position_motion.cpp, generate_joint_position_motion_external_control_loop.cpp, generate_joint_velocity_motion.cpp, generate_joint_velocity_motion_external_control_loop.cpp, and joint_point_to_point_motion.cpp.
    +
    + +
    +
    + +

    ◆ control() [6/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< Torques(const RobotState &, franka::Duration)> control_callback,
    std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for sending joint-level torque commands and Cartesian poses.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + + +
    [in]control_callbackCallback function providing joint-level torque commands. See here for more details.
    [in]motion_generator_callbackCallback function for motion generation. See here for more details.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif joint-level torque or Cartesian pose command elements are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    + +
    +
    + +

    ◆ control() [7/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< Torques(const RobotState &, franka::Duration)> control_callback,
    std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for sending joint-level torque commands and Cartesian velocities.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + + +
    [in]control_callbackCallback function providing joint-level torque commands. See here for more details.
    [in]motion_generator_callbackCallback function for motion generation. See here for more details.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif joint-level torque or Cartesian velocity command elements are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    + +
    +
    + +

    ◆ control() [8/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< Torques(const RobotState &, franka::Duration)> control_callback,
    std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for sending joint-level torque commands and joint positions.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + + +
    [in]control_callbackCallback function providing joint-level torque commands. See here for more details.
    [in]motion_generator_callbackCallback function for motion generation. See here for more details.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif joint-level torque or joint position commands are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    + +
    +
    + +

    ◆ control() [9/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::control (std::function< Torques(const RobotState &, franka::Duration)> control_callback,
    std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback,
    bool limit_rate = false,
    double cutoff_frequency = kDefaultCutoffFrequency 
    )
    +
    + +

    Starts a control loop for sending joint-level torque commands and joint velocities.

    +

    Sets realtime priority for the current thread. Cannot be executed while another control or motion generator loop is active.

    +
    Parameters
    + + + + + +
    [in]control_callbackCallback function providing joint-level torque commands. See here for more details.
    [in]motion_generator_callbackCallback function for motion generation. See here for more details.
    [in]limit_rateTrue if rate limiting should be activated. False by default. This could distort your motion!
    [in]cutoff_frequencyCutoff frequency for a first order low-pass filter applied on the user commanded signal. Set to franka::kMaxCutoffFrequency to disable.
    +
    +
    +
    Exceptions
    + + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    RealtimeExceptionif realtime priority cannot be set for the current thread.
    std::invalid_argumentif joint-level torque or joint velocity commands are NaN or infinity.
    +
    +
    +
    See also
    Robot::Robot to change behavior if realtime priority cannot be set.
    + +
    +
    + +

    ◆ loadModel()

    + +
    +
    + + + + + + + +
    Model franka::Robot::loadModel ()
    +
    + +

    Loads the model library from the robot.

    +
    Returns
    Model instance.
    +
    Exceptions
    + + + +
    ModelExceptionif the model library cannot be loaded.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    cartesian_impedance_control.cpp, and force_control.cpp.
    +
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Robot& franka::Robot::operator= (Robot && other)
    +
    +noexcept
    +
    + +

    Move-assigns this Robot from another Robot instance.

    +
    Parameters
    + + +
    [in]otherOther Robot instance.
    +
    +
    +
    Returns
    Robot instance.
    + +
    +
    + +

    ◆ read()

    + +
    +
    + + + + + + + + +
    void franka::Robot::read (std::function< bool(const RobotState &)> read_callback)
    +
    + +

    Starts a loop for reading the current robot state.

    +

    Cannot be executed while a control or motion generator loop is running.

    +

    This minimal example will print the robot state 100 times:

    franka::Robot robot("robot.franka.de");
    +
    size_t count = 0;
    +
    robot.read([&count](const franka::RobotState& robot_state) {
    +
    std::cout << robot_state << std::endl;
    +
    return count++ < 100;
    +
    });
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    Parameters
    + + +
    [in]read_callbackCallback function for robot state reading.
    +
    +
    +
    Exceptions
    + + + +
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    echo_robot_state.cpp.
    +
    + +
    +
    + +

    ◆ readOnce()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual RobotState franka::Robot::readOnce ()
    +
    +virtual
    +
    + +

    Waits for a robot state update and returns it.

    +

    Cannot be executed while a control or motion generator loop is running.

    +
    Returns
    Current robot state.
    +
    Exceptions
    + + + +
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    See also
    Robot::read for a way to repeatedly receive the robot state.
    +
    Examples
    cartesian_impedance_control.cpp, and force_control.cpp.
    +
    + +
    +
    + +

    ◆ serverVersion()

    + +
    +
    + + + + + +
    + + + + + + + +
    ServerVersion franka::Robot::serverVersion () const
    +
    +noexcept
    +
    + +

    Returns the software version reported by the connected server.

    +
    Returns
    Software version of the connected server.
    + +
    +
    + +

    ◆ setCartesianImpedance()

    + +
    +
    + + + + + + + + +
    void franka::Robot::setCartesianImpedance (const std::array< double, 6 > & K_x)
    +
    + +

    Sets the Cartesian stiffness/compliance (for x, y, z, roll, pitch, yaw) in the internal controller.

    +

    The values set using Robot::setCartesianImpedance are used in the direction of the stiffness frame, which can be set with Robot::setK.

    +

    Inputs received by the torque controller are not affected by this setting.

    +
    Parameters
    + + +
    [in]K_xCartesian impedance values \(K_x=(K_{x_{x,y,z}} \in [10,3000] \frac{N}{m}, K_{x_{R,P,Y}} \in [1,300] \frac{Nm}{rad})\)
    +
    +
    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    + +
    +
    + +

    ◆ setCollisionBehavior() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::setCollisionBehavior (const std::array< double, 7 > & lower_torque_thresholds,
    const std::array< double, 7 > & upper_torque_thresholds,
    const std::array< double, 6 > & lower_force_thresholds,
    const std::array< double, 6 > & upper_force_thresholds 
    )
    +
    + +

    Changes the collision behavior.

    +

    Set common torque and force boundaries for acceleration/deceleration and constant velocity movement phases.

    +

    Forces or torques between lower and upper threshold are shown as contacts in the RobotState. Forces or torques above the upper threshold are registered as collision and cause the robot to stop moving.

    +
    Parameters
    + + + + + +
    [in]lower_torque_thresholdsContact torque thresholds for each joint in \([Nm]\).
    [in]upper_torque_thresholdsCollision torque thresholds for each joint in \([Nm]\).
    [in]lower_force_thresholdsContact force thresholds for \((x,y,z,R,P,Y)\) in \([N]\).
    [in]upper_force_thresholdsCollision force thresholds for \((x,y,z,R,P,Y)\) in \([N]\).
    +
    +
    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    See also
    RobotState::cartesian_contact
    +
    +RobotState::cartesian_collision
    +
    +RobotState::joint_contact
    +
    +RobotState::joint_collision
    +
    +Robot::automaticErrorRecovery for performing a reset after a collision.
    + +
    +
    + +

    ◆ setCollisionBehavior() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::setCollisionBehavior (const std::array< double, 7 > & lower_torque_thresholds_acceleration,
    const std::array< double, 7 > & upper_torque_thresholds_acceleration,
    const std::array< double, 7 > & lower_torque_thresholds_nominal,
    const std::array< double, 7 > & upper_torque_thresholds_nominal,
    const std::array< double, 6 > & lower_force_thresholds_acceleration,
    const std::array< double, 6 > & upper_force_thresholds_acceleration,
    const std::array< double, 6 > & lower_force_thresholds_nominal,
    const std::array< double, 6 > & upper_force_thresholds_nominal 
    )
    +
    + +

    Changes the collision behavior.

    +

    Set separate torque and force boundaries for acceleration/deceleration and constant velocity movement phases.

    +

    Forces or torques between lower and upper threshold are shown as contacts in the RobotState. Forces or torques above the upper threshold are registered as collision and cause the robot to stop moving.

    +
    Parameters
    + + + + + + + + + +
    [in]lower_torque_thresholds_accelerationContact torque thresholds during acceleration/deceleration for each joint in \([Nm]\).
    [in]upper_torque_thresholds_accelerationCollision torque thresholds during acceleration/deceleration for each joint in \([Nm]\).
    [in]lower_torque_thresholds_nominalContact torque thresholds for each joint in \([Nm]\).
    [in]upper_torque_thresholds_nominalCollision torque thresholds for each joint in \([Nm]\).
    [in]lower_force_thresholds_accelerationContact force thresholds during acceleration/deceleration for \((x,y,z,R,P,Y)\) in \([N]\).
    [in]upper_force_thresholds_accelerationCollision force thresholds during acceleration/deceleration for \((x,y,z,R,P,Y)\) in \([N]\).
    [in]lower_force_thresholds_nominalContact force thresholds for \((x,y,z,R,P,Y)\) in \([N]\).
    [in]upper_force_thresholds_nominalCollision force thresholds for \((x,y,z,R,P,Y)\) in \([N]\).
    +
    +
    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    See also
    RobotState::cartesian_contact
    +
    +RobotState::cartesian_collision
    +
    +RobotState::joint_contact
    +
    +RobotState::joint_collision
    +
    +Robot::automaticErrorRecovery for performing a reset after a collision.
    +
    Examples
    cartesian_impedance_control.cpp, communication_test.cpp, force_control.cpp, generate_cartesian_pose_motion.cpp, generate_cartesian_pose_motion_external_control_loop.cpp, generate_cartesian_velocity_motion.cpp, generate_cartesian_velocity_motion_external_control_loop.cpp, generate_consecutive_motions.cpp, generate_elbow_motion.cpp, generate_joint_position_motion.cpp, generate_joint_position_motion_external_control_loop.cpp, generate_joint_velocity_motion.cpp, generate_joint_velocity_motion_external_control_loop.cpp, and joint_point_to_point_motion.cpp.
    +
    + +
    +
    + +

    ◆ setEE()

    + +
    +
    + + + + + + + + +
    void franka::Robot::setEE (const std::array< double, 16 > & NE_T_EE)
    +
    + +

    Sets the transformation \(^{NE}T_{EE}\) from nominal end effector to end effector frame.

    +

    The transformation matrix is represented as a vectorized 4x4 matrix in column-major format.

    +
    Parameters
    + + +
    [in]NE_T_EEVectorized NE-to-EE transformation matrix \(^{NE}T_{EE}\), column-major.
    +
    +
    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    See also
    RobotState::NE_T_EE for end effector pose in nominal end effector frameNE". +@see RobotState::O_T_EE for end effector pose in @ref o-frame "world base frame O". +@see RobotState::F_T_EE for end effector pose in @ref f-frame "flange frame F".
    + +
    +
    + +

    ◆ setGuidingMode()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void franka::Robot::setGuidingMode (const std::array< bool, 6 > & guiding_mode,
    bool elbow 
    )
    +
    + +

    Locks or unlocks guiding mode movement in (x, y, z, roll, pitch, yaw).

    +

    If a flag is set to true, movement is unlocked.

    +
    Note
    Guiding mode can be enabled by pressing the two opposing buttons near the robot's flange.
    +
    Parameters
    + + + +
    [in]guiding_modeUnlocked movement in (x, y, z, R, P, Y) in guiding mode.
    [in]elbowTrue if the elbow is free in guiding mode, false otherwise.
    +
    +
    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    + +
    +
    + +

    ◆ setJointImpedance()

    + +
    +
    + + + + + + + + +
    void franka::Robot::setJointImpedance (const std::array< double, 7 > & K_theta)
    +
    + +

    Sets the impedance for each joint in the internal controller.

    +

    User-provided torques are not affected by this setting.

    +
    Parameters
    + + +
    [in]K_thetaJoint impedance values \(K_{\theta_{1-7}} = \in [0,14250] \frac{Nm}{rad}\)
    +
    +
    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    generate_cartesian_velocity_motion.cpp, and generate_cartesian_velocity_motion_external_control_loop.cpp.
    +
    + +
    +
    + +

    ◆ setK()

    + +
    +
    + + + + + + + + +
    void franka::Robot::setK (const std::array< double, 16 > & EE_T_K)
    +
    + +

    Sets the transformation \(^{EE}T_K\) from end effector frame to stiffness frame.

    +

    The transformation matrix is represented as a vectorized 4x4 matrix in column-major format.

    +
    Parameters
    + + +
    [in]EE_T_KVectorized EE-to-K transformation matrix \(^{EE}T_K\), column-major.
    +
    +
    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    See also
    Robot for an explanation of the stiffness frame.
    + +
    +
    + +

    ◆ setLoad()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void franka::Robot::setLoad (double load_mass,
    const std::array< double, 3 > & F_x_Cload,
    const std::array< double, 9 > & load_inertia 
    )
    +
    + +

    Sets dynamic parameters of a payload.

    +
    Note
    This is not for setting end effector parameters, which have to be set in the administrator's interface.
    +
    Parameters
    + + + + +
    [in]load_massMass of the load in \([kg]\).
    [in]F_x_CloadTranslation from flange to center of mass of load \(^Fx_{C_\text{load}}\) in \([m]\).
    [in]load_inertiaInertia matrix \(I_\text{load}\) in \([kg \times m^2]\), column-major.
    +
    +
    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    + +
    +
    + +

    ◆ startCartesianPoseControl()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual std::unique_ptr<ActiveControlBase> franka::Robot::startCartesianPoseControl (const research_interface::robot::Move::ControllerMode & control_type)
    +
    +virtual
    +
    + +

    Starts a new cartesian position motion generator.

    +
    Parameters
    + + +
    control_typeresearch_interface::robot::Move::ControllerMode control type for the operation
    +
    +
    +
    Returns
    unique_ptr of ActiveMotionGenerator for the started motion
    +
    Exceptions
    + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    std::invalid_argumentif joint-level torque commands are NaN or infinity.
    +
    +
    +
    Examples
    generate_cartesian_pose_motion_external_control_loop.cpp.
    +
    + +
    +
    + +

    ◆ startCartesianVelocityControl()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual std::unique_ptr<ActiveControlBase> franka::Robot::startCartesianVelocityControl (const research_interface::robot::Move::ControllerMode & control_type)
    +
    +virtual
    +
    + +

    Starts a new cartesian velocity motion generator.

    +
    Parameters
    + + +
    control_typeresearch_interface::robot::Move::ControllerMode control type for the operation
    +
    +
    +
    Returns
    unique_ptr of ActiveMotionGenerator for the started motion
    +
    Exceptions
    + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    std::invalid_argumentif joint-level torque commands are NaN or infinity.
    +
    +
    +
    Examples
    generate_cartesian_velocity_motion_external_control_loop.cpp.
    +
    + +
    +
    + +

    ◆ startJointPositionControl()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual std::unique_ptr<ActiveControlBase> franka::Robot::startJointPositionControl (const research_interface::robot::Move::ControllerMode & control_type)
    +
    +virtual
    +
    + +

    Starts a new joint position motion generator.

    +
    Parameters
    + + +
    control_typeresearch_interface::robot::Move::ControllerMode control type for the operation
    +
    +
    +
    Returns
    unique_ptr of ActiveMotionGenerator for the started motion
    +
    Exceptions
    + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    std::invalid_argumentif joint-level torque commands are NaN or infinity.
    +
    +
    +
    Examples
    generate_joint_position_motion_external_control_loop.cpp.
    +
    + +
    +
    + +

    ◆ startJointVelocityControl()

    + +
    +
    + + + + + +
    + + + + + + + + +
    virtual std::unique_ptr<ActiveControlBase> franka::Robot::startJointVelocityControl (const research_interface::robot::Move::ControllerMode & control_type)
    +
    +virtual
    +
    + +

    Starts a new joint velocity motion generator.

    +
    Parameters
    + + +
    control_typeresearch_interface::robot::Move::ControllerMode control type for the operation
    +
    +
    +
    Returns
    unique_ptr of ActiveMotionGenerator for the started motion
    +
    Exceptions
    + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    std::invalid_argumentif joint-level torque commands are NaN or infinity.
    +
    +
    +
    Examples
    generate_joint_velocity_motion_external_control_loop.cpp.
    +
    + +
    +
    + +

    ◆ startTorqueControl()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual std::unique_ptr<ActiveControlBase> franka::Robot::startTorqueControl ()
    +
    +virtual
    +
    + +

    Starts a new torque controller.

    +
    Returns
    unique_ptr of ActiveTorqueControl for the started motion
    +
    Exceptions
    + + + + + +
    ControlExceptionif an error related to torque control or motion generation occurred.
    InvalidOperationExceptionif a conflicting operation is already running.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    std::invalid_argumentif joint-level torque commands are NaN or infinity.
    +
    +
    +
    Examples
    communication_test.cpp.
    +
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + + + +
    void franka::Robot::stop ()
    +
    + +

    Stops all currently running motions.

    +

    If a control or motion generator loop is running in another thread, it will be preempted with a franka::ControlException.

    +
    Exceptions
    + + + +
    CommandExceptionif the Control reports an error.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1Torques-members.html b/0.13.6/classfranka_1_1Torques-members.html new file mode 100644 index 00000000..a444f3fa --- /dev/null +++ b/0.13.6/classfranka_1_1Torques-members.html @@ -0,0 +1,95 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::Torques Member List
    +
    +
    + +

    This is the complete list of members for franka::Torques, including all inherited members.

    + + + + + +
    motion_finishedfranka::Finishable
    tau_Jfranka::Torques
    Torques(const std::array< double, 7 > &torques) noexceptfranka::Torques
    Torques(std::initializer_list< double > torques)franka::Torques
    + + + + diff --git a/0.13.6/classfranka_1_1Torques.html b/0.13.6/classfranka_1_1Torques.html new file mode 100644 index 00000000..fc8e21a2 --- /dev/null +++ b/0.13.6/classfranka_1_1Torques.html @@ -0,0 +1,211 @@ + + + + + + + +libfranka: franka::Torques Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::Torques Class Reference
    +
    +
    + +

    Stores joint-level torque commands without gravity and friction. + More...

    + +

    #include <control_types.h>

    +
    +Inheritance diagram for franka::Torques:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for franka::Torques:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + +

    +Public Member Functions

     Torques (const std::array< double, 7 > &torques) noexcept
     Creates a new Torques instance. More...
     
     Torques (std::initializer_list< double > torques)
     Creates a new Torques instance. More...
     
    + + + + + + + + +

    +Public Attributes

    +std::array< double, 7 > tau_J {}
     Desired torques in [Nm].
     
    - Public Attributes inherited from franka::Finishable
    +bool motion_finished = false
     Determines whether to finish a currently running motion.
     
    +

    Detailed Description

    +

    Constructor & Destructor Documentation

    + +

    ◆ Torques() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::Torques::Torques (const std::array< double, 7 > & torques)
    +
    +noexcept
    +
    + +

    Creates a new Torques instance.

    +
    Parameters
    + + +
    [in]torquesDesired joint-level torques without gravity and friction in \([Nm]\).
    +
    +
    + +
    +
    + +

    ◆ Torques() [2/2]

    + +
    +
    + + + + + + + + +
    franka::Torques::Torques (std::initializer_list< double > torques)
    +
    + +

    Creates a new Torques instance.

    +
    Parameters
    + + +
    [in]torquesDesired joint-level torques without gravity and friction in \([Nm]\).
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif the given initializer list has an invalid number of arguments.
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/classfranka_1_1Torques__coll__graph.map b/0.13.6/classfranka_1_1Torques__coll__graph.map new file mode 100644 index 00000000..de27f9cb --- /dev/null +++ b/0.13.6/classfranka_1_1Torques__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1Torques__coll__graph.md5 b/0.13.6/classfranka_1_1Torques__coll__graph.md5 new file mode 100644 index 00000000..bb5e5fcd --- /dev/null +++ b/0.13.6/classfranka_1_1Torques__coll__graph.md5 @@ -0,0 +1 @@ +a943715320da47aa78a814b0a876491e \ No newline at end of file diff --git a/0.13.6/classfranka_1_1Torques__coll__graph.png b/0.13.6/classfranka_1_1Torques__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9dcd64dd30afb31ece18427ee625ea319cdf4c71 GIT binary patch literal 3264 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 literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1Torques__inherit__graph.map b/0.13.6/classfranka_1_1Torques__inherit__graph.map new file mode 100644 index 00000000..de27f9cb --- /dev/null +++ b/0.13.6/classfranka_1_1Torques__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/classfranka_1_1Torques__inherit__graph.md5 b/0.13.6/classfranka_1_1Torques__inherit__graph.md5 new file mode 100644 index 00000000..bb5e5fcd --- /dev/null +++ b/0.13.6/classfranka_1_1Torques__inherit__graph.md5 @@ -0,0 +1 @@ +a943715320da47aa78a814b0a876491e \ No newline at end of file diff --git a/0.13.6/classfranka_1_1Torques__inherit__graph.png b/0.13.6/classfranka_1_1Torques__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9dcd64dd30afb31ece18427ee625ea319cdf4c71 GIT binary patch literal 3264 zcmcIn`9D-|`#)NcB$W@Uu|;Le9>Z87vP+2U&6HA1)-Z@<-;;*OG`49-mXI;VNXXbV z_CZNz?8cJD7M|1h^ZLG?zu-CB{W|v#=eqCfdN0?Bx3n-k#&w1Z0Dxo0M*3FZ_!7Lm zIS+u(z{DN_a9~H68tMc4f6rVpJ{!86p%cN%6Vs*g$hs@$7*c zTzn7YB19HN=W6kHiFz%-uG!H}=&q^x)&p#9c6o!n{IAPKd5^ zo}7n!s7D<;(K^Cp?M|`C6CXb)wzh^2{n}n2_P*I6E|Z3t%+$~1S1#oooX|Wd3}^~? zt{JDhCd%F(DX7*QFJo60x;Yu!lkn`-%bc8?8Ep8QoIjL|;o)IBM@QIH8n5jQN5`?@ z;rk;~_cV+o`Fd=GTlg9kx{5fKe*ND!B#t9I)9_UH8m|fF!opd8e%0MWlarIKPks-s zFF@mpTb0$q2H)L8qtUF+!%vZG4LeNI(2#AsejknYU_yoUC3~au#PVE{;%Dk~;UCtR z*Nq!DxY?VT4?L$CnXYB!e%`^s;R1%5t(bbL#uIh*>Q!N3;eb>n^IE5} zz3_p-L3LPYJjpa$xQIC#|72xA*X=(X7w~jN-bg2)b7Ol!DO z%~HkXGD+^#a~IN2i-?3TeKBBiQm?bwMa8JHwUvA zs*Sb4cQSkn6pW3HeSCb#WHLDG^=X&Ye_bbeYO~M_2ISV&ZHs8doKo!+*A9OBGBXoj zSopj-1){E3&B4LJ2AqtKn(giFo$-c-YKQlon~qCPzWhf&Y-foOdMX zfz5GcBScViH^R=wve&n|-@6+VneBHqFlF!Go0SY&Xuz<&t_`7Ert;)MOG!^Tr6;P7 z#&6l#Z7h_3YHewGZ(nuK-+y4-sPo7XtwUfQkMheZDpG9(d z&dA70qfPMrih|sMfg2ea8I_ev9@D;ley2DO!Qt?Q;quH*27iLt+*3Cb6&01mF+w>W zZ&*P60kycRpf}Ie-uq z5Ks$YEml@mW@n!f5fSl=yi|TKICy(+cZcR#b43&yzE_XMVyTOG3yedJr@fOCB=O5A zIb&2Xfw1=)6wWE_bHP(eul$Z8p;8*8P`erhRzJq^?WUS>##9tD+N#^J@5`9cP7w zJ=|*}rl5+&gY$AOi=ms|UBqHY#L*6t_heuxOC*c-{U%Wpomf_X3RY{UCBkpTbA%iy=`Z?K^ur`@rpb8XEvK_Fz1)MIs0% z^EZ}3$fl!V8Ww$ zX1=j_TMsrsSU9{~JX-I;BWBp{Z%I6(N=BM)%m_Vi zLHO9&Wm-zEvsg8E?4#5dr9h5cR8d)1R8-T}ezg7vd4MarZ)61e3k8YLVk9ReeRWrX z@#pX`nM_dl^hp&JUn!J}^76gJw8fNfbjHjKp}HCXdfsS}kYhC%Sm0Y6uGHbZn`V0nc*ugE`Cg=WN`lH zPXvULn2->p`8~?u-Me=^SRHv@&ZN<|lIV^*loaPrVM4&lxL@zm=*Q0C;mkPrs{lp^ z8i&IP2?>RTg~i9mGZ>8fJvnd%!E!QdG-R2)(WTrA0NXn|1W%eTYtbI$Cfekty*+Jw zTvJJ@GIVPVBw^2Mwc~&&D9CzwdU>2jj?lol7w1hEf5#kzb;y9^l9#9WXkNS+yIAi% zsR!!4ySrqx9vF=cnDwvI+1reyOnsm&3b=-*3EH~4_D-#WHfJfR8M;|vBynz8SrZDa z^_pk^ebSfc#1(C2WrZkRAp{%ZhpR=G&+n$yYJ@aCMG7PrKOdeoXkScj95p5hK7F= zoS?V0Zzajs0q#H*IV!=Q*xo~@)7?5VP(eWw5)xo4BO=)H_rH@vNT7C+0+0a#HH>p! z^{ec};?p(B&)e@VEiHv?Fu`)lt-e|)u`7R(DBi!fHG>7SOrz1vE~Izg!{hOeF5P>3 zd!VJBmzS3p6>aS7lu=f;mPUUk`o)^y>WD-X3PmK5bhhZ}Sy@@uAv+hEKWvQM{c!8< zP9M(n=FOW=o;(4Y6yRw^g~HnT3+cuxag^xv>!JITu_A)p*AR&O%LeatTG*82r_WVCb$;GT4l>ep?rpG8<_(B^u~z77ct5h!g0lv(y66hwW@^crmj43(*2DKYneUjMp!=s{J^gwBb37hCQq`;d8jW^)bnC%`2M-@g`&6SA zh9<6yceJ&E(ZRZSs=~y?BA^cs1N500tj6PcOyKt$l6(-JiuN8p3|{Ty$;ugcEBq2~47EJwPl@#j#vtE;m!8HBa5 zVgAwnzp9*M`Yn4xw<}9|W_8>x_tO8nC)l&Ul7du#bW@jQZ{mOdf&h}ZprnkGl9rS6 qm(U*9>eeE2orM1@q+q8%{fXcWf4L{xR|x)+0LBIu`ek~zpZy1*;e1yB literal 0 HcmV?d00001 diff --git a/0.13.6/classfranka_1_1VacuumGripper-members.html b/0.13.6/classfranka_1_1VacuumGripper-members.html new file mode 100644 index 00000000..8d386265 --- /dev/null +++ b/0.13.6/classfranka_1_1VacuumGripper-members.html @@ -0,0 +1,102 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::VacuumGripper Member List
    +
    +
    + +

    This is the complete list of members for franka::VacuumGripper, including all inherited members.

    + + + + + + + + + + + + +
    dropOff(std::chrono::milliseconds timeout) constfranka::VacuumGripper
    operator=(VacuumGripper &&vacuum_gripper) noexceptfranka::VacuumGripper
    ProductionSetupProfile enum namefranka::VacuumGripper
    readOnce() constfranka::VacuumGripper
    ServerVersion typedeffranka::VacuumGripper
    serverVersion() const noexceptfranka::VacuumGripper
    stop() constfranka::VacuumGripper
    vacuum(uint8_t vacuum, std::chrono::milliseconds timeout, ProductionSetupProfile profile=ProductionSetupProfile::kP0) constfranka::VacuumGripper
    VacuumGripper(const std::string &franka_address)franka::VacuumGripperexplicit
    VacuumGripper(VacuumGripper &&vacuum_gripper) noexceptfranka::VacuumGripper
    ~VacuumGripper() noexceptfranka::VacuumGripper
    + + + + diff --git a/0.13.6/classfranka_1_1VacuumGripper.html b/0.13.6/classfranka_1_1VacuumGripper.html new file mode 100644 index 00000000..90144a7c --- /dev/null +++ b/0.13.6/classfranka_1_1VacuumGripper.html @@ -0,0 +1,439 @@ + + + + + + + +libfranka: franka::VacuumGripper Class Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::VacuumGripper Class Reference
    +
    +
    + +

    Maintains a network connection to the vacuum gripper, provides the current vacuum gripper state, and allows the execution of commands. + More...

    + +

    #include <vacuum_gripper.h>

    + + + + + + + + +

    +Public Types

    enum class  ProductionSetupProfile { kP0 +, kP1 +, kP2 +, kP3 + }
     Vacuum production setup profile.
     
    +using ServerVersion = uint16_t
     Version of the vacuum gripper server.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     VacuumGripper (const std::string &franka_address)
     Establishes a connection with a vacuum gripper connected to a robot. More...
     
     VacuumGripper (VacuumGripper &&vacuum_gripper) noexcept
     Move-constructs a new VacuumGripper instance. More...
     
    VacuumGripperoperator= (VacuumGripper &&vacuum_gripper) noexcept
     Move-assigns this VacuumGripper from another VacuumGripper instance. More...
     
    ~VacuumGripper () noexcept
     Closes the connection.
     
    bool vacuum (uint8_t vacuum, std::chrono::milliseconds timeout, ProductionSetupProfile profile=ProductionSetupProfile::kP0) const
     Vacuums an object. More...
     
    bool dropOff (std::chrono::milliseconds timeout) const
     Drops the grasped object off. More...
     
    bool stop () const
     Stops a currently running vacuum gripper vacuum or drop off operation. More...
     
    VacuumGripperState readOnce () const
     Waits for a vacuum gripper state update and returns it. More...
     
    ServerVersion serverVersion () const noexcept
     Returns the software version reported by the connected server. More...
     
    +

    Detailed Description

    +

    Maintains a network connection to the vacuum gripper, provides the current vacuum gripper state, and allows the execution of commands.

    +
    Note
    The members of this class are threadsafe.
    +
    Examples
    vacuum_object.cpp.
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ VacuumGripper() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::VacuumGripper::VacuumGripper (const std::string & franka_address)
    +
    +explicit
    +
    + +

    Establishes a connection with a vacuum gripper connected to a robot.

    +
    Parameters
    + + +
    [in]franka_addressIP/hostname of the robot the vacuum gripper is connected to.
    +
    +
    +
    Exceptions
    + + + +
    NetworkExceptionif the connection is unsuccessful.
    IncompatibleVersionExceptionif this version of libfranka is not supported.
    +
    +
    + +
    +
    + +

    ◆ VacuumGripper() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    franka::VacuumGripper::VacuumGripper (VacuumGripper && vacuum_gripper)
    +
    +noexcept
    +
    + +

    Move-constructs a new VacuumGripper instance.

    +
    Parameters
    + + +
    [in]vacuum_gripperOther VacuumGripper instance.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ dropOff()

    + +
    +
    + + + + + + + + +
    bool franka::VacuumGripper::dropOff (std::chrono::milliseconds timeout) const
    +
    + +

    Drops the grasped object off.

    +
    Parameters
    + + +
    [in]timeoutDropoff timeout. Unit: \([ms]\).
    +
    +
    +
    Returns
    True if command was successful, false otherwise.
    +
    Exceptions
    + + + +
    CommandExceptionif an error occurred.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    vacuum_object.cpp.
    +
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    VacuumGripper& franka::VacuumGripper::operator= (VacuumGripper && vacuum_gripper)
    +
    +noexcept
    +
    + +

    Move-assigns this VacuumGripper from another VacuumGripper instance.

    +
    Parameters
    + + +
    [in]vacuum_gripperOther VacuumGripper instance.
    +
    +
    +
    Returns
    Model instance.
    + +
    +
    + +

    ◆ readOnce()

    + +
    +
    + + + + + + + +
    VacuumGripperState franka::VacuumGripper::readOnce () const
    +
    + +

    Waits for a vacuum gripper state update and returns it.

    +
    Returns
    Current vacuum gripper state.
    +
    Exceptions
    + + + +
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    InvalidOperationExceptionif another readOnce is already running.
    +
    +
    +
    Examples
    vacuum_object.cpp.
    +
    + +
    +
    + +

    ◆ serverVersion()

    + +
    +
    + + + + + +
    + + + + + + + +
    ServerVersion franka::VacuumGripper::serverVersion () const
    +
    +noexcept
    +
    + +

    Returns the software version reported by the connected server.

    +
    Returns
    Software version of the connected server.
    + +
    +
    + +

    ◆ stop()

    + +
    +
    + + + + + + + +
    bool franka::VacuumGripper::stop () const
    +
    + +

    Stops a currently running vacuum gripper vacuum or drop off operation.

    +
    Returns
    True if command was successful, false otherwise.
    +
    Exceptions
    + + + +
    CommandExceptionif an error occurred.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    vacuum_object.cpp.
    +
    + +
    +
    + +

    ◆ vacuum()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool franka::VacuumGripper::vacuum (uint8_t vacuum,
    std::chrono::milliseconds timeout,
    ProductionSetupProfile profile = ProductionSetupProfile::kP0 
    ) const
    +
    + +

    Vacuums an object.

    +
    Parameters
    + + + + +
    [in]vacuumSetpoint for control mode. Unit: \([10*mbar]\).
    [in]timeoutVacuum timeout. Unit: \([ms]\).
    [in]profileProduction setup profile P0 to P3. Default: P0.
    +
    +
    +
    Returns
    True if the vacuum has been established, false otherwise.
    +
    Exceptions
    + + + +
    CommandExceptionif an error occurred.
    NetworkExceptionif the connection is lost, e.g. after a timeout.
    +
    +
    +
    Examples
    vacuum_object.cpp.
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/0.13.6/closed.png b/0.13.6/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/0.13.6/communication_test_8cpp-example.html b/0.13.6/communication_test_8cpp-example.html new file mode 100644 index 00000000..1f410a03 --- /dev/null +++ b/0.13.6/communication_test_8cpp-example.html @@ -0,0 +1,227 @@ + + + + + + + +libfranka: communication_test.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    communication_test.cpp
    +
    +
    +

    An example indicating the network performance.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <chrono>
    +
    #include <iostream>
    +
    #include <thread>
    +
    + + + + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    uint64_t counter = 0;
    +
    double avg_success_rate = 0.0;
    +
    double min_success_rate = 1.0;
    +
    double max_success_rate = 0.0;
    +
    uint64_t time = 0;
    +
    std::cout.precision(2);
    +
    std::cout << std::fixed;
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl << std::endl;
    +
    std::cout << "Starting communication test." << std::endl;
    +
    + +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    franka::Torques zero_torques{{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}};
    +
    auto rw_interface = robot.startTorqueControl();
    +
    +
    franka::RobotState robot_state;
    + +
    +
    while (!zero_torques.motion_finished) {
    +
    std::tie(robot_state, period) = rw_interface->readOnce();
    +
    +
    time += period.toMSec();
    +
    if (time == 0.0) {
    +
    rw_interface->writeOnce(zero_torques);
    +
    continue;
    +
    }
    +
    counter++;
    +
    +
    if (counter % 100 == 0) {
    +
    std::cout << "#" << counter
    +
    << " Current success rate: " << robot_state.control_command_success_rate
    +
    << std::endl;
    +
    }
    +
    std::this_thread::sleep_for(std::chrono::microseconds(100));
    +
    +
    avg_success_rate += robot_state.control_command_success_rate;
    +
    if (robot_state.control_command_success_rate > max_success_rate) {
    +
    max_success_rate = robot_state.control_command_success_rate;
    +
    }
    +
    if (robot_state.control_command_success_rate < min_success_rate) {
    +
    min_success_rate = robot_state.control_command_success_rate;
    +
    }
    +
    +
    if (time >= 10000) {
    +
    std::cout << std::endl << "Finished test, shutting down example" << std::endl;
    +
    zero_torques.motion_finished = true;
    +
    }
    +
    // Sending zero torques - if EE is configured correctly, robot should not move
    +
    rw_interface->writeOnce(zero_torques);
    +
    }
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    avg_success_rate = avg_success_rate / counter;
    +
    +
    std::cout << std::endl
    +
    << std::endl
    +
    << "#######################################################" << std::endl;
    +
    uint64_t lost_robot_states = time - counter;
    +
    if (lost_robot_states > 0) {
    +
    std::cout << "The control loop did not get executed " << lost_robot_states << " times in the"
    +
    << std::endl
    +
    << "last " << time << " milliseconds! (lost " << lost_robot_states << " robot states)"
    +
    << std::endl
    +
    << std::endl;
    +
    }
    +
    +
    std::cout << "Control command success rate of " << counter << " samples: " << std::endl;
    +
    std::cout << "Max: " << max_success_rate << std::endl;
    +
    std::cout << "Avg: " << avg_success_rate << std::endl;
    +
    std::cout << "Min: " << min_success_rate << std::endl;
    +
    +
    if (avg_success_rate < 0.90) {
    +
    std::cout << std::endl
    +
    << "WARNING: THIS SETUP IS PROBABLY NOT SUFFICIENT FOR FCI!" << std::endl;
    +
    std::cout << "PLEASE TRY OUT A DIFFERENT PC / NIC" << std::endl;
    +
    } else if (avg_success_rate < 0.95) {
    +
    std::cout << std::endl << "WARNING: MANY PACKETS GOT LOST!" << std::endl;
    +
    std::cout << "PLEASE INSPECT YOUR SETUP AND FOLLOW ADVICE ON" << std::endl
    +
    << "https://frankaemika.github.io/docs/troubleshooting.html" << std::endl;
    +
    }
    +
    std::cout << "#######################################################" << std::endl << std::endl;
    +
    +
    return 0;
    +
    }
    +
    Implements the ActiveControlBase abstract class.
    +
    Contains the franka::ActiveTorqueControl type.
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    uint64_t toMSec() const noexcept
    Returns the stored duration in .
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    virtual std::unique_ptr< ActiveControlBase > startTorqueControl()
    Starts a new torque controller.
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Contains the franka::Duration type.
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    double control_command_success_rate
    Percentage of the last 100 control commands that were successfully received by the robot.
    Definition: robot_state.h:388
    +
    + + + + diff --git a/0.13.6/control__tools_8h.html b/0.13.6/control__tools_8h.html new file mode 100644 index 00000000..c760998b --- /dev/null +++ b/0.13.6/control__tools_8h.html @@ -0,0 +1,370 @@ + + + + + + + +libfranka: include/franka/control_tools.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    control_tools.h File Reference
    +
    +
    + +

    Contains helper functions for writing control loops. +More...

    +
    #include <algorithm>
    +#include <array>
    +#include <cmath>
    +#include <stdexcept>
    +#include <string>
    +
    +Include dependency graph for control_tools.h:
    +
    +
    + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool franka::isValidElbow (const std::array< double, 2 > &elbow) noexcept
     Determines whether the given elbow configuration is valid or not. More...
     
    bool franka::isHomogeneousTransformation (const std::array< double, 16 > &transform) noexcept
     Determines whether the given array represents a valid homogeneous transformation matrix. More...
     
    bool franka::hasRealtimeKernel ()
     Determines whether the current OS kernel is a realtime kernel. More...
     
    bool franka::setCurrentThreadToHighestSchedulerPriority (std::string *error_message)
     Sets the current thread to the highest possible scheduler priority. More...
     
    template<size_t N>
    void franka::checkFinite (const std::array< double, N > &array)
     Checks if all elements of an array of the size N have a finite value. More...
     
    void franka::checkMatrix (const std::array< double, 16 > &transform)
     Checks if all elements of the transformation matrix are finite and if it is a homogeneous transformation. More...
     
    void franka::checkElbow (const std::array< double, 2 > &elbow)
     Checks if all elements of the elbow vector are finite and if the elbow configuration is valid. More...
     
    +

    Detailed Description

    +

    Contains helper functions for writing control loops.

    +

    Function Documentation

    + +

    ◆ checkElbow()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void franka::checkElbow (const std::array< double, 2 > & elbow)
    +
    +inline
    +
    + +

    Checks if all elements of the elbow vector are finite and if the elbow configuration is valid.

    +
    Parameters
    + + +
    elbowthe elbow vector to check
    +
    +
    + +
    +
    + +

    ◆ checkFinite()

    + +
    +
    +
    +template<size_t N>
    + + + + + +
    + + + + + + + + +
    void franka::checkFinite (const std::array< double, N > & array)
    +
    +inline
    +
    + +

    Checks if all elements of an array of the size N have a finite value.

    +
    Template Parameters
    + + +
    Nthe size of the array
    +
    +
    +
    Parameters
    + + +
    arraythe array to be checked
    +
    +
    + +
    +
    + +

    ◆ checkMatrix()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void franka::checkMatrix (const std::array< double, 16 > & transform)
    +
    +inline
    +
    + +

    Checks if all elements of the transformation matrix are finite and if it is a homogeneous transformation.

    +
    Parameters
    + + +
    transformthe transformation matrix to check
    +
    +
    + +
    +
    + +

    ◆ hasRealtimeKernel()

    + +
    +
    + + + + + + + +
    bool franka::hasRealtimeKernel ()
    +
    + +

    Determines whether the current OS kernel is a realtime kernel.

    +

    On Linux, this checks for the existence of /sys/kernel/realtime. On Windows, this always returns true.

    +
    Returns
    True if running a realtime kernel, false otherwise.
    + +
    +
    + +

    ◆ isHomogeneousTransformation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool franka::isHomogeneousTransformation (const std::array< double, 16 > & transform)
    +
    +inlinenoexcept
    +
    + +

    Determines whether the given array represents a valid homogeneous transformation matrix.

    +
    Parameters
    + + +
    [in]transform4x4 matrix in column-major format.
    +
    +
    +
    Returns
    True if the array represents a homogeneous transformation matrix, otherwise false.
    + +
    +
    + +

    ◆ isValidElbow()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool franka::isValidElbow (const std::array< double, 2 > & elbow)
    +
    +inlinenoexcept
    +
    + +

    Determines whether the given elbow configuration is valid or not.

    +
    Parameters
    + + +
    [in]elbowElbow configuration.
    +
    +
    +
    Returns
    True if valid, otherwise false.
    + +
    +
    + +

    ◆ setCurrentThreadToHighestSchedulerPriority()

    + +
    +
    + + + + + + + + +
    bool franka::setCurrentThreadToHighestSchedulerPriority (std::string * error_message)
    +
    + +

    Sets the current thread to the highest possible scheduler priority.

    +
    Parameters
    + + +
    [out]error_messageContains an error message if the scheduler priority cannot be set successfully.
    +
    +
    +
    Returns
    True if successful, false otherwise.
    + +
    +
    +
    + + + + diff --git a/0.13.6/control__tools_8h__incl.map b/0.13.6/control__tools_8h__incl.map new file mode 100644 index 00000000..6d2c9291 --- /dev/null +++ b/0.13.6/control__tools_8h__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/0.13.6/control__tools_8h__incl.md5 b/0.13.6/control__tools_8h__incl.md5 new file mode 100644 index 00000000..c874c351 --- /dev/null +++ b/0.13.6/control__tools_8h__incl.md5 @@ -0,0 +1 @@ +5141d7f3d139d959e1417dbec33a0159 \ No newline at end of file diff --git a/0.13.6/control__tools_8h__incl.png b/0.13.6/control__tools_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..817cdd5639f02f2daa7245d1000a371ae821966b GIT binary patch literal 10328 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 literal 0 HcmV?d00001 diff --git a/0.13.6/control__tools_8h_source.html b/0.13.6/control__tools_8h_source.html new file mode 100644 index 00000000..71e63587 --- /dev/null +++ b/0.13.6/control__tools_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +libfranka: include/franka/control_tools.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    control_tools.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <algorithm>
    +
    6 #include <array>
    +
    7 #include <cmath>
    +
    8 #include <stdexcept>
    +
    9 #include <string>
    +
    10 
    +
    16 namespace franka {
    +
    17 
    +
    25 inline bool isValidElbow(const std::array<double, 2>& elbow) noexcept {
    +
    26  return elbow[1] == -1.0 || elbow[1] == 1.0;
    +
    27 }
    +
    28 
    +
    36 inline bool isHomogeneousTransformation(const std::array<double, 16>& transform) noexcept {
    +
    37  constexpr double kOrthonormalThreshold = 1e-5;
    +
    38 
    +
    39  if (transform[3] != 0.0 || transform[7] != 0.0 || transform[11] != 0.0 || transform[15] != 1.0) {
    +
    40  return false;
    +
    41  }
    +
    42  for (size_t j = 0; j < 3; ++j) { // i..column
    +
    43  if (std::abs(std::sqrt(std::pow(transform[j * 4 + 0], 2) + std::pow(transform[j * 4 + 1], 2) +
    +
    44  std::pow(transform[j * 4 + 2], 2)) -
    +
    45  1.0) > kOrthonormalThreshold) {
    +
    46  return false;
    +
    47  }
    +
    48  }
    +
    49  for (size_t i = 0; i < 3; ++i) { // j..row
    +
    50  if (std::abs(std::sqrt(std::pow(transform[0 * 4 + i], 2) + std::pow(transform[1 * 4 + i], 2) +
    +
    51  std::pow(transform[2 * 4 + i], 2)) -
    +
    52  1.0) > kOrthonormalThreshold) {
    +
    53  return false;
    +
    54  }
    +
    55  }
    +
    56  return true;
    +
    57 }
    +
    58 
    + +
    68 
    +
    77 bool setCurrentThreadToHighestSchedulerPriority(std::string* error_message);
    +
    78 
    +
    85 template <size_t N>
    +
    86 inline void checkFinite(const std::array<double, N>& array) {
    +
    87  if (!std::all_of(array.begin(), array.end(),
    +
    88  [](double array_element) { return std::isfinite(array_element); })) {
    +
    89  throw std::invalid_argument("Commanding value is infinite or NaN.");
    +
    90  }
    +
    91 }
    +
    92 
    +
    99 inline void checkMatrix(const std::array<double, 16>& transform) {
    +
    100  checkFinite(transform);
    +
    101  if (!isHomogeneousTransformation(transform)) {
    +
    102  throw std::invalid_argument(
    +
    103  "libfranka: Attempt to set invalid transformation in motion generator. Has to be column "
    +
    104  "major!");
    +
    105  }
    +
    106 }
    +
    107 
    +
    113 inline void checkElbow(const std::array<double, 2>& elbow) {
    +
    114  checkFinite(elbow);
    +
    115  if (!isValidElbow(elbow)) {
    +
    116  throw std::invalid_argument(
    +
    117  "Invalid elbow configuration given! Only +1 or -1 are allowed for the sign of the 4th "
    +
    118  "joint.");
    +
    119  }
    +
    120 }
    +
    121 
    +
    122 } // namespace franka
    +
    bool isValidElbow(const std::array< double, 2 > &elbow) noexcept
    Determines whether the given elbow configuration is valid or not.
    Definition: control_tools.h:25
    +
    bool setCurrentThreadToHighestSchedulerPriority(std::string *error_message)
    Sets the current thread to the highest possible scheduler priority.
    +
    void checkFinite(const std::array< double, N > &array)
    Checks if all elements of an array of the size N have a finite value.
    Definition: control_tools.h:86
    +
    void checkMatrix(const std::array< double, 16 > &transform)
    Checks if all elements of the transformation matrix are finite and if it is a homogeneous transformat...
    Definition: control_tools.h:99
    +
    bool hasRealtimeKernel()
    Determines whether the current OS kernel is a realtime kernel.
    +
    bool isHomogeneousTransformation(const std::array< double, 16 > &transform) noexcept
    Determines whether the given array represents a valid homogeneous transformation matrix.
    Definition: control_tools.h:36
    +
    void checkElbow(const std::array< double, 2 > &elbow)
    Checks if all elements of the elbow vector are finite and if the elbow configuration is valid.
    Definition: control_tools.h:113
    +
    + + + + diff --git a/0.13.6/control__types_8h.html b/0.13.6/control__types_8h.html new file mode 100644 index 00000000..5996bbb3 --- /dev/null +++ b/0.13.6/control__types_8h.html @@ -0,0 +1,392 @@ + + + + + + + +libfranka: include/franka/control_types.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    control_types.h File Reference
    +
    +
    + +

    Contains helper types for returning motion generation and joint-level torque commands. +More...

    +
    #include <array>
    +#include <cmath>
    +#include <initializer_list>
    +
    +Include dependency graph for control_types.h:
    +
    +
    + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  franka::Finishable
     Helper type for control and motion generation loops. More...
     
    class  franka::Torques
     Stores joint-level torque commands without gravity and friction. More...
     
    class  franka::JointPositions
     Stores values for joint position motion generation. More...
     
    class  franka::JointVelocities
     Stores values for joint velocity motion generation. More...
     
    class  franka::CartesianPose
     Stores values for Cartesian pose motion generation. More...
     
    class  franka::CartesianVelocities
     Stores values for Cartesian velocity motion generation. More...
     
    + + + + + + + +

    +Enumerations

    enum class  franka::ControllerMode { kJointImpedance +, kCartesianImpedance + }
     Available controller modes for a franka::Robot.
     
    enum class  franka::RealtimeConfig { kEnforce +, kIgnore + }
     Used to decide whether to enforce realtime mode for a control loop thread. More...
     
    + + + + + + + + + + + + + + + + +

    +Functions

    Torques franka::MotionFinished (Torques command) noexcept
     Helper method to indicate that a motion should stop after processing the given command. More...
     
    JointPositions franka::MotionFinished (JointPositions command) noexcept
     Helper method to indicate that a motion should stop after processing the given command. More...
     
    JointVelocities franka::MotionFinished (JointVelocities command) noexcept
     Helper method to indicate that a motion should stop after processing the given command. More...
     
    CartesianPose franka::MotionFinished (CartesianPose command) noexcept
     Helper method to indicate that a motion should stop after processing the given command. More...
     
    CartesianVelocities franka::MotionFinished (CartesianVelocities command) noexcept
     Helper method to indicate that a motion should stop after processing the given command. More...
     
    +

    Detailed Description

    +

    Contains helper types for returning motion generation and joint-level torque commands.

    +

    Enumeration Type Documentation

    + +

    ◆ RealtimeConfig

    + +
    +
    + + + + + +
    + + + + +
    enum franka::RealtimeConfig
    +
    +strong
    +
    + +

    Used to decide whether to enforce realtime mode for a control loop thread.

    +
    See also
    Robot::Robot
    + +
    +
    +

    Function Documentation

    + +

    ◆ MotionFinished() [1/5]

    + +
    +
    + + + + + +
    + + + + + + + + +
    CartesianPose franka::MotionFinished (CartesianPose command)
    +
    +inlinenoexcept
    +
    + +

    Helper method to indicate that a motion should stop after processing the given command.

    +
    Parameters
    + + +
    [in]commandLast command to be executed before the motion terminates.
    +
    +
    +
    Returns
    Command with motion_finished set to true.
    +
    See also
    Documentation on callbacks
    + +
    +
    + +

    ◆ MotionFinished() [2/5]

    + +
    +
    + + + + + +
    + + + + + + + + +
    CartesianVelocities franka::MotionFinished (CartesianVelocities command)
    +
    +inlinenoexcept
    +
    + +

    Helper method to indicate that a motion should stop after processing the given command.

    +
    Parameters
    + + +
    [in]commandLast command to be executed before the motion terminates.
    +
    +
    +
    Returns
    Command with motion_finished set to true.
    +
    See also
    Documentation on callbacks
    + +
    +
    + +

    ◆ MotionFinished() [3/5]

    + +
    +
    + + + + + +
    + + + + + + + + +
    JointPositions franka::MotionFinished (JointPositions command)
    +
    +inlinenoexcept
    +
    + +

    Helper method to indicate that a motion should stop after processing the given command.

    +
    Parameters
    + + +
    [in]commandLast command to be executed before the motion terminates.
    +
    +
    +
    Returns
    Command with motion_finished set to true.
    +
    See also
    Documentation on callbacks
    + +
    +
    + +

    ◆ MotionFinished() [4/5]

    + +
    +
    + + + + + +
    + + + + + + + + +
    JointVelocities franka::MotionFinished (JointVelocities command)
    +
    +inlinenoexcept
    +
    + +

    Helper method to indicate that a motion should stop after processing the given command.

    +
    Parameters
    + + +
    [in]commandLast command to be executed before the motion terminates.
    +
    +
    +
    Returns
    Command with motion_finished set to true.
    +
    See also
    Documentation on callbacks
    + +
    +
    + +

    ◆ MotionFinished() [5/5]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Torques franka::MotionFinished (Torques command)
    +
    +inlinenoexcept
    +
    +
    +
    + + + + diff --git a/0.13.6/control__types_8h__dep__incl.map b/0.13.6/control__types_8h__dep__incl.map new file mode 100644 index 00000000..5a40acb1 --- /dev/null +++ b/0.13.6/control__types_8h__dep__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/0.13.6/control__types_8h__dep__incl.md5 b/0.13.6/control__types_8h__dep__incl.md5 new file mode 100644 index 00000000..29a46de0 --- /dev/null +++ b/0.13.6/control__types_8h__dep__incl.md5 @@ -0,0 +1 @@ +c0026db29db1d1ba723208a8d80a703d \ No newline at end of file diff --git a/0.13.6/control__types_8h__dep__incl.png b/0.13.6/control__types_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5f50923f6b023337bcf9d073af68e4ffa3fd5c GIT binary patch literal 39196 zcmagG1ys~;_&qo(B_SXwEh61WC?!a@(w)*N-57|pfYKq|-HjsMAYCFzhjha}eE<8~ z-Lr9ax)E&!VJb3T+$CvW*@(K#~$S4trM5O)$zwag0)x11B z68y--64KJrO-)Va*$9MRDw6mA$Ej`wQM73B*v(z64yC_k)7RIxGcp>UnBZ&q+hwws z`XYdtg=M@*mp{kvx^-wM;yKlYJAdy%eK9)%VUM}miTSZ@xi6ux;N~%SZ&=yV($dz} zRz>AYNeTOuCfpJ`LE_r2R%$-J*ipvh=Ibkde*XGz-=1q~K4=RHpfHw-fAi)|P;fA5 zWENZ{>GPpGHKG<47P7LzK|$z&Vt@Yr6&FO&g2nMm`2LrLow-hb?v0bvuaS|S?(Xis zK5}l$Uq@Thm6esaNES9Wjb5jF`Rc`5T3R8Yp-D+e$VfV1eV(aVcVHAS#adA&gdt=3e2|1$etgJAwu;itsA4W)xWXVsL8V7v&f`6%A ztk*a^G&EW7YUknc>>X8UX=%P%p;og`V|sdeSeSyEnwp;8-1cn!T_jO>1Iqh|$jGva z3Y|(z0+jb_W_ZNUo;|y`xS+@HzPdd3_V)I)`G9-p{r7{qEivld&B^kexyBbbCSwJf z+Ev!L1O!`FTRuKM?(Xg)|2^P7zkmNOSS7BkTs}Sq3t=TPbSHLUZ6q6Pi;j-|^5x50 zw{E%a%(WS?!;`+gzPE4R-oJkzj87@#H8?s-E@cJBdn6I^>C-238=J%ZePaRN)xp&M z{{ARBMOb_NW}n&VX?_}-4|?_u9*5myV`H72tG{xU@zGy{=|ip$m%8wTg@s?ge$7m1 zWoa2ih4xkE@@OlexOk_=VR5-XX?lQm&{tJozZotgS2^2uzKJ}zjpCV8PO-!)2M*Gj z^Yrn~JR21i4he}&s?zN{ckbN24ga5Ooi}-(clY!VvFTYG8V+q#ZBCS?7vJ0@KUlj3 z)5XO_Mn(qK4ugo5=6;~Fv-9ZaC|Ki-qhnN56do>aX;l@4LEHXfM|f{lhDSzbQk<83W*+ci>E zRb@VEPC;fSq$?^N{pivA(&(nKx$&xlc@hW=I=+!Rv4%fC;U1vE#iPA*0+$^fH7uQQSZu$v zRp#dAhWigedBCEgqC$mcWM($*y#RI&#G`BSx%8N-un-j$ZRDY6VCZs7{PM+Vf4OgX zc=+hZ1xe)BuU}`ANN3^Ul){8WL_0oT3yUR)Ilv8k=8o3aEy?cDv9QQrzm$;p*i;Hm za9Pk;Y_rzPjX?ZXP&z<3Ny*A8=l-G;_8Dvr_iP&&7&vjEyB~OfYTO=TVP|*q^qHUD z#vtiW1NP(XSv)+vjiG)BsDp!pGcAloM%5QDTHoG5_44+HTR=ueHa0R!7WTdB!I~^F zY)#;`bJ>|ACnlz6WSmlb6hho+Tc43Z<1d<9RFp-;`uFeOgU~Ir(OE_2!-;5-3KRr_ z44c*NmJ_TYgd&BIS4~Y#tQfVR*9kidOJN5mIA>UJu$6^HZeAXkFID)d?F=6`ccpT+ z0&d{XprD{&A~sHvU*qH0n3&8=OdG4KCufKG)zz-*>O}sc?w4nW&x?|roty^EpBNe% zLWCwJCg$YiytPKV7qGv#_ex1=qSlcvLTWQVVw=Nb_6WR0Aw}qNsVnNh$`?!?C+O*N zO=l_*N}{TvA(g7+b2Un(bq9e6Llwt<9-5t<{qEhn{QQj|0;avaJxC!##<%F`vfJAw zAjM&0W50OuqJ3XTNXW*f?}cl7zgce*AbB6LY-3 zG5{tp)LC5%sHmujiW-4chQ#~+{rk|65R{sS#F!s_s()44OxyG66o(#sf>1d>IYC25 zFVb(G>*}&NSRJCEptvk{Z3`lJ@ZiDn@-kTC>a@Cf`o?71M#^XX`45KrOa ze0XgHNuBpSm*7pk`i%}w#lA^KPJS2Z_7nre?KC8(n^%eu;@H2b6%-U492{;65W?@? z|I|9DVJ$2W7O-ltg7EnA^(zZAGvrU#zug39c97Z0$jEHx8WP1t>J2{Hq%Tt}f4`%?JE01)o0;wuh4T^z=0QUWc_VxVgD~ z`0(N6<(-eM`# ztBQ&zDDP`scamdcHNs5~A+H=9m_N}H75xFey*<|`TWk#%S%P2FfLzm=^D-SB1A_q{ zeK8J#Wwy?liJyPEyF2eZ64vYFU`^S|%F4vVL|#4=DqcoLMpKiIfq?-SPg1gDyjZ`n zv9Z3cZm!9jl!Qb}Pfvk1Dp$qQ%#7}c_$ydR zRYe6{K?3JzOUv)xI4%+r5>8Ie*_evb(z{q#ne&a#tAh{E+8D60!%2BFX3(C{HO^`G_isYVPgxIYEt4v!X#jLb~% zUevOsk!(dzZ=okooTTueuQIr6?+(X8AatM+y!ma942zG0B+}%aPaE+J2MHGs52^v$ zJ2dpY-Tg%zr0)y%)YR<1Zr)pUlL>K)@aqP1^P`iqj%m$yZ5q`NpP$}h0dk=1ntlf#RnQkun; zK7VL^>2vA(QC>3Ox$z<~I*YTC{r%(KULJE5#;hu} zoHWszOn>a)ObZLuz1>osR9YIb{_e=Mp$r_Pg%!HsVAr4^m!LprbaWS^SRV>`4dSR2 z;k5h>VQ0*vY>$sJ;yEhl@2L35+6R?z8DR}Q-=^K1+n_YoAHz&ctN{Y|(&P?dFbC%= z0ax3vH8qgR@S_$li)LoJ|NX0&uI8GWdWMT6f-@CHPFU}%{f#Uid%P%fdzLhmN=gz{ z(OXbompoK7^)A}Ky!@W^Rk^WWUq*%_DY<20pBk>OYaMOY?jKkXzB}+GBsMlm`k0C)vIH%*U>~f3&2f zUpkE(Wx~3wzFe-fVz8U@T3K9N+oULiAMYUiMEueM>b=g@ym#i#V`E*##Vdn?pedYkapB6$__^9Fuh6euwF!CoAk|~6 zkn3Pqv$M6eE=kqcXwG()vGVB9UblY3i3BD z3bp%UQy7JtE%%p8*z|qa6;2JQijOZyO-+l4 zNDJ$y(bFTQ0vl?5TU|hBVIjZ1I^RCp3c;q7X%8bWbt}zEN~($+o}dVh=u+Y49#~#> z!NvXl`?sp&O5V4~qiQmti=_h#(c%~bH+KiO221l*t>tWziq+NX>FW8--Q1rGCBwsi za&tXTPX=rEzvTzNIeW6O)a8bWB1@}m&u6Wm;Fpv0{P;D*#e5S>Q22n)*@2^`W@~4} z4-^z-Oe})FUX_f@wwHle2!!DCq1FWU_mh)di}e*x=Q;0z*&ur- zmzOhWIb*-0q7;s{p7To2$x%>N-d<=WzhsV!Q9r#n9sl{0?ZE?o2pewh2g=H?xwu9j zaM6}rIZGfAsNi>8L!R^j0ojk~R^$`;OxuDcnbcM>Gn&OMEE+2+_&jxESJ%@fCXszl zlx7-<*s-x~TR%S4)8nB>AtmFCt8-d|k{Yx&YwqS|A53JWkU;Bs@^5h{UHs0St&otc zw6BGYjZ9R(Q$Kw87e>C1Qs!l4WoBvVWArCxWuQ6w%P(oEPqFcg14;Qt)&(@QwEs4) zq3FCo528>|R#GB=aQcjzy0EfxWJbqklu`H2dj{g=aK{cY28Pp(aeYEu+=48;Kizhew)U=01^^uXW#7!NMZQR-_ardw2`++f3=e{?pM>5h}LONB>5T<0A7v zKRNQ%)>w3(MUmQO1_pVQd%9-S*2c%ggogIzenhz+C)Z}gfr>p5o3Xk| zXmV0o$ib+s>~%Tu03O<;=W+WJ-s+t>n^N1Phx~dh)Dh408X2i@${_vZa~mr8h3V2u@ur}Ni8(W>0cKhDFGx#xX zFIn|__99F))x)D*Oe}+vuf(K}#JhbzFi@YIjCHnVH@uXCPA+nAW@c`Ymf>S!BBiaZ ztB^ONvpu`LYc)RMve}!eR8_UH&!0a>eg1s8t}0?ir>X0G(co^myllCtJ$wtHfrBq- zy>__q!*L~;84bDxlKWVuf{fm`<0 zGA}aX;vv1qgtR)*-?_$PnD>27UvW5Qy-QDz$o%VMdrq5^XQ|bA_DWTCF_iTBIi&`Y z2-xcKl2S~vxouGuo1)@tgkg9o3JNuE_1;2jIFhJ>sp;A$T+xGyUswN|YRY)k|d8dLbQ_Dh0xv4yOijDQJ%#3dv*ofb}kYd(JNTk$@ zX!Pq2pjGia*G%9|2qEXcy`{7&CEexf)R31$@4YqUVOzto~M}~I6Y(NMD%bS6*yV-qzrullz{|)L}?U4Wl z@VK+XU*EoUL`E8kh`6Aj1ewzrB@YjuWh<5&84EXgYtt|?vYYj*aB&eZF*!ecc=G91 zOX#;%5xh7#ENn%77iI`U+xak8`#~a{-{SoEvVL$_9ck&LY_s0|6@43ey185q~kHtkry|S_x$HvyPvbvQn5iP24P>74UtIK0_^t>3BgulzCT{iln zmp2E*e*1ZA0au>dxvnO*e9bGWB2U{kZdH6SH2vdO5F_)&T;9Ljzh6~TH-92*^S z$^L$QO1zd|NB-FvYh(;%s0%gW?dmM->anqYJi0$@I#R#JqOmb6Ql6=jY>BPr^p;S>*Uo0<=5Hb(4bH<}z`XGKAC>^k?zJ9&9yQpY4+a1dzKh|NkusNy2A^xl7 zd*PZ~RFdxYx(6LozSp6pH#Rnttes$S5J$rixTO#znklSGY&kuOZ znb&y2J~))Z{Tas|6da=F+d8j3&*RR{l)qh}_!&PR;@VtQHatJ?aB+F%ve{CsZHBfo z;0eq3QblzX9|uP^rT7W^V3-x%)3q?40d404G1!;%Kjql=OUP&S$yF8^horsi~!KjX8J@ zqiH= z4rN!DG!pV;E5#f(BuT~PDDnqQYF#j?@H$-Sami5gjDr)OvS?`J( zU{YV-oNxY=5Kwvf7(AemfM|ScmNeGfs)?X*weA1r!kQat95$DN{IJ<+T;9A zb(Ui!K-P~WlXdE&IUTb^l|ElWIe|2W9T%6muwZe#-MF)v5u1=dIcbp)&)7=!8NvPl zU$B`467EPA>EFLUjXR<>HFML+14bd3$=3E)IC-mcHaGXMNJCtAs{CAC{HCVs(LQX# z5c=hdmxaadW7!Ib3)de=cPkukwXl3!Jr#WU(oR4ijesC?AVr^r4mBW89|G?wahzPE z3(Mbs3mxf_!4v}KR@S{+`(Ll3?dJ3B=6%Q?#6g-E9#1hc%eFC2e@N95?81uRBf}TG zBTntSIqA6a{XKR9Ph4GHe}Jd!IV#+0U|wFkpI-nN^ZmQc%*?hSg`W!a`0M%V$Z)5M z$tD0AO-$qzYZ`w`4cI`XNpk_zDkC z)z+NNt^Kd}M8%PJkG94mB8s7=Ra7jg7msO|7@+7pK{DtR8QQl(5hL*7MGLxr^VJ?`FYe+=6l!JG8~NY!Dnp#$DIFXXWn|bM zt`D}iS6PjZwFaKO1sjUEa&z~g-V^u~=x%13bsxt7Bm45|C-fJ*cBasLR#v&hC*(hU zM$(sfH|i~dofr=DXSV*2^9E};1&hbx$Mg_PvI1W$sQ-;Jvgga&6wr8AURX+=O z_N)_|!VB%Lba&S&hxgfuYQ7T$p@AA3!UqFiP_V7tXQt^gt7tm|gNRH_+%V_wjZ=wS z*VWMzvC)zXlJGjDEiJSjX=&|&yL%pdPfAal`?tT(tiisR;=9~ZGl9T_KK6R?7sHQ* zRz)7`SZIa5rEn1f%b1y&*^Aj;W;@4xa**qDxXzH5x9KV)r>Ll?rbf7h-y9%++!!B! zl#}!0;-dYrEIuYy=1^EG4`im|{QT*SV(35Z=HxIiWb^YZpKvKVzu_DkP5QayhA5#V z`8EW6Z=BrjzfX~0XPvjSy4i@T%FADzdm9rpG#I%wZ=q=n81`xGLC;P)16DP!Y}vezq+af3rMHD&jX1v>jn#5-{z* z5G8}KK+uF+<(J@h$$|MlR|5FoSUCwpJN zekI1ts;YAF>v45**>y8m@IY5b~u{7mv=Jx z$i}*5E@4xTqi9d3+tI@~&_G&C=)ramsrcjE5o z$PXpnfU$_l1A02(!_=c$62My+ZAtNkd3m9G=}#7{FD;Eop{!ghe!ww^j)=uR5+r=c zCVbWzk!d%7R-l#XdFJ#kdh81FZD?rWjmf2J@>g#V-?7341qIr-Z;#|+sq@YsqhMiS zfdeWlD|2v^0tXC4(@2V)rR7wUcm2C}KLA-zN=%fZc@-{U^7=L2{rjuo!1J&ZV@61c z;bf$x{g|54l9Q7Y7k^Ak`?1tZR<;Ld{l7~~5+THfHa5CC7xSdNM#jb0IynTrd3asPg6Qs(i; zCS@hV2^}0tJ3IfqdBb@R!;{R1s2FS67jdkt&SvI*Ue0OG^tC=qOTCAJWj!K5_^C{+Rif~lz~;6OH;fkCaaTTXoH$jrh5tdy*b3>XuhuMKQ$Y_RD!HPqFeO;_8M zoAw!5o4R@ z8~mJ~8lC)h4k;}yESjCx+78y{qUh?~-DeB)EJ?PxZ~IZ(GI%H?x;?X<>3=K7!GZJs z{LfRDP2x+A%bg!(Wt?XzKTc0iFE2Xun%#gc2e3OYFHKnS+OZ)k>toY%clW24?&$v1 zw6xK2anky^pFb-pE8`Vbvr(K;{uJhSUjJ40y61*?-v^o%J`aRbvvr0iX1l4+`4N`L z=bicHkr=@FxZY6-`&@Jm4D9Ir6#(+DI4yhJ;Bql94fUvzf}^gux_CBxNGP2f2r>X( ze4=-nS5IdfzdRMkCT~1=seYXNq-(Ti!}j&#h^HIKeqA+x_SB%ScqIAf_HAo&vcW_Y zomYFpjw*N2(W%jf$HvrDR6evW(8`}}S=@$j`rz;X0E<)W-l;sibiBVgjLdye0KJ$_|q=p!kau3p@rqr(i;-M4JlLFi(gow*=C5gR4yA0!H= z5aawCocHaD=QdXpXapuLTZ#TanCzUIp1zZhPfcBYgtD`{J5q|KJ>1{l{{R(aLmJFg z@bEOWGB$osB?T$qQlywY_WHm+FE3B4)Tj-#C5()WIV$U*tLQY@W8@`_l^YHJt8BV8pO4G2I@{|=0Bfo3@^8(VQ@!HMJ_Y-9J9j z@KI}1Q`+=iqmf1xrO!Lib~X4k4vf3Lgr-Ha{NndLwiXV)+SR*vrJvdV{{Hq(@OTlo z7{6@FkJi>~`2S4XyxNg zK;h+aXxYBcYdfR#>Q%h3Z&OCb(paJPc!6f?zyQD?)J#l0d=KZb-Q7=H1F(xVN=4=5 ztU<#xJ3b-IOz62b{1^%p9FKw`S&wv$PQt__@j-@oLGtB`|Ru$&^=L8Q&R|fJOSm0Pc(EJ-g`@d-@X|X zyV{i!>FLensn+G@CU0-6xo$U%jU8d2xlR1~DH^kcAV$J0oW4vXe6e?y*3fLjy}G;P$!DSO7e9G*5Nbj_wMN7?YNh^Ud0D=8IvHk(Q>8 zF%BP$jfQcWR~^7V0l3v+@cD29i`SZ+kbu1C?dC0FwM6%<6`(J6=6wf7Mm+c!DO~VL zN%=o-U@#Lu0#An;R$F@td@xA%dScipv#bqbOLm%2i9h(CCMB(8WqUs3TMhU?v$lb% zQ+JS7zCSKlgfQT4<-2=F>(#40m+gkXzYU;|XPDB|5ZBYA0DXvw5(g-;5|fgyPgf`n z4HrO6g@l4~Pm-P8Yr=K@j^L+Y4Cn{1_6HJw|6Y0fHk?h@qttA`OIzE97V`kTMQNcT zZDp||veK$pLpvWpZQ?Cv12oWC%>a$Rg^%#NCgzrz=;>)68d^Qs&4z|*Ajxz4kCCl$ z`djD_Q9h)z+7S?p7U_9Q0|E0hklrFhNB6t3 zml_(GoBR9QUh}!%aeJumhY!D_O@T>|1k^@Ml3!B7Hm{g&VOO%sCKxblF@AhR>Llk77qI)<>=b%4mpAjUx6M#qhbhxhSh;~Zkx$lI- ze5--m>50kd>EDynzoi;Y@$qPk&g@*z?xM*puf*6{%MtH=5JbZmz`-4AH#p&l)x(Z_ zawbd?`jHCC)A;b-SgY}B$E~vRa?(AX08(%I72sQob!DGA2iYH5b^~7p5J+gN!w-Mt zmhA~ov1Nb_3JVls6BMB;vzZq0var}tMKP8Wk%YQz>nK<-FwmP5PHD!9{hw1@=#e1f zS2Zn}?!L#%OE|JJS~)66BId-Hf0i-|GM*UO+nAcD%-0?E4LRh+PvtzsnhxIF{P^k9 zyRorbSl_Fi^Vc(^jb0?*R0n8DUd%C%sHpK!2wxol$r*_Ec%k2=1%0As6=X&wC44+@ zGVJ9-xF{*7Q_4hV4>xitD2CA9;S-R*9mm7eQdJ%4iKztyA(*HZ0BK;!(fwsIhe0~9 z@ZEO8VDs7wbYVRetICNvBTuhaW2 zt#`~gJ=B$yyjKTX=@f-F))n>+Du#Z2dBKnSThID};qa(wdSZf*qz4ezLQb-!E}yV=Xg7|+fyUz>=_ z%iF-U-p?Ir^MCL{EsTQYKH<^8)nzbH58k>-aPj>~`IrQX!nBIf4PNfL)|)PjUrmi2 zyCA18wvco_!f4=%gTta?ol0P2cYLUr$ z&uNucg@43R{HwRNsazRInHykVeM0hPbK=d@r-8ycxDgW)sY+{DK*@Ps>+J_%-5dOs zJB;)rc{Kl!gIF%S@2A0MAlU&(6A(16s5qLQNEC1m`utV3zey1FBLPM6*&qM&xyCU= z!(vPWXvIpi>Efa%<~r`#ml&e#JVrdy`lPsO zCa3ol}BB86@#U!+Mz&Qc$flrxodE#ISi*aC%3w(@#-spq|$kF{Q z?oJ{{On7WgjBJc61Lg%#+iRH(Bm`eZh-=FMwRw=S%bTpd3O+f4mbZmzm#n`}A{# zz;oaT^&0FGo+>B%G(jiS$~VtU-)Ux^gFNAvpMGBFcIK+AM?4A_ z_F;Yy*^Vlur6s`FJqaLnK&y-M%U!q8l$f|@s#BBhwkAti;gpyCN$1)M3V(Xz%p8}I z*4NMK>*fG=tgoXNzGh>6;$CK=G4ZjpQyxHV35kG)#_P;uUsR~YlYa}pGQD7AB25vR z#X6R`czWhv2yFPa;@&@l7}g}`gH;@zK*UUXQ?gidrRTos2uF3B)0%dmOEeKG}m{o**V`VK5q}oP|DevBfv#_ z+STO_pfONWK&t$6Qw7q?!oqbZ19rL@rL3Y~8)g^X+ zzv1zY9cYat`7x%`Us(hbrJVjt%{aH9cqX8Cc;+mr^6Hk$mw2s`*Rp)r*gSkEJ8@hD z!^2IJlS%1A<^lqITwGt7)W@(E>e|CyPiyCy?gePqtIZGCnHPP#BqRyt`7~4th^$^y z?<1Tt{ifcnRVpS%nZ?~aV3n$>M1_;S*NOmuHCaBurYHAGi5R&2!JlGxx5WHLO5}$| zhKCJJoPaI*`baW5?IxfbPJRsR_!Pe=l1~v5VznjOe{`$r1+B7TQjoBFB)eVm`tD*+ zTbuvt!1>u6_Fd`7$osM~Z;S;_SG2VG=@eaF;E=pKD8OVVmUBBnsX7k>NXO$pHuNZp zE)E!~$24Mq5GBOrLZ!mPTbyee@b~A2wKFyr{ePA?@SW zJCtGjw{VacmRTFEM2OJoj1egn3h`-#fZ z)Lp-*sQsgzW~d&G9+g+gg8Q|#=twU<2?iw>>oYC)@q4U(p6&i>Er5l!;kHZ7%e<*7 zBO~PPrQOba%L!Zq8CitB{Z0WJ>-K(;ZgocpZlk?nW!YX$3K29MAH7%);3#tP*si`G z15jmCl}a@Vva%B6;({74C?OaDY2XZm7n4HLJ6!Y zhOD5+0mHq3$@+1RwP8&ipHu9Mr$_W2Jk~X88X9<%&7?;s55+Qv-@NgG34oISD5E@T zcvO60vDMl6rTLRsAB=qx`VBSh!*8BVY4Rz(d|3$f!l{Cbjg9s3 zo#6J~EPEZJB3nl=da| zDc0ef`<%iRzMB|qb!wi&tu-~(Iau)*)E+oOjaTyl`-S9OG^UU z+ANeQ{`c=wo73I44#Wyd4kayKSymJBTt?4!|Mo8c)ScPsXI5ik%K;)7={t@(Gb?+0 zA77?_I6Tabz47q;z`(m{NwyQX|7mMrrUWH_tId`Hjz;5Z*FZ5R$K5*n@874i$RW#G zEVh&O_1WO!Dww0*D#&kawAz`Ag}ef6UQtnWfup5}`nd0|5sUixsX3~Mq=N(b+t2b; zCL`xU`FY*H{}Vx&9edl_Yzg>YoyKtuWXVN5a~pJ7?oHif#^$5QClXBH4fwls;dVu) zu#bsB5}K8|u()K>@ZXq%2xernny9COz4 zRbPU9wRK#u3t?ELY2RxK3TqJSRlG-x4G%t_s$gJ#w3q-=A3{nptFFj$V8}p~`J5kZ zV||sX*+=(e@AceBb_xc1o@5w44|}YUX%?qlGUIvJ--#E{z%_Ya)6y*c-pvE;R(EHJ z7(cGT%L46#ncDsK(Zl}fYN2$=*1!!zkyIsB)yA2b_6g#X2OETf zvN6d-czAwMIISy}=SEf=Q6SJ%jHC94gEQX0|E9|NZo)I?%}iOV$B!q!IhvcA=K8no znhofD{n`O_BndeEtgPV<@BX4Z%gC?f7S;tO<~in;c>+r>EVz_CJ;$LJf*FDwJ_T(`(TKV@m9P5p>BmHfkv_Kk+tM_Q^=TIOtOW`>oH&d@aL8JI8O$Qv}F zf`Z2J@l!WEaRlZq@?coh=)|uP58Q#7g1ajyVhxHMp7Zm23>~)wKgM%SY3bRi$`~ul zcs5-veovnBP+KyBL(}8!&csASRTFFLt4@=3kjH?8%gam6$7d8&TpvFM!O#A3ZfTpi zBFb5#Znh#FJwqrKdfE73te*?DAEz3#2k5TW*U#U*S8t{7ZCx47zs+Co_~5}@PA?ro zqodwc+-h7eI`V$Ai;ZBy-2N-wSpnmZ1EHj0H%inb|2shGL-0cmla|(Jz|V`1XP!Rv z203&9DiJtmO0fWNF7v{7(DTL#*&f@=mNE0ECLh?KGs=IB`7wZ7Ml z%~!)u-3G&)vqnhBjEyrvw*+$g1xP5kNL_t}a#EdP;RACOYbb1Nwqpf>5)wfm?a?@D zN5e!hwiCt+R~K~qw-82N4Pqx0q=_HywyZyc%sfm7gi4&&tnMFl^!2-7*@(T&&=LQO% z31w&dI)Yq_As3(q|1PE)tR4cvzkjiSX%Uy?-&m6e*XZy#Vm1Tz8NzomUy+*lKIq_p zwKp}33HZQAOv;o>Zf5S}{8B|l;Koz6+J+Y;9ofw11R?R;w=VWm37#c7LwKa;4xn_NnRy{9TEI7sZT1h;QeVED zU(_;9i6F|qe&xP69QTKIo0RwJ<*PqAZ*9oPL_xsKp2)ytaNzB;OC2MZm6O{=Lc$2z zJT5cF5|#OtKY!{PJ=52eE6-1uKUi4R-hz9)x+(=#X0qV>okhbZc5_3M<#Zy&indV+ z+O=<9f6B>e=}S;B?szkmIIUhxi;5!D-@O-*Pf(CvSh&A6opy4v*%8jg#P|uSIxVe? zTSH!H>HQ6-L};G`1=6H56ciP$_>?<$HHua>>kb-1deLHq>`!n43oR}6V%Ungc-3F< zV;Cd@@v2@7a4C)VVP1MHalY3)X6nwo)xjb5Tz$3k81oUS$CuFyykNkeZT}dfGOiGc=W7hu*nyJ;_z27yqqeB}S&|m+B4PL)ZKxRmcDItm4 zL|h}~Bfl-(PL4tLlZERlYCHYW^Yd8u(vZN`mR z#XjiE$_g>8LBO>9hAk%$3KTGJZ)vAgJSpCq-W4<2*q)8Z%S*-}N)~e6)-*L`z%v?@ zv{#UGO5l-qIo-ohP#6ats+_L`Og#Qy>y|Nk#}F?8zCe?Y--Ygh+W*XhYeZ_dZJ zA5PB-*5wCpZZ#rkw~Sm1R1d6Y+}_J&wfr+`H5+4Y{@Y{b_~Q6pk$9@o@n$XFpCTpV z|Iq^A?H^s7jz&k1fB?iA#$!Uljub&hRkh`uRH9qD$4vt%!ZEM_mR3D5k*cYU1URqe zW@S|YZ4R2GtSlMe$vHV61=#5tXq2iAl^eAoKZuKv3}=18k7mZmm^V6t;rCXKkJw*y zwswCE?9Qg=6w3=Opkdl83lfrZ9vjZtiY_Do!`&b+(LDBs%^tFH7sJDQDNO^A&+F=< z0@hgDLPCCkWR8i6R8Y`Ht$6HxdEn-!${-4+e7tARqM&2_M*e{dV5QTOne($lDoo9u z2zvayaz_nO(f&%Sjaqlshh{4!Q&Z6ZMS#WSeypB@SaGGS?El{D-`lENJ+7b>x)6I| z`~&7>I(efZ&A%f08u>l;%F6Yh(9FUT+tHySI6KjbwzWn8A6@V1;pTa7Pp~883Zm-#^!Fhh zl>Ua8llQC$1Wh=Rn<4}5hDylFG7XNWymP@}hkbgEDNFZpOjOJIrx)E@>I z%BS~veXn*43igEU@Yqq|tOh4ums*<2Bi81fqbmr$(eLlWfBYEkPt<&Eit-}v5uoec z-NuGO=&Za(A3leMwlB2G&Nm;222WQytpO`i7D{R-m$2MuJ$X7f7y}r=b%r-UGUfX- z*^0U+CvF7=3P?x-o9k(qs&4FFA1_UXTc}|TAq}dk80c{+IBsgpobC@m8((Yi76mvL z|I*Uok!($91ek9Hx5=dl!Pb{uR#w8wN){+M(7c9`xtGDN3kU^M(>%!Lupf+MM*L&0 zawes~gwMWdUGdK4%79}SrT#50^%6e5kyaKsAr@vuaqFt(VP zp;1`_6llpsfs*EfR9_P#5&7)Nju}1ZAtQt*vdk(JO+2-?_2e zCPDL>05<##4GqE9BJ@hPQL_`r2g#7D2%z2UXT}jTl5lO*AJ7xhvx* z%bD;AHY7vLDV;#q6=~X=L&CdVtw{9N@IE=YuGX3G@ph?qO7g=~3>14V7XjSJIL$hj zt=Cpo&M*z%(ezpAPm+ycCEr%@L!Pa5G@C4YNV=^mDT#Wo)-Uuzz>mf%X$|-OpMW85 z#Hv2@*z2P)z)srlE$OqH~Uwz z+J%xJi(@0aE$w!+%9r1$6FsIi4UQ!a(Y*(+2UPYSgpfQ2jP{*N(Ep$43hVpN&!9vB z0@`=(p7!D<(Ob~SPu|yq4Mh}9A~z~#zUy0*QS;oN)xQ<1e|aox*uidapmw|e9KHOdaU^KOAS84QQtCHbQ)gXK0X|_bqP;PG z8{b9{i$YQlA!B&5B(CV;QJ0>+I9PQWfKNaG_@9u^1)t}UHSpz5#^1^;ZEUuz#)~+7 zOuip~8clpAUIQA{%}G`0<1i)9nNJ8?I*`7h&ABSH!Ijv*xD%M!E=%^NwzgJ`+5zN8 zp`oF${W+)OITL~y^mN|7pkx+qZo4TE{Xb~_aonPRcbxPdQazVx2z{KKjX7~Q$3b06 z_4wf6zoR1_Zf*iRJeVsjy}Sf2PeGrtHC@d_Pai_|bhxW4P;A}3N?J{g=i$S*S2YC% znD4*i1d1VvfS946u(0jtPuS&cWMo9#15zdH`6gWj1zY&42_XJ}{14G@Yj4-m)C7^x zZxD?=dD| zre&J@xi?=bQKDg8{L=U01W1#%8oxUDVhY$ljP5@?ZZ$f71e@$PXY1i^K&c}K@&dRa zkYW)z}&eU&Eg3AI>?&-x9;9D ztjhgs7exWZ0u&@fLO=v5N$F5(B2v<+bO}f|(h5k2be9MyAq@i3-3`*+-Fr;d`@ZMh z|NYojc&s0&faDbpSCp z6)i0k$5*|pyY@6(T(c^#(iS^UKvT&T>tg(+IKSDnfX0pn7BlK+PqHR3=K%E=XkkE+ zHd*c3spQh-BZ@Z`k+63xxW4e4`}eHt_LXfHi(0sj6E#mR;x&PD9uzwf`kBD~F z?fffWh4#yrs9!`_pxm>lDCgTZ7~d|CWnhD!h&KqgG%D=QPme&p0;>nA&sp@^5<%p0 zVXC8pOH2&*0YICBNREILOing(!v4^Apmcbmyr>? z2&}A9aAr%+&E>P0ZTj;Ep0(lkZvl{4fl&y+VrgmCd&~VAlPR2*^GYfzpz4VX3;PO% z`6?>=)l=hlbfOZ5FaJ5SV3NbdAN-bO&&j1h+~mEBE*Jy?lJiKnK*R+p4oF5oZc%JD z$^QH~2ogb)w43014uUQaf`vvzR9P-yIv-W-PfR+amsNiozoUgk`uBqc*|kH&(fG@o z>Uo!wSB1$uu34u+F*iRCz7XlDsW5;r25S?QF?aR;&HNEo)tz*T@((<9fDESMbR7zh zQI+k?g*(B;V=-`vO%Du)DrGxBh_%4K@4(7PO$`PM-@f^t^PHKDMMpn4z6yRM7u7Pj zFdS`d6360Ro}SUs(FT>o?MtqNr>o$8(;7jKR6}(-+Sx&QKd2ba^Y4oIyCnA*fGQ+` z=1n??OM#{LKbOeMljr}^^@b@zPC)?^oJ#i8cb)!A7M5`FpR%w;{kn3ZCT4!^;bgeI zv=4EB^#fe;h+TU+$b3l-zwUlY%FT5-J^XMCReYa8$eNbsbw1M)P7782hRz$69(L%* zG!8DdSo#*-JLNuMBn}mytDV{nok?{F^4@6%gYF&H7U3|#HD^1Wn)gS_d8D)FSQV%e ze2Z8Z?>VqG_({){R<`l*{Gy%-PM;h^PpNvP&bqEU-NnTP5hkc4Gcz%K>Rv~)F4@LB zrKQEe!_#AJGMKt_%z+7i3v$hC9(7YNPT;-*#rmLl0U=zb!NviR)YoTjTO3cHio>cE z5<>H+frF{?WDLP?cJ-_g{7=Bjf|Hy3;-3*D$H)gGoayOlLKeNR(a}8#OM6Aj)xjXs zVvdLf;n+o}KzKyN_U2|&YiqA-ERQ|&S@ZexigGu)I=st-l>oR$D4-J*&^gG4sSW%7?^)x6aism`%)YGR@}2(fq_ z_YI7V^Hhu1K?1Wocm3at+L>rN@q}{r;^h@q;@#9UJYN3Lf3#`jg^b``;y+kiRu+9O zpr8;TM9$L1VOmEgym5GRW|Y4HzROp0n?G}%*;et zxXHwVf~$Hg2n3ymz3Ee1hu+@a=S1)REIxr_&f47k2NZ{Nc2--=iSr}Z7}>=Ijc$by zNQ{w|0hJqeV0`o>wE6Ml$GfCUuH*pSpGS^%*gH9`r=`wnmgc*x4&61-7sOsa|9V?m z({Y1Lea0i?c=pb>kc24kxdz4qvfz!pMY2P=>V zK@KJ;STj;&{P<2sENAcJB(NrVAdh8Xfv~p&ap|ht-?36l9+JE|F*tn5gPR~0s;Y8> z6b#mE1o69{N;huY@VJg;V{4n2nQ4$09Kkf=CyxCmf?gE_!mv~W9&&EiTql*5LKqh0 zrLw-j{sR_0xoV}`r$;+r0keJN1cDQHvbOeiID|FMzPttFl=*qQhY!`@(Pd@tJ$SG@ zHTBNaltDMo!`&UkY?QAqGK2p7A!1@0tU7MdKQvzn7*xP`eXdWQvL7(fu`iIVC%=NR zv6>f_>-;&V@aR=~ofw$89L|PHZSU;F#Kd^LcoaTs?ZW$Xw5o8}CFUZieABP^R@m%d zdCz@b8=K1Vy={e<>6say+l0)zEx3-3C!kBWwLMUvH5vT{!KtOEC!}!()W)j$Al3(U zAQ;JP+VOzVSMxTki7Tkrz*YvfC%j}2L_kr|1sGpQ4?;p6Wrs#az~pOua4@o6FHfcD z+Z%VhUL;awSJD6q{{oVr<`xMG6IV)fk1$wmjHCJ%l+BN4ED~pSwY^2iKme( zXxU&N7X0`DQ^?_b%xZnp3PKXp5cK!_%n^&wb_cm5DdYnsHi}= z3!EaH+2WFt;Mn36ry1Dti*fCJa=UAj?@@g=ZuLYO)>YXG1zgEUh3wpEJ`MUn$5~=-nnSqI5G?t7Ht-m8UAx>65bKFbvg?O)1tO$?$Xf&UB1%P z4i{%7%gf#@`h0SyP-F5E5g_&W^Oc+F?33KquN1Sr{P5_FI4=VAWXqC$$UeQRJ3ikM zy)jNBfC+l5rGP|cb`y>dXAb95{5f(VqeUok?p$Xf!827by}tbpFESY3l(nj&3371l zw|6k4bEAKprhGi^|D_U2gHGSov2L9^p`g@DcO*BKrOq14%M*_aqTo(-#EBXYlH9_K ze`c9ZF%BMpeNiEJyp)Lf*}pgOGppfo>;1H2!FYKuDuBgBJW%~M+R44xj@TK ze7MeykML2`AGz!~@oCn%&bhawEVv004_9AACcPYdrRn3a7}3x(!0tM8htYBeOvYll z)S~K_-l%13wVrDs<~MUB~2HwHEPXE|lIEe=c# zrKQ_;m&zgglfw3lz+)kMYvOYsOAuRLzLW4a=zQ6kx77|BJu&x{@uG- z=O$V*>U9Qv-TT&N3PIv@c&>+2-TIx&DJiIhg+IS;b)xU1pbQ*B|1Ee^CfJ0`uWviNjyAe-byewh=^|eTtmixx=HO2F5OK{qi2`NAM)z@bdyqHkHeXqT}R=2gG zbx2OQ-twEuy_>>bUh?oQVU8+6^>eKUHtRga@9HENB3~lE>`O|8FqV(@Nbv@dVxH0B z{oEYYUXd@yr#eRSvBi82=m9q8?=!9Vr z3O=5HI-}W~wzQs?6`-IPkk8ROV7L>oq)(>3vR#rC3_RK?)ze$ucX^8a>BS4GmI=6( zy>2b0M0k2V#_&qsAGltMgCVq0ec|!>vy0FlwaYJ|PGfLLmn4Slu}(BFzMI(d+OJ=g zNPtOquOVAoo$$6uwToVgXf=(aad`Mebdv-bHUNf)T}jy%7&r5WtIi~BY_^IgkBJ^E zcg3Nj2)v}R?q+d0MS-=lI?TU>`2q`EO@a8%$#JZbJ@~|b_?DUNnKIt%*Y4il1D4V- z(~Q+T>T+_A15>-)UPZ32kJ>J^GFIwTlixr=vB>BX4vfIF>`4_gG<5AE_GIVcQgLul zp`tpbir_@P>SQ}qs_8~e+b*XQQ|UoYRg7jcKMC-R%)R|#fH9j%P`4OtnP(Rm9ufv@56 zVL?HU5=y%8nx*53x#zo)@7PP@*gdn(2Ui>L>v&k^L9Jq0@Qj*z9+upnKXV?}RjHoj znOo#P#*h^iZ5@mp%}Rgz)aXX?7vpy$BXq%^hVmchl$8ncB~9HYXhB6uTcIYN?*KDCTA*vB8jZ#7BWqkZJN&;lT0}fj4hbW@lqaT~`HdBTS#* z`6=c}mYPpVI-T}R)#a$3$-VM3)JmQlW-nFi_^Dk(Au_bMY;+gx5w0)mzBh+glJ_Av#Vn-`ll!6L{hrUPwFSB`48l2m-3^JY!3VXt>bLSPaP3QCJG zn=gqwnUk}6NBr5&Qm;dqhn1hlbw<~-z0T2J?Qv|zC0E%OmRk@~qTLj(T0c2>cs@7l zm`tv}MlM=|*Sfy(ge(uOt(2OZqpYq6SJ(Nto}KQz(R5-GeYbF}L`~AvG^$J?h}HK? zrOnoK9Iqpu)w>E#6cnrH;WQ4nZ(CJVio#^ew|lcZc|5LGeV!r37qz~@ukwz_`oqsB zi0OteSH0fL;LOfPyq}0Yp7IG5{bG@b^m;24)I~nHyZaake{Ple6y~_#EEOBuNlIWy zZCwW1bt$=7n=fDXuHSyv+4TE9L#d(BJ+$i=&&(6;4Hmhr^sk_N{FNo!t!+GNTD)~#WfqTZkG4y^Zi&7h*=3-=QlfTJec_^}Ix5yW(BH;bJ?00A zf^~LeQIQA_>q8U);Vh-@nfU?NzXCfORVU%=WO;KVMJHFTOje$(Z??zi_lCQ*&V8yU z7@)W=FK=9O0#zIA{hDxKZjyS&C zB1EAHv?87H-ey&X-pLDWpX;aPvjdiw49$jLsGflrG_!1Fa^t8YWlWCaV%L3``1&~R zzzN5V(e9MVv0}4Fe!`Xu)%$iGMcU?@;_l+&kE^KT zT3WeTV|HPV2jZ2L2UtV{2fy8fTb_-Dx6Yj&J*m#k?d|=AI=4|x>UuP{w7HojDf#Pi z_ye*uV8aUu{3ZyYoSAk>;TC&>dtd(On8e)t8LtzEw5TWzRq=ua=T$dq+U!s3WKXlQ z5I-z*PdBFq9zDA0JO*}qR#D=3ydolHE-oomXZzcJ`0ZBu!Ob&`{X6q(#f7WEK|drk zHDlH}E}pSyj}GrO+|SL0h_G7cBbA)&6eSUUDvE}Z=q9&!u-B6|v$Cu~!u##&o1lpB zemi?-ZJksi((1l0X&?A|cSK1U6-&V;?5vpQjw2)c$;c(xBrfk4uTgp1*;yTwgMDLk zsoZ|7u)~fHAHHQK1TIUl_UJ2Y0UMhS+S)kdf^y)m_C{$a_^0;C(P0TP9HDRt%KO18 zo^W-20byE~Z}^SsD2MBLO*&Q0Pwfq;zZJ5LW%qwD*EL30;avW8o$Q;=Oao3)(U)?Y z_9uvucn%l^^~74?z%<=J^jjq|G7I6BI-NTUj84v2Jod7YVTHAAZC}?p-WU9MwlsS1 z#sBv0mEitx+EUQ~9jBwT$gC`8g`Ys_dELZ^3#=N0uhlu|D5{Q@7|BmV_Qj&d(R29@uZ#RhAd1#{2NG;Yc3FboO`-Ei$J^T_Nlg3-kudO~@<6pKY1xdGf9qU@6V2fa*6o$0-%|YJlCRqX{CAny70RwG!5iEP zXLOjbtNT6a+E(QpX=JR~73YP0Q#dK<#$euLpr0zUm4Rm2Ow*r%Uy)v3H*(DpiW(XP zrsIKEu4s>qU%#A;GO;=2WI%4>TmPrZnZK9lB^_R#a_IKt#rb{wVx3trM~6Bq@P~F5 zx#k;h1N&)nlM)B#tjIW{7da4RlEl6w?5bvSEr>}M$GNQ;qcY}C^-%QhB7tZ=-B-Pk zNqM;F+s&rNurQEA{@8W;?w5P_m~%DS$IB0RQBmg{eo?}j_T@sx1Ue0#fj0k2%LUG| zt4>?OBUt>Y8{;PvsR)n7mM-1gT+F>a#*5QXDO+q^z}O0OUoHFI#}V=Wk%U~B6?kkk z4v>73IXNLI}dd3-u<9bGx{Z(i&w_;?E33Pbxxh>+H~#6|o5Uk#FJHX35@0GJJ$u*C$AMfTn`6nx#j^bh)G<W(( zl~cu4_Q9MIHJ_0Yd~lb6O(9On!;_`RSQp3_EpCgAf)a#P^b}Ihp^^^@AGSg_s;ei) ziNI!of`@0T4(o}Jr^M>|dz#-LuQ);wlCY7pmTFq|(*0$hsox=2`!oXPdCR#taOmXZg6Z3;Qon=KuO)`x8*;o}7 z6|%CjBPUAM z;mJ<`I-{l*TbI!gt#&zsg42S60(CVts483f(w!B^!Oh*+&>%k1Gf|wI8@s(dl1#4L znVaR-)N~OMIcPe{9*La&uFAf563FU9YwIFEKR`yl1O#BNF)iLC!>{uhU0gCW?zo>@ zZu<)B;i2xDN_=VQ4J4kB=vcWvM-Okfw=#&to!j-mT^>+&S1Q-coSZwiZo#9hbf+{z z$@cP!D*wabmX_t|dcQtnz67Zd9cybgL2RHFct`@<^{^hWE;f?7hJDur({O;hp)-J% zR_)9dBx%$~GDb$rP#OwW;9##f0pMT=<(Ab5)?2ne7cLev3IL z%G2RNeKIKkc_$my{0_UByXuL+b%Td*M{VsiFecZoU6Xx~q=k)k`K|~pt>nhTKFO4Jpi5u`&Ajn@=lCYa7>F7}I9RtUQCb)Uzv^-XKc5;yB)CEeITCZDuD^RB4 zP8QGW7?F@5g)IbS{Y9}{_vMt85jmTS-4sTp($qQy!yujQ6WQC_1G9*Ft)Hoj!8$3D zg%w8Nt_){TX#TCfZ8*k8hKGTGv>Fm?C3v6PtC1k)8?RX21bq@%S>@>P{DjB>ItS4P zLbGW2eh+kOfPbt@qLt{*_Xc?YE)o}yZ^_SJeoAA%{P&06LWd<2UtHMrvlW>XcNlf*st$pE62KEVv5K2TyvkuU;vV#s_*1@gU zMgXghov85FuZRjs1cH!B%M)O3L;P*koQF>BEO(? z$R0gP%E|(~^%and1^S&46Zf~LS52~W+GS5@)r2NavcY1&z(2;u;2H~t9u$vWdROdpaCgS@hE9B<6meWB9DH(H zq+GM+pYn5H>VYqDc5=#emk?KM^2^N~`0>uUzkHGN!}LC+a@@8K#>T}=XJ9gunFgj0 zK#AM)XuN&<7j_afr$|mofp1XBnOR&Uz`=O~{PX5i9h>oh^exVZ9nj(g#GXKH-MV>m zAXlB%(0slv3am9??tmye4(XD|T{-|}mNwU&s z4=^n)xLV!9E8*fEMS>S7xEbZ9%7M_%fmx>s?CMw7)(Z0T$HvE1bAEu=Jut|yE8&Du zFG-?&{1~S01II&>z=ef{C(0!F_|M<|MuAQPZ{GAm>5E#^vO! z0o4!vMutuHzsYB-n94wFlDovjywHCD_A#DczaBig*syerbH2mgGAxSar6n0#v!Z+0 z*dU?54+bN_6r$oAHwkS;MbsEFe*DOk;p#&%QtiCHKthZ=PKV-;) z#|hhVM1w%wJra`Kl#~MN6@@>GUBJ2Aa2G=$f_3MPk0U*<<(wR^ptI;>ZrHsK4~bK6 zn^_wv(60d$@G?Yt$*%d}h_Bxhy?w;|tc#FmNcJq({03Tbe|D(4+A1%v=w;rD`?^T< z!~EP_H?bR87?rmZL|rK6dOl7wy9zj%z5N_MBUI&0fnp{4Wl`s@m9o!{!&4Jq>$JGm z@%s96fQ7z&<0|uLYKNOsaPWdcZtU#ex8lhAeWIH;9>p0Bk%2Cn}T$Y_Us~i`PZp zys;6(AZY_^C`qnr(U9#GXVa~i9B%W((vjOMoVM$o7v~3g??)@FtmIBY7?Ah07JS|= zXEk+VWDJ*lbRD2AqUZ6O+ZH4&>7>XA_L1ERkN17YA6P$3uIEm0Ah56$2>ap5guc7G z*5-A-OgERKr(l-HrhE!k)Y^>!x&_0~z@^0HjH~EJC1Kye>ae!HzW&>{&umtQz_{bh zE!|j5-sjI1TOMw(PFrvutcNQoKJOx)wSGTplm2VJ-uq6$A|_<4R>=j6hL%(|Ku!UR z3tlg(#irq5VRULG()s7vmPy5&uk2f+`qK&rl2ET>noLwgbuNJAk{P&WfVYwmH%sQi z+??}nwxx~D zu6!#^tWK=1I>Sh;b!>F>w;w-(98MMzT<@W69d2oVIDwy!POF$}Tb5NZ=8UqB$)p*0 zY<3;tQ-)8feq-3onax!Gvpl927J444VAI_?j? z$q)f67i1oY(r&=r+dKb#1{hL0yjRRQo*o{kML`au6Kab&VtNXZ6DmHiWZ1a)_;1X1c6PG7WJm0+BP^ON7s|R+Udi>pprNLQlQV?5^%%~{4xkHn z=3g5{@|MFQ2;$zKy@L>mjIn8h9_<>|0``+ z6dktI^$!c#*NmCcm??uv9()LwH000kuj$7`dtRc3aJP`YX@#j{YB{h4%5iA^0{x)4 zI60M7R2u5*5oSWibaQdVAk@2PD$;3Cind3^wv`JUj_h-jI3l!RbB0BYo>_T68qY|q|72Z#;e#2znfS{p);ZS(KU(<(L6+lIqnct3x6-MPDa{Ts8-OQAne=~Ppqq_5MsF#r|Am#D%Z zp0VI0B>V;!BW_!g`g--rQcIEsMlhYFCFn&({!c)uG^Rjxfh;**`T*38*+%ga z@&YLicEna~{o%cRl!s>rzn)0QlVnKh>g(aToR?~8QF~y3m!95{`p5~F zQG?ZWOZZ#yf!O8KvL`JDd*tVX9%BJ+I2sHL`{I1x7h=p@pv+pSK<~k2I7bvQ1rbJG z_K;Jzev^OG z);4sx2p{j|CF}QP%D}?25|%L(7Pc<8y+}*zZ)`HK3MAp85ZQHDp~q2GrATw&h+hrO zscPx(Px|?j=1In%=4J(#&$II&U5$#)_i!J(Jc?RYG=&4N0Y1(ssx2*m$4+ zbjDX!I24^OB#;t5SeA_19+++R7#{~$t8YW!RdWFSWoKcLlyXh<6z zJahLpTqhXrNiBp%&g)G9fpzodQ?D1nI*$O4|12ayHM3T{2Fwbxws*?1hAR}qpOlqF zZf(6CbUa{yQ@Vs7(WTQl0Oa+Di%FS?=1=fApwA`mRS z+oWv1`KQJsN9ntb*#}?$*g=4%eElgI&yJ(uT+Nh|TKVjIyy1uMzPU+rnPJ}lm@L`> zHqFl`D;f>5HI?Zal7&%#NCk(sTlW=KHPcWPPwdoA+5e1imI93{F3A zq^}IL8(0VX)oT$DF1eikG~(y#?C+lfP&!zQ=2|tN>a_#E25Y@iE+_EY6=A7jrHY~U z;bF<`hx{RwVj;MnF{C>4HYVuPo{z4WThI0Nv5u9CUND><8&7!MvSoko5LsW#1T)24 zL+Wo@^EOD+wNl`f9|F7Yh{R%{!#%IvnA zK;eg(8(4vlW*YV~o&z713BHcwU{m)T`Ms1ks6v_a1A50w&EPVenp#16kNHDydZ-^h zX>OKbBDZ!16G18x%M!U#$)u&_;=GwS-7BTvMFcJ^a<_crO<7&}2HSHqC#!hL$>(KX zeU%WgJM2qMy${EPRCM9aK+X#X9GfeVt<6n#0y8Z1+1W%kYh^#2O3UNa&B~Y|rayhr z-TOr>WUQ$5pnL;wWyQEyjn62ouHKLI4nddx{%R#88(}(XKm1G7pz)gZ!A4~7eKPWC zR=;|T8&P74u-Bz!s2$28qoO{%x%8fGD+BI&v-aD4Vi?{>9ycORb~1wy)lM|X(iiCde+!y~e3eIk+<#!C5J&)CdX z1~}hK?!x_r3?RQ_Lc%2yj=u-}ihNK|IlWd1rODpwLd1V9IOpbyyu8AF$1(-Tj<;KT zS@gNMIESBFl*2EvOYc(qm0C{nS!^DmZriYGG(?STwLdKZc|+FKU-AkHIK<9-9#~Y`?A9nK zcEs>ExIWs^5&Le%2Tk{Br(e9pf!MStxyuNsKNlBW{q2>{pE$;|Bj3IKOMq?yP-P#1 zFUee5O5I4s@XqGc?_2oi`6-qr5e*eJ_-lP zo_Dh7Frb68)AfNvCY6T0$zetgHj0YZ(PNj6fPV70rVP~T&^Qr%w#X-06kSPWpTmWR zlEbc6KOqj|&g;xPSA;FOI~fMUU{z)&I2$alkNyExJXfuG{Kq@IcoB$Zd04`MMsI%- zOijHBBvE(SGg=R$3ASD5N#?%01z06O5;4zjm1Q{xi&a<~kHDea=x<*T!w!oAB;$ck z3Aukwdfg&DSUYI|9RenC*;Bk;PTunP`2DUVh4JU#pFDoNvp(Jf;IZwS6PP4J>D|n) z6O~^A9xCr|HNJWNo~zXEgM_s;>X&zbb?)w(+N*Q|!@+G6tN!ETXtis?x&gGfWX1L+ z>3_Gu&#_jd>_4FR8BY=Injs-Wngw{&nd>IG(SaVg_+F-oL-iKSLfD9K5b-rrhGJB&9RU>FgYr_NuY97-C14Ikkfv z5h6rT&@@BRYwJkr$?Fl9qitUF>u?@69T@VWqle$PL1;W+x42^5`V;;F1($dE?a+^^ zi!-ys#cneOrOh1o41J)2AdBa7RA9`zR&0VODq5SH+xu1V06^=+#6=k#;DJsKPS!@| z9B0KED(p{MTa0iE)PZgep){Qc>wLT1)&_kW&O!Tx=jTO%13Hh}t}1;k$R*Bu^6vHP zItY;rY9%Qj>7&0cf^i2!9?@X&du{+IsU!%fBVqrcsKB_H9`CJK9`E|Z$4j1{PtwfG zMrPAKp?Hb;++4lP>Y#XX8xs6VmpAa~JovP?m30xj**=e*xeT~1f#wDOzP$CyJREos z8v-yunvz8wXy8eV1*mNa^or}-iZ5W-~Ii2*wy9P(2%}9Bo6E!CT4oxP9aH> zG%lgN>Ap#ZpaB4GyFXe|pk>=5el<+=ngeCSY}9BZJQe9a{3F z5(e_rI1vGGlR(k%N*471tQIK4&!1_TS#H6~URWE&n(NPxA{-s~rHJpn2fqk?3wi*h zKi*}EP(=O~B!JxhGN=K^R-D=AQDToyvo%eMxltg zC5z%f;_x--$1X%a=vDKS?60}Cb=^ww(sE0w^U1pmQ*6iWR0ghNaj_;LV0#9!;Lni9 z{vF}ho#(w$v>W5Jajb@o?J;>LVsk*9nwa99pF93sB^@qWad&f*eEWB3aEuimjZS*k zpb((vj)V(?KNv)ixRWEdoqBbj?z?wdy8SQr-|;$~7m&If($ksbS5?_WJ_nYTj2o9X zI-q@k*Ur5AKZ4&(L3KsNuh!Sr%Z9uVLm?r(g=b!lq}4x4KAK|-xUU0N3uCh{zif8?)~Ls3XQzu~{0#2TkgBAk<#*6YO`%xqe-&@r(F+23uXQ-`x)^YIZwiM{ zMz$8^=O=TEjiO!6FO5pd7+k|C0F7xvLU6E~>uX5lZVLy#2&Rk*3!8;Df40~`1+%lW z(5h@o69?rZbKO^DFSIU<%l?J}6#umH{Q_y2vw7**OCQYUDi;u=BSPfm^Cz!9fFnR+2tL5*?Bn zSy~$$ z;`Qq+dyG(l)7iFf}#QN92W`K9oa`$4P z7b~>E6cG`5&kj9|>Fwh}LYTGwU_g`A5X!pRTKMxY^~4FFZIm=M`8haB>O@o;3@qaq zb`b&s0?sbl0Ls6C z=8kDgNlp&htw$Sxas#NE`keeT@F8n^H$1x6@ABDi>p(dp%n1n4Nl8h+k%ji$hv>8n z=@1F<5hQ{51O#@#L;yUuxVQ+PQ&>SB5m5A{sL1bhXx<*p*7pL_hXtDGK&=B<(!yZ? zY=!s(Fkemwj6*|10|rG;FFhk;0X#j?uhx`WE@TF?_OP+D`wEc*!3BkH{{H?zhAP{5 z)@wbcq`XbSGc-P42`bS_KMB%}SNf6ZHHBDywQumF{rFhjuBM2thu z_ZZU5$MubkScJ?vEnzhK`}^SbyS~1jqcHUAy{f!?cv{-yz{V7YF=?=^2D@mEhnRtl zfQ^OH1wym$XKz0Oas_+@6t|q6ok5dcsQA*;)fK+85#9k!Mxj6gnuVIMJA(BoeK9q$ zN6n{zfcR(c++$*h{OXMgK%JjzlG)A&c*Y)7Y(XE<%<^KD8yFZR7IVIFapT}No@VRi zUk-P>7JuC0lJIL~kdgs%F)=X#vMq$2T}ePd2hezTQ(gk|+!th2<^fBh92!B6JT86p zkO}_f&W}ZC-$BdB7`Tpsmc)wuPyJI8$Y^K)ok0?XMq<#%ySthA_%ya4ehb9?*SUYa z%&VZlvbD4l`B9(ChVHCaeMt1TJKfvLRv}i6E27U`#Eb|CrLoZ<%V`%YBiI9~-hnfgAaO#CwfeyjAuKvgLBIroy`(!?ZEbC);ll|KGf45D?QYF9g0esF*FzA8 z81-dhsu~CSBVWP*t7G?fH4sPt91#}p5QrOo^&t|q!u>A+&h1l0(rD;xGNn2;2MTaX z=o;qmGMmDgpU6w?@K@91{d=z$Q$X6PFszOi=LwKeGccr2%r7jwxs_H}_qLF)P%LEC z!WiZVEv}c@;^&XqW>-6y8AMg2{03aB!rNlT(%7KS_VGxs@vaw z(&ix*Y3Z(1MCfd(89c|Z^saz00Oc>eZ$~lf`c_stLzPf@IXAQ~MIfNi2XX^z3k&EJ z@9*aqI?)8x5x|LMXJm+uSN4nRtHR>7bEaH(m!X7nFeId+vJy}wi-_1*9PfVrB4JNU z4x2hRWHd|@(;gT8uroEC_^soMTXvKS#`{U!5Y7s3!3?yvM!JWEwN*O0GBCJ^hj;>$ zx=afvBtCkh-D$~4zqO@h!KY>&K;`i1%DkH8KjO?B1w97o$u{%{+4#*{u?Lw5@}Rw zhmUrLn+U7j{=>sbA@X2>&FWh~+m|{XoPz4r5V1Fl7#}rrJ)agX(1CRb8ei0FU-Oiv z&ezK+0E{R^gPFJwIeg08Y?u?s2ScBju@JP)>j}1!0`LTSwUxoaZi{H2e7HQjp;i}u zugiRkCb+x!?(YV_18B%`aGax|=iWzO!S0kK=tweDxHP*_jc;tol=Vt1Cy27tY_e9l zz?+sYM#$RQqhKf9+dEy+RVW0FZA`!3_XcR6+fjH7rni}tBJ;5|QHZtu@f~*>RHCWkni!JxWPZKUAQWz+^ zjhA{p0NRwt@C4yrLxu&unIC>CIz5H)5{9c0D9f4y`Mn87g9^7qv8w8gx5|Woo zHwQx8+&WsqH=adZa7iOc>}_b262oeUtzLtC#KgsJ1JJckI0j~?)R`#De-iprX3Y{d z#ftU#nYl?I$+g+)ncGAI`1rqIdfyAn1sDqe9rW z@S?l>U5*Ny7uk81gILJz8&Pud^3NUjC$_g$9137WZ^DR{RvpbReEP%!g{kWeUswR( zNKdQRc_tPtcG~=eCqyoymnRGah0e!65Fum;W*(=Ok)mG7xSJFRi}|*3VPScz3>c_> zNa}Gw2M3-jpcR|X&U3Z6Q*ZeN6QZ?6`rSEobF75 zv>vW?2t{@p&llYw@dKIOFP>ZSswcIbj9iR)bbKz*+mM~L0Um1(VsQbK6l`w(!Fl4s zZ~ohCx$hAmYaVbZhEf~TNd{jK1X@s)Uo|o-tzpC^j z=RITD47J$Xze-Se0^)Um>Hw>d`*ocjjv#gTaxiy{Z;vYvtk;U=_}Mcy=DE&sv&ejk znq8HVl{F~~fqj=r(SH6e49f$^9i{5)r79{9R+bDOQ{{r(Br6I>#frOzUGAoRKAS#9Y0>6b$ z{=)%Pyq`Y>uU+G^YLvmVx7Xd7CtmFJi3|F%`sF$6aUVW>x(+9*U)13k)ojDrtol7Z zX*HNOzk*DI)80ZCKmb4wT3d}TCw>>MnpChDHqdWjO2%?P1s)19vA>jA`$*ZsXPhKT zL|gQpwT#UD%jdlY&s%e}<4UjbkOj6-UbPEWF-=ipn}1x$JrkYOm8GLSVEK@>K`6p- z=iGKVUb2yv_6Ok`C~lPLoRWHWmvs+k0&AR4_ILLuY!^BxF6Z#Ylv%2gU!as`DYMHk z^8sV^ZY{+jQoi??iotb-zLnFm3XFnNxgmT}WBQWZ$HTFF4|Rd}X{p|ZWJz`p4hF!w zw=v-d)DDE3J;Y!IkBe6PJ^Pzk)sg+mKraz{o7yiEo^fTl5NYb;#gx>U#)ADdRj5RK zhWvejVtCjP8{lL>4@$4fgL<{0Cr;Q44uCI2Qh)xajh0$YRM=B2AvenStpoOKg67Gk zOlnOeyBCl$A{KIbYAL0yT`8Y^&)AqKl8#Umx$qZ703iGfzjrt@OX^x-{r4kjZd21M zyF>6w$bm10;+e)pYAA~X&{r3BH5NaQ!?K)>RpA9-uJFAI?jBDb5H2}yH#51D@g3=K zA*T5_;NzajqHIVdGULU0OZXV6ixTq9%Vshk@mI?LSV-z*K6|v&kfZwHf*`o`hF9k{-=xgQ^|}5OhU(`MAK&^XTY?+1dM0whFJPY+>2zGoD+(X}3~I`+&&{fXgH7Qzpj;9;b-!0?$5dNB zb-K9`y2h4U&>B)%sE|;pe)`i@UdG z9yuQqI6An1U?cEyNvOlI{CRdZtS!EBaH7iAV*3ONrK}p=Tz?EZAP}@b!+hm++yD;q z^1B&eM(7~!f91AKNJ+7NQOi6=m1DBIS2Q#2E)r<7xy1=~_zcMHmPlK6u%5HKy9+m~ zbz{xF$-9QBmtN^Pc03Sc7|1;MkkI;Ea6C`r<>K|u+jJG1a``NhwZ zxdV*Ag(MwvuiyM-#fwo;r3=0ZWqHm;f+2LyXYcm*s&PC&t<%K?g@x@NyY|Svw~^}k z{T9HO0HrYr+k5>VeY8+MZZGamUFw6L2*51UQL2joLva{;lo*8Dh4g%BH2OYrQosyv&x+`2>*< zRsm$6;2J~{*r-=<{mz5k8931gpqU(8lM0~m5fjtYmK_NA!cM8#*sS5^#-iUbR&Kii z00koC6cF1i6R4La;&-V4BV#Qs^1wz4L`cosq2b~8!}-G7*uVZ?Yfq)`alAmjX_H$C zH&W7gDQX01F7$%ga~S&Z4y1_Cd?hn458BiCWo2cFQQq^bho^i9W+tF(i3gkp)H*P9 z3jc*WMMs}Z!zEqor`_t%Ps{l>8b-#>&Q4n!8!C+C{Crtx%K~_iogFSNF8rCNj}N@R z8a1vgsV%f3uvz`8M2Gp0DwT5K2NW>xE?J%(TLa;)OpT2JHRx-9{{jv|=8W%shiJbJ zi$5$Pf{U9QM0{!v{|NJ9oTq1JadB{Vj3)VZ^}=Jef=u&}=I>UU7DB24HP-_#_wya!U=8}5I1j`}X>pw|=QoX7ifL~Ca! zT;MAzVpSy1M5{sHqcYWB;BM}04@NTUzS%^1_uUwM~_2A&YmC3!%W6MH;V_P zDgumB20A*Bu;hOrRr|-OmHdWUKZpJ|3e#?--M<)jvup3V1ELW2MOJOXsJ^c+%pnQx zi`YW2mStq_hBnWdbHu&(?OY%tAP{>HRw%8cB!=w?Pz*8$XO3zEP;XfR>2cHOPpGZa zw{H~!^BFP-W%i&hd&bHNAEKl4?_78_jJ~`!Rp$d5Sq~2nZj)49fA+zp7YS%+XwYzs zm5mL^pRBSn2e{Y+AY?d&@d&wQtm2vRc=Pg$itgX^!Xn`b$`1fJP&U3m`v4>?YLo^q?^W(dkvU zL~sQA^oalzl92H40G6=yMNI2ba#{Pf@FY$$o<|u(&S1C2&OXrC=yPmIn?@^#5rF;h z5ef>i?3d)mk&)=e8T4z{CMq3^)6=QAxVY%)bNaag0s>&ifv6I>;vjV^3aXoeu2x)> zl&Rpb0lj>{$SC9*$iJ61Ho%V+%#MPhqTnn!f(A}*0_N*uoFsvR?@}8YL;&$LF#!w$ zSi!rXbZrgzq4XWxfneK~mzOKb$rTQQig+ytRK#CnVism+3y%)M{~fR3 zQ~bX*Z;;8DqX8@d9C#jL`ZUf!hciS(V}1P{f@jb$x2~_x3P2c;x55iU4ZuZglDwjyT_D;6i^VNf1n{ ztG6KK6u`-}?4J1#RwM>y2;6QoW7m6(o+mxFUVCUg&Il#5X&qpD2C28FEIu!+3-Ek+ zz-{wADQPNE&;z@DN%XqNAY&Q6hLfbLQr9 z*!f?)|5qTdBFqkYXGOEWe-P77!fMb3EeKzS=*Y|87sQ5X1lkak@!(bg)d|rDGU79` z1DgLG<+JA@L4@4CR@c!H5Z#~OJ|32DOs{HON&zB3=JkA|C5r_(|F-RTmSfK5W6UTg zzlVq4XQTLs51?!Y->2j=vmdWP%nUyS4F|yxL+O`^va@sL?%O;Pmb`Vv?9;U(Dz7pU zNNF#6UgJc`f?%_fw+@)NqM}Ocl>z7!hI;iX;Kvbk%G(fyp(qDVRmvw%-ef}^fGOxi z;q9I>Fo2Ir0=#39T8l}~nzPQojT}ad6ClV2r8i(#Bs_Kkyj8#c_whj7P_5+{z)Yx% zDia_JGLa+0hMrKPH8o&ymUKA~dA|mR)lEN3|D{_|A1LY|gx~>~cuQ+5z|LT-^?1@G zW~b0^^y1nmD?}kC?FJAhFTh!N9g755iExtd?PeMME=4Vq8piY&Hwydav<0}@@&N-D z8TO0Mt2*{|IBR9B4x)s^Mzm7>$J-j$^BvNkN)qiEN^s25U+i@9-*C4(J^Wd6mMq#L z3h@ZZ$Ixe-yS6RtjJ5%@=G;8_;-}IneDIA~R<#$5RC2^EuNUkwaiAO5nCThJ=vcfg zL+C3oRb5NpRW~kR8@4UIA5QC_vl@GP>f}xauai~Wmqkn?92jP{Dc^@kgo2J@wIMIm z?fzuZ5KVDoS>O0vV$`0b#VaVfDSeT}819SX<7Q}f1&?r zdN`? z!t>Gc(o*#6*TFMCA}q|)+Z(bLIL~p=z}5$p{}eQsI!B*YAA;qNy1HVn8i4i6($YVG zE;A~Ho_%dmEI@VaY;S`rA~OpM)Kown&aehIbMEB-Tx0;0042XsX$$PGeBi$-3Tu11e6sx16# z`9jryD{mOwrd{lNPC`n`4=e!~tHDU?>*|)4m$#C9uRL>L;}3w#mtwHi&yo|B3~{%A z!b=EvMz=X`R6c2~tTFPSYzCSU`p-T#%!q-Sq^Ot}MFj=%1~WH*WR#iOzl<{1^^`Y| zbR?c18_2tWID@(nsFLf711$i`i15W+4z$VKz7G-8YT?)?%nlkc0z?fRNg*o-GUk)N ze=7HPZ`s2iUHzE9wC{sM0x{@h + + + + + diff --git a/0.13.6/control__types_8h__incl.md5 b/0.13.6/control__types_8h__incl.md5 new file mode 100644 index 00000000..8917aa1e --- /dev/null +++ b/0.13.6/control__types_8h__incl.md5 @@ -0,0 +1 @@ +3a1c47faf01a25ffc032edd4841a146e \ No newline at end of file diff --git a/0.13.6/control__types_8h__incl.png b/0.13.6/control__types_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..850394c80b72dca48e1702d6c54d3f26f3efd403 GIT binary patch literal 7677 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 + + + + + + +libfranka: include/franka/control_types.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    control_types.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <array>
    +
    6 #include <cmath>
    +
    7 #include <initializer_list>
    +
    8 
    +
    14 namespace franka {
    +
    15 
    +
    19 enum class ControllerMode { kJointImpedance, kCartesianImpedance };
    +
    20 
    +
    26 enum class RealtimeConfig { kEnforce, kIgnore };
    +
    27 
    +
    35 struct Finishable {
    +
    39  bool motion_finished = false;
    +
    40 };
    +
    41 
    +
    45 class Torques : public Finishable {
    +
    46  public:
    +
    52  Torques(const std::array<double, 7>& torques) noexcept;
    +
    53 
    +
    61  Torques(std::initializer_list<double> torques);
    +
    62 
    +
    66  std::array<double, 7> tau_J{}; // NOLINT(readability-identifier-naming)
    +
    67 };
    +
    68 
    +
    72 class JointPositions : public Finishable {
    +
    73  public:
    +
    79  JointPositions(const std::array<double, 7>& joint_positions) noexcept;
    +
    80 
    +
    88  JointPositions(std::initializer_list<double> joint_positions);
    +
    89 
    +
    93  std::array<double, 7> q{};
    +
    94 };
    +
    95 
    +
    99 class JointVelocities : public Finishable {
    +
    100  public:
    +
    107  JointVelocities(const std::array<double, 7>& joint_velocities) noexcept;
    +
    108 
    +
    116  JointVelocities(std::initializer_list<double> joint_velocities);
    +
    117 
    +
    121  std::array<double, 7> dq{};
    +
    122 };
    +
    123 
    +
    127 class CartesianPose : public Finishable {
    +
    128  public:
    +
    136  CartesianPose(const std::array<double, 16>& cartesian_pose) noexcept;
    +
    137 
    +
    146  CartesianPose(const std::array<double, 16>& cartesian_pose,
    +
    147  const std::array<double, 2>& elbow) noexcept;
    +
    148 
    +
    158  CartesianPose(std::initializer_list<double> cartesian_pose);
    +
    159 
    +
    171  CartesianPose(std::initializer_list<double> cartesian_pose, std::initializer_list<double> elbow);
    +
    172 
    +
    178  std::array<double, 16> O_T_EE{}; // NOLINT(readability-identifier-naming)
    +
    179 
    +
    193  std::array<double, 2> elbow{};
    +
    194 
    +
    201  bool hasElbow() const noexcept;
    +
    202 };
    +
    203 
    + +
    212  public:
    +
    220  CartesianVelocities(const std::array<double, 6>& cartesian_velocities) noexcept;
    +
    221 
    +
    230  CartesianVelocities(const std::array<double, 6>& cartesian_velocities,
    +
    231  const std::array<double, 2>& elbow) noexcept;
    +
    232 
    +
    242  CartesianVelocities(std::initializer_list<double> cartesian_velocities);
    +
    243 
    +
    254  CartesianVelocities(std::initializer_list<double> cartesian_velocities,
    +
    255  std::initializer_list<double> elbow);
    +
    256 
    +
    261  std::array<double, 6> O_dP_EE{}; // NOLINT(readability-identifier-naming)
    +
    262 
    +
    275  std::array<double, 2> elbow{};
    +
    276 
    +
    282  bool hasElbow() const noexcept;
    +
    283 };
    +
    284 
    +
    294 inline Torques MotionFinished(Torques command) noexcept { // NOLINT(readability-identifier-naming)
    +
    295  command.motion_finished = true;
    +
    296  return command;
    +
    297 }
    +
    298 
    +
    308 inline JointPositions MotionFinished( // NOLINT(readability-identifier-naming)
    +
    309  JointPositions command) noexcept {
    +
    310  command.motion_finished = true;
    +
    311  return command;
    +
    312 }
    +
    313 
    +
    323 inline JointVelocities MotionFinished( // NOLINT(readability-identifier-naming)
    +
    324  JointVelocities command) noexcept {
    +
    325  command.motion_finished = true;
    +
    326  return command;
    +
    327 }
    +
    328 
    +
    338 inline CartesianPose MotionFinished( // NOLINT(readability-identifier-naming)
    +
    339  CartesianPose command) noexcept {
    +
    340  command.motion_finished = true;
    +
    341  return command;
    +
    342 }
    +
    343 
    +
    353 inline CartesianVelocities MotionFinished( // NOLINT(readability-identifier-naming)
    +
    354  CartesianVelocities command) noexcept {
    +
    355  command.motion_finished = true;
    +
    356  return command;
    +
    357 }
    +
    358 
    +
    359 } // namespace franka
    +
    Stores values for Cartesian pose motion generation.
    Definition: control_types.h:127
    +
    CartesianPose(const std::array< double, 16 > &cartesian_pose, const std::array< double, 2 > &elbow) noexcept
    Creates a new CartesianPose instance.
    +
    std::array< double, 16 > O_T_EE
    Homogeneous transformation , column major, that transforms from the end effector frame to base frame...
    Definition: control_types.h:178
    +
    CartesianPose(const std::array< double, 16 > &cartesian_pose) noexcept
    Creates a new CartesianPose instance.
    +
    bool hasElbow() const noexcept
    Determines whether there is a stored elbow configuration.
    +
    CartesianPose(std::initializer_list< double > cartesian_pose)
    Creates a new CartesianPose instance.
    +
    CartesianPose(std::initializer_list< double > cartesian_pose, std::initializer_list< double > elbow)
    Creates a new CartesianPose instance.
    +
    std::array< double, 2 > elbow
    Elbow configuration.
    Definition: control_types.h:193
    +
    Stores values for Cartesian velocity motion generation.
    Definition: control_types.h:211
    +
    CartesianVelocities(std::initializer_list< double > cartesian_velocities)
    Creates a new CartesianVelocities instance.
    +
    bool hasElbow() const noexcept
    Determines whether there is a stored elbow configuration.
    +
    CartesianVelocities(const std::array< double, 6 > &cartesian_velocities) noexcept
    Creates a new CartesianVelocities instance.
    +
    CartesianVelocities(const std::array< double, 6 > &cartesian_velocities, const std::array< double, 2 > &elbow) noexcept
    Creates a new CartesianVelocities instance.
    +
    CartesianVelocities(std::initializer_list< double > cartesian_velocities, std::initializer_list< double > elbow)
    Creates a new CartesianVelocities instance.
    +
    Stores values for joint position motion generation.
    Definition: control_types.h:72
    +
    JointPositions(std::initializer_list< double > joint_positions)
    Creates a new JointPositions instance.
    +
    std::array< double, 7 > q
    Desired joint angles in [rad].
    Definition: control_types.h:93
    +
    JointPositions(const std::array< double, 7 > &joint_positions) noexcept
    Creates a new JointPositions instance.
    +
    Stores values for joint velocity motion generation.
    Definition: control_types.h:99
    +
    JointVelocities(const std::array< double, 7 > &joint_velocities) noexcept
    Creates a new JointVelocities instance.
    +
    std::array< double, 7 > dq
    Desired joint velocities in .
    Definition: control_types.h:121
    +
    JointVelocities(std::initializer_list< double > joint_velocities)
    Creates a new JointVelocities instance.
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Torques(const std::array< double, 7 > &torques) noexcept
    Creates a new Torques instance.
    +
    Torques(std::initializer_list< double > torques)
    Creates a new Torques instance.
    +
    std::array< double, 7 > tau_J
    Desired torques in [Nm].
    Definition: control_types.h:66
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    ControllerMode
    Available controller modes for a franka::Robot.
    Definition: control_types.h:19
    +
    RealtimeConfig
    Used to decide whether to enforce realtime mode for a control loop thread.
    Definition: control_types.h:26
    +
    Helper type for control and motion generation loops.
    Definition: control_types.h:35
    +
    bool motion_finished
    Determines whether to finish a currently running motion.
    Definition: control_types.h:39
    +
    + + + + diff --git a/0.13.6/dir_000001_000002.html b/0.13.6/dir_000001_000002.html new file mode 100644 index 00000000..234f99ba --- /dev/null +++ b/0.13.6/dir_000001_000002.html @@ -0,0 +1,84 @@ + + + + + + + +libfranka: examples -> include Relation + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +

    examples → include Relation

    File in examplesIncludes file in include
    cartesian_impedance_control.cppfranka / duration.h
    cartesian_impedance_control.cppfranka / exception.h
    cartesian_impedance_control.cppfranka / model.h
    cartesian_impedance_control.cppfranka / robot.h
    communication_test.cppfranka / active_control.h
    communication_test.cppfranka / active_torque_control.h
    communication_test.cppfranka / duration.h
    communication_test.cppfranka / exception.h
    communication_test.cppfranka / robot.h
    echo_robot_state.cppfranka / exception.h
    echo_robot_state.cppfranka / robot.h
    examples_common.cppfranka / exception.h
    examples_common.cppfranka / robot.h
    examples_common.hfranka / control_types.h
    examples_common.hfranka / duration.h
    examples_common.hfranka / robot.h
    examples_common.hfranka / robot_state.h
    force_control.cppfranka / duration.h
    force_control.cppfranka / exception.h
    force_control.cppfranka / model.h
    force_control.cppfranka / robot.h
    generate_cartesian_pose_motion.cppfranka / exception.h
    generate_cartesian_pose_motion.cppfranka / robot.h
    generate_cartesian_pose_motion_external_control_loop.cppfranka / active_control.h
    generate_cartesian_pose_motion_external_control_loop.cppfranka / active_motion_generator.h
    generate_cartesian_pose_motion_external_control_loop.cppfranka / exception.h
    generate_cartesian_pose_motion_external_control_loop.cppfranka / robot.h
    generate_cartesian_velocity_motion.cppfranka / exception.h
    generate_cartesian_velocity_motion.cppfranka / robot.h
    generate_cartesian_velocity_motion_external_control_loop.cppfranka / active_control.h
    generate_cartesian_velocity_motion_external_control_loop.cppfranka / active_motion_generator.h
    generate_cartesian_velocity_motion_external_control_loop.cppfranka / exception.h
    generate_cartesian_velocity_motion_external_control_loop.cppfranka / robot.h
    generate_consecutive_motions.cppfranka / exception.h
    generate_consecutive_motions.cppfranka / robot.h
    generate_elbow_motion.cppfranka / exception.h
    generate_elbow_motion.cppfranka / robot.h
    generate_joint_position_motion.cppfranka / exception.h
    generate_joint_position_motion.cppfranka / robot.h
    generate_joint_position_motion_external_control_loop.cppfranka / active_control.h
    generate_joint_position_motion_external_control_loop.cppfranka / active_motion_generator.h
    generate_joint_position_motion_external_control_loop.cppfranka / exception.h
    generate_joint_position_motion_external_control_loop.cppfranka / robot.h
    generate_joint_velocity_motion.cppfranka / exception.h
    generate_joint_velocity_motion.cppfranka / robot.h
    generate_joint_velocity_motion_external_control_loop.cppfranka / active_control.h
    generate_joint_velocity_motion_external_control_loop.cppfranka / active_motion_generator.h
    generate_joint_velocity_motion_external_control_loop.cppfranka / exception.h
    generate_joint_velocity_motion_external_control_loop.cppfranka / robot.h
    grasp_object.cppfranka / exception.h
    grasp_object.cppfranka / gripper.h
    joint_impedance_control.cppfranka / duration.h
    joint_impedance_control.cppfranka / exception.h
    joint_impedance_control.cppfranka / model.h
    joint_impedance_control.cppfranka / rate_limiting.h
    joint_impedance_control.cppfranka / robot.h
    joint_point_to_point_motion.cppfranka / exception.h
    joint_point_to_point_motion.cppfranka / robot.h
    motion_with_control.cppfranka / exception.h
    motion_with_control.cppfranka / robot.h
    motion_with_control_external_control_loop.cppfranka / active_control.h
    motion_with_control_external_control_loop.cppfranka / active_motion_generator.h
    motion_with_control_external_control_loop.cppfranka / exception.h
    motion_with_control_external_control_loop.cppfranka / robot.h
    print_joint_poses.cppfranka / exception.h
    print_joint_poses.cppfranka / model.h
    vacuum_object.cppfranka / exception.h
    vacuum_object.cppfranka / vacuum_gripper.h
    + + + + diff --git a/0.13.6/dir_5f30c89189ebb3336d6b33aa932838ba.html b/0.13.6/dir_5f30c89189ebb3336d6b33aa932838ba.html new file mode 100644 index 00000000..094f5296 --- /dev/null +++ b/0.13.6/dir_5f30c89189ebb3336d6b33aa932838ba.html @@ -0,0 +1,149 @@ + + + + + + + +libfranka: include/franka Directory Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  active_control.h [code]
     Implements the ActiveControlBase abstract class.
     
    file  active_control_base.h [code]
     Abstract interface class as the base of the active controllers.
     
    file  active_motion_generator.h [code]
     Contains the franka::ActiveMotionGenerator type.
     
    file  active_torque_control.h [code]
     Contains the franka::ActiveTorqueControl type.
     
    file  control_tools.h [code]
     Contains helper functions for writing control loops.
     
    file  control_types.h [code]
     Contains helper types for returning motion generation and joint-level torque commands.
     
    file  duration.h [code]
     Contains the franka::Duration type.
     
    file  errors.h [code]
     Contains the franka::Errors type.
     
    file  exception.h [code]
     Contains exception definitions.
     
    file  gripper.h [code]
     Contains the franka::Gripper type.
     
    file  gripper_state.h [code]
     Contains the franka::GripperState type.
     
    file  log.h [code]
     Contains helper types for logging sent commands and received robot states.
     
    file  lowpass_filter.h [code]
     Contains functions for filtering signals with a low-pass filter.
     
    file  model.h [code]
     Contains model library types.
     
    file  rate_limiting.h [code]
     Contains functions for limiting the rate of torques, Cartesian pose, Cartesian velocity, joint position and joint velocity.
     
    file  robot.h [code]
     Contains the franka::Robot type.
     
    file  robot_state.h [code]
     Contains the franka::RobotState types.
     
    file  vacuum_gripper.h [code]
     Contains the franka::VacuumGripper type.
     
    file  vacuum_gripper_state.h [code]
     Contains the franka::VacuumGripperState type.
     
    +
    + + + + diff --git a/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4.html b/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4.html new file mode 100644 index 00000000..03556c83 --- /dev/null +++ b/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4.html @@ -0,0 +1,105 @@ + + + + + + + +libfranka: examples Directory Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    examples Directory Reference
    +
    +
    +
    +Directory dependency graph for examples:
    +
    +
    examples
    + + + + + +
    + + + + + +

    +Files

    file  examples_common.h [code]
     Contains common types and functions for the examples.
     
    +
    + + + + diff --git a/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.map b/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.map new file mode 100644 index 00000000..c2f2d159 --- /dev/null +++ b/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5 b/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5 new file mode 100644 index 00000000..5580f58b --- /dev/null +++ b/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5 @@ -0,0 +1 @@ +dbaf728ccf1ad8afb7a971ae6be3e2c2 \ No newline at end of file diff --git a/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.png b/0.13.6/dir_d28a4824dc47e487b107a5db32ef43c4_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ada0bd153491b57f600843888f986dca131acc GIT binary patch literal 3212 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 literal 0 HcmV?d00001 diff --git a/0.13.6/dir_d44c64559bbebec7f509842c48db8b23.html b/0.13.6/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 00000000..09e4d754 --- /dev/null +++ b/0.13.6/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,92 @@ + + + + + + + +libfranka: include Directory Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    include Directory Reference
    +
    +
    + + +

    +Directories

    +
    + + + + diff --git a/0.13.6/dir_e68e8157741866f444e17edd764ebbae.html b/0.13.6/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 00000000..385dd7d4 --- /dev/null +++ b/0.13.6/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,88 @@ + + + + + + + +libfranka: doc Directory Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    doc Directory Reference
    +
    +
    +
    + + + + diff --git a/0.13.6/doc.png b/0.13.6/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/0.13.6/doxygen.css b/0.13.6/doxygen.css new file mode 100644 index 00000000..ffbff022 --- /dev/null +++ b/0.13.6/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/0.13.6/doxygen.svg b/0.13.6/doxygen.svg new file mode 100644 index 00000000..d42dad52 --- /dev/null +++ b/0.13.6/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/duration_8h.html b/0.13.6/duration_8h.html new file mode 100644 index 00000000..8d1de623 --- /dev/null +++ b/0.13.6/duration_8h.html @@ -0,0 +1,194 @@ + + + + + + + +libfranka: include/franka/duration.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    duration.h File Reference
    +
    +
    + +

    Contains the franka::Duration type. +More...

    +
    #include <chrono>
    +#include <cstdint>
    +#include <ratio>
    +
    +Include dependency graph for duration.h:
    +
    +
    + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  franka::Duration
     Represents a duration with millisecond resolution. More...
     
    + + + + +

    +Functions

    Duration franka::operator* (uint64_t lhs, const Duration &rhs) noexcept
     Performs multiplication. More...
     
    +

    Detailed Description

    +

    Contains the franka::Duration type.

    +

    Function Documentation

    + +

    ◆ operator*()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Duration franka::operator* (uint64_t lhs,
    const Durationrhs 
    )
    +
    +noexcept
    +
    + +

    Performs multiplication.

    +
    Parameters
    + + + +
    [in]lhsLeft-hand side of the multiplication.
    [in]rhsRight-hand side of the multiplication.
    +
    +
    +
    Returns
    Result of the multiplication.
    + +
    +
    +
    + + + + diff --git a/0.13.6/duration_8h__dep__incl.map b/0.13.6/duration_8h__dep__incl.map new file mode 100644 index 00000000..1b334f46 --- /dev/null +++ b/0.13.6/duration_8h__dep__incl.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/0.13.6/duration_8h__dep__incl.md5 b/0.13.6/duration_8h__dep__incl.md5 new file mode 100644 index 00000000..3e14ebbb --- /dev/null +++ b/0.13.6/duration_8h__dep__incl.md5 @@ -0,0 +1 @@ +2419ea66674e4bc3b2d7066dd96a693e \ No newline at end of file diff --git a/0.13.6/duration_8h__dep__incl.png b/0.13.6/duration_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..9de4eabfb71f3c57dd82bb7484acecfa80ec1598 GIT binary patch literal 65546 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
    nXr&&qG;odFHQ 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�*$jZyMRD}Eop1BbjUGcz-S;ebaX zxQy*FMzs6YxhK4rNd8JYEs0Y>RyulVn+JSh4e8ojA5wcL)4UiijbJ?{BL#Sx)oCyo zP+dRzVY#d!6qVxJ&!3+_@4+zw6?^-#sS>vUpSZwmgQV>rp_wGFdK?A|XM9L{SuorIJuioVPzi(&*a8fqjS@Nuw3yLQfz$F`c zB4gq7P%`}q5c0wC@vTvf17>kk(Xc1Z01E~>0;n^9Yn@x>+qWNsDhVE}A%kKuL4!~> zZQ3(7Ha0s_(E%Huuf!2-XKYEfq5%`K?p?^3*xfHVEkoqAwp?Q5Hg7(F&GbuJn$yo< zA$pQFTgJ_x=NNvvjzMrCDya)mLy+q&b;UNhh-Q`<1xMQBb$r9t(Ir>!T+O=Gayd!MH<5Vq<<1(NaVRavIc91uyCGXhbf^Ell$*3#1MNhT67i5F~ z^?`~BMMOs`cg>lZyg5L{w=_~h3bG2H^EY1%8xM6jae;?T5l81FLL%V{UD)uC( zu1HrRq1(KjEYO1R_6PuHeAzXGhJbq1Ha6xDh1B!}H}t$0o?eO>Zjx`MWwCV8DRx&q z6(=IMUM3=O+nqZ*CkspJ^&z`C1JNZ5&EO*2!#ms--!ziofNt7`J;B03tX(XG3$3V; zWZ|h|9{kh{kaEw>y`;&3DAhm?NlwlP;meVo3C&JQjKY?)HF40QvJehM$@EZnNQzjX zb90dbj!~)95p(SKp4jMUefYb!fkI5dZZ6S&U=})G4H!jHMa6sibyt(H_IybYs40KQ zT$%70Zk?YGPM!@M`T(HX5Mob%gRNUjs8yhvCWlKJwt;=}h6Q+Cv!1_OtoM_{?oDqz zaG%Ve&{dT2=@?rFMn5wDt4hw&CjkJCU)N#HbzA1DvgHuEjZ8l+^OVw)c3(@dxgQqjW>k7vL0mV z+0x;7#2lrh?!`R38>ezz*NMPCrMJK!&vQ{^+@N=`%W!6-hheQhGb#`}FJ;2NE%6l8 zzcWZ=^y=EqJ;V$FgWt}_+UZO@#Y7^hvA|G}?KY?8y2D*8s@;tiozoaaGUbcK;xuS0 zL>Tz!Q9-v@bJHe;)JX_XjMUWBG8*WnOwQFKM-~##ttzqaS~-&ty8uSupp^(BlL>* z!Fm@6>{V!~R&J^F9k{4YSf+oXE>#aJp_NGa6P`ApYr!`lmNP1L)KF|>anu=^ zNl6-572mvs(ZtBvOip{DQV-~Wk-#~*IZDS&Z}%KsVM!;^P&S+wMU-SQL{kZ`r3Jlr zvKcK9%8WW|T5WTBwB&}-w*oN%jLg4%Tz)^n_hiHqw)Y6i==Nxyf9+{5CUR@ESAVxy zDRLkN{`%TU%ifq-fE;wT%?nqEmlsrqhu(@1Z4$|A4z0hi)H1n4E=xiXo_9{7$-ow3 zWN^|Y&^|-5^6h#9X6)>{*T|pitrEb|N>dy8fKO#yf=6Fn4bpfvk`7?Am%Z3gFkcvS zR{i3OENFU(L%r^@fKyhGYy|8*E*^Y#C1d@W|FB&ZFo}d4f|W zP7=p9jaR(Ed(5K*Wh1lvgcJUb`nfk5DdZVWDt**IyI3=WA!kp#N^wfcI&i7Aj~9#0Ep&CM z2FzAu+Dk-*0yFW~WlbuSTWxXoi_DrSsYge_ zknh)=wBM(7C7 z{8^yD%lhEK;;h~5)}mk%=C1U>Ea&PtL#A6vn$-VI8UH`uRO6bm?#IN&+7Xar!-&t@mq_aFaGjriHh^3ZP1HzzLs7sRK?S^xk5 literal 0 HcmV?d00001 diff --git a/0.13.6/duration_8h__incl.map b/0.13.6/duration_8h__incl.map new file mode 100644 index 00000000..601f0873 --- /dev/null +++ b/0.13.6/duration_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/0.13.6/duration_8h__incl.md5 b/0.13.6/duration_8h__incl.md5 new file mode 100644 index 00000000..6291b3a5 --- /dev/null +++ b/0.13.6/duration_8h__incl.md5 @@ -0,0 +1 @@ +17d6f6b2b66c0cba191e8e5ca030e1d5 \ No newline at end of file diff --git a/0.13.6/duration_8h__incl.png b/0.13.6/duration_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ff73d48a43c119a388f3d2db9089e83527f719cf GIT binary patch literal 6069 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 O9-^(GuU@8V9rj + + + + + + +libfranka: include/franka/duration.h Source File + + + + + + + + + + + + +
    +
    +
    duration.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <chrono>
    +
    6 #include <cstdint>
    +
    7 #include <ratio>
    +
    8 
    +
    14 namespace franka {
    +
    15 
    +
    19 class Duration {
    +
    20  public:
    +
    24  Duration() noexcept;
    +
    25 
    +
    31  explicit Duration(uint64_t milliseconds) noexcept;
    +
    32 
    +
    38  Duration(std::chrono::duration<uint64_t, std::milli> duration) noexcept;
    +
    39 
    +
    43  Duration(const Duration&) = default;
    +
    44 
    +
    50  Duration& operator=(const Duration&) = default;
    +
    51 
    +
    57  operator std::chrono::duration<uint64_t, std::milli>() const noexcept;
    +
    58 
    +
    64  double toSec() const noexcept;
    +
    65 
    +
    71  uint64_t toMSec() const noexcept;
    +
    72 
    +
    85  Duration operator+(const Duration& rhs) const noexcept;
    +
    93  Duration& operator+=(const Duration& rhs) noexcept;
    +
    94 
    +
    102  Duration operator-(const Duration& rhs) const noexcept;
    +
    110  Duration& operator-=(const Duration& rhs) noexcept;
    +
    111 
    +
    119  Duration operator*(uint64_t rhs) const noexcept;
    +
    127  Duration& operator*=(uint64_t rhs) noexcept;
    +
    128 
    +
    136  uint64_t operator/(const Duration& rhs) const noexcept;
    +
    144  Duration operator/(uint64_t rhs) const noexcept;
    +
    152  Duration& operator/=(uint64_t rhs) noexcept;
    +
    153 
    +
    161  Duration operator%(const Duration& rhs) const noexcept;
    +
    169  Duration operator%(uint64_t rhs) const noexcept;
    +
    177  Duration& operator%=(const Duration& rhs) noexcept;
    +
    185  Duration& operator%=(uint64_t rhs) noexcept;
    +
    186 
    +
    203  bool operator==(const Duration& rhs) const noexcept;
    +
    211  bool operator!=(const Duration& rhs) const noexcept;
    +
    212 
    +
    220  bool operator<(const Duration& rhs) const noexcept;
    +
    228  bool operator<=(const Duration& rhs) const noexcept;
    +
    229 
    +
    237  bool operator>(const Duration& rhs) const noexcept;
    +
    245  bool operator>=(const Duration& rhs) const noexcept;
    +
    246 
    +
    251  private:
    +
    252  std::chrono::duration<uint64_t, std::milli> duration_;
    +
    253 };
    +
    254 
    +
    263 Duration operator*(uint64_t lhs, const Duration& rhs) noexcept;
    +
    264 
    +
    265 } // namespace franka
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    uint64_t toMSec() const noexcept
    Returns the stored duration in .
    +
    double toSec() const noexcept
    Returns the stored duration in .
    +
    Duration() noexcept
    Creates a new Duration instance with zero milliseconds.
    +
    + + + + diff --git a/0.13.6/dynsections.js b/0.13.6/dynsections.js new file mode 100644 index 00000000..3174bd7b --- /dev/null +++ b/0.13.6/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +libfranka: echo_robot_state.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    echo_robot_state.cpp
    +
    +
    +

    An example showing how to continuously read the robot state.

    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <iostream>
    +
    + +
    #include <franka/robot.h>
    +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    +
    +
    size_t count = 0;
    +
    robot.read([&count](const franka::RobotState& robot_state) {
    +
    // Printing to std::cout adds a delay. This is acceptable for a read loop such as this, but
    +
    // should not be done in a control loop.
    +
    std::cout << robot_state << std::endl;
    +
    return count++ < 100;
    +
    });
    +
    +
    std::cout << "Done." << std::endl;
    +
    } catch (franka::Exception const& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void read(std::function< bool(const RobotState &)> read_callback)
    Starts a loop for reading the current robot state.
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/errors_8h.html b/0.13.6/errors_8h.html new file mode 100644 index 00000000..019de13d --- /dev/null +++ b/0.13.6/errors_8h.html @@ -0,0 +1,182 @@ + + + + + + + +libfranka: include/franka/errors.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    errors.h File Reference
    +
    +
    + +

    Contains the franka::Errors type. +More...

    +
    #include <array>
    +#include <ostream>
    +
    +Include dependency graph for errors.h:
    +
    +
    + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    struct  franka::Errors
     Enumerates errors that can occur while controlling a franka::Robot. More...
     
    + + + + +

    +Functions

    std::ostream & franka::operator<< (std::ostream &ostream, const Errors &errors)
     Streams the errors as JSON array. More...
     
    +

    Detailed Description

    +

    Contains the franka::Errors type.

    +

    Function Documentation

    + +

    ◆ operator<<()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& franka::operator<< (std::ostream & ostream,
    const Errorserrors 
    )
    +
    + +

    Streams the errors as JSON array.

    +
    Parameters
    + + + +
    [in]ostreamOstream instance
    [in]errorsErrors struct instance to stream
    +
    +
    +
    Returns
    Ostream instance
    +
    Examples
    joint_impedance_control.cpp, and print_joint_poses.cpp.
    +
    + +
    +
    +
    + + + + diff --git a/0.13.6/errors_8h__dep__incl.map b/0.13.6/errors_8h__dep__incl.map new file mode 100644 index 00000000..d4c26bdd --- /dev/null +++ b/0.13.6/errors_8h__dep__incl.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/0.13.6/errors_8h__dep__incl.md5 b/0.13.6/errors_8h__dep__incl.md5 new file mode 100644 index 00000000..c68b6158 --- /dev/null +++ b/0.13.6/errors_8h__dep__incl.md5 @@ -0,0 +1 @@ +ae1c8cd80573cbcca5d80dc0c9cb59e1 \ No newline at end of file diff --git a/0.13.6/errors_8h__dep__incl.png b/0.13.6/errors_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..62c6e155df5d534714e4de5afe1159adafe47360 GIT binary patch literal 49640 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 b(OD8Yj9@Iuo7aw!@SoQH!~3#SEie5a-^=<6 literal 0 HcmV?d00001 diff --git a/0.13.6/errors_8h__incl.map b/0.13.6/errors_8h__incl.map new file mode 100644 index 00000000..fca5a0a0 --- /dev/null +++ b/0.13.6/errors_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/errors_8h__incl.md5 b/0.13.6/errors_8h__incl.md5 new file mode 100644 index 00000000..46fb1616 --- /dev/null +++ b/0.13.6/errors_8h__incl.md5 @@ -0,0 +1 @@ +126f684209a4eb6c33d6469d1dee996f \ No newline at end of file diff --git a/0.13.6/errors_8h__incl.png b/0.13.6/errors_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..04dad9ed97a94ab46a242f524bd242689249d5cf GIT binary patch literal 5511 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 literal 0 HcmV?d00001 diff --git a/0.13.6/errors_8h_source.html b/0.13.6/errors_8h_source.html new file mode 100644 index 00000000..8d511e44 --- /dev/null +++ b/0.13.6/errors_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + +libfranka: include/franka/errors.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    errors.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <array>
    +
    6 #include <ostream>
    +
    7 
    +
    13 namespace franka {
    +
    14 
    +
    18 struct Errors {
    +
    19  private:
    +
    20  std::array<bool, 41> errors_{};
    +
    21 
    +
    22  public:
    +
    26  Errors();
    +
    27 
    +
    33  Errors(const Errors& other);
    +
    34 
    + +
    43 
    +
    49  Errors(const std::array<bool, 41>& errors);
    +
    50 
    +
    56  explicit operator bool() const noexcept;
    +
    57 
    +
    65  explicit operator std::string() const;
    +
    66 
    + + + + + + +
    95  const bool& joint_reflex;
    +
    100  const bool& cartesian_reflex;
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    224  const bool& instability_detected;
    + + + + + +
    246 };
    +
    247 
    +
    256 std::ostream& operator<<(std::ostream& ostream, const Errors& errors);
    +
    257 
    +
    258 } // namespace franka
    +
    Enumerates errors that can occur while controlling a franka::Robot.
    Definition: errors.h:18
    +
    const bool & cartesian_motion_generator_acceleration_discontinuity
    True if commanded acceleration in Cartesian motion generators is discontinuous (target values are too...
    Definition: errors.h:158
    +
    const bool & tau_j_range_violation
    True if the measured torque signal is out of the safe range.
    Definition: errors.h:220
    +
    const bool & cartesian_motion_generator_velocity_discontinuity
    True if commanded velocity in Cartesian motion generators is discontinuous (target values are too far...
    Definition: errors.h:153
    +
    const bool & joint_p2p_insufficient_torque_for_planning
    True if the robot is overloaded for the required motion.
    Definition: errors.h:216
    +
    const bool & cartesian_motion_generator_joint_velocity_discontinuity
    True if the joint velocity in Cartesian motion generators is discontinuous after IK calculation.
    Definition: errors.h:179
    +
    const bool & cartesian_motion_generator_joint_acceleration_discontinuity
    True if the joint acceleration in Cartesian motion generators is discontinuous after IK calculation.
    Definition: errors.h:184
    +
    const bool & cartesian_velocity_violation
    True if the robot exceeded Cartesian velocity limits.
    Definition: errors.h:86
    +
    const bool & cartesian_position_limits_violation
    True if the robot moved past any of the virtual walls.
    Definition: errors.h:74
    +
    const bool & cartesian_motion_generator_joint_velocity_limits_violation
    True if the joint velocity limits would be exceeded after IK calculation.
    Definition: errors.h:174
    +
    const bool & joint_position_limits_violation
    True if the robot moved past the joint limits.
    Definition: errors.h:70
    +
    Errors(const Errors &other)
    Copy constructs a new Errors instance.
    +
    const bool & cartesian_reflex
    True if a collision was detected, i.e. the robot exceeded a torque threshold in a Cartesian motion.
    Definition: errors.h:100
    +
    const bool & communication_constraints_violation
    True if minimum network communication quality could not be held during a motion.
    Definition: errors.h:206
    +
    const bool & base_acceleration_initialization_timeout
    True if the gravity vector could not be initialized by measureing the base acceleration.
    Definition: errors.h:241
    +
    const bool & cartesian_spline_motion_generator_violation
    True if the generated motion violates a joint limit.
    Definition: errors.h:233
    +
    const bool & cartesian_motion_generator_elbow_sign_inconsistent
    True if commanded elbow values in Cartesian motion generators are inconsistent.
    Definition: errors.h:162
    +
    const bool & joint_motion_generator_acceleration_discontinuity
    True if commanded acceleration in joint motion generators is discontinuous (target values are too far...
    Definition: errors.h:135
    +
    const bool & power_limit_violation
    True if commanded values would result in exceeding the power limit.
    Definition: errors.h:210
    +
    const bool & cartesian_motion_generator_start_elbow_invalid
    True if the first elbow value in Cartesian motion generators is too far from initial one.
    Definition: errors.h:166
    +
    Errors & operator=(Errors other)
    Assigns this Errors instance from another Errors value.
    +
    const bool & cartesian_motion_generator_joint_position_limits_violation
    True if the joint position limits would be exceeded after IK calculation.
    Definition: errors.h:170
    +
    const bool & joint_position_motion_generator_start_pose_invalid
    True if an external joint position motion generator was started with a pose too far from the current ...
    Definition: errors.h:117
    +
    const bool & joint_move_in_wrong_direction
    True if the robot is in joint position limits violation error and the user guides the robot further t...
    Definition: errors.h:229
    +
    const bool & joint_velocity_violation
    True if the robot exceeded joint velocity limits.
    Definition: errors.h:82
    +
    const bool & base_acceleration_invalid_reading
    True if the base acceleration O_ddP_O cannot be determined.
    Definition: errors.h:245
    +
    const bool & cartesian_motion_generator_velocity_limits_violation
    True if an external Cartesian motion generator would move with too high velocity.
    Definition: errors.h:148
    +
    const bool & joint_motion_generator_position_limits_violation
    True if an external joint motion generator would move into a joint limit.
    Definition: errors.h:121
    +
    const bool & cartesian_position_motion_generator_invalid_frame
    True if the Cartesian pose is not a valid transformation matrix.
    Definition: errors.h:188
    +
    const bool & start_elbow_sign_inconsistent
    True if the start elbow sign was inconsistent.
    Definition: errors.h:202
    +
    const bool & cartesian_position_motion_generator_start_pose_invalid
    True if an external Cartesian position motion generator was started with a pose too far from the curr...
    Definition: errors.h:140
    +
    const bool & joint_motion_generator_velocity_discontinuity
    True if commanded velocity in joint motion generators is discontinuous (target values are too far apa...
    Definition: errors.h:130
    +
    const bool & cartesian_motion_generator_elbow_limit_violation
    True if an external Cartesian motion generator would move into an elbow limit.
    Definition: errors.h:144
    +
    const bool & max_goal_pose_deviation_violation
    True if internal motion generator did not reach the goal pose.
    Definition: errors.h:104
    +
    const bool & max_path_pose_deviation_violation
    True if internal motion generator deviated from the path.
    Definition: errors.h:108
    +
    const bool & self_collision_avoidance_violation
    True if the robot would have collided with itself.
    Definition: errors.h:78
    +
    Errors(const std::array< bool, 41 > &errors)
    Creates a new Errors instance from the given array.
    +
    const bool & joint_motion_generator_velocity_limits_violation
    True if an external joint motion generator exceeded velocity limits.
    Definition: errors.h:125
    +
    const bool & force_controller_desired_force_tolerance_violation
    True if desired force exceeds the safety thresholds.
    Definition: errors.h:192
    +
    const bool & force_control_safety_violation
    True if the robot exceeded safety threshold during force control.
    Definition: errors.h:90
    +
    const bool & instability_detected
    True if an instability is detected.
    Definition: errors.h:224
    +
    Errors()
    Creates an empty Errors instance.
    +
    const bool & joint_via_motion_generator_planning_joint_limit_violation
    True if the generated motion violates a joint limit.
    Definition: errors.h:237
    +
    const bool & controller_torque_discontinuity
    True if the torque set by the external controller is discontinuous.
    Definition: errors.h:196
    +
    const bool & joint_reflex
    True if a collision was detected, i.e. the robot exceeded a torque threshold in a joint motion.
    Definition: errors.h:95
    +
    const bool & cartesian_velocity_profile_safety_violation
    True if Cartesian velocity profile for internal motions was exceeded.
    Definition: errors.h:112
    +
    + + + + diff --git a/0.13.6/examples.html b/0.13.6/examples.html new file mode 100644 index 00000000..58f1aa17 --- /dev/null +++ b/0.13.6/examples.html @@ -0,0 +1,128 @@ + + + + + + + +libfranka: Examples + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Examples
    +
    + + + + + diff --git a/0.13.6/examples__common_8h.html b/0.13.6/examples__common_8h.html new file mode 100644 index 00000000..28f5e8d8 --- /dev/null +++ b/0.13.6/examples__common_8h.html @@ -0,0 +1,173 @@ + + + + + + + +libfranka: examples/examples_common.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    examples_common.h File Reference
    +
    +
    + +

    Contains common types and functions for the examples. +More...

    +
    #include <array>
    +#include <Eigen/Core>
    +#include <franka/control_types.h>
    +#include <franka/duration.h>
    +#include <franka/robot.h>
    +#include <franka/robot_state.h>
    +
    +Include dependency graph for examples_common.h:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  MotionGenerator
     An example showing how to generate a joint pose motion to a goal position. More...
     
    + + + + +

    +Functions

    void setDefaultBehavior (franka::Robot &robot)
     Sets a default collision behavior, joint impedance and Cartesian impedance. More...
     
    +

    Detailed Description

    +

    Contains common types and functions for the examples.

    +

    Function Documentation

    + +

    ◆ setDefaultBehavior()

    + + +
    + + + + diff --git a/0.13.6/examples__common_8h__incl.map b/0.13.6/examples__common_8h__incl.map new file mode 100644 index 00000000..f408e37d --- /dev/null +++ b/0.13.6/examples__common_8h__incl.map @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/examples__common_8h__incl.md5 b/0.13.6/examples__common_8h__incl.md5 new file mode 100644 index 00000000..c9d1b608 --- /dev/null +++ b/0.13.6/examples__common_8h__incl.md5 @@ -0,0 +1 @@ +848019a0803ed3a5beee032a2aa4313b \ No newline at end of file diff --git a/0.13.6/examples__common_8h__incl.png b/0.13.6/examples__common_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..22b7a7d3d074c294ff02e42032f46842865d5251 GIT binary patch literal 86539 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

    flso$DbY~DHbBIh;U!Nh`Oz0?M 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

    x-BiiM1O*LEkWgum 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 literal 0 HcmV?d00001 diff --git a/0.13.6/examples__common_8h_source.html b/0.13.6/examples__common_8h_source.html new file mode 100644 index 00000000..50b57827 --- /dev/null +++ b/0.13.6/examples__common_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +libfranka: examples/examples_common.h Source File + + + + + + + + + + + +

    +
    +
    +
    examples_common.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <array>
    +
    6 
    +
    7 #include <Eigen/Core>
    +
    8 
    +
    9 #include <franka/control_types.h>
    +
    10 #include <franka/duration.h>
    +
    11 #include <franka/robot.h>
    +
    12 #include <franka/robot_state.h>
    +
    13 
    + +
    25 
    + +
    32  public:
    +
    39  MotionGenerator(double speed_factor, const std::array<double, 7> q_goal);
    +
    40 
    + +
    50 
    +
    51  private:
    +
    52  using Vector7d = Eigen::Matrix<double, 7, 1, Eigen::ColMajor>;
    +
    53  using Vector7i = Eigen::Matrix<int, 7, 1, Eigen::ColMajor>;
    +
    54 
    +
    55  bool calculateDesiredValues(double t, Vector7d* delta_q_d) const;
    +
    56  void calculateSynchronizedValues();
    +
    57 
    +
    58  static constexpr double kDeltaQMotionFinished = 1e-6;
    +
    59  const Vector7d q_goal_;
    +
    60 
    +
    61  Vector7d q_start_;
    +
    62  Vector7d delta_q_;
    +
    63 
    +
    64  Vector7d dq_max_sync_;
    +
    65  Vector7d t_1_sync_;
    +
    66  Vector7d t_2_sync_;
    +
    67  Vector7d t_f_sync_;
    +
    68  Vector7d q_1_;
    +
    69 
    +
    70  double time_ = 0.0;
    +
    71 
    +
    72  Vector7d dq_max_ = (Vector7d() << 2.0, 2.0, 2.0, 2.0, 2.5, 2.5, 2.5).finished();
    +
    73  Vector7d ddq_max_start_ = (Vector7d() << 5, 5, 5, 5, 5, 5, 5).finished();
    +
    74  Vector7d ddq_max_goal_ = (Vector7d() << 5, 5, 5, 5, 5, 5, 5).finished();
    +
    75 };
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    MotionGenerator(double speed_factor, const std::array< double, 7 > q_goal)
    Creates a new MotionGenerator instance for a target q.
    Definition: examples_common.cpp:22
    +
    franka::JointPositions operator()(const franka::RobotState &robot_state, franka::Duration period)
    Sends joint position calculations.
    Definition: examples_common.cpp:114
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Stores values for joint position motion generation.
    Definition: control_types.h:72
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    Contains helper types for returning motion generation and joint-level torque commands.
    +
    Contains the franka::Duration type.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains the franka::Robot type.
    +
    Contains the franka::RobotState types.
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/exception_8h.html b/0.13.6/exception_8h.html new file mode 100644 index 00000000..86abe5d1 --- /dev/null +++ b/0.13.6/exception_8h.html @@ -0,0 +1,166 @@ + + + + + + + +libfranka: include/franka/exception.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    exception.h File Reference
    +
    +
    + +

    Contains exception definitions. +More...

    +
    #include <stdexcept>
    +#include <string>
    +#include <franka/log.h>
    +
    +Include dependency graph for exception.h:
    +
    +
    + + + + + + + + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  franka::Exception
     Base class for all exceptions used by libfranka. More...
     
    struct  franka::ModelException
     ModelException is thrown if an error occurs when loading the model library. More...
     
    struct  franka::NetworkException
     NetworkException is thrown if a connection to the robot cannot be established, or when a timeout occurs. More...
     
    struct  franka::ProtocolException
     ProtocolException is thrown if the robot returns an incorrect message. More...
     
    struct  franka::IncompatibleVersionException
     IncompatibleVersionException is thrown if the robot does not support this version of libfranka. More...
     
    struct  franka::ControlException
     ControlException is thrown if an error occurs during motion generation or torque control. More...
     
    struct  franka::CommandException
     CommandException is thrown if an error occurs during command execution. More...
     
    struct  franka::RealtimeException
     RealtimeException is thrown if realtime priority cannot be set. More...
     
    struct  franka::InvalidOperationException
     InvalidOperationException is thrown if an operation cannot be performed. More...
     
    +

    Detailed Description

    +

    Contains exception definitions.

    +
    + + + + diff --git a/0.13.6/exception_8h__dep__incl.map b/0.13.6/exception_8h__dep__incl.map new file mode 100644 index 00000000..43bc041c --- /dev/null +++ b/0.13.6/exception_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/0.13.6/exception_8h__dep__incl.md5 b/0.13.6/exception_8h__dep__incl.md5 new file mode 100644 index 00000000..818e154d --- /dev/null +++ b/0.13.6/exception_8h__dep__incl.md5 @@ -0,0 +1 @@ +2ffd2591379374f70dc19ebccd93ac68 \ No newline at end of file diff --git a/0.13.6/exception_8h__dep__incl.png b/0.13.6/exception_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1895cacdc509a63f19565a75b131fbb93fa2630c GIT binary patch literal 15889 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 R)CUPZ4;0ko%VbT1{|`%@nTG%X literal 0 HcmV?d00001 diff --git a/0.13.6/exception_8h__incl.map b/0.13.6/exception_8h__incl.map new file mode 100644 index 00000000..b00adbe3 --- /dev/null +++ b/0.13.6/exception_8h__incl.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/exception_8h__incl.md5 b/0.13.6/exception_8h__incl.md5 new file mode 100644 index 00000000..8c1ff872 --- /dev/null +++ b/0.13.6/exception_8h__incl.md5 @@ -0,0 +1 @@ +436dc167aa9795891fa28cd8e52233aa \ No newline at end of file diff --git a/0.13.6/exception_8h__incl.png b/0.13.6/exception_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..b04e4ccd225f837a44f5d51a64e74dce329858bf GIT binary patch literal 34488 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 literal 0 HcmV?d00001 diff --git a/0.13.6/exception_8h_source.html b/0.13.6/exception_8h_source.html new file mode 100644 index 00000000..b46a54f4 --- /dev/null +++ b/0.13.6/exception_8h_source.html @@ -0,0 +1,156 @@ + + + + + + + +libfranka: include/franka/exception.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    exception.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <stdexcept>
    +
    6 #include <string>
    +
    7 
    +
    8 #include <franka/log.h>
    +
    9 
    +
    15 namespace franka {
    +
    16 
    +
    20 struct Exception : public std::runtime_error {
    +
    21  using std::runtime_error::runtime_error;
    +
    22 };
    +
    23 
    +
    27 struct ModelException : public Exception {
    +
    28  using Exception::Exception;
    +
    29 };
    +
    30 
    +
    35 struct NetworkException : public Exception {
    +
    36  using Exception::Exception;
    +
    37 };
    +
    38 
    +
    42 struct ProtocolException : public Exception {
    +
    43  using Exception::Exception;
    +
    44 };
    +
    45 
    + + +
    56 
    +
    60  const uint16_t server_version;
    +
    64  const uint16_t library_version;
    +
    65 };
    +
    66 
    +
    73 struct ControlException : public Exception {
    +
    80  explicit ControlException(const std::string& what, std::vector<franka::Record> log = {}) noexcept;
    +
    81 
    +
    85  const std::vector<franka::Record> log;
    +
    86 };
    +
    87 
    +
    91 struct CommandException : public Exception {
    +
    92  using Exception::Exception;
    +
    93 };
    +
    94 
    +
    98 struct RealtimeException : public Exception {
    +
    99  using Exception::Exception;
    +
    100 };
    +
    101 
    + +
    106  using Exception::Exception;
    +
    107 };
    +
    108 
    +
    109 } // namespace franka
    +
    Contains helper types for logging sent commands and received robot states.
    +
    CommandException is thrown if an error occurs during command execution.
    Definition: exception.h:91
    +
    ControlException is thrown if an error occurs during motion generation or torque control.
    Definition: exception.h:73
    +
    ControlException(const std::string &what, std::vector< franka::Record > log={}) noexcept
    Creates the exception with an explanatory string and a Log object.
    +
    const std::vector< franka::Record > log
    Vector of states and commands logged just before the exception occurred.
    Definition: exception.h:85
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    IncompatibleVersionException is thrown if the robot does not support this version of libfranka.
    Definition: exception.h:49
    +
    const uint16_t server_version
    Control's protocol version.
    Definition: exception.h:60
    +
    IncompatibleVersionException(uint16_t server_version, uint16_t library_version) noexcept
    Creates the exception using the two different protocol versions.
    +
    const uint16_t library_version
    libfranka protocol version.
    Definition: exception.h:64
    +
    InvalidOperationException is thrown if an operation cannot be performed.
    Definition: exception.h:105
    +
    ModelException is thrown if an error occurs when loading the model library.
    Definition: exception.h:27
    +
    NetworkException is thrown if a connection to the robot cannot be established, or when a timeout occu...
    Definition: exception.h:35
    +
    ProtocolException is thrown if the robot returns an incorrect message.
    Definition: exception.h:42
    +
    RealtimeException is thrown if realtime priority cannot be set.
    Definition: exception.h:98
    +
    + + + + diff --git a/0.13.6/files.html b/0.13.6/files.html new file mode 100644 index 00000000..37af0db3 --- /dev/null +++ b/0.13.6/files.html @@ -0,0 +1,111 @@ + + + + + + + +libfranka: File List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + +
      examples
     examples_common.hContains common types and functions for the examples
      include
      franka
     active_control.hImplements the ActiveControlBase abstract class
     active_control_base.hAbstract interface class as the base of the active controllers
     active_motion_generator.hContains the franka::ActiveMotionGenerator type
     active_torque_control.hContains the franka::ActiveTorqueControl type
     control_tools.hContains helper functions for writing control loops
     control_types.hContains helper types for returning motion generation and joint-level torque commands
     duration.hContains the franka::Duration type
     errors.hContains the franka::Errors type
     exception.hContains exception definitions
     gripper.hContains the franka::Gripper type
     gripper_state.hContains the franka::GripperState type
     log.hContains helper types for logging sent commands and received robot states
     lowpass_filter.hContains functions for filtering signals with a low-pass filter
     model.hContains model library types
     rate_limiting.hContains functions for limiting the rate of torques, Cartesian pose, Cartesian velocity, joint position and joint velocity
     robot.hContains the franka::Robot type
     robot_state.hContains the franka::RobotState types
     vacuum_gripper.hContains the franka::VacuumGripper type
     vacuum_gripper_state.hContains the franka::VacuumGripperState type
    +
    +
    + + + + diff --git a/0.13.6/folderclosed.png b/0.13.6/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/0.13.6/force_control_8cpp-example.html b/0.13.6/force_control_8cpp-example.html new file mode 100644 index 00000000..0e325976 --- /dev/null +++ b/0.13.6/force_control_8cpp-example.html @@ -0,0 +1,214 @@ + + + + + + + +libfranka: force_control.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    force_control.cpp
    +
    +
    +

    A simple PI force controller that renders in the Z axis the gravitational force corresponding to a target mass of 1 kg.

    Warning
    : make sure that no endeffector is mounted and that the robot's last joint is in contact with a horizontal rigid surface before starting.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <array>
    +
    #include <iostream>
    +
    +
    #include <Eigen/Core>
    +
    + + +
    #include <franka/model.h>
    +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    // Check whether the required arguments were passed
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    // parameters
    +
    double desired_mass{0.0};
    +
    constexpr double target_mass{1.0}; // NOLINT(readability-identifier-naming)
    +
    constexpr double k_p{1.0}; // NOLINT(readability-identifier-naming)
    +
    constexpr double k_i{2.0}; // NOLINT(readability-identifier-naming)
    +
    constexpr double filter_gain{0.001}; // NOLINT(readability-identifier-naming)
    +
    +
    try {
    +
    // connect to robot
    +
    franka::Robot robot(argv[1]);
    + +
    // load the kinematics and dynamics model
    +
    franka::Model model = robot.loadModel();
    +
    +
    // set collision behavior
    +
    robot.setCollisionBehavior({{100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0}},
    +
    {{100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0}},
    +
    {{100.0, 100.0, 100.0, 100.0, 100.0, 100.0}},
    +
    {{100.0, 100.0, 100.0, 100.0, 100.0, 100.0}});
    +
    +
    franka::RobotState initial_state = robot.readOnce();
    +
    +
    Eigen::VectorXd initial_tau_ext(7), tau_error_integral(7);
    +
    // Bias torque sensor
    +
    std::array<double, 7> gravity_array = model.gravity(initial_state);
    +
    Eigen::Map<Eigen::Matrix<double, 7, 1>> initial_tau_measured(initial_state.tau_J.data());
    +
    Eigen::Map<Eigen::Matrix<double, 7, 1>> initial_gravity(gravity_array.data());
    +
    initial_tau_ext = initial_tau_measured - initial_gravity;
    +
    +
    // init integrator
    +
    tau_error_integral.setZero();
    +
    +
    // define callback for the torque control loop
    +
    Eigen::Vector3d initial_position;
    +
    double time = 0.0;
    +
    auto get_position = [](const franka::RobotState& robot_state) {
    +
    return Eigen::Vector3d(robot_state.O_T_EE[12], robot_state.O_T_EE[13],
    +
    robot_state.O_T_EE[14]);
    +
    };
    +
    auto force_control_callback = [&](const franka::RobotState& robot_state,
    + +
    time += period.toSec();
    +
    +
    if (time == 0.0) {
    +
    initial_position = get_position(robot_state);
    +
    }
    +
    +
    if (time > 0 && (get_position(robot_state) - initial_position).norm() > 0.01) {
    +
    throw std::runtime_error("Aborting; too far away from starting pose!");
    +
    }
    +
    +
    // get state variables
    +
    std::array<double, 42> jacobian_array =
    +
    model.zeroJacobian(franka::Frame::kEndEffector, robot_state);
    +
    +
    Eigen::Map<const Eigen::Matrix<double, 6, 7>> jacobian(jacobian_array.data());
    +
    Eigen::Map<const Eigen::Matrix<double, 7, 1>> tau_measured(robot_state.tau_J.data());
    +
    Eigen::Map<const Eigen::Matrix<double, 7, 1>> gravity(gravity_array.data());
    +
    +
    Eigen::VectorXd tau_d(7), desired_force_torque(6), tau_cmd(7), tau_ext(7);
    +
    desired_force_torque.setZero();
    +
    desired_force_torque(2) = desired_mass * -9.81;
    +
    tau_ext << tau_measured - gravity - initial_tau_ext;
    +
    tau_d << jacobian.transpose() * desired_force_torque;
    +
    tau_error_integral += period.toSec() * (tau_d - tau_ext);
    +
    // FF + PI control
    +
    tau_cmd << tau_d + k_p * (tau_d - tau_ext) + k_i * tau_error_integral;
    +
    +
    // Smoothly update the mass to reach the desired target value
    +
    desired_mass = filter_gain * target_mass + (1 - filter_gain) * desired_mass;
    +
    +
    std::array<double, 7> tau_d_array{};
    +
    Eigen::VectorXd::Map(&tau_d_array[0], 7) = tau_cmd;
    +
    return tau_d_array;
    +
    };
    +
    std::cout << "WARNING: Make sure sure that no endeffector is mounted and that the robot's last "
    +
    "joint is "
    +
    "in contact with a horizontal rigid surface before starting. Keep in mind that "
    +
    "collision thresholds are set to high values."
    +
    << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    // start real-time control loop
    +
    robot.control(force_control_callback);
    +
    +
    } catch (const std::exception& ex) {
    +
    // print exception
    +
    std::cout << ex.what() << std::endl;
    +
    }
    +
    return 0;
    +
    }
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Calculates poses of joints and dynamic properties of the robot.
    Definition: model.h:51
    +
    std::array< double, 42 > zeroJacobian(Frame frame, const franka::RobotState &robot_state) const
    Gets the 6x7 Jacobian for the given joint relative to the base frame.
    +
    std::array< double, 7 > gravity(const std::array< double, 7 > &q, double m_total, const std::array< double, 3 > &F_x_Ctotal, const std::array< double, 3 > &gravity_earth={{0., 0., -9.81}}) const noexcept
    Calculates the gravity vector.
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    Model loadModel()
    Loads the model library from the robot.
    +
    virtual RobotState readOnce()
    Waits for a robot state update and returns it.
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Contains the franka::Duration type.
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains model library types.
    +
    Contains the franka::Robot type.
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    std::array< double, 7 > tau_J
    Measured link-side joint torque sensor signals.
    Definition: robot_state.h:215
    +
    + + + + diff --git a/0.13.6/functions.html b/0.13.6/functions.html new file mode 100644 index 00000000..7bd520cf --- /dev/null +++ b/0.13.6/functions.html @@ -0,0 +1,93 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - a -

    +
    + + + + diff --git a/0.13.6/functions_b.html b/0.13.6/functions_b.html new file mode 100644 index 00000000..041c0bf9 --- /dev/null +++ b/0.13.6/functions_b.html @@ -0,0 +1,93 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - b -

    +
    + + + + diff --git a/0.13.6/functions_c.html b/0.13.6/functions_c.html new file mode 100644 index 00000000..04454dee --- /dev/null +++ b/0.13.6/functions_c.html @@ -0,0 +1,183 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - c -

    +
    + + + + diff --git a/0.13.6/functions_d.html b/0.13.6/functions_d.html new file mode 100644 index 00000000..963833eb --- /dev/null +++ b/0.13.6/functions_d.html @@ -0,0 +1,115 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - d -

    +
    + + + + diff --git a/0.13.6/functions_e.html b/0.13.6/functions_e.html new file mode 100644 index 00000000..810e19a9 --- /dev/null +++ b/0.13.6/functions_e.html @@ -0,0 +1,101 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - e -

    +
    + + + + diff --git a/0.13.6/functions_enum.html b/0.13.6/functions_enum.html new file mode 100644 index 00000000..3f1f2ab5 --- /dev/null +++ b/0.13.6/functions_enum.html @@ -0,0 +1,85 @@ + + + + + + + +libfranka: Class Members - Enumerations + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/0.13.6/functions_f.html b/0.13.6/functions_f.html new file mode 100644 index 00000000..dd52f499 --- /dev/null +++ b/0.13.6/functions_f.html @@ -0,0 +1,105 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - f -

    +
    + + + + diff --git a/0.13.6/functions_func.html b/0.13.6/functions_func.html new file mode 100644 index 00000000..77e818a6 --- /dev/null +++ b/0.13.6/functions_func.html @@ -0,0 +1,399 @@ + + + + + + + +libfranka: Class Members - Functions + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - o -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - v -

    + + +

    - w -

    + + +

    - z -

    + + +

    - ~ -

    +
    + + + + diff --git a/0.13.6/functions_g.html b/0.13.6/functions_g.html new file mode 100644 index 00000000..f0e68bf0 --- /dev/null +++ b/0.13.6/functions_g.html @@ -0,0 +1,93 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - g -

    +
    + + + + diff --git a/0.13.6/functions_h.html b/0.13.6/functions_h.html new file mode 100644 index 00000000..73ae965b --- /dev/null +++ b/0.13.6/functions_h.html @@ -0,0 +1,91 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - h -

    +
    + + + + diff --git a/0.13.6/functions_i.html b/0.13.6/functions_i.html new file mode 100644 index 00000000..b6b0b3e7 --- /dev/null +++ b/0.13.6/functions_i.html @@ -0,0 +1,105 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - i -

    +
    + + + + diff --git a/0.13.6/functions_j.html b/0.13.6/functions_j.html new file mode 100644 index 00000000..c3439997 --- /dev/null +++ b/0.13.6/functions_j.html @@ -0,0 +1,135 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - j -

    +
    + + + + diff --git a/0.13.6/functions_k.html b/0.13.6/functions_k.html new file mode 100644 index 00000000..c9b083c4 --- /dev/null +++ b/0.13.6/functions_k.html @@ -0,0 +1,87 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - k -

    +
    + + + + diff --git a/0.13.6/functions_l.html b/0.13.6/functions_l.html new file mode 100644 index 00000000..13b5e629 --- /dev/null +++ b/0.13.6/functions_l.html @@ -0,0 +1,99 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - l -

    +
    + + + + diff --git a/0.13.6/functions_m.html b/0.13.6/functions_m.html new file mode 100644 index 00000000..5c5a5a69 --- /dev/null +++ b/0.13.6/functions_m.html @@ -0,0 +1,120 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - m -

    +
    + + + + diff --git a/0.13.6/functions_n.html b/0.13.6/functions_n.html new file mode 100644 index 00000000..d644ce54 --- /dev/null +++ b/0.13.6/functions_n.html @@ -0,0 +1,87 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - n -

    +
    + + + + diff --git a/0.13.6/functions_o.html b/0.13.6/functions_o.html new file mode 100644 index 00000000..8ee3a4af --- /dev/null +++ b/0.13.6/functions_o.html @@ -0,0 +1,180 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - o -

    +
    + + + + diff --git a/0.13.6/functions_p.html b/0.13.6/functions_p.html new file mode 100644 index 00000000..36a3022e --- /dev/null +++ b/0.13.6/functions_p.html @@ -0,0 +1,99 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - p -

    +
    + + + + diff --git a/0.13.6/functions_q.html b/0.13.6/functions_q.html new file mode 100644 index 00000000..838c1c2d --- /dev/null +++ b/0.13.6/functions_q.html @@ -0,0 +1,91 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - q -

    +
    + + + + diff --git a/0.13.6/functions_r.html b/0.13.6/functions_r.html new file mode 100644 index 00000000..7968569e --- /dev/null +++ b/0.13.6/functions_r.html @@ -0,0 +1,105 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - r -

    +
    + + + + diff --git a/0.13.6/functions_rela.html b/0.13.6/functions_rela.html new file mode 100644 index 00000000..1817e636 --- /dev/null +++ b/0.13.6/functions_rela.html @@ -0,0 +1,86 @@ + + + + + + + +libfranka: Class Members - Related Functions + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + + + + + + diff --git a/0.13.6/functions_s.html b/0.13.6/functions_s.html new file mode 100644 index 00000000..28e1f1a2 --- /dev/null +++ b/0.13.6/functions_s.html @@ -0,0 +1,155 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - s -

    +
    + + + + diff --git a/0.13.6/functions_t.html b/0.13.6/functions_t.html new file mode 100644 index 00000000..08317d32 --- /dev/null +++ b/0.13.6/functions_t.html @@ -0,0 +1,120 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - t -

    +
    + + + + diff --git a/0.13.6/functions_type.html b/0.13.6/functions_type.html new file mode 100644 index 00000000..078bb8ca --- /dev/null +++ b/0.13.6/functions_type.html @@ -0,0 +1,87 @@ + + + + + + + +libfranka: Class Members - Typedefs + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/0.13.6/functions_v.html b/0.13.6/functions_v.html new file mode 100644 index 00000000..851863b4 --- /dev/null +++ b/0.13.6/functions_v.html @@ -0,0 +1,91 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - v -

    +
    + + + + diff --git a/0.13.6/functions_vars.html b/0.13.6/functions_vars.html new file mode 100644 index 00000000..9cf86fa1 --- /dev/null +++ b/0.13.6/functions_vars.html @@ -0,0 +1,513 @@ + + + + + + + +libfranka: Class Members - Variables + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - i -

    + + +

    - j -

    + + +

    - k -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - q -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - v -

    + + +

    - w -

    +
    + + + + diff --git a/0.13.6/functions_w.html b/0.13.6/functions_w.html new file mode 100644 index 00000000..395aa205 --- /dev/null +++ b/0.13.6/functions_w.html @@ -0,0 +1,93 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - w -

    +
    + + + + diff --git a/0.13.6/functions_z.html b/0.13.6/functions_z.html new file mode 100644 index 00000000..3f3cb78c --- /dev/null +++ b/0.13.6/functions_z.html @@ -0,0 +1,87 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - z -

    +
    + + + + diff --git a/0.13.6/functions_~.html b/0.13.6/functions_~.html new file mode 100644 index 00000000..af650b18 --- /dev/null +++ b/0.13.6/functions_~.html @@ -0,0 +1,96 @@ + + + + + + + +libfranka: Class Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - ~ -

    +
    + + + + diff --git a/0.13.6/generate_cartesian_pose_motion_8cpp-example.html b/0.13.6/generate_cartesian_pose_motion_8cpp-example.html new file mode 100644 index 00000000..bbfe6319 --- /dev/null +++ b/0.13.6/generate_cartesian_pose_motion_8cpp-example.html @@ -0,0 +1,169 @@ + + + + + + + +libfranka: generate_cartesian_pose_motion.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_cartesian_pose_motion.cpp
    +
    +
    +

    An example showing how to generate a Cartesian motion.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    std::array<double, 16> initial_pose;
    +
    double time = 0.0;
    +
    robot.control([&time, &initial_pose](const franka::RobotState& robot_state,
    + +
    time += period.toSec();
    +
    +
    if (time == 0.0) {
    +
    initial_pose = robot_state.O_T_EE_c;
    +
    }
    +
    +
    constexpr double kRadius = 0.3;
    +
    double angle = M_PI / 4 * (1 - std::cos(M_PI / 5.0 * time));
    +
    double delta_x = kRadius * std::sin(angle);
    +
    double delta_z = kRadius * (std::cos(angle) - 1);
    +
    +
    std::array<double, 16> new_pose = initial_pose;
    +
    new_pose[12] += delta_x;
    +
    new_pose[14] += delta_z;
    +
    +
    if (time >= 10.0) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished(new_pose);
    +
    }
    +
    return new_pose;
    +
    });
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Stores values for Cartesian pose motion generation.
    Definition: control_types.h:127
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    double toSec() const noexcept
    Returns the stored duration in .
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    std::array< double, 16 > O_T_EE_c
    Last commanded end effector pose of motion generation in base frame.
    Definition: robot_state.h:342
    +
    + + + + diff --git a/0.13.6/generate_cartesian_pose_motion_external_control_loop_8cpp-example.html b/0.13.6/generate_cartesian_pose_motion_external_control_loop_8cpp-example.html new file mode 100644 index 00000000..12a5ab3d --- /dev/null +++ b/0.13.6/generate_cartesian_pose_motion_external_control_loop_8cpp-example.html @@ -0,0 +1,188 @@ + + + + + + + +libfranka: generate_cartesian_pose_motion_external_control_loop.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_cartesian_pose_motion_external_control_loop.cpp
    +
    +
    +

    An example showing how to generate a Cartesian motion with an external control loop.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + + + +
    #include <franka/robot.h>
    + +
    +
    int main(int argc, char** argv) {
    +
    // Check whether the required arguments were passed
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    std::array<double, 16> initial_pose;
    +
    double time = 0.0;
    +
    +
    auto callback_control = [&time, &initial_pose](
    +
    const franka::RobotState& robot_state,
    + +
    time += period.toSec();
    +
    +
    if (time == 0.0) {
    +
    initial_pose = robot_state.O_T_EE_c;
    +
    }
    +
    +
    constexpr double kRadius = 0.3;
    +
    double angle = M_PI / 4 * (1 - std::cos(M_PI / 5.0 * time));
    +
    double delta_x = kRadius * std::sin(angle);
    +
    double delta_z = kRadius * (std::cos(angle) - 1);
    +
    +
    std::array<double, 16> new_pose = initial_pose;
    +
    new_pose[12] += delta_x;
    +
    new_pose[14] += delta_z;
    +
    +
    if (time >= 10.0) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished(new_pose);
    +
    }
    +
    return new_pose;
    +
    };
    +
    +
    bool motion_finished = false;
    +
    auto active_control = robot.startCartesianPoseControl(
    +
    research_interface::robot::Move::ControllerMode::kJointImpedance);
    +
    while (!motion_finished) {
    +
    auto read_once_return = active_control->readOnce();
    +
    auto robot_state = read_once_return.first;
    +
    auto duration = read_once_return.second;
    +
    auto cartesian_positions = callback_control(robot_state, duration);
    +
    motion_finished = cartesian_positions.motion_finished;
    +
    active_control->writeOnce(cartesian_positions);
    +
    }
    +
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Implements the ActiveControlBase abstract class.
    +
    Contains the franka::ActiveMotionGenerator type.
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Stores values for Cartesian pose motion generation.
    Definition: control_types.h:127
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    virtual std::unique_ptr< ActiveControlBase > startCartesianPoseControl(const research_interface::robot::Move::ControllerMode &control_type)
    Starts a new cartesian position motion generator.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/generate_cartesian_velocity_motion_8cpp-example.html b/0.13.6/generate_cartesian_velocity_motion_8cpp-example.html new file mode 100644 index 00000000..68d684f8 --- /dev/null +++ b/0.13.6/generate_cartesian_velocity_motion_8cpp-example.html @@ -0,0 +1,179 @@ + + + + + + + +libfranka: generate_cartesian_velocity_motion.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_cartesian_velocity_motion.cpp
    +
    +
    +

    An example showing how to generate a Cartesian velocity motion.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set the joint impedance.
    +
    robot.setJointImpedance({{3000, 3000, 3000, 2500, 2500, 2000, 2000}});
    +
    +
    // Set the collision behavior.
    +
    std::array<double, 7> lower_torque_thresholds_nominal{
    +
    {25.0, 25.0, 22.0, 20.0, 19.0, 17.0, 14.}};
    +
    std::array<double, 7> upper_torque_thresholds_nominal{
    +
    {35.0, 35.0, 32.0, 30.0, 29.0, 27.0, 24.0}};
    +
    std::array<double, 7> lower_torque_thresholds_acceleration{
    +
    {25.0, 25.0, 22.0, 20.0, 19.0, 17.0, 14.0}};
    +
    std::array<double, 7> upper_torque_thresholds_acceleration{
    +
    {35.0, 35.0, 32.0, 30.0, 29.0, 27.0, 24.0}};
    +
    std::array<double, 6> lower_force_thresholds_nominal{{30.0, 30.0, 30.0, 25.0, 25.0, 25.0}};
    +
    std::array<double, 6> upper_force_thresholds_nominal{{40.0, 40.0, 40.0, 35.0, 35.0, 35.0}};
    +
    std::array<double, 6> lower_force_thresholds_acceleration{{30.0, 30.0, 30.0, 25.0, 25.0, 25.0}};
    +
    std::array<double, 6> upper_force_thresholds_acceleration{{40.0, 40.0, 40.0, 35.0, 35.0, 35.0}};
    + +
    lower_torque_thresholds_acceleration, upper_torque_thresholds_acceleration,
    +
    lower_torque_thresholds_nominal, upper_torque_thresholds_nominal,
    +
    lower_force_thresholds_acceleration, upper_force_thresholds_acceleration,
    +
    lower_force_thresholds_nominal, upper_force_thresholds_nominal);
    +
    +
    double time_max = 4.0;
    +
    double v_max = 0.1;
    +
    double angle = M_PI / 4.0;
    +
    double time = 0.0;
    +
    robot.control([=, &time](const franka::RobotState&,
    + +
    time += period.toSec();
    +
    +
    double cycle = std::floor(pow(-1.0, (time - std::fmod(time, time_max)) / time_max));
    +
    double v = cycle * v_max / 2.0 * (1.0 - std::cos(2.0 * M_PI / time_max * time));
    +
    double v_x = std::cos(angle) * v;
    +
    double v_z = -std::sin(angle) * v;
    +
    +
    franka::CartesianVelocities output = {{v_x, 0.0, v_z, 0.0, 0.0, 0.0}};
    +
    if (time >= 2 * time_max) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished(output);
    +
    }
    +
    return output;
    +
    });
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Stores values for Cartesian velocity motion generation.
    Definition: control_types.h:211
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    double toSec() const noexcept
    Returns the stored duration in .
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    void setJointImpedance(const std::array< double, 7 > &K_theta)
    Sets the impedance for each joint in the internal controller.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/generate_cartesian_velocity_motion_external_control_loop_8cpp-example.html b/0.13.6/generate_cartesian_velocity_motion_external_control_loop_8cpp-example.html new file mode 100644 index 00000000..d055912b --- /dev/null +++ b/0.13.6/generate_cartesian_velocity_motion_external_control_loop_8cpp-example.html @@ -0,0 +1,199 @@ + + + + + + + +libfranka: generate_cartesian_velocity_motion_external_control_loop.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_cartesian_velocity_motion_external_control_loop.cpp
    +
    +
    +

    An example showing how to generate a Cartesian velocity motion with an external control loop.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + + + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    // Check whether the required arguments were passed
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set the joint impedance.
    +
    robot.setJointImpedance({{3000, 3000, 3000, 2500, 2500, 2000, 2000}});
    +
    +
    // Set the collision behavior.
    +
    std::array<double, 7> lower_torque_thresholds_nominal{
    +
    {25.0, 25.0, 22.0, 20.0, 19.0, 17.0, 14.}};
    +
    std::array<double, 7> upper_torque_thresholds_nominal{
    +
    {35.0, 35.0, 32.0, 30.0, 29.0, 27.0, 24.0}};
    +
    std::array<double, 7> lower_torque_thresholds_acceleration{
    +
    {25.0, 25.0, 22.0, 20.0, 19.0, 17.0, 14.0}};
    +
    std::array<double, 7> upper_torque_thresholds_acceleration{
    +
    {35.0, 35.0, 32.0, 30.0, 29.0, 27.0, 24.0}};
    +
    std::array<double, 6> lower_force_thresholds_nominal{{30.0, 30.0, 30.0, 25.0, 25.0, 25.0}};
    +
    std::array<double, 6> upper_force_thresholds_nominal{{40.0, 40.0, 40.0, 35.0, 35.0, 35.0}};
    +
    std::array<double, 6> lower_force_thresholds_acceleration{{30.0, 30.0, 30.0, 25.0, 25.0, 25.0}};
    +
    std::array<double, 6> upper_force_thresholds_acceleration{{40.0, 40.0, 40.0, 35.0, 35.0, 35.0}};
    + +
    lower_torque_thresholds_acceleration, upper_torque_thresholds_acceleration,
    +
    lower_torque_thresholds_nominal, upper_torque_thresholds_nominal,
    +
    lower_force_thresholds_acceleration, upper_force_thresholds_acceleration,
    +
    lower_force_thresholds_nominal, upper_force_thresholds_nominal);
    +
    +
    double time_max = 4.0;
    +
    double v_max = 0.1;
    +
    double angle = M_PI / 4.0;
    +
    double time = 0.0;
    +
    +
    auto callback_control = [=, &time](const franka::RobotState&,
    + +
    time += period.toSec();
    +
    +
    double cycle = std::floor(pow(-1.0, (time - std::fmod(time, time_max)) / time_max));
    +
    double v = cycle * v_max / 2.0 * (1.0 - std::cos(2.0 * M_PI / time_max * time));
    +
    double v_x = std::cos(angle) * v;
    +
    double v_z = -std::sin(angle) * v;
    +
    +
    franka::CartesianVelocities output = {{v_x, 0.0, v_z, 0.0, 0.0, 0.0}};
    +
    if (time >= 2 * time_max) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished(output);
    +
    }
    +
    return output;
    +
    };
    +
    +
    bool motion_finished = false;
    +
    auto active_control = robot.startCartesianVelocityControl(
    +
    research_interface::robot::Move::ControllerMode::kJointImpedance);
    +
    while (!motion_finished) {
    +
    auto read_once_return = active_control->readOnce();
    +
    auto robot_state = read_once_return.first;
    +
    auto duration = read_once_return.second;
    +
    auto cartesian_velocities = callback_control(robot_state, duration);
    +
    motion_finished = cartesian_velocities.motion_finished;
    +
    active_control->writeOnce(cartesian_velocities);
    +
    }
    +
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Implements the ActiveControlBase abstract class.
    +
    Contains the franka::ActiveMotionGenerator type.
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Stores values for Cartesian velocity motion generation.
    Definition: control_types.h:211
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    virtual std::unique_ptr< ActiveControlBase > startCartesianVelocityControl(const research_interface::robot::Move::ControllerMode &control_type)
    Starts a new cartesian velocity motion generator.
    +
    void setJointImpedance(const std::array< double, 7 > &K_theta)
    Sets the impedance for each joint in the internal controller.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/generate_consecutive_motions_8cpp-example.html b/0.13.6/generate_consecutive_motions_8cpp-example.html new file mode 100644 index 00000000..db8e60f9 --- /dev/null +++ b/0.13.6/generate_consecutive_motions_8cpp-example.html @@ -0,0 +1,173 @@ + + + + + + + +libfranka: generate_consecutive_motions.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_consecutive_motions.cpp
    +
    +
    +

    An example showing how to execute consecutive motions with error recovery.

    Warning
    Before executing this example, make sure there is enough space in front and to the side of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{10.0, 10.0, 9.0, 9.0, 8.0, 7.0, 6.0}}, {{10.0, 10.0, 9.0, 9.0, 8.0, 7.0, 6.0}},
    +
    {{10.0, 10.0, 9.0, 9.0, 8.0, 7.0, 6.0}}, {{10.0, 10.0, 9.0, 9.0, 8.0, 7.0, 6.0}},
    +
    {{10.0, 10.0, 10.0, 12.5, 12.5, 12.5}}, {{10.0, 10.0, 10.0, 12.5, 12.5, 12.5}},
    +
    {{10.0, 10.0, 10.0, 12.5, 12.5, 12.5}}, {{10.0, 10.0, 10.0, 12.5, 12.5, 12.5}});
    +
    +
    for (size_t i = 0; i < 5; i++) {
    +
    std::cout << "Executing motion." << std::endl;
    +
    try {
    +
    double time_max = 4.0;
    +
    double omega_max = 0.2;
    +
    double time = 0.0;
    +
    robot.control([=, &time](const franka::RobotState&,
    + +
    time += period.toSec();
    +
    +
    double cycle = std::floor(std::pow(-1.0, (time - std::fmod(time, time_max)) / time_max));
    +
    double omega = cycle * omega_max / 2.0 * (1.0 - std::cos(2.0 * M_PI / time_max * time));
    +
    +
    franka::JointVelocities velocities = {{0.0, 0.0, omega, 0.0, 0.0, 0.0, 0.0}};
    +
    if (time >= 2 * time_max) {
    +
    std::cout << std::endl << "Finished motion." << std::endl;
    +
    return franka::MotionFinished(velocities);
    +
    }
    +
    return velocities;
    +
    });
    +
    } catch (const franka::ControlException& e) {
    +
    std::cout << e.what() << std::endl;
    +
    std::cout << "Running error recovery..." << std::endl;
    + +
    }
    +
    }
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    std::cout << "Finished." << std::endl;
    +
    +
    return 0;
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    double toSec() const noexcept
    Returns the stored duration in .
    +
    Stores values for joint velocity motion generation.
    Definition: control_types.h:99
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    void automaticErrorRecovery()
    Runs automatic error recovery on the robot.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    ControlException is thrown if an error occurs during motion generation or torque control.
    Definition: exception.h:73
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/generate_elbow_motion_8cpp-example.html b/0.13.6/generate_elbow_motion_8cpp-example.html new file mode 100644 index 00000000..dcce6882 --- /dev/null +++ b/0.13.6/generate_elbow_motion_8cpp-example.html @@ -0,0 +1,170 @@ + + + + + + + +libfranka: generate_elbow_motion.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_elbow_motion.cpp
    +
    +
    +

    An example showing how to move the robot's elbow.

    Warning
    Before executing this example, make sure that the elbow has enough space to move.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    std::array<double, 16> initial_pose;
    +
    std::array<double, 2> initial_elbow;
    +
    double time = 0.0;
    +
    robot.control(
    +
    [&time, &initial_pose, &initial_elbow](const franka::RobotState& robot_state,
    + +
    time += period.toSec();
    +
    +
    if (time == 0.0) {
    +
    initial_pose = robot_state.O_T_EE_c;
    +
    initial_elbow = robot_state.elbow_c;
    +
    }
    +
    +
    double angle = M_PI / 10.0 * (1.0 - std::cos(M_PI / 5.0 * time));
    +
    +
    auto elbow = initial_elbow;
    +
    elbow[0] += angle;
    +
    +
    if (time >= 10.0) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished({initial_pose, elbow});
    +
    }
    +
    +
    return {initial_pose, elbow};
    +
    });
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Stores values for Cartesian pose motion generation.
    Definition: control_types.h:127
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    double toSec() const noexcept
    Returns the stored duration in .
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    std::array< double, 2 > elbow_c
    Commanded elbow configuration.
    Definition: robot_state.h:191
    +
    std::array< double, 16 > O_T_EE_c
    Last commanded end effector pose of motion generation in base frame.
    Definition: robot_state.h:342
    +
    + + + + diff --git a/0.13.6/generate_joint_position_motion_8cpp-example.html b/0.13.6/generate_joint_position_motion_8cpp-example.html new file mode 100644 index 00000000..905364a8 --- /dev/null +++ b/0.13.6/generate_joint_position_motion_8cpp-example.html @@ -0,0 +1,167 @@ + + + + + + + +libfranka: generate_joint_position_motion.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_joint_position_motion.cpp
    +
    +
    +

    An example showing how to generate a joint position motion.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    std::array<double, 7> initial_position;
    +
    double time = 0.0;
    +
    robot.control([&initial_position, &time](const franka::RobotState& robot_state,
    + +
    time += period.toSec();
    +
    +
    if (time == 0.0) {
    +
    initial_position = robot_state.q_d;
    +
    }
    +
    +
    double delta_angle = M_PI / 8.0 * (1 - std::cos(M_PI / 2.5 * time));
    +
    +
    franka::JointPositions output = {{initial_position[0], initial_position[1],
    +
    initial_position[2], initial_position[3] + delta_angle,
    +
    initial_position[4] + delta_angle, initial_position[5],
    +
    initial_position[6] + delta_angle}};
    +
    +
    if (time >= 5.0) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished(output);
    +
    }
    +
    return output;
    +
    });
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    double toSec() const noexcept
    Returns the stored duration in .
    +
    Stores values for joint position motion generation.
    Definition: control_types.h:72
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    std::array< double, 7 > q_d
    Desired joint position.
    Definition: robot_state.h:239
    +
    + + + + diff --git a/0.13.6/generate_joint_position_motion_external_control_loop_8cpp-example.html b/0.13.6/generate_joint_position_motion_external_control_loop_8cpp-example.html new file mode 100644 index 00000000..add03f22 --- /dev/null +++ b/0.13.6/generate_joint_position_motion_external_control_loop_8cpp-example.html @@ -0,0 +1,185 @@ + + + + + + + +libfranka: generate_joint_position_motion_external_control_loop.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_joint_position_motion_external_control_loop.cpp
    +
    +
    +

    An example showing how to generate a joint position motion with an external control loop..

    +
    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + + + +
    #include <franka/robot.h>
    + +
    int main(int argc, char** argv) {
    +
    // Check whether the required arguments were passed
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    std::array<double, 7> initial_position{{0, 0, 0, 0, 0, 0, 0}};
    +
    double time = 0.0;
    +
    auto control_callback = [&initial_position, &time](
    +
    const franka::RobotState& robot_state,
    + +
    time += period.toSec();
    +
    +
    if (time == 0.0) {
    +
    initial_position = robot_state.q_d;
    +
    }
    +
    +
    double delta_angle = M_PI / 8.0 * (1 - std::cos(M_PI / 2.5 * time));
    +
    +
    franka::JointPositions output = {{initial_position[0], initial_position[1],
    +
    initial_position[2], initial_position[3] + delta_angle,
    +
    initial_position[4] + delta_angle, initial_position[5],
    +
    initial_position[6] + delta_angle}};
    +
    +
    if (time >= 5.0) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished(output);
    +
    }
    +
    return output;
    +
    };
    +
    +
    bool motion_finished = false;
    +
    auto active_control = robot.startJointPositionControl(
    +
    research_interface::robot::Move::ControllerMode::kJointImpedance);
    +
    while (!motion_finished) {
    +
    auto read_once_return = active_control->readOnce();
    +
    auto robot_state = read_once_return.first;
    +
    auto duration = read_once_return.second;
    +
    auto joint_positions = control_callback(robot_state, duration);
    +
    motion_finished = joint_positions.motion_finished;
    +
    active_control->writeOnce(joint_positions);
    +
    }
    +
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Implements the ActiveControlBase abstract class.
    +
    Contains the franka::ActiveMotionGenerator type.
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Stores values for joint position motion generation.
    Definition: control_types.h:72
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    virtual std::unique_ptr< ActiveControlBase > startJointPositionControl(const research_interface::robot::Move::ControllerMode &control_type)
    Starts a new joint position motion generator.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/generate_joint_velocity_motion_8cpp-example.html b/0.13.6/generate_joint_velocity_motion_8cpp-example.html new file mode 100644 index 00000000..a4639387 --- /dev/null +++ b/0.13.6/generate_joint_velocity_motion_8cpp-example.html @@ -0,0 +1,161 @@ + + + + + + + +libfranka: generate_joint_velocity_motion.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_joint_velocity_motion.cpp
    +
    +
    +

    An example showing how to generate a joint velocity motion.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    double time_max = 1.0;
    +
    double omega_max = 1.0;
    +
    double time = 0.0;
    +
    robot.control(
    + +
    time += period.toSec();
    +
    +
    double cycle = std::floor(std::pow(-1.0, (time - std::fmod(time, time_max)) / time_max));
    +
    double omega = cycle * omega_max / 2.0 * (1.0 - std::cos(2.0 * M_PI / time_max * time));
    +
    +
    franka::JointVelocities velocities = {{0.0, 0.0, 0.0, omega, omega, omega, omega}};
    +
    +
    if (time >= 2 * time_max) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished(velocities);
    +
    }
    +
    return velocities;
    +
    });
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    double toSec() const noexcept
    Returns the stored duration in .
    +
    Stores values for joint velocity motion generation.
    Definition: control_types.h:99
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/generate_joint_velocity_motion_external_control_loop_8cpp-example.html b/0.13.6/generate_joint_velocity_motion_external_control_loop_8cpp-example.html new file mode 100644 index 00000000..31daae8d --- /dev/null +++ b/0.13.6/generate_joint_velocity_motion_external_control_loop_8cpp-example.html @@ -0,0 +1,181 @@ + + + + + + + +libfranka: generate_joint_velocity_motion_external_control_loop.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    generate_joint_velocity_motion_external_control_loop.cpp
    +
    +
    +

    An example showing how to generate a joint velocity motion with an external control loop.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + + + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    // Check whether the required arguments were passed
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    double time_max = 1.0;
    +
    double omega_max = 1.0;
    +
    double time = 0.0;
    +
    +
    auto callback_control = [=, &time](const franka::RobotState&,
    + +
    time += period.toSec();
    +
    +
    double cycle = std::floor(std::pow(-1.0, (time - std::fmod(time, time_max)) / time_max));
    +
    double omega = cycle * omega_max / 2.0 * (1.0 - std::cos(2.0 * M_PI / time_max * time));
    +
    +
    franka::JointVelocities velocities = {{0.0, 0.0, 0.0, omega, omega, omega, omega}};
    +
    +
    if (time >= 2 * time_max) {
    +
    std::cout << std::endl << "Finished motion, shutting down example" << std::endl;
    +
    return franka::MotionFinished(velocities);
    +
    }
    +
    return velocities;
    +
    };
    +
    +
    bool motion_finished = false;
    +
    auto active_control = robot.startJointVelocityControl(
    +
    research_interface::robot::Move::ControllerMode::kJointImpedance);
    +
    while (!motion_finished) {
    +
    auto read_once_return = active_control->readOnce();
    +
    auto robot_state = read_once_return.first;
    +
    auto duration = read_once_return.second;
    +
    auto joint_velocities = callback_control(robot_state, duration);
    +
    motion_finished = joint_velocities.motion_finished;
    +
    active_control->writeOnce(joint_velocities);
    +
    }
    +
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Implements the ActiveControlBase abstract class.
    +
    Contains the franka::ActiveMotionGenerator type.
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Stores values for joint velocity motion generation.
    Definition: control_types.h:99
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    virtual std::unique_ptr< ActiveControlBase > startJointVelocityControl(const research_interface::robot::Move::ControllerMode &control_type)
    Starts a new joint velocity motion generator.
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/globals.html b/0.13.6/globals.html new file mode 100644 index 00000000..0db6ae6f --- /dev/null +++ b/0.13.6/globals.html @@ -0,0 +1,85 @@ + + + + + + + +libfranka: File Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented file members with links to the documentation:
    +
    + + + + diff --git a/0.13.6/globals_func.html b/0.13.6/globals_func.html new file mode 100644 index 00000000..32d90434 --- /dev/null +++ b/0.13.6/globals_func.html @@ -0,0 +1,85 @@ + + + + + + + +libfranka: File Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/0.13.6/graph_legend.html b/0.13.6/graph_legend.html new file mode 100644 index 00000000..6db264d0 --- /dev/null +++ b/0.13.6/graph_legend.html @@ -0,0 +1,144 @@ + + + + + + + +libfranka: Graph Legend + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Graph Legend
    +
    +
    +

    This page explains how to interpret the graphs that are generated by doxygen.

    +

    Consider the following example:

    /*! Invisible class because of truncation */
    +
    class Invisible { };
    +
    +
    /*! Truncated class, inheritance relation is hidden */
    +
    class Truncated : public Invisible { };
    +
    +
    /* Class not documented with doxygen comments */
    +
    class Undocumented { };
    +
    +
    /*! Class that is inherited using public inheritance */
    +
    class PublicBase : public Truncated { };
    +
    +
    /*! A template class */
    +
    template<class T> class Templ { };
    +
    +
    /*! Class that is inherited using protected inheritance */
    +
    class ProtectedBase { };
    +
    +
    /*! Class that is inherited using private inheritance */
    +
    class PrivateBase { };
    +
    +
    /*! Class that is used by the Inherited class */
    +
    class Used { };
    +
    +
    /*! Super class that inherits a number of other classes */
    +
    class Inherited : public PublicBase,
    +
    protected ProtectedBase,
    +
    private PrivateBase,
    +
    public Undocumented,
    +
    public Templ<int>
    +
    {
    +
    private:
    +
    Used *m_usedClass;
    +
    };
    +

    This will result in the following graph:

    +

    The boxes in the above graph have the following meaning:

    +
      +
    • +A filled gray box represents the struct or class for which the graph is generated.
    • +
    • +A box with a black border denotes a documented struct or class.
    • +
    • +A box with a gray border denotes an undocumented struct or class.
    • +
    • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
    • +
    +

    The arrows have the following meaning:

    +
      +
    • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
    • +
    • +A dark green arrow is used for protected inheritance.
    • +
    • +A dark red arrow is used for private inheritance.
    • +
    • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
    • +
    • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
    • +
    +
    + + + + diff --git a/0.13.6/graph_legend.md5 b/0.13.6/graph_legend.md5 new file mode 100644 index 00000000..8fcdccd1 --- /dev/null +++ b/0.13.6/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/0.13.6/graph_legend.png b/0.13.6/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2cbcfb2d143e382be6ed65635a3d859e53bc36 GIT binary patch literal 20615 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 literal 0 HcmV?d00001 diff --git a/0.13.6/grasp_object_8cpp-example.html b/0.13.6/grasp_object_8cpp-example.html new file mode 100644 index 00000000..fb5ef75d --- /dev/null +++ b/0.13.6/grasp_object_8cpp-example.html @@ -0,0 +1,159 @@ + + + + + + + +libfranka: grasp_object.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    grasp_object.cpp
    +
    +
    +

    An example showing how to control FRANKA's gripper.

    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <iostream>
    +
    #include <sstream>
    +
    #include <string>
    +
    #include <thread>
    +
    +
    +
    #include <franka/gripper.h>
    +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 4) {
    +
    std::cerr << "Usage: ./grasp_object <gripper-hostname> <homing> <object-width>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    try {
    +
    franka::Gripper gripper(argv[1]);
    +
    double grasping_width = std::stod(argv[3]);
    +
    +
    std::stringstream ss(argv[2]);
    +
    bool homing;
    +
    if (!(ss >> homing)) {
    +
    std::cerr << "<homing> can be 0 or 1." << std::endl;
    +
    return -1;
    +
    }
    +
    +
    if (homing) {
    +
    // Do a homing in order to estimate the maximum grasping width with the current fingers.
    +
    gripper.homing();
    +
    }
    +
    +
    // Check for the maximum grasping width.
    +
    franka::GripperState gripper_state = gripper.readOnce();
    +
    if (gripper_state.max_width < grasping_width) {
    +
    std::cout << "Object is too large for the current fingers on the gripper." << std::endl;
    +
    return -1;
    +
    }
    +
    +
    // Grasp the object.
    +
    if (!gripper.grasp(grasping_width, 0.1, 60)) {
    +
    std::cout << "Failed to grasp object." << std::endl;
    +
    return -1;
    +
    }
    +
    +
    // Wait 3s and check afterwards, if the object is still grasped.
    +
    std::this_thread::sleep_for(std::chrono::duration<double, std::milli>(3000));
    +
    +
    gripper_state = gripper.readOnce();
    +
    if (!gripper_state.is_grasped) {
    +
    std::cout << "Object lost." << std::endl;
    +
    return -1;
    +
    }
    +
    +
    std::cout << "Grasped object, will release it now." << std::endl;
    +
    gripper.stop();
    +
    } catch (franka::Exception const& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Maintains a network connection to the gripper, provides the current gripper state,...
    Definition: gripper.h:27
    +
    GripperState readOnce() const
    Waits for a gripper state update and returns it.
    +
    bool grasp(double width, double speed, double force, double epsilon_inner=0.005, double epsilon_outer=0.005) const
    Grasps an object.
    +
    bool stop() const
    Stops a currently running gripper move or grasp.
    +
    bool homing() const
    Performs homing of the gripper.
    +
    Contains exception definitions.
    +
    Contains the franka::Gripper type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the gripper state.
    Definition: gripper_state.h:20
    +
    bool is_grasped
    Indicates whether an object is currently grasped.
    Definition: gripper_state.h:38
    +
    double max_width
    Maximum gripper opening width.
    Definition: gripper_state.h:33
    +
    + + + + diff --git a/0.13.6/gripper_8h.html b/0.13.6/gripper_8h.html new file mode 100644 index 00000000..14a649f8 --- /dev/null +++ b/0.13.6/gripper_8h.html @@ -0,0 +1,124 @@ + + + + + + + +libfranka: include/franka/gripper.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    gripper.h File Reference
    +
    +
    + +

    Contains the franka::Gripper type. +More...

    +
    #include <cstdint>
    +#include <memory>
    +#include <string>
    +#include <franka/gripper_state.h>
    +
    +Include dependency graph for gripper.h:
    +
    +
    + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  franka::Gripper
     Maintains a network connection to the gripper, provides the current gripper state, and allows the execution of commands. More...
     
    +

    Detailed Description

    +

    Contains the franka::Gripper type.

    +
    + + + + diff --git a/0.13.6/gripper_8h__incl.map b/0.13.6/gripper_8h__incl.map new file mode 100644 index 00000000..ab2f3ac5 --- /dev/null +++ b/0.13.6/gripper_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/0.13.6/gripper_8h__incl.md5 b/0.13.6/gripper_8h__incl.md5 new file mode 100644 index 00000000..3dadb7a6 --- /dev/null +++ b/0.13.6/gripper_8h__incl.md5 @@ -0,0 +1 @@ +901bc6e28dd18b0229ad7be1abed0856 \ No newline at end of file diff --git a/0.13.6/gripper_8h__incl.png b/0.13.6/gripper_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1b163fa9b12b188d7b69a599a9ecf0a9fd68bf2c GIT binary patch literal 24665 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 literal 0 HcmV?d00001 diff --git a/0.13.6/gripper_8h_source.html b/0.13.6/gripper_8h_source.html new file mode 100644 index 00000000..877d1f60 --- /dev/null +++ b/0.13.6/gripper_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + +libfranka: include/franka/gripper.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    gripper.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <cstdint>
    +
    6 #include <memory>
    +
    7 #include <string>
    +
    8 
    +
    9 #include <franka/gripper_state.h>
    +
    10 
    +
    16 namespace franka {
    +
    17 
    +
    18 class Network;
    +
    19 
    +
    27 class Gripper {
    +
    28  public:
    +
    32  using ServerVersion = uint16_t;
    +
    33 
    +
    42  explicit Gripper(const std::string& franka_address);
    +
    43 
    +
    49  Gripper(Gripper&& gripper) noexcept;
    +
    50 
    +
    58  Gripper& operator=(Gripper&& gripper) noexcept;
    +
    59 
    +
    63  ~Gripper() noexcept;
    +
    64 
    +
    78  bool homing() const;
    +
    79 
    +
    99  bool grasp(double width,
    +
    100  double speed,
    +
    101  double force,
    +
    102  double epsilon_inner = 0.005,
    +
    103  double epsilon_outer = 0.005) const;
    +
    104 
    +
    116  bool move(double width, double speed) const;
    +
    117 
    +
    126  bool stop() const;
    +
    127 
    + +
    137 
    +
    143  ServerVersion serverVersion() const noexcept;
    +
    144 
    +
    146  Gripper(const Gripper&) = delete;
    +
    147  Gripper& operator=(const Gripper&) = delete;
    +
    149 
    +
    150  private:
    +
    151  std::unique_ptr<Network> network_;
    +
    152 
    +
    153  uint16_t ri_version_;
    +
    154 };
    +
    155 
    +
    156 } // namespace franka
    +
    Maintains a network connection to the gripper, provides the current gripper state,...
    Definition: gripper.h:27
    +
    Gripper(const std::string &franka_address)
    Establishes a connection with a gripper connected to a robot.
    +
    bool move(double width, double speed) const
    Moves the gripper fingers to a specified width.
    +
    Gripper & operator=(Gripper &&gripper) noexcept
    Move-assigns this Gripper from another Gripper instance.
    +
    uint16_t ServerVersion
    Version of the gripper server.
    Definition: gripper.h:32
    +
    ServerVersion serverVersion() const noexcept
    Returns the software version reported by the connected server.
    +
    Gripper(Gripper &&gripper) noexcept
    Move-constructs a new Gripper instance.
    +
    GripperState readOnce() const
    Waits for a gripper state update and returns it.
    +
    bool grasp(double width, double speed, double force, double epsilon_inner=0.005, double epsilon_outer=0.005) const
    Grasps an object.
    +
    bool stop() const
    Stops a currently running gripper move or grasp.
    +
    ~Gripper() noexcept
    Closes the connection.
    +
    bool homing() const
    Performs homing of the gripper.
    +
    Contains the franka::GripperState type.
    +
    Describes the gripper state.
    Definition: gripper_state.h:20
    +
    + + + + diff --git a/0.13.6/gripper__state_8h.html b/0.13.6/gripper__state_8h.html new file mode 100644 index 00000000..c26613a2 --- /dev/null +++ b/0.13.6/gripper__state_8h.html @@ -0,0 +1,175 @@ + + + + + + + +libfranka: include/franka/gripper_state.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    gripper_state.h File Reference
    +
    +
    + +

    Contains the franka::GripperState type. +More...

    +
    #include <cstdint>
    +#include <ostream>
    +#include <franka/duration.h>
    +
    +Include dependency graph for gripper_state.h:
    +
    +
    + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    struct  franka::GripperState
     Describes the gripper state. More...
     
    + + + + +

    +Functions

    std::ostream & franka::operator<< (std::ostream &ostream, const franka::GripperState &gripper_state)
     Streams the gripper state as JSON object: {"field_name_1": value, "field_name_2": value, ...}. More...
     
    +

    Detailed Description

    +

    Contains the franka::GripperState type.

    +

    Function Documentation

    + +

    ◆ operator<<()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& franka::operator<< (std::ostream & ostream,
    const franka::GripperStategripper_state 
    )
    +
    + +

    Streams the gripper state as JSON object: {"field_name_1": value, "field_name_2": value, ...}.

    +
    Parameters
    + + + +
    [in]ostreamOstream instance
    [in]gripper_stateGripperState struct instance to stream
    +
    +
    +
    Returns
    Ostream instance
    + +
    +
    +
    + + + + diff --git a/0.13.6/gripper__state_8h__dep__incl.map b/0.13.6/gripper__state_8h__dep__incl.map new file mode 100644 index 00000000..a901b8b1 --- /dev/null +++ b/0.13.6/gripper__state_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/gripper__state_8h__dep__incl.md5 b/0.13.6/gripper__state_8h__dep__incl.md5 new file mode 100644 index 00000000..288bf031 --- /dev/null +++ b/0.13.6/gripper__state_8h__dep__incl.md5 @@ -0,0 +1 @@ +d32d8979af59cc2c6a9ca0ac1fb83187 \ No newline at end of file diff --git a/0.13.6/gripper__state_8h__dep__incl.png b/0.13.6/gripper__state_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..cc011854e5ec1f8357e02c1f4564bd0d24d67302 GIT binary patch literal 5015 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 + + + + + + + diff --git a/0.13.6/gripper__state_8h__incl.md5 b/0.13.6/gripper__state_8h__incl.md5 new file mode 100644 index 00000000..ad91ebad --- /dev/null +++ b/0.13.6/gripper__state_8h__incl.md5 @@ -0,0 +1 @@ +48bcfa77f3ca458b32475714d0daa0c4 \ No newline at end of file diff --git a/0.13.6/gripper__state_8h__incl.png b/0.13.6/gripper__state_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3311da1692e8138493df728c0b5515eade520ddc GIT binary patch literal 12351 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 + + + + + + +libfranka: include/franka/gripper_state.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    gripper_state.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <cstdint>
    +
    6 #include <ostream>
    +
    7 
    +
    8 #include <franka/duration.h>
    +
    9 
    +
    15 namespace franka {
    +
    16 
    +
    20 struct GripperState {
    +
    24  double width{};
    +
    25 
    +
    33  double max_width{};
    +
    34 
    +
    38  bool is_grasped{};
    +
    39 
    +
    43  uint16_t temperature{};
    +
    44 
    + +
    49 };
    +
    50 
    +
    59 std::ostream& operator<<(std::ostream& ostream, const franka::GripperState& gripper_state);
    +
    60 
    +
    61 } // namespace franka
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Contains the franka::Duration type.
    +
    std::ostream & operator<<(std::ostream &ostream, const Errors &errors)
    Streams the errors as JSON array.
    +
    Describes the gripper state.
    Definition: gripper_state.h:20
    +
    Duration time
    Strictly monotonically increasing timestamp since robot start.
    Definition: gripper_state.h:48
    +
    bool is_grasped
    Indicates whether an object is currently grasped.
    Definition: gripper_state.h:38
    +
    uint16_t temperature
    Current gripper temperature.
    Definition: gripper_state.h:43
    +
    double max_width
    Maximum gripper opening width.
    Definition: gripper_state.h:33
    +
    double width
    Current gripper opening width.
    Definition: gripper_state.h:24
    +
    + + + + diff --git a/0.13.6/hierarchy.html b/0.13.6/hierarchy.html new file mode 100644 index 00000000..343c9910 --- /dev/null +++ b/0.13.6/hierarchy.html @@ -0,0 +1,122 @@ + + + + + + + +libfranka: Class Hierarchy + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Class Hierarchy
    +
    +
    +
    +

    Go to the graphical class hierarchy

    +This inheritance list is sorted roughly, but not completely, alphabetically:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Cfranka::ActiveControlBaseAllows the user to read the state of a Robot and to send new control commands after starting a control process of a Robot
     Cfranka::ActiveControlDocumented in ActiveControlBase
     Cfranka::ActiveMotionGenerator< MotionGeneratorType >Allows the user to read the state of a Robot and to send new motion generator commands after starting a control process of a Robot
     Cfranka::ActiveTorqueControlAllows the user to read the state of a Robot and to send new torque control commands after starting a control process of a Robot
     Cfranka::DurationRepresents a duration with millisecond resolution
     Cfranka::ErrorsEnumerates errors that can occur while controlling a franka::Robot
     Cfranka::FinishableHelper type for control and motion generation loops
     Cfranka::CartesianPoseStores values for Cartesian pose motion generation
     Cfranka::CartesianVelocitiesStores values for Cartesian velocity motion generation
     Cfranka::JointPositionsStores values for joint position motion generation
     Cfranka::JointVelocitiesStores values for joint velocity motion generation
     Cfranka::TorquesStores joint-level torque commands without gravity and friction
     Cfranka::GripperMaintains a network connection to the gripper, provides the current gripper state, and allows the execution of commands
     Cfranka::GripperStateDescribes the gripper state
     Cfranka::ModelCalculates poses of joints and dynamic properties of the robot
     CMotionGeneratorAn example showing how to generate a joint pose motion to a goal position
     Cfranka::RecordOne row of the log contains a robot command of timestamp n and a corresponding robot state of timestamp n+1
     Cfranka::RobotMaintains a network connection to the robot, provides the current robot state, gives access to the model library and allows to control the robot
     Cfranka::RobotCommandCommand sent to the robot
     Cfranka::RobotStateDescribes the robot state
     Cstd::runtime_error
     Cfranka::ExceptionBase class for all exceptions used by libfranka
     Cfranka::CommandExceptionCommandException is thrown if an error occurs during command execution
     Cfranka::ControlExceptionControlException is thrown if an error occurs during motion generation or torque control
     Cfranka::IncompatibleVersionExceptionIncompatibleVersionException is thrown if the robot does not support this version of libfranka
     Cfranka::InvalidOperationExceptionInvalidOperationException is thrown if an operation cannot be performed
     Cfranka::ModelExceptionModelException is thrown if an error occurs when loading the model library
     Cfranka::NetworkExceptionNetworkException is thrown if a connection to the robot cannot be established, or when a timeout occurs
     Cfranka::ProtocolExceptionProtocolException is thrown if the robot returns an incorrect message
     Cfranka::RealtimeExceptionRealtimeException is thrown if realtime priority cannot be set
     Cfranka::VacuumGripperMaintains a network connection to the vacuum gripper, provides the current vacuum gripper state, and allows the execution of commands
     Cfranka::VacuumGripperStateDescribes the vacuum gripper state
    +
    +
    + + + + diff --git a/0.13.6/index.html b/0.13.6/index.html new file mode 100644 index 00000000..162e6ae7 --- /dev/null +++ b/0.13.6/index.html @@ -0,0 +1,89 @@ + + + + + + + +libfranka: libfranka: C++ library for Franka Robotics research robots + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    libfranka: C++ library for Franka Robotics research robots
    +
    +
    +

    With this library, you can control research versions of Franka Robotics robots. See the Franka Control Interface (FCI) documentation for more information about what libfranka can do and how to set it up.

    +

    +License

    +

    libfranka is licensed under the Apache 2.0 license.

    +
    +
    + + + + diff --git a/0.13.6/inherit_graph_0.map b/0.13.6/inherit_graph_0.map new file mode 100644 index 00000000..7c1970ae --- /dev/null +++ b/0.13.6/inherit_graph_0.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/0.13.6/inherit_graph_0.md5 b/0.13.6/inherit_graph_0.md5 new file mode 100644 index 00000000..cc90e884 --- /dev/null +++ b/0.13.6/inherit_graph_0.md5 @@ -0,0 +1 @@ +6581ec3ae7612b70562e6c6835abba71 \ No newline at end of file diff --git a/0.13.6/inherit_graph_0.png b/0.13.6/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..659300204317fb7c896851120d5a274d679a7f83 GIT binary patch literal 11062 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 h + + diff --git a/0.13.6/inherit_graph_1.md5 b/0.13.6/inherit_graph_1.md5 new file mode 100644 index 00000000..51b7c9df --- /dev/null +++ b/0.13.6/inherit_graph_1.md5 @@ -0,0 +1 @@ +13cd79676d479a68b01d396da7372c91 \ No newline at end of file diff --git a/0.13.6/inherit_graph_1.png b/0.13.6/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..399c8e21493e2a87eecc93061761b13357fcb849 GIT binary patch literal 1323 zcmV+`1=RY9P)3cRcHyanS&1elSxS*% zwF{JotCgoBB8d=Io=RL$9xhyHlZPacl44_7o^~-VtnGJk>ip+vzhh3E{(WCppU-FC z^EvPDdGCA9>6`LV75M@B||U`L*K zb8v8wl$7M>=SR94kIBx?h7dvs84N~PSXgOk>F(|>Sii!%dn!CXh zZ>(19pFe*{m-0>2YPHkpv|6nzD=QohCpkHJVPWC7MSY7edn1#{`uqEbhK3-7&CSgK z0D(Zz)YO!gmd0YSrl+T6G8u%BMx%v>hHAB1{2hcqAZTf6$;im?_4SR4idtP=ebf2r z=_xNSFE=;WX0v_Pq`kd8A|m2_jN|R?9TgST)zwv2R#sbEi*3l`@z&SZu>mHN2}1bz z_()KBadGk9-d=fmIfPIw7K7L4G>gSjQc}WZvjYMGluG6O{XN0S62j@i%*@Q2%7>^_ zs>;erJdKNs3k(e0+S;<)?Re2{x9{)oM?^&EbUJ)kaB%SU_O{Jt(`vPBHrwHFVD-t# zNwe835{as+s@ykeYikP+4}TwLWo2RO24`bq0|0Pxa^iG4xm@nr+8S0j8jS#ehldB^ z%7sGV*w`38ASo$ncz76#Q&Ur=Qt8#z)#c@7dV0E4Ds?|uH^}93xm@mAA?F^trlv+B zk$8D|;T110ulV@*+S=Nsr6s(mR;v>e6PZkAb#=AHV!6J)#_Gq%#}bJ|E|(7u4!UpB z*w}b>cJ@Ag51-Em0NmZ(k)r%V&d<*`H#Y|c27-cu_I`#MpWz z1(Kf&JU>4>91cG}KW}eugTc_#(?et{I-Rc5>7t{f)6>%}7K@uE|GXD?d3iZKJ*}^= zpO~2F>+8b~y+9xs8ykCke7v~0XlQ8os&Wp8b9i|8{{Imc7M7BdqEe~MX0y>~tgEZb z$;shxI7FsQ1d_c82?^=!>{KWezP`R1ji#WWfT#`{ZFqP%BO@avC529>d(fn}w--Xl zVzIKbv#+nO^?H4Nem?e7M@Pr)?JbwfmC0nEb#tSVmwXE+2dYH9I@|^EwbFlZnUUxmG^#rl_dsr}Q9RA(zWtQ;41dP!@E(p)SZ9 h>VmwXF320|@)r`+3>b8g5S0J`002ovPDHLkV1go%hkF13 literal 0 HcmV?d00001 diff --git a/0.13.6/inherit_graph_10.map b/0.13.6/inherit_graph_10.map new file mode 100644 index 00000000..7abc423c --- /dev/null +++ b/0.13.6/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/0.13.6/inherit_graph_10.md5 b/0.13.6/inherit_graph_10.md5 new file mode 100644 index 00000000..525b258c --- /dev/null +++ b/0.13.6/inherit_graph_10.md5 @@ -0,0 +1 @@ +6976fec6e715fef5e88f59e9708c1db5 \ No newline at end of file diff --git a/0.13.6/inherit_graph_10.png b/0.13.6/inherit_graph_10.png new file mode 100644 index 0000000000000000000000000000000000000000..4a04832198d5e6a20b3e6195af0bc0789aeb6e75 GIT binary patch literal 1867 zcmV-R2ekN!P)xfvwPCZZfWeq4nAsU212a1#WMF1zgbb3A6AcXw zC@(Lc4J`~t(5S7g9W^&0ap%sRX{$d~{&jtG zjc?z+f#W!IcXtP+p5GJH$#DPveY}197Cg@*CMG5rB^ivM6O@(x!-o&Z%*>qAM&Gbu z12~QY$8m^^j6`~RI;>XfjB3zmG`M;5=BW8MZ{A?bmMw^ljTN+=J$n{|gM%}wZ>|#* zv-kG)V*dR3!6-GW7>z~{5xTp(QCwV%qM{;v{``4XH9dLq1X`^Y%a$#}t5>hk-QA7q z>T2}%_Ts^V2eYbe&Osxnsi~ncru~wipHBdUm)UG4A|ka~O~;NMqnw-^ijIz^yLayj z+j1O73Wb7BojOH6pHHZzR;%gw@#B=6n@duul$I}FPEVgc6~%AgzD-0#9*>7MZ{AEg zosRnZ`zNe@=FAyVDwTf6d3kwcG#Z8R(9jUgn>UZDtE+`Mm&-+Zy`JLY;z%x+Q&CY7 z_4M?J^qEX1%FfOvsZ>gBzJ2?~?Li>A4jno~ z+1c3?6%|D)m5Lf08>y_Uj1m(QNhXs~ad9yX4Gm2xXR7_}?Chlc{Ctv1rKD1+=+dQ2 z1c17_y2kzde=?4LZBsTo5s|@Qpgnu`i00I4HO0rr)617H$?NrsVqUM8-oJlOsi~=C zwOU0v$;rv|`t@t_csx{ET1s-cT-ag5W_LQBq|s<-@7}!u*Pe{oJsuBTym*l$5(zao zHw)Y3%09deK0U{$K5fv3Bnj3k-JK3D6 z^q1#(L`6l3;!35`@8|v-rq%2m#|iIUE*JEAJx-iB0jJXmpU;PiiVAqW-bvN8SS(nv zVg=T(UymO@egw7lFmZ8lxPJXQT3cIDSy>4HSh8dZyk0LH4u`N^OG}Fo8>X$TO;pQn zw<9SjDWLqYFmXFnDist8#kkk*1JyO%Otl9|NlEZ{JaD_+!kpc1530r)yMsD7I0&E5 zhnSccgolTtv9S>q6%~`NBauj8wOWyumWJHiT)5rtfNEPT7GcF3Ydn&L3m4+Zks~;L z`ZRw2{E3v56lk?t7z_qDoldm3x8vZ!gV?xnBN7r4guE+PuAsiY9({d%C@U)i&-2*2 zb!$NR2?+`K`0=A)5RT(;`SN8{R#u{Jv|*685u}SOvJ5Qw?sL+ckhPT zY{ufni($1|@#xVb;c#H0{G&&Y;_>6hh=_+A95%NJy2Wg#{;7J9uN zF)=YHC@2V6*K`w%{?^pgpufK#N~IE;Hf=&tQBhDeazx^%3k?56lGsBB7;}(u{L7v$ zzz7|f*%=`NGdm+>U}k5849x6|kb#+<5i&5dGeQQx|5UQsY%{5Y!3YWs4Gn%{e$DRh z*&7VTTxHZ9R0iXJ3cG{K2pyQ&86g8RJ0oOZW@m&9{{dT@nzcq(1JeKi002ovPDHLk FV1i$Ze2@SD literal 0 HcmV?d00001 diff --git a/0.13.6/inherit_graph_11.map b/0.13.6/inherit_graph_11.map new file mode 100644 index 00000000..0a07dafc --- /dev/null +++ b/0.13.6/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/0.13.6/inherit_graph_11.md5 b/0.13.6/inherit_graph_11.md5 new file mode 100644 index 00000000..bd79b037 --- /dev/null +++ b/0.13.6/inherit_graph_11.md5 @@ -0,0 +1 @@ +c469eaaebbcf130bac248ac66f90522e \ No newline at end of file diff --git a/0.13.6/inherit_graph_11.png b/0.13.6/inherit_graph_11.png new file mode 100644 index 0000000000000000000000000000000000000000..f708a3b2ed3b92e2c370cf610de8aab762027778 GIT binary patch literal 1636 zcmV-q2AlbbP)&Yj<{^M4t4=}7V2XF(o5d^kEf z$}o&Vp~(7#5E+xnxqSQftzNJHtBl;edpCw*7>4EN=a-e0IUJ6x4^dfJdF$3KE_AtE z7K?=-h=PIwqtW>C<;#?^G^=HWOuP(*LMvCU%%3zkQJe}6(InYy|3?c29mmJNr)_4V~8lj+;H zZ@(&X_Uzf>;^O3XZEY>|l4aRgES8g#bNB9D7=HTnsi~<+sZhz_P5>YPDLe{LG@gWLcJ?s6&SiaiLD9TfKVq@bGXn8s(DFXmo6BOsmy8 z91c!KlH}{xufySRS63H75O878OTXV=Sy|cI+A3URK`+DM@Rci9a2$8JT<}s&O^wN9 z^7(uokH=szm`o;aJ_Q8@&!0aJg+eq<%jNPwARwTxsHm{p?XVq>$4g2|_Uzf?bUGuE z2!C_sV&Bm%>mH*e$&t)JGFq_S%PMwOyVgLZI*Nfx0TCIi}tyT+@Fw|%?Tz8E|!!V4no{vhU zx_b5MyLaz`!Qj4q`x+V=hK7ccW$7$rW@ZK!gkRrsa&o?Y{pxnR7hG}z+3^y?FxY@M zo0BI``u+ZRJl@^i9gRj8>`v44=FOXT?bMn<~3yVL1~`SIh2Mx&{&uBIr;@ArGX-uCu(qtRGcSO}HZu3dZa;>FzD+=UAl z7>2P}ECTw%!ou@02D=sc3NwT-M*KW7(+_^JBCa@cP833TKuW#eV zjYgx9Ac(fMww9Kb41V=tEbo7K0|Nu_=DgS{h~)>q^WwjtM99zVM>L@OrFcMI iiU;JSctBo?hkpR^vYz?q_L#%~0000 + + diff --git a/0.13.6/inherit_graph_12.md5 b/0.13.6/inherit_graph_12.md5 new file mode 100644 index 00000000..41719a0c --- /dev/null +++ b/0.13.6/inherit_graph_12.md5 @@ -0,0 +1 @@ +4a8c8ceec44157340d6aee9d76453557 \ No newline at end of file diff --git a/0.13.6/inherit_graph_12.png b/0.13.6/inherit_graph_12.png new file mode 100644 index 0000000000000000000000000000000000000000..b0c72a85cbf7f8cafce8dd944f6403985df4cc8d GIT binary patch literal 1804 zcmV+n2lM!eP)0K~#90?VNo`Q(YX#@13J`y3HVmxVYU^s)1t~fv#4uAY{!JvxP`+ z7HummBP)6_`lF0im{Na4x=Kh#`SMScMEJ*=6uYrrB$8m7&fE}(HP>7++IF5lF3)}T z?B%-FeBpV{=dW|V_ji8xchCLq?Cc<-000C6i2-Aw3xF(Ypg$mVKz~5!fc}8c!3^z~ z&F03&#)T>cvKSDH#kIAyRQF%&$Jp3dcX#)^mjqcX5Cma1n?n_5WKdUE*L>9jSzPSi zy*o^S`ws{m&>s*wpg$mVB;t=>zkVG!aDdHb7Zeoyc?E@qh3)O_f1U?27bN13Cr_SO zEEc=n{^`@Fq!;u*r=+Ch-o1MZUBy2n;*b9R{^H_dE|;71Y7%4T&Yk=B?++8DQt7c{ z#}=fXNGujhd3iaH$4gC3U9)D5Mxz-T8j2c85X9lbhv&IG8WQn`+wESubZOE{Nf@nG z+uhwgH8n*kgM))6lS!k|EMQd>&!0cvv}qHL<9&U7E|;sPr>CT(MAleVk^yrA^9wl)BO*Xva%6x+9NpPrtMmE_vBYk7HjVeLR5fMM9}+qbDAPoF+5 z7K^EBBlEc3?wXn!9LF;=Gc_8`^z<|UfY0am_V$tiV`F0og1B5R8eJq3ojiF`B9Wx0 zrwarEf*=|i8u)xZhr>~;)qy|&01ylYaU4H-^k}U444b{;;$ppCPhC2H{=7sYVYAsq zMMbY(y`tAW9#2h84TfP{E>|v>+ibR|x1f2sDwRs5QiUqN?GFGzb#=8?s||g^?Ck8< zuV4H9eoFNF{qNtu&(F^{7z|VxhGB2syzzRy_4V~U9*=xmq(8>T$Jei4f8@v!`Xo{P z0RXss`La+bB-=ipFDomnwY8Ndk3yl4NF)OT11^`Vxw-l2)2ARIf8aR&_U&7b$8+%D zK{lJMR;#~#`)0LTv$L~1J39dY0|NsHf|$+bSd$qxdtv@qwrrWvXmq>XI-QQg;W(X6 z8eOSW%4D+P;bFJied^SyqM{9#Xumy;cz~F{1|x)8Y2CXobwM1!>D#wSJ%3A>oPJjP!v6J;)LC9r!Mh$JhG9N zmWCk6%*+hgeemD`i^Zz0u8t>3RC021B)#Wo6~1OP9vS$AiIOQ&W@Q@1J$J zPNx$Jh1<4mbGcjzC(&xP9UUDXK7245jpWWWRvsM31A)MoFJHnkq@|@%mUTLvv+D66 z5D0J_r$6AKW-k)*t&a(b2PK&r+FV>G6P~=$$)v z?%%(E=FAzZ)#~&4CMG6KCR3cl@7}#@GMPLcPeVh4-ELPZm9caT!xRcdRaKSMYW?~1 zr^RAXDwRH;@3*RrB+353as0-O8RC=%mk7! z7!0*qJu)&v{j8-aroFvgC=`~KmgeT>zI*phDwQG#a{c=C$;nARpI=s178)E&j}w_p z*4NiJG&Hnv<3g=>7l;PqUsMHK3uzYtxP84 z@p#9NAFryaO2RQj=yDY2{uDAlP`~`+)c>5h+Mh!Ht3ZE1=!o+7V~|Bce}DgP>2m>G zKOl5Ke?aJf{(#T{{Q;pP%Ko&ovvdCIfGh^=b~|;1PZGr+6%`fpRS#s*p;Dmxc`9A0sR4?1Ns9(2lNMoj=umcH(#4YG3YD+0000 + + diff --git a/0.13.6/inherit_graph_13.md5 b/0.13.6/inherit_graph_13.md5 new file mode 100644 index 00000000..1f9de2e7 --- /dev/null +++ b/0.13.6/inherit_graph_13.md5 @@ -0,0 +1 @@ +4b95ee7a157a38077df907b190381db3 \ No newline at end of file diff --git a/0.13.6/inherit_graph_13.png b/0.13.6/inherit_graph_13.png new file mode 100644 index 0000000000000000000000000000000000000000..f745ae08a47d8adc46b0faaf88a19cda0e91638d GIT binary patch literal 2076 zcmV+%2;=vOP)M5E>0)4i{Ma8n5$JR3YoW>5h8Z6 zXq&MzTKA0pD5Dvs6%pwwBbD;fA5kJ9v9!d6r6NhNnNHmh#hOb^B)8}L$KiK=Yq!=i zUHH8Idd_>F=kt8_Iq!4ac{ao#gaCn1#E3tB{Mf&LKZC)DiHZ613gY78Dl04hJP+cZ#uFnxd-klY ztxd1jfBg7y)(cwTBqk=_yLWHCtC$BoF=A(DCzs0&3JRL_YCL1djvf2P0Z zN9Ls-d)nICGBPq)ES9gY@0vAhBoawaPmjY$wOW1X(4oItj7Fmoi9{?GDPb#c4h#%zZ*LzM7?8{53WZ|6D)|X$MRj$x zjbcwqN(wbMKR+Kr7#kaV{`~nZTebuS20niLm<+%$j39{1moHl^7II>2Z0v;#7X$(U zgTYw6diBefFDbpEq5?uVIXRi0o}QeXJTWohEXmcYS0f`MZN_G^8OQNkw{B5Io;-Py z$Kz4e+UGHuOnG^E1VID`2TLT9iHQjaA)C!^Y-}V0$n936(da^tjg38i{5YS_4+sc| zj*eEV)kQ@`Y&M(8WQxUNv)K$Gv{)?ub-o2Zg zoGd6PV6j-_dn1iFG&GcukdT|3>pF=;BSHu-UAn~KaLDoW^mJ%wXnA?Li#+M+>3lxF zySv+HG?tc@K7alkdSpa`Al|=!KR!Nw;J^U}gCQ1+zkKdcDwCSFW5ko>kR4SFpWKt*;OeS+=WWUEeELu2d)#zf9r`gTX+j)75G7M-^k$NdQI=Zy9 z)R|5eW-u5?(QGy|nar-PF8d|)dc900i;9X`v}h5J$9wwpDXBX&qD|{;!dxus8hazo z&ORcJ2y9mK9P};fBwcpLqo}dudlDazkfhL0Ch;d zJ2JpvFp&D5J$oR8jg5`gNvykPLqtS`^_c2|z24W?2LNER*%*dl80O>S^X=O=ola-J z1e?viefzdns~sI3&Cbr=y?Zx#wbF9v;rh%DQ;*;?U5L#bPNb zDVdp>`Q>zlLc!s1wr}5VG#WilB9%(3tE)RYI#enZ`IzD?4?z%Sv-$Jq&o&wS{QRhE zV`OCHm%2MdM@JI`;d-Og{)<-%@=TNT_VzAczTBC z$z%jUw6wGU0BE%To595?unu#*=x;I0->ghcO<63KprD||ix;ca>XMQYcV^M)^s1_= zn3x!WKrk{g;v$Jcp@@o#vL6Egl9G~^E?v57*DfB9NA9#c%Y);1YHI4ig9kr-`eZVh zluG4`7cT$+adC0w<>g~zWBvX8XU?3VGCR}V0mHC6ckbN3fB)2}QyPtCdU|?zc(|#l z$<66^@7`@{Y8oFOFDfe1>-8d$$eE7gczSwzPEL+Sqxt^*ds|zZNF+K+qtV1-abI5_wQJ*|n99mZ4u_MJloSyW@!`V< zfj|HNC@d@-9UWz}*{P|i*1^tnHxUYj&CSg{Jv|#YZe%i<8#ZjvXf$fI+MT%)i6lQi zKRi6Vs;a8KzMlFd;81_`=+WA>YlT7~i^V#6^k_~_j{Pnho6XM6%`Ge}jEs!Laa^fX zmY0`r+qMk=aQgJ=hK2?|KflDpL>H~I4s&x+x3Ipcy7{nzm>Z~#EjRUl2=JF4RuG6k z1Q`+G6*%~XHo{Bj?Ckt4{htQi5fNSiG9tn&Kt@D(1;~g9ufV~>N=;48+}D9v;5aa% z^>5A)h`9lS=>H=kya4nW5#bdeBO<&4WJH8lfQ*Rn3jPD + + diff --git a/0.13.6/inherit_graph_14.md5 b/0.13.6/inherit_graph_14.md5 new file mode 100644 index 00000000..bad5aa85 --- /dev/null +++ b/0.13.6/inherit_graph_14.md5 @@ -0,0 +1 @@ +13beb2915ca39665fff8777a1a8d19d8 \ No newline at end of file diff --git a/0.13.6/inherit_graph_14.png b/0.13.6/inherit_graph_14.png new file mode 100644 index 0000000000000000000000000000000000000000..1a377db758d10c4c52a6528e076f2c4fca39634e GIT binary patch literal 1485 zcmV;;1v2`HP)(+67!x-gETwUf;$@Sd6&jRUx~kJsq1}Xl zXctnvUHG|`nv5I0(oL<%li+=OaNE|!2*wA4~a=lvHy9sWtu zWI7F2`M(DSl5_danUgm|X2K^(5)#Ss30JIk2a>-RDISS!qZiqrZU$MjYe_n z)~(g(Me+v|4u|t>c~_ofGKpu;p8b}FB!51sRBA~*Vl#uSigQfwr}5#o}M0zkB^tNPPr*GpVgpj zS00bYgMonolWkyN03MI0TqVj%BoaYWQxjBG#qjVjzJLFYmoHz!=kwwE_3NwM-roUp z7#bR40drAWTU&YY;zhdMZoYs2o+LRlGs8`rHu27#JKV5ggDF0f$uJNIu)4aMilXrF z;lrGso+e59{eA*4j>g7Dl4N6JBk$h5YiSLV^m@I#a^(tJT3Wbq<3?`VwvDe|y&_5K zx=vM9dHneClIJ!vGsE8AUb@|Gx?C={x3_b0a?(;AtNE8MU1D={GaU{GpFVxc_V#uH zpb&zps`A>kYt(hU=zOfqBe#wfis&I!Ht}4(e3`*ukVlRjAxZZ4_p_s;gD+mZ$P-U< zb2Ho8+L%tKnMfqq($d1Vwl>4x(9pmK4<49ua>Y|>4X@X0h)n>3D9|(wJv}{` zot;H%YinLiGMPkWWhGQqHEi|u^@h(1R@YDz#duv+RRsW;o0~&*bu|DWolYD6Lx&E5 zBwoLMZP+FzCIA4nwY3mJKnQ^~Yu4cB&!3o_oGe+#YQEd;Hl1HM9LDb5yWwy+AcVl_ z)2ES2rB*zT+&U|z?6>MCPMpB==g)EM*f9tp^89smb;xG3NF)-5ZSn4=uCDIirYefJ zWo3r!CNG6l$ z?d^r8X{f2G0RYt0)L?XU)HJZ=u2Bpj1p52?asU2(oIiga@pv5b^Yh4LGI;y;tr6#T zyK(T~L3DR_BOZ_A*RNj~85u!mXD8<8=S$YHlRq~%2VK|Ua=EZ}?OMcQG4%EInPPJ1 zv(kCkWmO&$4h;>#;c&p?@t~oh0kyTY7#til{1+}?*d=<4b+#T1&)O6Oq*L7I0@EdB*gxv4^eqI!_KCnWZf;*r=!ibrA_ zDISS!qZiqMv6ybn044fOYPN>NEXR^!Yq+kL_T4b n*hh*-VjC$QiEX5KB)0hn1lX~XYz#;r00000NkvXXu0mjf + + diff --git a/0.13.6/inherit_graph_2.md5 b/0.13.6/inherit_graph_2.md5 new file mode 100644 index 00000000..5f0af392 --- /dev/null +++ b/0.13.6/inherit_graph_2.md5 @@ -0,0 +1 @@ +1b9c9ae28948ac70e25d962ab5665326 \ No newline at end of file diff --git a/0.13.6/inherit_graph_2.png b/0.13.6/inherit_graph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..63f01b973185e102fa4b31428d92c84c3bf0adf3 GIT binary patch literal 1128 zcmV-u1eg1XP);lqd6XD%Vm=0)u{86YUi{{_I?v-d zkAMF>oHG}}L?Qvu{Cya|E#UtGZ8SyDMpFcBG(|wkfyd)nT3Y%oDFuefWa{YXz{8Y| zMi9j9c2h2?0CBtB2!bSMAo3)a%SDx*f&~OYLWbU>DS|edB50#2A{V1$v6x=3XS3NN zk?7|N#A5OG_V&-~{NtoK3^TH~w|8-I5eNjhTyEY46)L%O^yTGcdwcso<#KOtFPO^F z(a~>D;_-M@RaJVu{`K`W?W*PFWf+E;OlD_ir`PNK zu4Dg^+yxGYgOEv!!C)8}8NtJrmX_-3>XVZb6h-kQilSbxS11(P?RI<`pU*!#I}3-y zX0w^cdAq`jbc`003|}94VRPAZMeorXyps*|b_MK5cPv z5gTK@69@#b{N&^$48sFo}LKP z?(grJOy>3V_16Ljkd4mIbu^#P$Hy+0tF^V2#bSXVXfzrFfdKvykH^CXrKP0+07Rov zEL>k-FDolE7!27I`3yowS5{V%wIzoLfFIfUd&{{s7;DD*{2w?p$7C`M4i09kgTYu^Tf*$S*jf_hi4hM_HYHn_BYip~mt=-(*B+rq_WaZ`MDwV3DqQYvmI-O1yi=n u0TcB9qbY&jqbY(mnj&bUDS|edBK`o1JISobKyPON0000 + + + + + + + + + + + diff --git a/0.13.6/inherit_graph_3.md5 b/0.13.6/inherit_graph_3.md5 new file mode 100644 index 00000000..c02b22e8 --- /dev/null +++ b/0.13.6/inherit_graph_3.md5 @@ -0,0 +1 @@ +655b4018b26bfac970806dde99121890 \ No newline at end of file diff --git a/0.13.6/inherit_graph_3.png b/0.13.6/inherit_graph_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5092dc283a195b76f6141dba98f2e735c27df787 GIT binary patch literal 39755 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 F{{o5Oi-G_E literal 0 HcmV?d00001 diff --git a/0.13.6/inherit_graph_4.map b/0.13.6/inherit_graph_4.map new file mode 100644 index 00000000..defb40c0 --- /dev/null +++ b/0.13.6/inherit_graph_4.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/0.13.6/inherit_graph_4.md5 b/0.13.6/inherit_graph_4.md5 new file mode 100644 index 00000000..d366728b --- /dev/null +++ b/0.13.6/inherit_graph_4.md5 @@ -0,0 +1 @@ +0cff89dce9d9ee11fbbc3746cd23348a \ No newline at end of file diff --git a/0.13.6/inherit_graph_4.png b/0.13.6/inherit_graph_4.png new file mode 100644 index 0000000000000000000000000000000000000000..90e141e80e186b293bf6f34241f1e54d46b9b940 GIT binary patch literal 14761 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 MQ8|%PA$|Y<4~}6DAOHXW literal 0 HcmV?d00001 diff --git a/0.13.6/inherit_graph_5.map b/0.13.6/inherit_graph_5.map new file mode 100644 index 00000000..09162f22 --- /dev/null +++ b/0.13.6/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/0.13.6/inherit_graph_5.md5 b/0.13.6/inherit_graph_5.md5 new file mode 100644 index 00000000..8e97df25 --- /dev/null +++ b/0.13.6/inherit_graph_5.md5 @@ -0,0 +1 @@ +1fde7f606647fe5a1ef6f08c18fc38cf \ No newline at end of file diff --git a/0.13.6/inherit_graph_5.png b/0.13.6/inherit_graph_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ecbc971a35d934badfd5f26bbac0bd904b7755a5 GIT binary patch literal 1285 zcmV+g1^W7lP)Q5d200006VoOIv0RI60 z0RN!9r;`8x1iDE?K~!jg?VC$TI$Hq7XG(gJN{b{aY$~aQ!i*q$W6;7PK`|riieOo$K|Ll{NQX=eIiN zoAdZQpT{$!2qFjq5a3D_-UbMW4E_ZW8Q>3*0sfFYD|)?tYHA8EE0IHKX{k&m!>a$- z2iMovo12@zZYi=b7z}#7-cup@Hrm+O_$@z?NMmE8mqMHe_(NoXKST!j^OX$V-``tW zTF7K_et!P<9TXN8uB@zlf1Lj=U&&x=Ys+Xf!Z3Vxb{2L+zW|5BSy))W+r{5}C4-Zb zlai7WDwP^`H{Zc%Gzx`68jThg7nhrxE0s#kX0zXx27{rswe^?n1>q|h*lf1g*x0aJ z`3~FL+m)4-5CrLTI;+*H(P%gv&gkeU-o8Qu@nCIj%}ep6zP=voE0@a=1YxmQ0|Nuq z)zyiKiL0xtXaf)gAqW~C9(KFkXh#-{H8?oP<#Nena!yXp&dv^|t5hlkK^zVTpUR~ z+q=8F>2x}kO0BQ2zr4KkJ4KKM6p2J4k;qf|bOs25bar;OwY7P^!jzPh!^11?d@f=*)EqW&?5Ndr!p8B z8S&e4W@bh#7GupOCnwSJ2P+G#U*p#K*@20PyXOG^Vm5Cp;K=;)`Xr_0OB52pxDcrpM%5G~x@-8D5e z4Gj(5-rl<1?&;}ir_=dicZEVxP*6}?TWhsizc2`s$%G&%_(KNf&=+)NQ7jfqdU|>w zJtHF{Dk|#X;lcA=+|bbQ;S|9M^K#N)Crc$XfF);>%VS0KxlwKqfNv&4r=jU^| z-240cAcH6r3I>DWRR%$Dc6N4gaj~zj&tx*ay}jMt-D$Pj5IxV$&1tn-yWKu9F#*G{ zKp+UD)9G|RpD&R}OeWLI%Zt%y6bJ-wZ*QMiAb*580|COePZwg`xV0 zic%_-H8nL=RaGPs>9d3Ics!j>XEvM5%gZSgN?BQ%$z(DZ453Udl}hDud1`8^TCLV- zH0UQ=AbojxIWI4d$K%mxw63l$i9`~H+jP%u72=uve*(KR4pIL;KXoP(d5E00000NkvXXu0mjfW3yb8 literal 0 HcmV?d00001 diff --git a/0.13.6/inherit_graph_6.map b/0.13.6/inherit_graph_6.map new file mode 100644 index 00000000..98deff48 --- /dev/null +++ b/0.13.6/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/0.13.6/inherit_graph_6.md5 b/0.13.6/inherit_graph_6.md5 new file mode 100644 index 00000000..81eeb149 --- /dev/null +++ b/0.13.6/inherit_graph_6.md5 @@ -0,0 +1 @@ +6d7150c2026fa6a894ac6d82fb24e9c3 \ No newline at end of file diff --git a/0.13.6/inherit_graph_6.png b/0.13.6/inherit_graph_6.png new file mode 100644 index 0000000000000000000000000000000000000000..518a3aee1cf7ac8ee43b4c05b60559c74ac9f03e GIT binary patch literal 1570 zcmV+-2Hp9IP)2BoZtM;`F+p%?(AH25r$y^L>Z`dTL5I|fMzQQXtsiYW-ACazvFZ|@87?_ zTT&nq$7Zu-W@d8TKhEr#nVIhH?j4r|*%rFHyJu!*_z|@@sjI7Nr}RL!5d=X55qQm3 z5YTJ|0nJtrn=$*>uV2@$UDIl{Nl8gtSCEpD^6J&At1HlC4@@#4jcb%)DL+bEkc+wb@9-@iZNQno^G zZ|~W&X9i8(Ujj%P>rGa`Nrlx6hwHuhD2;zkbaoAP7PbL__%X%;9n8jW_l zojX)hQ*-9b8Ld{EnwmN^G$b8gT3V{As={$xr_<%;=6bzeaft^H9smGFM@I!R3JVLl ztuq>p+-3@vDNYMlR2l$4XJ_Xh5q?LG*$l&2t=6)#GX7Q`K74q1csLjga=~CQI5IL~ zFc=&T2bYH9_~*}`mzS3t8yhhUW7o!-JvTR(k&#heUM@XJNVC6w{R#kZI-TJJ3ls{> zj*gE0`0=CP?Xv9U2^=EH{%3kwUmw0rmNvF-2QzXJd$iemmd zhmIXPMv~;ZlZ52cr%wQY>FH^<+tJY>_}&sI6rb7Lp~S?*wzjr#arW)w?CdNXTw7a1 zQFMHKTwH>pD67?KFc|jk-J6-2`S$HwHXhP!@iO^o5=EsEn;n_wY#hhAc2`$dT3VV$ zqd^el#*G^kMRA8P3}YKnQBeSZKp?<&pFe+o@ZdqK)hcHaF^3KvVz-0sUcGviVVDme zK7>;!;P~<5{5Drh9RK$18vsDB*CPmmAjqCQdw%@*;q`jOCG>jzqeqV>CMFga7mJIF zuUxspej)|PS*CQ+4G|f$x!17s^YcYTMfLUdb8~YvO}DnT27|$Mhm$0E>eQ)AmoE8y zzD-P$n3zZqg!IF@_(d@XyPGUiQ&X|AvEkxJj~-R2REvv?{L>{bFHfQbilSDll^}@W z;b8!PO7;JSODvP0CS7zxMEDI_AP}HwTBp@RJ$;ivZhng9iC4fMzR*5dW#7D8|OdHWdG>foHaYfMzQQ zXtsiYW-EvgH)wC(yxDmjkR2d|+5Eq!LjENX2L3) + + diff --git a/0.13.6/inherit_graph_7.md5 b/0.13.6/inherit_graph_7.md5 new file mode 100644 index 00000000..305c69e2 --- /dev/null +++ b/0.13.6/inherit_graph_7.md5 @@ -0,0 +1 @@ +e5261aacf97f3320b4345b58f597b103 \ No newline at end of file diff --git a/0.13.6/inherit_graph_7.png b/0.13.6/inherit_graph_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a76fe759b2a2d55dcb5dc37d7130addb12213b96 GIT binary patch literal 1403 zcmV->1%&#EP)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1u#iOK~!jg?U_p~V_zJ{&#A^Rt=6jIQLjqK#8hJzi0B{@8W$m@Orq@y zQIAAy1hW!pBr`IJ5FuhZ#9QK#NW{X9sD-dI9y9Kx5A{q-gz5b+PI7a{qbRxlG551N zzu*0xU%vh3m-{${BuN4mM&P`(fPVLPAYV z4Hf=1*Eo)kj*c=e>21SXfw7QxkP&E0f6@8yizoQw0J+WMt&*?CiD9XJ=yS=))IwT~-*Vh-ru;0IbKh~>jJlgB&>1mx#S6W(1l4Mg;6H4~<^fWg& zA0HnV78XuVPm?5hd3iZLKK}jt_kn={YOldy(ChVPvstZH7Z(@PkIv0z^T&@L0|Ejj zCntG4o{J`T{t^zSq@<+1y&VAX{BV0uA8LBYw%$;!&g^71l{ztsNCFKr_=dZyZ(ZtF*G!EEpscB*NB*y z7&Lk}`S$IbN~NO8zI^$D)@Y^(fgsZ>ha^d*QmIrb>6zzwzot*n$jC@+Y%HJ8hY(g*R}%z5 zT@r~zXyNVc4FEVlKSyCtPtV)8Z*@A|Lz=iiBoZkUijtBNhr^Mco=(4n<2aYg4Gj%N zA-ehCI8G1*kH@2gNhA`q*xud-00agGLI@#*9v&X2r>DPu{d%Y)xA8n)LkQ8rVzCqz z6@C8v*<>;~ozB+Q)~l zogEaSaTbfkK|w(dhr?>MqWsp@7FvXagm5?2xNO z3CHoOsw#y-;qUJ+kw_8~6Dukz_V@RQH@faBy~ZwpOcMUtd2vJ2M)Mxw*L) z7Z+~&0swe+uR}vaTUuI*ii!jRK}}6fUS8fqb#ORcU0tcEsdBlT%jLS)#5F@hLwr78 zDwTft@F6fT&|ol7dAr>%kw`EMQ>)cfy}@9Jii%Pw6e5wRva(XE)jsh}7m~D>f#Km{ z^b~qZM-~J+Q>7nJvu97t!FtUctk=xJdd(cH*UZ6s%^a-P%yG;AGQ-2e%M4%Tbt_z!iw`i6?O)9U~L002ov JPDHLkV1gIYt~~$% literal 0 HcmV?d00001 diff --git a/0.13.6/inherit_graph_8.map b/0.13.6/inherit_graph_8.map new file mode 100644 index 00000000..401322fd --- /dev/null +++ b/0.13.6/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/0.13.6/inherit_graph_8.md5 b/0.13.6/inherit_graph_8.md5 new file mode 100644 index 00000000..64c8fac2 --- /dev/null +++ b/0.13.6/inherit_graph_8.md5 @@ -0,0 +1 @@ +0fd9e3718636c19d25379f06c5ea984a \ No newline at end of file diff --git a/0.13.6/inherit_graph_8.png b/0.13.6/inherit_graph_8.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe4f3c127aef8687af04c43de22e8c6e1c6f7e6 GIT binary patch literal 1612 zcmV-S2DABzP)x~QxPv1UiZx)8fi z3Bq96f$B#31HqyZloZ{F{Q+~(W?e*HMYmxgMPw1!HvgPsYjY?Q&!pP+doNx*xZJeW zrf=^#A2@KH-|w97d7kIHXU}uCa~L8bD9Djs)k@buVdYTFmobX@GDb09#;AV|^!NAU z=FOWcQ5S^_(%aj+AhuxS^E{8oj~_2fg%mQ6AP7nQTrl$INc2fj`1^3VTxe)$NSIUR zd>NydFJlz*WlUPk|MBAonwy)EmzRgq($aKDCZwXG0zExF8Por-^Y!ajFbsoWFqjs- zqzk@Oc>44y1_lNo2m-mIcEwP^nZf7!0u4Y?%L#az#Z2E?v5W z>gsA}G#YH#vIWndKTmkwa5#)3M~>j|;lmI`aY=2v-HwuylBDJN$ zO7WSQ8E_njqM{-c6cm7ES&WX3O8M#OX>c3|gTa8cYuBQ+wH2Z$0ssPm0FEC&4y{&; z_3PK8xw#pWlaq06|GB?>J|9??g+`;nwr$(+(%6bgmt+_`hKW5*7PMx#VTR99C=d-v|8j~_qM)YKGpc6QRUXU~X;X#f8GR8vz! zDKGHSlfW?S^U zTeogeLqkK{IX7^|ck4v#=G)fwchTgw_Potxw1b{w&{=7ijIc<~~w=4bRiU#HW>m3w=8v2*86d_KftF?4ivAQFkBq-nR?QC3!lg9i^{YHBL2+HU&;`{gS(CKujtE)pxOACgEh7b;iF)%QI`uci&`}Pew zoenI^;>3v)`1I)$LZJ}4y1LNU*N5WbVpLUC!D_X_=ktN*d7L?O1{RA28#iuDczvVM zh&_Au;PmO!n3$M=*Xu=ldwa_LwHV80zFx1#_3PKs*w_e-MuW3w&*JFOqrau4QmN3@ z)rIQnYE)HKL9JG&O?y6VZEXmL!+7xE0RW)8yBk}#ZiU5SfmW+UTU#4iT3V#r+@78u zl$DjiY&N5~xEOEVyn)GN0suIjPUPn1qP)BuyLRnDVPPS?zSHT%%*+goMk833 zMN?DLAGaxv6cz{ye<3Tj;8XZ-qnIya6!T?_V!n(~%$G5W`7%Z^U&bVTlE>w8EoVIx zGDLrWf6`o1^OHU6t?>VWAyVGYmnq8o`Eo`vU&bir%NWIc8S@V$NYUh8$Xss#0000< KMNUMnLSTX{9UWQ# literal 0 HcmV?d00001 diff --git a/0.13.6/inherit_graph_9.map b/0.13.6/inherit_graph_9.map new file mode 100644 index 00000000..0a55956c --- /dev/null +++ b/0.13.6/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/0.13.6/inherit_graph_9.md5 b/0.13.6/inherit_graph_9.md5 new file mode 100644 index 00000000..1e1c32c2 --- /dev/null +++ b/0.13.6/inherit_graph_9.md5 @@ -0,0 +1 @@ +ff3a4760b2d575b55047de9c87fc6141 \ No newline at end of file diff --git a/0.13.6/inherit_graph_9.png b/0.13.6/inherit_graph_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a79cda299bd3d4d14818293f772ff888f88d9e97 GIT binary patch literal 1229 zcmV;;1Ty=HP)E!(&-|Fwnvbnk0-{1dRr34vGO-)%@S@`rt zM_VkGg@pyeOA10378WcP%kv2GR%9}nh^i-Ofe^lmkmqQEAdMyn(rAJR#OTMzN2OB9 zU@-W6{?{uI3Wc+?vtQ5ikMH}=#n3N{i;FuuJ1B~>Sgda^C|C)kqxbjsGcq#%DVGZi z3n7FMLOPu;5C{wg!?$lC5{ag!rUG6bh|zYtJtQO~;4Oa$wOZ}XlP_)1VY%>)&>9&3WXYtCO0>i!C=hI&B2#KsmKGNmI~#>R#ZeMLpZ?(S}Nbv1-AGc)sV zO#=V`?=y@>xGW(dVS9Vq z;c#fRS~i>Q@p!QK%*>3{Y88n@_4W0>lXQ1?CnhGo9TyZ7U>)snI0gp?5d=9oIl&I) z&jk zk>`_ujmDbpEdv7sa=9Fr_4V~(W2{Y36vg7Lt*u-xSEtkYP4W>11qFEPP^r|Vr6nwW zc6J5;Fq_TT6l?RVt1En8Jj0(qe?~?|eCWSu^!MCHCnO}`W0T30mX;P88VVs)tJNrq z;)mF5Ha4KqXaE40%Y{uRCMK}2{AZGU1lG|uo2{gzq_ea0>FEgoV6j*b1mSQvmRbO6zQ<_%(f<1STA@&MbaYs)R*%P{*X!MGx8LPDoh~IMB|ks^ z?(Qz&Bp4A95o2RxXJ=>Qp!y!K@fw%z~}Sx^73ppn~x-ZFNOesu&}V^=H{-h zu7`&Q9*-v$i&ZL>)oQg^ERBtgMMXu?(b1T4czAeyef|FazPGm*MbWadG9UWr=;(uk zgU^5DulQ!8IUG(;Pme;OU^1CaO-<$H<)5vCLKz($l}IFFu^2&+z>?rJG&DG!&dJG1 z0D#eG3=Itx2n6Zr>9Mh~)6>(qthTmRqtV2~#25^Q<>lpwhzKA0mX?;4l@%I|M%-No ziC@4ET?|S5LK;mFq|pRH8ch(S(F8#nO%SBf1o6% + + + + + + +libfranka: Class Hierarchy + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Class Hierarchy
    +
    +
    + + + + + + + + + + + + + + + + +
    + + + + + + +
    + + + +
    + + + +
    + + + + + + + + + + + + +
    + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    +
    + + + + diff --git a/0.13.6/joint_impedance_control_8cpp-example.html b/0.13.6/joint_impedance_control_8cpp-example.html new file mode 100644 index 00000000..a3008d28 --- /dev/null +++ b/0.13.6/joint_impedance_control_8cpp-example.html @@ -0,0 +1,322 @@ + + + + + + + +libfranka: joint_impedance_control.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    joint_impedance_control.cpp
    +
    +
    +

    An example showing a joint impedance type control that executes a Cartesian motion in the shape of a circle. The example illustrates how to use the internal inverse kinematics to map a Cartesian trajectory to joint space. The joint space target is tracked by an impedance control that additionally compensates coriolis terms using the libfranka model library. This example also serves to compare commanded vs. measured torques. The results are printed from a separate thread to avoid blocking print functions in the real-time loop.

    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <array>
    +
    #include <atomic>
    +
    #include <cmath>
    +
    #include <functional>
    +
    #include <iostream>
    +
    #include <iterator>
    +
    #include <mutex>
    +
    #include <thread>
    +
    + + +
    #include <franka/model.h>
    + +
    #include <franka/robot.h>
    +
    + +
    +
    namespace {
    +
    template <class T, size_t N>
    +
    std::ostream& operator<<(std::ostream& ostream, const std::array<T, N>& array) {
    +
    ostream << "[";
    +
    std::copy(array.cbegin(), array.cend() - 1, std::ostream_iterator<T>(ostream, ","));
    +
    std::copy(array.cend() - 1, array.cend(), std::ostream_iterator<T>(ostream));
    +
    ostream << "]";
    +
    return ostream;
    +
    }
    +
    } // anonymous namespace
    +
    +
    int main(int argc, char** argv) {
    +
    // Check whether the required arguments were passed.
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    // Set and initialize trajectory parameters.
    +
    const double radius = 0.05;
    +
    const double vel_max = 0.25;
    +
    const double acceleration_time = 2.0;
    +
    const double run_time = 20.0;
    +
    // Set print rate for comparing commanded vs. measured torques.
    +
    const double print_rate = 10.0;
    +
    +
    double vel_current = 0.0;
    +
    double angle = 0.0;
    +
    double time = 0.0;
    +
    +
    // Initialize data fields for the print thread.
    +
    struct {
    +
    std::mutex mutex;
    +
    bool has_data;
    +
    std::array<double, 7> tau_d_last;
    +
    franka::RobotState robot_state;
    +
    std::array<double, 7> gravity;
    +
    } print_data{};
    +
    std::atomic_bool running{true};
    +
    +
    // Start print thread.
    +
    std::thread print_thread([print_rate, &print_data, &running]() {
    +
    while (running) {
    +
    // Sleep to achieve the desired print rate.
    +
    std::this_thread::sleep_for(
    +
    std::chrono::milliseconds(static_cast<int>((1.0 / print_rate * 1000.0))));
    +
    +
    // Try to lock data to avoid read write collisions.
    +
    if (print_data.mutex.try_lock()) {
    +
    if (print_data.has_data) {
    +
    std::array<double, 7> tau_error{};
    +
    double error_rms(0.0);
    +
    std::array<double, 7> tau_d_actual{};
    +
    for (size_t i = 0; i < 7; ++i) {
    +
    tau_d_actual[i] = print_data.tau_d_last[i] + print_data.gravity[i];
    +
    tau_error[i] = tau_d_actual[i] - print_data.robot_state.tau_J[i];
    +
    error_rms += std::pow(tau_error[i], 2.0) / tau_error.size();
    +
    }
    +
    error_rms = std::sqrt(error_rms);
    +
    +
    // Print data to console
    +
    std::cout << "tau_error [Nm]: " << tau_error << std::endl
    +
    << "tau_commanded [Nm]: " << tau_d_actual << std::endl
    +
    << "tau_measured [Nm]: " << print_data.robot_state.tau_J << std::endl
    +
    << "root mean square of tau_error [Nm]: " << error_rms << std::endl
    +
    << "-----------------------" << std::endl;
    +
    print_data.has_data = false;
    +
    }
    +
    print_data.mutex.unlock();
    +
    }
    +
    }
    +
    });
    +
    +
    try {
    +
    // Connect to robot.
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    +
    robot.setCollisionBehavior(
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    // Load the kinematics and dynamics model.
    +
    franka::Model model = robot.loadModel();
    +
    +
    std::array<double, 16> initial_pose;
    +
    +
    // Define callback function to send Cartesian pose goals to get inverse kinematics solved.
    +
    auto cartesian_pose_callback = [=, &time, &vel_current, &running, &angle, &initial_pose](
    +
    const franka::RobotState& robot_state,
    + +
    // Update time.
    +
    time += period.toSec();
    +
    +
    if (time == 0.0) {
    +
    // Read the initial pose to start the motion from in the first time step.
    +
    initial_pose = robot_state.O_T_EE_c;
    +
    }
    +
    +
    // Compute Cartesian velocity.
    +
    if (vel_current < vel_max && time < run_time) {
    +
    vel_current += period.toSec() * std::fabs(vel_max / acceleration_time);
    +
    }
    +
    if (vel_current > 0.0 && time > run_time) {
    +
    vel_current -= period.toSec() * std::fabs(vel_max / acceleration_time);
    +
    }
    +
    vel_current = std::fmax(vel_current, 0.0);
    +
    vel_current = std::fmin(vel_current, vel_max);
    +
    +
    // Compute new angle for our circular trajectory.
    +
    angle += period.toSec() * vel_current / std::fabs(radius);
    +
    if (angle > 2 * M_PI) {
    +
    angle -= 2 * M_PI;
    +
    }
    +
    +
    // Compute relative y and z positions of desired pose.
    +
    double delta_y = radius * (1 - std::cos(angle));
    +
    double delta_z = radius * std::sin(angle);
    +
    franka::CartesianPose pose_desired = initial_pose;
    +
    pose_desired.O_T_EE[13] += delta_y;
    +
    pose_desired.O_T_EE[14] += delta_z;
    +
    +
    // Send desired pose.
    +
    if (time >= run_time + acceleration_time) {
    +
    running = false;
    +
    return franka::MotionFinished(pose_desired);
    +
    }
    +
    +
    return pose_desired;
    +
    };
    +
    +
    // Set gains for the joint impedance control.
    +
    // Stiffness
    +
    const std::array<double, 7> k_gains = {{600.0, 600.0, 600.0, 600.0, 250.0, 150.0, 50.0}};
    +
    // Damping
    +
    const std::array<double, 7> d_gains = {{50.0, 50.0, 50.0, 50.0, 30.0, 25.0, 15.0}};
    +
    +
    // Define callback for the joint torque control loop.
    + +
    impedance_control_callback =
    +
    [&print_data, &model, k_gains, d_gains](
    +
    const franka::RobotState& state, franka::Duration /*period*/) -> franka::Torques {
    +
    // Read current coriolis terms from model.
    +
    std::array<double, 7> coriolis = model.coriolis(state);
    +
    +
    // Compute torque command from joint impedance control law.
    +
    // Note: The answer to our Cartesian pose inverse kinematics is always in state.q_d with one
    +
    // time step delay.
    +
    std::array<double, 7> tau_d_calculated;
    +
    for (size_t i = 0; i < 7; i++) {
    +
    tau_d_calculated[i] =
    +
    k_gains[i] * (state.q_d[i] - state.q[i]) - d_gains[i] * state.dq[i] + coriolis[i];
    +
    }
    +
    +
    // The following line is only necessary for printing the rate limited torque. As we activated
    +
    // rate limiting for the control loop (activated by default), the torque would anyway be
    +
    // adjusted!
    +
    std::array<double, 7> tau_d_rate_limited =
    +
    franka::limitRate(franka::kMaxTorqueRate, tau_d_calculated, state.tau_J_d);
    +
    +
    // Update data to print.
    +
    if (print_data.mutex.try_lock()) {
    +
    print_data.has_data = true;
    +
    print_data.robot_state = state;
    +
    print_data.tau_d_last = tau_d_rate_limited;
    +
    print_data.gravity = model.gravity(state);
    +
    print_data.mutex.unlock();
    +
    }
    +
    +
    // Send torque command.
    +
    return tau_d_rate_limited;
    +
    };
    +
    +
    // Start real-time control loop.
    +
    robot.control(impedance_control_callback, cartesian_pose_callback);
    +
    +
    } catch (const franka::Exception& ex) {
    +
    running = false;
    +
    std::cerr << ex.what() << std::endl;
    +
    }
    +
    +
    if (print_thread.joinable()) {
    +
    print_thread.join();
    +
    }
    +
    return 0;
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Stores values for Cartesian pose motion generation.
    Definition: control_types.h:127
    +
    std::array< double, 16 > O_T_EE
    Homogeneous transformation , column major, that transforms from the end effector frame to base frame...
    Definition: control_types.h:178
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Calculates poses of joints and dynamic properties of the robot.
    Definition: model.h:51
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains the franka::Duration type.
    +
    std::ostream & operator<<(std::ostream &ostream, const Errors &errors)
    Streams the errors as JSON array.
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains model library types.
    +
    Contains functions for limiting the rate of torques, Cartesian pose, Cartesian velocity,...
    +
    std::array< double, 7 > limitRate(const std::array< double, 7 > &max_derivatives, const std::array< double, 7 > &commanded_values, const std::array< double, 7 > &last_commanded_values)
    Limits the rate of an input vector of per-joint commands considering the maximum allowed time derivat...
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/joint_point_to_point_motion_8cpp-example.html b/0.13.6/joint_point_to_point_motion_8cpp-example.html new file mode 100644 index 00000000..95028d9b --- /dev/null +++ b/0.13.6/joint_point_to_point_motion_8cpp-example.html @@ -0,0 +1,145 @@ + + + + + + + +libfranka: joint_point_to_point_motion.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    joint_point_to_point_motion.cpp
    +
    +
    +

    An example that moves the robot to a target position by commanding joint positions.

    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <iostream>
    +
    + +
    #include <franka/robot.h>
    +
    + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 10) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname> "
    +
    << "<joint0> <joint1> <joint2> <joint3> <joint4> <joint5> <joint6> "
    +
    << "<speed-factor>" << std::endl
    +
    << "joint0 to joint6 are joint angles in [rad]." << std::endl
    +
    << "speed-factor must be between zero and one." << std::endl;
    +
    return -1;
    +
    }
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    std::array<double, 7> q_goal;
    +
    for (size_t i = 0; i < 7; i++) {
    +
    q_goal[i] = std::stod(argv[i + 2]);
    +
    }
    +
    double speed_factor = std::stod(argv[9]);
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    + +
    {{20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0}}, {{20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0}},
    +
    {{10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0}}, {{10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0}},
    +
    {{20.0, 20.0, 20.0, 20.0, 20.0, 20.0}}, {{20.0, 20.0, 20.0, 20.0, 20.0, 20.0}},
    +
    {{10.0, 10.0, 10.0, 10.0, 10.0, 10.0}}, {{10.0, 10.0, 10.0, 10.0, 10.0, 10.0}});
    +
    +
    MotionGenerator motion_generator(speed_factor, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Motion finished" << std::endl;
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    Contains the franka::Robot type.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    + + + + diff --git a/0.13.6/jquery.js b/0.13.6/jquery.js new file mode 100644 index 00000000..103c32d7 --- /dev/null +++ b/0.13.6/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/0.13.6/log_8h.html b/0.13.6/log_8h.html new file mode 100644 index 00000000..1d4f36a9 --- /dev/null +++ b/0.13.6/log_8h.html @@ -0,0 +1,182 @@ + + + + + + + +libfranka: include/franka/log.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    log.h File Reference
    +
    +
    + +

    Contains helper types for logging sent commands and received robot states. +More...

    +
    #include <vector>
    +#include <franka/control_types.h>
    +#include <franka/robot_state.h>
    +
    +Include dependency graph for log.h:
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Classes

    struct  franka::RobotCommand
     Command sent to the robot. More...
     
    struct  franka::Record
     One row of the log contains a robot command of timestamp n and a corresponding robot state of timestamp n+1. More...
     
    + + + + +

    +Functions

    std::string franka::logToCSV (const std::vector< Record > &log)
     Writes the log to a string in CSV format. More...
     
    +

    Detailed Description

    +

    Contains helper types for logging sent commands and received robot states.

    +

    Function Documentation

    + +

    ◆ logToCSV()

    + +
    +
    + + + + + + + + +
    std::string franka::logToCSV (const std::vector< Record > & log)
    +
    + +

    Writes the log to a string in CSV format.

    +

    If the string is not empty, the first row contains the header with names of columns. The following lines contain rows of values separated by commas.

    +

    If the log is empty, the function returns an empty string.

    +
    Parameters
    + + +
    [in]logLog provided by the ControlException.
    +
    +
    +
    Returns
    a string in CSV format, or empty string.
    +
    Examples
    motion_with_control.cpp, and motion_with_control_external_control_loop.cpp.
    +
    + +
    +
    +
    + + + + diff --git a/0.13.6/log_8h__dep__incl.map b/0.13.6/log_8h__dep__incl.map new file mode 100644 index 00000000..7a70bf28 --- /dev/null +++ b/0.13.6/log_8h__dep__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/0.13.6/log_8h__dep__incl.md5 b/0.13.6/log_8h__dep__incl.md5 new file mode 100644 index 00000000..a4a6f120 --- /dev/null +++ b/0.13.6/log_8h__dep__incl.md5 @@ -0,0 +1 @@ +125eef755c6361efeae12c631c7f666d \ No newline at end of file diff --git a/0.13.6/log_8h__dep__incl.png b/0.13.6/log_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea0462f0208bc803067a2cefaaff5a08c03bfdc GIT binary patch literal 18098 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 + + + + + + + + + + + + + + diff --git a/0.13.6/log_8h__incl.md5 b/0.13.6/log_8h__incl.md5 new file mode 100644 index 00000000..81e61f17 --- /dev/null +++ b/0.13.6/log_8h__incl.md5 @@ -0,0 +1 @@ +2625f728cdb4360d8d279f47bbc5ed43 \ No newline at end of file diff --git a/0.13.6/log_8h__incl.png b/0.13.6/log_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6532e0441ab0b89bb97ca35a407d77ef5faf6a35 GIT binary patch literal 28286 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 literal 0 HcmV?d00001 diff --git a/0.13.6/log_8h_source.html b/0.13.6/log_8h_source.html new file mode 100644 index 00000000..35ea1be8 --- /dev/null +++ b/0.13.6/log_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +libfranka: include/franka/log.h Source File + + + + + + + + + + + +

    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    log.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <vector>
    +
    6 
    +
    7 #include <franka/control_types.h>
    +
    8 #include <franka/robot_state.h>
    +
    9 
    +
    15 namespace franka {
    +
    16 
    +
    20 struct RobotCommand {
    +
    24  JointPositions joint_positions{0, 0, 0, 0, 0, 0, 0};
    +
    28  JointVelocities joint_velocities{0, 0, 0, 0, 0, 0, 0};
    +
    32  CartesianPose cartesian_pose{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1};
    + +
    40  Torques torques{0, 0, 0, 0, 0, 0, 0};
    +
    41 };
    +
    42 
    +
    48 struct Record {
    + + +
    57 };
    +
    58 
    +
    69 std::string logToCSV(const std::vector<Record>& log);
    +
    70 } // namespace franka
    +
    Stores values for Cartesian pose motion generation.
    Definition: control_types.h:127
    +
    Stores values for Cartesian velocity motion generation.
    Definition: control_types.h:211
    +
    Stores values for joint position motion generation.
    Definition: control_types.h:72
    +
    Stores values for joint velocity motion generation.
    Definition: control_types.h:99
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Contains helper types for returning motion generation and joint-level torque commands.
    +
    std::string logToCSV(const std::vector< Record > &log)
    Writes the log to a string in CSV format.
    +
    Contains the franka::RobotState types.
    +
    One row of the log contains a robot command of timestamp n and a corresponding robot state of timesta...
    Definition: log.h:48
    +
    RobotState state
    Robot state of timestamp n+1.
    Definition: log.h:52
    +
    RobotCommand command
    Robot command of timestamp n, after rate limiting (if activated).
    Definition: log.h:56
    +
    Command sent to the robot.
    Definition: log.h:20
    +
    JointVelocities joint_velocities
    sent to the robot.
    Definition: log.h:28
    +
    CartesianVelocities cartesian_velocities
    sent to the robot.
    Definition: log.h:36
    +
    JointPositions joint_positions
    sent to the robot.
    Definition: log.h:24
    +
    Torques torques
    sent to the robot.
    Definition: log.h:40
    +
    CartesianPose cartesian_pose
    sent to the robot.
    Definition: log.h:32
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/lowpass__filter_8h.html b/0.13.6/lowpass__filter_8h.html new file mode 100644 index 00000000..90e0ff9f --- /dev/null +++ b/0.13.6/lowpass__filter_8h.html @@ -0,0 +1,268 @@ + + + + + + + +libfranka: include/franka/lowpass_filter.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    lowpass_filter.h File Reference
    +
    +
    + +

    Contains functions for filtering signals with a low-pass filter. +More...

    +
    #include <array>
    +#include <cmath>
    +
    +Include dependency graph for lowpass_filter.h:
    +
    +
    + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions

    double franka::lowpassFilter (double sample_time, double y, double y_last, double cutoff_frequency)
     Applies a first-order low-pass filter. More...
     
    std::array< double, 16 > franka::cartesianLowpassFilter (double sample_time, std::array< double, 16 > y, std::array< double, 16 > y_last, double cutoff_frequency)
     Applies a first-order low-pass filter to the translation and spherical linear interpolation to the rotation of a transformation matrix which represents a Cartesian Motion. More...
     
    + + + + + + + +

    +Variables

    +constexpr double franka::kMaxCutoffFrequency = 1000.0
     Maximum cutoff frequency.
     
    +constexpr double franka::kDefaultCutoffFrequency = 100.0
     Default cutoff frequency.
     
    +

    Detailed Description

    +

    Contains functions for filtering signals with a low-pass filter.

    +

    Function Documentation

    + +

    ◆ cartesianLowpassFilter()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 16> franka::cartesianLowpassFilter (double sample_time,
    std::array< double, 16 > y,
    std::array< double, 16 > y_last,
    double cutoff_frequency 
    )
    +
    + +

    Applies a first-order low-pass filter to the translation and spherical linear interpolation to the rotation of a transformation matrix which represents a Cartesian Motion.

    +
    Parameters
    + + + + + +
    [in]sample_timeSample time constant
    [in]yCurrent Cartesian transformation matrix to be filtered
    [in]y_lastCartesian transformation matrix from the previous time step
    [in]cutoff_frequencyCutoff frequency of the low-pass filter
    +
    +
    +
    Exceptions
    + + + + + +
    std::invalid_argumentif elements of y is infinite or NaN.
    std::invalid_argumentif elements of y_last is infinite or NaN.
    std::invalid_argumentif cutoff_frequency is zero, negative, infinite or NaN.
    std::invalid_argumentif sample_time is negative, infinite or NaN.
    +
    +
    +
    Returns
    Filtered Cartesian transformation matrix.
    + +
    +
    + +

    ◆ lowpassFilter()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    double franka::lowpassFilter (double sample_time,
    double y,
    double y_last,
    double cutoff_frequency 
    )
    +
    + +

    Applies a first-order low-pass filter.

    +
    Parameters
    + + + + + +
    [in]sample_timeSample time constant
    [in]yCurrent value of the signal to be filtered
    [in]y_lastValue of the signal to be filtered in the previous time step
    [in]cutoff_frequencyCutoff frequency of the low-pass filter
    +
    +
    +
    Exceptions
    + + + + + +
    std::invalid_argumentif y is infinite or NaN.
    std::invalid_argumentif y_last is infinite or NaN.
    std::invalid_argumentif cutoff_frequency is zero, negative, infinite or NaN.
    std::invalid_argumentif sample_time is negative, infinite or NaN.
    +
    +
    +
    Returns
    Filtered value.
    + +
    +
    +
    + + + + diff --git a/0.13.6/lowpass__filter_8h__dep__incl.map b/0.13.6/lowpass__filter_8h__dep__incl.map new file mode 100644 index 00000000..38e577c9 --- /dev/null +++ b/0.13.6/lowpass__filter_8h__dep__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/0.13.6/lowpass__filter_8h__dep__incl.md5 b/0.13.6/lowpass__filter_8h__dep__incl.md5 new file mode 100644 index 00000000..e155d1ef --- /dev/null +++ b/0.13.6/lowpass__filter_8h__dep__incl.md5 @@ -0,0 +1 @@ +72bfa0337d03fb215f3e592c6abfcede \ No newline at end of file diff --git a/0.13.6/lowpass__filter_8h__dep__incl.png b/0.13.6/lowpass__filter_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..bafe15d590c51eb5e6452c14bbb8f1e17b7c5536 GIT binary patch literal 21776 zcmdqJ1zVL{+b%q%rMqN`gh)vUA|W6!X;6_AkW{+6k!}zbQBe>Or9-+K6p<1T>5z~{ zkdA%bYd!DY@9}+m?;o&v*0Gik&bY@ISDxp2ji|e~6-fvg2~j8%iLw&r9twrki9($d zB*25;JQ*UZg#X}~sVZVnXUPBF)qi}3LR~^BV`Q|v-mFe|>S=l&;cZHs|9sI#{slJv zZED=TTlNJ+Z!XPN%x0Iy+Z2rI=Ux44zhWCWJRCin&sv3Au`8g;oo>=L%zk_++YX0C ztWi3&?p^HTCYG5~L*1gMZ`>DCn&)PGQF-N{8!|=a< zZ=8^M2QibBUsd;5qt_Nzz3-lai;K&virz0@nk%OQVuG;o%?92pKkCt-ymRNy8&T&B z!`;7y<_ehiTwXF4DYVZES#&qOlL-;9>bq2uSy#Hf*vrPsiWLwLARr(>EhU4sHy{}b&MwmWzhxeJCg?Of@rlwo;jEu9e zt^21(8x$8W#*4czn=JLE<5mP7{JC6LU+=s=F82Q8$JU-6(loz6=a+{I@(dSS!ibi} ztA(V_j$K1TL&3(du?0O=_0&>tGNh)aB7fyDUKJ$axo$Gk5+>?Aiz6#5dnr-rZl%Km zVkS{?^UnA%46BAU@t?0%)MSoScLIZQC3iXVP?YF4^F)yNE|qok%53j1r(n;Q2)J>^AJY-BdC z9&%3Zt0RKQvlN$<1f``h>l7KqogD4Su_l`QT^>?WR}V{0rnC7`7}t1qdO^3)P$rr0 zfr|f|Bp%(C!9nU;k2P5Z1w5TX!}}%&i23Li8O=1Fo$#xvsTJFgiSQaXFkQIephfFM z$7k3SNx{}vYI!H$ppw+3`naHoUCQMb0lYVg_Nx9Z?xc)6X;LUum~7C|-o{*BQA2Q6 z*5%2-GykNHOT964{F?`hX_@y+Es*1Xe~+u-WOs~m?`?9m0FO@oU#Tc5opx96`yKxNSX^BExS>Jn!=1GFmoMot3JO@L zdzzXMKs1&ZCXT~NE`);*$Z%iX@8?NU=`XX^BxaUkTI@~J1rxjJvqMm7@h$k-GpdDe zDIfnd#C&DCa3RL_N8!w~J5n;R4rD8SmRioG1)es8@0vb*h+|-25E>T7!p4T3a8a^l zsXvo~5n?KAk!EUEuaMWK$;jB4oUt+U#fulSH9wN}yp_;3(|M(aclGMkrInRTg*ZmU zf#G?LX0Neke42e_&YJs4O&*;H;6+(Xtj694O9@jK8>S zi2odKbutSG3VPdeD=8oG@wxi>-F$eBq5Ipnq`mw1@1OIMG%C0K5grnP-O|!xVrLf% zJC?5b@%H|Fvhn7hdDZbcZz^zb;IX=!r7>0Ex^`-``eS3d@KiA#69G5S11s1}_ToV#XeE$4B zFJ_x?w$5Ccos#LM7kNiVN7(uq5<^DIZKK5g+zA6uZ2Msx7+2JANVqmu8IhWLad&Mj zqVe=FukGa54fka&!y32qM09+i;CZpJv09^^&ab|8cV9~Wn)ICmb%}!muW4lq3k9Jq zU%#ACK|#UE%?(qaU%ol%yU{!~#SC9*)%Q*&$bW(Pd)?SXjk_in7{G)6a$8-3;K$Fd z+%fBUBR0|)DDCFv7X3g0qec5hM+Vl`-A(+U#;y7Fb=%FQem01MY@D0~&CShWg;Vd9 zshA{vs3BH+9qw?6IE-f-T3B00K@u{D&sS1Wk+rkq4LDk>#Oj2gd7-YZjvS4S%g^UM zhH!=K>Zj6Da8Bo~+4g&Pet+)j3cf@D`QmX!g^0sM4X(6wLB zFR*ZN<+S-HKmQ4_&VID4Iq>YrcwYF$*-_(}+{fE*@78+QqaMF~i@tX4n$z*V^E@>n z?8oZQ(!~NUnx+-8PFS!UL?%Cf|HLOx9$BS6)Jyq3YzIF(Y#a8{Sb$$nw^*(=FVi|-8A9#+IS#SRN6P%aF!+Z6r;KR@4 zkLd7F`+vUjZ=LK-nRmYw>~f$1V=ZzyczRj2*#F3bSHFxPDk=)1YV%7$^LGUWae2B$ z8Mohx<9@i5-2!Ix{eyZdVg`eQS|g*Q8J4}NkCw%F6P1dcW@PO~iqE+&bT^YpAKzVV zC^Bv|GF#wpJf@UBI~L-&lS&+g2_{90n=Ev{>Y5)N9W5>`ZH3qbJBN(|TL^7z3`}n? ziHRYCkeD>V4Uy7d{?*~^r_r&oImp9$bzXw0lD>Ghwzhr;^T~bRzw>x7P-xs&hMJ{~ zR0i|<(Z*!Glc#5Aj^@X<_^a8X96XN7nyKArkc*+cij+8rnSfD=dag4;31ez$8F5GI0LOi07w)0}o zTcmIquXe=;hsLBy`4g^6K+yw{R}q83u^Gw@t9D&%>F+PWVwR*xJTyU;b{;vff0HB= zybyoW=XE<+HqnE#82*M^kkODFaC&k?H_{6>wK;WmO2@&$F;ZcF;RU~OeB6Z_vaE?H zR6LVdFl6Zr`54+KDpRM}GbQGon?t(B%^e+hP!H(U`&{4Mm?|1ijm#FGDlAG)=*wOzV)?OydHthO&#J5QF#9OdNhF2B9-Ej=?cghej= z5*OF`-Zbf={0KP2tgUWAip1BEadEhtHC6tahK5XFJ2)r-At4?QX-IipY3^=rC=`V0 zd75XDN(D$UoSQLubKBOzffNio1fQ&BWTfizny6%OWcI3P0sK1}zL)mmO)pfnA?fsA zh8c(%&5+vh(d=&=Hf}Giv6dGC;Af^*(C!Dy?OH{;e+8KV`;zLpO#5)ptSD_ zhVooPOyI_iMPW)-R+1*f5#Xm9N-wZaig_ffz|Zp-cwOS_ssKr&RRRo#F#+sQBkX>O zS=b1La93-@H&g2a^6NGaqtWu_<2CL?w{PDz>x9}P6yBCp>+^THd1y#`m7ei3n;cP* z(QldbV%fLiTxOm9^zh21fvlJj!N_dFnHyl;IYAo@N7yUFZyzUVs~gtrgpD{yMheq3 zvLr-i=ThOEJ3UQDJ%0HT6B?ly1xrwJ{pWyY`HTZ%;kPIV*~Iu{MzmrS6p0JS(`&V( zZ+bC|j$T9E@~B|)-3yoH(~W!+9jPSr&l_8)3D4n^8Y*~H7=w8;xf)EHo5}7XP01$-$z1o!=|%rE9O$qEC)mx&L|8fB$Z6 ziW$n5`{`d@T&P7|eu)o!C*n_qNMwhchqjEh^?lKRV}+9KXjhkCP|90eMxN9U30Ar9 zG8K#1Bx-*db$Cy`0q6bCqwE|SY=)Zs(BQ;@Y8_u$nIVZPIx?H_2|@7Pv z+A14xi&T@f_YYTQ_NPN$;I7}eaU&=`UguE<8|#2pz_IXU*4*Iy0$W<2z_;QGki0!E ze`I0Jl|qakX%PRno!o!#ApakKLDppt6r6+a-a3s$a0lcT1&alAiFtN?;e*NQFwxtB{>LEj=8W zE&9gwe>ovIr3N2jfAE8NX`;dkba;?Rzt;JKi?dUnht#R_VXd^ZRM4~qhn|5U9fCd5 zF8liWu8voiw(J_y#Pjc(vu7*^fw5|fZRq#uT#g_`w`8d%BUKUfLy_o+$VinYX#aEH zJb6Oy<>M2Lo_h;r0IR4dJ+x5rP~n)EnXw|>@FUug%uKclhY9YklBmc(|JZR4oc)vM z&qJY{U=b5z5EmCWQ{>h-?Z#k+7@+CTb(wslW9sOb08ud$nkoSi5e4W9{;8AxJbzBz z{Z@ibL_{R}eklhOJK;M!JF~?!+r}@rOKjaTNC^eBiuk+f(P?$q9p(BkdtH9rV%xH#_1keB|APe@A>x=AYY~ zX^o7H4Ta7D_E!7D9Ap4FU0u4p^$9r>lWBv%WoCHG`ec0!B%KQh%+d;w1_kX#1URV) z=f#79f?#zDckhy0^t_3JE>VUY2TF96>Yf)@4K}~sm_l|H`XyO-1&+)u4-XN@zzOza z6{hg{+zB$NRaK&*Vq(n$1C-E|LVbMKddmA%OxF#UUrNxD%q1uL87L#MP&2>3f9#sSawnAJGqdMk=Uu9y<>C#Eh~O#x zy|O~Y#l;0VwWa%&P#A0p&F4Y*Hq)V8?e_TQ8ut|(Pft&1@Ewu58Rx=<3y|0Iw2lIV zwo?uOx!^~Uv$C-z?LBA=c!0We)BDf+rmbyTz>$ib=M<7EJe{1#{rvo*zdabB&(19? zQe@55+5H0rNDi)$kkEXukB<-PaWcR0>`ZIKlP?dg#;dj@nAya|8S(J&aO0B#8xs?u zQsUv^QDUcre?C9F_Wu3*X?QW}F`HuiJBT*|*RFBz>iu2$!S6KI+e?P@Yw77M5Cs-` z-o`8~En%%tU&r&Vu=|PS@9*FJMyyoph>zFx)K5c0qi8|x0&K62x3BhdVLT{`|1rsOsOV(*lINhP<1Q%r_)+)W%jkpz-BZ9M;=ntx_9VSF zZymUX;E`NPQrTMlDFoSNTAGfI4psE=%C8ecrYKCt@d2F1=H_M-ov~lg$cP?TWd4I% zS}`#(ZpjZfjf{+-OOS(-J@Mts>^}`eU*AX@Lwob&*|U(&1ZJL%TF;GCm;0%8fj577 zZ%&`fFDTF+HR7HxVq?u^+_%PHYzhKS4iR@(WcCjot8`?8xC7V}nDX89m9eogqzG45 zR`%Liq5#Yz-*C9f+1zbqm;~YuRO(nzygi1hnp$*tx;aG9c@~3|#DL#bx&5X@%2{X? zfBpJ34d4Ur!g}s31g^WB)X?F}#4%ncr=$#qcK(GAZ&_JcvF#5&1l>Y_OE~(dBc02x zu(JrR1lvzlQc?m~K?~$!0h1<_o}M1(kE6dojGYg6tlxk5FbmzNqMMsAeB+0KU1<0T z$jJEbmihYl%!ZIjasCx0r>G}_;QxNtV}1NQKoL7DKgi$-WcBpuefHKLEY(c;@1c?2 z32a7GLc)B1a|ZXt(cvNM)vF{B*uzUpg*pqGpjDQ$OeNlJ}Z`$!qD zA?96*el32t6A}xJvg#@dgLyp*@Q;}y=XLjPDE$(>7XB|#^M4g6O6m_SEdJ^9=8%%m zNAc%Rmxq>Ld5%S4H}Q??xhHg0s3rvk%x(ePq=b!Hm9;-uE0-)s3!gHI^!)&% z4R%Tf92WenlOdMm#->usS{}{^zqgPtA_#!8F1uxIqE>g6puNUhh$2Pg#9&$~ z3g?N+Wv>T6RNvhtxXU?tTIJ@Jk4=`)@#G8lE;DLohQIicD$Z!RFBuhwa6z9r&HPNO zu$S*yOj+5$8QVK!XOst!>w}b+U*-wjmWnBzoxfy_s01?z z9h&?ekV$f}@auYBAnLcz=;l`DG}pmRPrszKFG#d~?9Iq=XEM0BSnL=HDsenB`}6DKlP_9FO3#(p^(wjj3waXW~r3bPUmwk2j|)= zYU#6^v_cj;Iqx4fF$adST~SQ$E_O7w%0kx)==6-mMOWe~z zYgw!dgE2FOjsOSJ9JYwahKy?7W`aBv;f&YIip@KziP57C_e$5s=yG|-=Us4br^Vkg zGxN!^;Ec`7W5dE;%6RAsi-l&GfUODsi!BmX@~IYRfgr^>#}$It`wK%9k1h^ zJEyz3P-he-`?&EeOQrYT^E&U(R2*(R0%Z4D6Pt$0v0q;o>I}v`ah_?p$0RAvEa@|1 zcC-udp!@a1y)%l*NlS9(H173~OTZ5~&|tLep%F7(>@is#ql4CkE1cLG|4wfzE+6go zc5SHlwuf9g`Ma#ka-|jvBlW)GlfJ!opLb*97s`8i4I0@00(X~{YkV9Qmcv;c{mHx& z*YET|ijx}a{k`*r#%GKlJ{&q0TuJ63r`;uo#!u91^O{jZx5Cjb$@IeTIl1t%ki^77 zg5Ob*BVBQk!sB_mVxk_acpmG-9Y0Gw``$+}bR=wq_h(AT88>zqtXMvpZ<;(MV!zUe zsdP{;abJ1ZKl-7)jXlG>vxtR&u+Do|PgOO#SK70A=XX8ki_V+AJ|(r+WemH!Bw!!U zDSz~Kbv3^dqS)LcYwyqe!IGo`AyBBQMm!@hP{PXgD>ut^3JMewpL0^B)H{0KHjmW& zy?O7R5%Tx3=rLT_%NJE^H>Pk{#Ki?GFNAo7{XF~|X!h;3G~rwPlN$NgmrswkH7TAZ zt^WT05F=mzI5Sf{r$SZPJIcJ%;S%Q(Xn7C$>etyE`o>M_cU`G7|oW zLc;d?m6V#=P})7j!F?cSGOcY`Lw(-Wm5P{gkd}|nzQ4qrtz-_GSEQF-=D&WODuVPu z^TIbv;0z-~?3Yc!#p%V%>PJtNPuC|tI=TGe_CVX)Gc0r;ponO9ir#C@R{QR8VPO@T zoSlA+j8(f;?^7<|W8SMjx5-c@BgMNfg>xkI z%ZjPRe%2b4E)WbCNW?#tN?#eu3ky8GZzPtU3$3T<{!v6r?*{AaoF+sc(i=Avt7<%M zP1JOlb+WPk?SKwuFa})0IB+5yoCJ~^9m$1;2(Sp#?w5RF9`bi}V`$gfVLNcwYyBl? zp^yrXin@s6WZw8;OcwF#l}45&b&4#@C1GJo#Qxlt2nW8GPEYrd^YQJ{OO2l^w_%7x zCq@pEL0fZ=Y-=lLbGw#+In6aPMpXf9Z07e*DrUdFdpp(5N$mqJ7Xwb*vGB+$=pzvi+TmJ<*z)EJo`ePPIHNLa}-5h?o>zgGEIpSyk)V zvcL5}qsZuLNv5_qZD+2s@|U&}^B)w{ZX_RXPlPuFkofJJ+IrMoV%6Taj(Q6Pwfg=0 zVgv+L!EqPPItmQ#^nFm5%r}z6DlCle8ycdOxTx*i(NP12g1S*j>UAj05EN7-VWjq^ ziUB;2UO1b?@Bz9%Jw(0yAP<`&C*Be=QWu^M%Pa9c+8ftoh?z zxicvXpCaI4M+Zi+fUE6j;%pee$~sFiD?$yMU8XMqX!+&W3 zq@)&~ynY>Zda^dXawO=pQ%obls8QnPUOqExMn*^H%YOM05*v<>`Alcqz6l8Sx8gIG zg{BzbyKPK9NApJt6N7Pb>w43Ttc^3ovMIJ`)K;+EyeU4HnNR~%t=6g+CdMm$R1y~{l1LVrsQPP> zuu$RH_;{jL4!Q;bH!EMY*Mrzs_4Ojr>T|`Sg|Gj3)`7!aOO;fWOA+}yy}TTmE;lw; zzc;cKtP}^QpE2;Y=f&Jo|H??U5WQvZqzr_U>6!lX=A9lvQBe&eTf($4bGdi;bf;Uw ze8De6*%S-egoG|Us1*r`%@}}ljes+)s&>C+XGaNPLlI&%azMa?5;Kk9{a38c zq}29B=nCAMUQb|e&zd0(eeU+d1w&Cw873;wzaNDz7zITAn=2d}7Iu-@RD-}xzkRiz zTW0%C_#-2O6cQIT+}p%DF*}WuZOHNd`E^y;>h1;e4!4e_{o9VlZ)KmW7l3j4*aU&@pJZ4Y#R%f$*OXX_YJwB3m3nz<|NbTcxXQpe)gP`k#C`bw-I8dqII1@O(4NqvzaL7-P^0 zN@y^|0h}L2il7N08mZ(bhFY4KVSx16l|2m9Z)S>_E^V_fwX*IK5Rk-SOs21|PBDl7 z`b8`%DjXUUBNCx6d!8QIC*fNt86KS>Kxho%kp!xAgY>52*jh?7JM-r?1_Kx+n;}f|O@9q2S z?C(K`LA$xL8nr%=@`sg)q;vM=q_&C*2gKj_ckgUP-Iqmn{@PBrk{PtNw_gMrDWal6 zZ8Z{OW)1dekLi1BneRtk>68*1; zdVQ!95;Fv#&+&9x2qBc)GBEJTX>;*^fg_5Q|2G*Z{=6y&$Xt7zo_ik?ka6DWPrch|5j9!>WoDTxH} z*0jkBR}J)|(Qz0!UM+_IB*cJ#bg$!mF+2NjGqVG<5FhrhzScrJ^$2Qcvn2Cu{xGgY za_VBwgnS5IxuAubWh}#YT*&5TotfN^+Xb~hKtMtqt*y=NQD=;4>u9N^xHUH%n3<}Q zQu|~*9n{6%Z5*I z4k$m_Uu}XnrNCVgp=_M_pZAGPjy&j(5kb$LknEkZoNliZE{@z+d`Z@`IB?+rOq})XBLd z0?h5{(`!&5sQ=t*X~U2~kwpo6F=F&|khYg8W(jm^7$>LV5y9-I4=uW!{@Oes2*z<= zt_!X9W+Wytj(TBvdVGKoPgb2D2LNx+?J_f?bpG|(eRaZ@;)X+8)4%{VHeOlt=R~xL zrR7zRo2=Rg%I&xBzQx7IXJco_tkP>KySdL7mnbVlkd{~t{0hqsD`{+$&dA8XNJvpw zU*ySqjqKiBC*AB|PCHnA=(8)18ODvweR)4T_h%w9z4kX>jR;1mz}d1Q5dQJ;aa+91 z5b@cdGKMDSzL2Z1?JzS`(28DO)W^rNNM(Gy*(wNn8Zu<#uf0bv4+>IBaQ7Sh3vzIG zuh{a0&vYdfAytB%{R+}n^fjCiA~^!iL`n54r36PJC5YdELI`{I<^58BD=l;+tdJ5R zdj>%Orsdmd&ye@+|6g4Vq(=<|6k*L!$;!)%gY!yvoYGOc-P5!+S7gwtp4Ncw=NfNKEV4SZ()MXM4L0YvT0J(oYXe65qa!J5R;Y^!YPE zfk7poYy4AC??8-rOH&cZ%E~Q4Mdc4Z`M7AKlYry|3)bJ7sn{!M8hk_CO)qNxE7>&k zIA)#iZ9*;Mht%M0GrxbI2O%IL^^=ProdGN#;7h3Cqeh%D>B_y90YJin&?$ICQ23sc zlfX5hjYzayCPdI8*)c|tT~xO07DUCy1qqsW_kTxqNAVp8M9&H#z zp%aBae@{wAzfe_k-M)lDEXywS8zDYiK5DG<;ON>U{V%2*PWpiag?0Ye@JaA9m*T>qy>s;gs_MNPY)uR+vpjKWqZO-)Sz80Y#k z6>*2p6BD-~l1q?c34AF_k4>Y|ii_8)r0tbdk>4x<45jR0xV?Ch*Sz_C~Cg&Vi;7X$c7 z3P5`YVCNJJ4Cg_M^G4h~SFO|8(=!6Jd0+?;AiuPms3~vy144{B_{Bc#`quuIxv=9T z6X4__vgvmVfkq+##t8=(*A&DpFGcJbab%i+{C~b;_wy4jz?39UpFS0^8RUdl0J-we z($f6w^aQaKkB!NKKlHz%Vq!u-{01T&L>Y;Vjh(dnHksj8)C%48N#EU71Uv=Q_!5C^ z`gg95ScVW-3qq@O9Ra}>4SJw-z+|}-1i?0v&@tvD2-W4bIzn-HcnB&UJdhG@{rW<6 zGvJsW2%62UEt#(`uA17|M1%Z=o2Y&OQDF9@O2&{}5NQH66@mySCnvjj1LRD~B#Lr$ zbQ~EOK^QCB;rwP$SvqeosG|S`W0jSY+kyl~>zfazln!dGCtnD6tDgg9@uLupXf_`| zMjaIh2l$&J!he zYgOn|Ewvn$4r~q7tql1HV0HFnhg%N86Jf8xMeqi!810ECT zu6IR639p1KU)W4JTJSlX{Gs1ae#T)6n5fs^Wg384_@SCI1^67Lb-~;x&Ym#u!$7>P za&KmhWPti^;f9!c>sGdC(pH0|bAB_Uh#f(-VLZq}^U4}hQ;mXxuSrQ69h8=rUk7t0 z8sD34K0CZE0+b|x=Rh%rTq3|db#-=zt?-eZ>}^j}V(&^rv^QjAWPV%ibcpN8rZ<5g zFY(#4%mMSRx%qiq1nmcG5+WP-2B>nM4)a^rWeq%?a$pYFXK{0Pr=X?|h3z*3g0aiY zI7v{)^7YPF_P~^u|H53gI^5meMNH=2 zJxUjMD?F*$T%FEZt*#vWq5Po?ga{zYeah_C}P#bA4O}RBU_?YC^#< zS$KGefX_knOF19i5akhQ5kdNst&xcbBug>)EXe3yyr4z60MO=TdTvZcCL{ot3TI$_ z^0Z?N#B?AOZl~RajhgFB=)5C+5(;+6^HJ;9T4R-2jxZ(1`&+m#9H$!4AeHTWd=4Ah7(|C^4yrDwW}1PhHLR3&Sq%$n+O=XVIuFS4qtc_aRfukI)Dw#V&(#L4N`XNslY zzqx9)sVzV{ChC7EY-eZJ2a+eOuhAFGDRoa@1b+GQ#b)bGu{w*kwx9jeY#hqCyu3Up zI=MY!RRjZ1{Y+u!%{n=0+`IF+QNcw;j$vz4KYr+Pu63$HjtEsx5#e&Iv>(&atFU|3 zSL^B6{Q0vIsDf!gl>Nal_01bzU^o@6MvBu-Y;3rJn9){JRpoIrh8<~%qPp_DGBYCs z2PJD}mT`$7coU+CDKOoD@FezS$P<~K9R9^Z!RA9ylL65+4MaaS&?p%L1x5k-VRmRB zi*KEtfx4-sEs81(sP^-y=Vw6<3<440&jR)S(jOs$}3C*$9H)4Xosr^}3H$*oOfzNH9_Bi6pU5 zFx~Tzg*5pBx2w5-S3jt9c-vQODko!XY`ipCUrSC)t7Ag^r%^=gqCC&KYw`O%%lpip z-hsED@A?~F-0+p*+}#^AqU~hOz1{8%`8Ny%bTQ~mtwF)k+`%l-LgU7U&0gsyZ-K9Q0Ie`Qf3K5VHo`Pp{f3(7$=VeL? z5hBz+9q4%mdtlh$ci(E@eH21zCUssa5{-|Gqk+MOFd%aC>Nai&A=ZW%6geX!H?Wt4 zkfbS*J>t^*KmdX}y7lpDHsmwm+_W7we*I#Hd4szkZ>6{>9l#5IX+SUP^v>m=Ha?HL z-Pw6AGdfp~DOs5B%I!Dg$j2B|I-G~?rvk+;Pg_SvLwVY)k#3fMA^eU9$`?)O^qwP2 z^YZpS51L|GKfk(51dh_W?ULbfn^}slVDItSqPfTy% zs5C#Jwodwr%8?Xb!e0F)fSf+%YC5ZF$J9`FN*`~A{MiLnKez-CUx?uN++!!8Sd(_O z4W0cqCMC~3-rV`EIsXR{rNmU#{a>^N)DM`7^viQc1ogmJrq|aCK}~Yi_|wBE5X7>< z!zUp*$YHFaU~?`(nmaj7++77yTUY5_kR_OR#8OBdtqOtP&77Vbfe#{D$72}A0C@wH zZ1dL&bE!Mq;}W=Y^_}y(s=$E|&8#dODl(xl1GdELkrq~8sIqOiXurK+JfL4@#bP&J zr9mDV+^emeFax#)P9+o6`ONtA2S;b7Rl7gwi=9)y+RB3WH$)Bs-5Md#+|@b0UmzRs1{1rd^Nb1q*XIt^Ee$ za_6prR1;DEBSR1W$V}yuerQ{#uG|Fr+Gk}q5z6-{$-0(-#IPha=rA_ymRv6A|`d9A%W-6zjyX!?)6;_?K^gw`_l9MABuUQT8en{ zh6!pQJ?|-~il2Y&GB?a))9#Q@ziZMGdLGdTfG?Fi`bs;$JO8(aTg@mjc@cJ@xT1pZ zySbCIb2AjR029d1%MXA807cmF-<iU9@@-EEen$rf}mwU8VV>3 z0YUIJwX)J%vMm))P*jdSV&eUMa{qp=O8h;pq18v+x^5hLn zQoQH7i_8C6Q+Ijf&mFXo?(#@Vh}>Ap{}3r?|0A$IheG5{pqAiJe~p8PQe;U$7RURb zh8nacknAXSSAS~GI%^>+J1bJw>A%OHJzu3>!UHwI5VmoO7EQ6}2SS*q5{1~v0K1?7 z4G1j8X?c(f)dUS<;+r?I&|0!WrUQiyJTUNSOX_ z0x0r%5oCVq#*|+O%;&^1URTMQd;UI~34?N4>_G$A0^-@MjQCeMKGU|_fk?lz>aevC z2%;xyiByH}loBZG4QD#Y~d3lw@jem7{v)rec1b-O~;4ZhC{I0QKnH2@7!m%VJB_CBr zw`4yGln03hB?$QCFppC@UHJB)jg_4g|X2z`B=^@wrjZ)tnHwyEKR2RwEDG$4r< ze@d|0DNl1rbYDuuZl5Ud#Qg$*yr6cO`87yf>v@MxLO(H_^h6qj*Qjf+h+V3&CTedq zcfZ;|fbD=+xZoFmrvY*8iUXxXue9S#Cv(E=Xt|Y@wK77D9kfS~^~%+H{FPVJt5Z#8 zg-Mhp1*(J7j>GxcDiwPn^pV}_x(NV zpqTZt@~owwrD7hdFIml0hP=Fvqqi3~XgQZJKmB1G0`?mtXkG*C3_d6uCE<_RF&J8d2wihD15{;u>dO`UbJHlEy3RVBO? z%p$icXgiE=HQZh2f=vmllLwwVYj0LwT&Iw@>GZ_(i4t`2bQ7=DRaL|HrX0^Pr+rC! zxjCVhx*7s<3)U+imq6yNU$l5xLhO3$;a_u&ycaT;IoQD(2xmK`I<;)B+b(01KY5nP zSs{Q2^8rEaG59*Si(Ni>ZJ{`++ocQNFp1%uvl{A(4uh^f5f6~mERIAam=(zs@G6#k z_$k9!R$u=b&=@e$K%4Y(ed6cnYxB=fcKZgN(p1N5aR;TOut}Zy-M!2K6C)XjGj(A& zp3N?%bpqNrT)piy_2DjOv6JbU%55DfsUtg+#O?S;*SHXtv)op4WHt^o^sNxqt^p$W zQs^T;po#%`w}uCvngN(?HCk4v^m|erIQ!}KNs7@?+}?{{AKufuKh&13@s=g&lK?=2 z1H#}L-GzqUu^O2HL2>H#BV#}K1xRGl$psuIBUnH9dZq>FZ{}CNctIT>PtspuFRAu& z^TO>nRb2P3fl=pjB8~;w?VLi~AucH?325$xS4XdtT-ARG5*|Dd6DY(wVdgq4%sTz9 zxUam1Ebh=Z{6Yq_8ZWM1Epc7c0)Z=OVIf+;`wuPPx5}$8!NIiR^_Vns-bx3OnRlLs z^F4TNvb~V-E-#OSjqSnyVb87B@C_)cc=h`3tiGH#+g&BQ^h~)wTLZm+7(fgJ#pj3j z^6$@u0}(6`cPcX}zPcDIzlK|%rqsZTurlv?6kFPZ}y#Y6~uc{i! z1n}Q)Q-+5^^93_}5^&9tmsQ_@VWj^Fh{9l9`Dg(hWec4#Q)p_c2=Jy9f?Nom6Jl^o zNq+A>z~9}e^+fCIXc!gkAR2Hv*niXdXZ~nwtJA;OEvFP2hk&`09L#KeTIS^!n6ggbrAQ@|8{L|aLC*Bri^lS>E zEq!g}V&GyHzLub63hmwH>Oa1fF|9 z1kwHKH-O~Vm2_@%S1RP}*peN15Oxpta@P|dVTFXr$d0&gARMFy@+|t_w=8r*wt0Ms zK(FB#Raf6@vZhZ)+wll+wK!~i3pVa$-0|^%j_pNjGetNYR!Gkrm%+ylw)aec!rEV} zjDk@hYKf=%wgYW27Sf|&W5W?nawHA>#($m(MD8dQ2>$$zw>*HyY~Nke6fk-Gb|g_) z7K|P^9wrd>2tXM72d_txSvEay{P`lId6VVA0%$>u?Zy_)!&$FNj~{^tUucDgCl27^H6|uTlfi6b zr}c4k2^*YY{{{rUY%tOPD$t7`P?~`n?i!#JqfY+#+O<|3xQ@<&Y9?-6hP{^*! zWV->-B|W4nxo@vw4>AmeEE~xDPZ;$oR#B!tsPhP#c>Vaevn-D!k>k-QZvr?BCVUxycM7WYRm?ZI@!C~qNDrhGPSZ_x0N4;aI9%AAm9H5=tXlXY z&lQqSwz>iq-$tWyG<`wmPI8Z{7M)%DL49R*y7{LPsL)JXPsu=_0=s_ZxUp`YQS)8$ zabWK)d1?i918zE|NwspLtJ#?4!+VbmNW^F56O$`6iYtb-RWmLWY&|OFvMxLSXlzvY z#pLY0adDFg`<-D0`&xCI_VN)UgSp(uOLB?HU8>&I%iTBk5@xwV1YEt)7RLdUPhV|I zEbjUC2=#tubG3lp{w8CJIay-L(e(;DuC^NYl93YgsJzznfQJG%BOA~B+3M=t^lEml zK2I8|7KgoKO=w>j!LHlxSsW>u6YyA%U8Ga;%2vGC57QJRUP~;}?Cf=MF?4x`XxO(z zMKjmcg-@TPT5XF?$c+522N_GQ&L|{Y3`&sF#}Ap2fhz;(ru;o8hFHLwy_rNh9aJ!z zAEi&Q0}sBQuiH`})G11xTYh3izVx@%d2?DdGWy!3>wg~{uNY?)l0q2#oLMa9A*Yi^ z5_oKWZg=C1aigJ@^2-+?_;wOj<0;eq72_Y!=A2hjpNN2&+R8jRSiv89yZDLNA)D3@ z>iCcdre^E+226w%YQ))Hg77bHw$yGEwhd%yCcfB}iobYbtQ!Hr`4`20xwXTu9yHHz z!Pi#lvjfLp^CySNay5b8-oJrkCJsEC(W~Sm`}R#)Njb{dT@T*l5cjPl#mcreZZWO5 zz1sB=2re&U6eD088L_D4o72vYjR^=gI~Trj2wy*8HuBq2){TIP)?XDPOtnG7!(&RS zFb}^O!ocibMymOd5m}Sq%8#>)tr60XAJm=(jgA`cCkDV5)weBpMcUffw3hZZM6CP> z1Y+jG=7@O^Y*BdjVpaqZwOG%6G>$%`yESO}e<-WB1ur2bet-ye$SU<%O-SrNp z;xVSCGmpFLVVoG$PFA-TF4}~XkwpxR21|J6K0p(e3%ybU!p_B=9yUbJv@%)SZTVFc z-Z%_q;`zk|*)>Gfw0<>+j2y?8{`UfuY;=k_lC?5C?EbxYWt60PVL$3hY7;O|Q!8_h z<5lP6HSX%_{>Yo#7_SZi-~bt)2f%6Fov8;SFV7+^9oV$+F+HMO9fJ|x`K#(W{=@iC z?#q=lzhD@YZLt%X10LMXU6gM|Il}&$yd44D47%l)E z&<>~`GAzyp^ZU>wySOXeo`|dF&&bRy2|Np^wNKsj+NHbm8Q1pc2K*8E3`Un^?J8ty ztgo*RCNk-TMMPRUJ3EJ1#D)YdGS-VLz}kH*Zt>+I6AwTJQ^2@Zy-@k~0R|Hx=iua1<+Nv6SQ zjQM1p_vYSSCxAVs!i@0YZsKUTfB|Bx_1@3E9+y51TU#E0Iii94$jr)W|2>X2AO7uj zdvAkp3Z{fO`S_ru5(ht^x^vUHcdi;HZ~;dja##c01DW@I^ytxR*VRJ3v3&bG1@^40 z%i(Tj*IvDk`9|8_)&^8dypJ@Xcf@!hF#e&SudmN8B&3Ojh1F(J8WpJo=w)}RqybzO zbLsEjzn>hZq{LtdBH0xe7xxR`^Mgk;G&ESZmRDBfF%RK>gin44E;)sTFP=W7jDm3} z)I9?O9#&SEa-yW8yONcaH83*53HRE(0Ol`x$VPh+q_2fwwotXf05Cs1aJfVy5CjYo z9{Iq8s_@drOuTG2OLSfA`2vSC-xP%X+LfGvfeYBBbS-UdWdK3zb_P^mFRn9{mY$&J zeSzwDnv!CB<4$MiG~DF@)FT^=OS~0t0JJzNE>3&H_DcyZuvJfAz8uLk$MXpo7O}0B zwz=^5rP_y!XgLgqPeZ`uo3oD23!gK1Kh~{oi_+)G$wa7Xm-*-q)lApPFJHclbt^Y7 zZ)gilK9{6z!XLo?A?LgyZl8Li9vJBE5HV{bu(q+GOkBSZ+1;%cA?CIH?Z#y>vHO~& z>+z0b73y%h4*^k>d|m6>9lz`O!qJi>G*ao_y{C1@f4;J^nw9>9>pn1lwzuUm!t;7O zp4RdA$MV-wheZ(2tb_;r!Gw>4lU)hJQ|C}Hg2>6k69UvSIPGCw_)ohIfPB`5mqj;V z{0D`Sk&(GejT@cO1g4;_uD<;BLuWj?6(-|nHa0e#u7)(5cs3RnlLIsx0vFj(%OlJg zEP6s}Vt%@iOllv+rV!f%$gZ!j=i*B=i~=9rzH_G&E9ZCr7R!~qN>buKJ2{+Qf{R(=#w8%6&ga=7+5PFG> z*ogpqMhJwxoQ4JkfTg}~h=A8-5_Lj>6?GgRY-?z0&bh7k2uh4i-ERN}-ud*{JK|fy z?T@W+`O(&}f#VDeS;F-L0M|}XCF_X4B?Vd)SmAa6?Pk{2 z)|}w+ZKK*X8Y=C627_3y8K5eE#XwzPo44Q!1w=3b*I*T2aD6^^L;?XjAA*sKVszxm zA}0+s^(8T}gVY4wKNyG);Ry+3M!sv;bt5ufNp$27L9#*}`@GGO=#hS2W&XCxyj!0u z8td7YP=Fs)Gt$6ha~nJYx@7SToX_?EjNOPenMtIm6&7 z%!`IX;%|akNMNH{fZu{jCk#>wVif!h`>b{%DL#N$lcahtFyP?eOeZQ{YzCsu=^v#7 z$YY{oViHqRN#!*L$@Vw=?uTWHt#_1zQWlVX*`gojKp-GWnh&nI`T1=??7sW4B4|Cp zUI&*wf$zJ!yQ3a2ELc2z_z=0D1168d`>inE-qj1`k4wM(&_0blvS6&E~w>$ zZhw>mG#YN^8S2ej=d;vz8T5YJ19bXe9@FHVL!q;OGoQ^`{dSLpM>!ohG!hG4Uw*UT zj1CSD$3ykleog%FfdlzQICY?lnn5R-!(1C=3BGE7}1%xVtN(TF?d@ntE+`_boCCaf z0R_8EQmJ$Su_rW??n17d#d0Q}nN$NamN$A^Bc~Yt7%jw>1Vc!|!Jo6M*Z%wv%8<$&EKhkxqI4}6{S#&VS!d!^~Y{ZZS z5joDpfTTEOA=RW&{mg(}c!itWj-^d!Cw?UsRCNtMPgaD~MReq5WswZeP)&noTV&)F zkN9f`{FEK7FkKcZO9<5~>3@+|Im7Ib(F^)Q;`j?b5yp z4zAD#6n%NMj-lIguy+le{t1yVcsDPp<+ahOJH+i7e{)S%c7-vj6t!n-+^Ik6S1+n& z3jy)r=D*SO+ySS#PK*cfpiY+%C1UXh27>{8X`dS0f>Ib=$`?ZCW3GX6f{>o%Nh&KB zf-yStq*U-%9Aq0qMvNT|q&Qd2w>}5_?KR?VP!DN!|t_C78=l zvo~WmolaVIfJ;_=;sw^wp(#z&Mr7edUzz}gt6|5;<%)}Wd8FyO)l7L|)s4TIH1=g0 zTD*OIUkPZ|%o~WWxfP*$1lSy^!7RkLCwLy}Qg(jXb-c&Do*vm@<80zT@vonkB3HX* ziwz2e0{23$q$s7l+!X+V>!s!hm2{G)&DS~cLj;LR&lk&QuoM+6)qCicJ!e;SsO~?j z<%Gs;1lbc*;fPp--;c>Wi#WYZ$rnY_UR#tHf758)P6C182xu!ZcA&hxeAn*X=TJ0@ z;qIShZ*ND~Q7HWYrBj;FK+_XBq-RGUtsv3iJ^EcWQZj6i*9N^tGmOXgySuY7-Mi3e zHrL~O6FgEmLJpgqp^0jS&SpKXLLD3(0pI%gVlCs@P9d3CBq>VV&Muc`Ox;NZA|bu+ zJmeR=Z<1yb69x@VdyrujoD%R;i9;&=k0v|@bJ=u+A-J9 z<9ocq!kn=+BZ>@3DQmaGFJG^OP^`|w0RStzr*Eg$x?T9g4g&}D7G&9V*7M!aghG~n zjN1aL*}Irtff;gdpV?qtwRWw1xsOxw0qxVPk|Lk*a2hmH7$0y<%7NXygA%aLIJ?a@ zaPx;aA~p_9gbGsOfQWFLz;Mq~Vt*lwKq#QiQ ze^bo_0L7?hOwjL-o4t)RWl2fcdZTlCSFHbu6VKC>x4KDGQUrl?sq_<=qyxob2Q{pSX0AGbqSo%L) Cx82nM literal 0 HcmV?d00001 diff --git a/0.13.6/lowpass__filter_8h__incl.map b/0.13.6/lowpass__filter_8h__incl.map new file mode 100644 index 00000000..85ee43b1 --- /dev/null +++ b/0.13.6/lowpass__filter_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/lowpass__filter_8h__incl.md5 b/0.13.6/lowpass__filter_8h__incl.md5 new file mode 100644 index 00000000..c54d3d97 --- /dev/null +++ b/0.13.6/lowpass__filter_8h__incl.md5 @@ -0,0 +1 @@ +81234cca7188375c2e4a16790f69f10e \ No newline at end of file diff --git a/0.13.6/lowpass__filter_8h__incl.png b/0.13.6/lowpass__filter_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5df81d0d504314f6b30bb7b13bfde7658bd31975 GIT binary patch literal 5987 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 literal 0 HcmV?d00001 diff --git a/0.13.6/lowpass__filter_8h_source.html b/0.13.6/lowpass__filter_8h_source.html new file mode 100644 index 00000000..38f19d55 --- /dev/null +++ b/0.13.6/lowpass__filter_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +libfranka: include/franka/lowpass_filter.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    lowpass_filter.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <array>
    +
    6 #include <cmath>
    +
    7 
    +
    13 namespace franka {
    +
    17 constexpr double kMaxCutoffFrequency = 1000.0;
    +
    21 constexpr double kDefaultCutoffFrequency = 100.0;
    +
    37 double lowpassFilter(double sample_time, double y, double y_last, double cutoff_frequency);
    +
    38 
    +
    56 std::array<double, 16> cartesianLowpassFilter(double sample_time,
    +
    57  std::array<double, 16> y,
    +
    58  std::array<double, 16> y_last,
    +
    59  double cutoff_frequency);
    +
    60 } // namespace franka
    +
    double lowpassFilter(double sample_time, double y, double y_last, double cutoff_frequency)
    Applies a first-order low-pass filter.
    +
    std::array< double, 16 > cartesianLowpassFilter(double sample_time, std::array< double, 16 > y, std::array< double, 16 > y_last, double cutoff_frequency)
    Applies a first-order low-pass filter to the translation and spherical linear interpolation to the ro...
    +
    constexpr double kDefaultCutoffFrequency
    Default cutoff frequency.
    Definition: lowpass_filter.h:21
    +
    constexpr double kMaxCutoffFrequency
    Maximum cutoff frequency.
    Definition: lowpass_filter.h:17
    +
    + + + + diff --git a/0.13.6/menu.js b/0.13.6/menu.js new file mode 100644 index 00000000..2fe2214f --- /dev/null +++ b/0.13.6/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/0.13.6/menudata.js b/0.13.6/menudata.js new file mode 100644 index 00000000..8da82039 --- /dev/null +++ b/0.13.6/menudata.js @@ -0,0 +1,107 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"j",url:"functions_j.html#index_j"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"z",url:"functions_z.html#index_z"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"h",url:"functions_func.html#index_h"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"j",url:"functions_func.html#index_j"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"v",url:"functions_func.html#index_v"}, +{text:"w",url:"functions_func.html#index_w"}, +{text:"z",url:"functions_func.html#index_z"}, +{text:"~",url:"functions_func.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"j",url:"functions_vars.html#index_j"}, +{text:"k",url:"functions_vars.html#index_k"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"q",url:"functions_vars.html#index_q"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"v",url:"functions_vars.html#index_v"}, +{text:"w",url:"functions_vars.html#index_w"}]}, +{text:"Typedefs",url:"functions_type.html"}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Related Functions",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions",url:"globals_func.html"}]}]}, +{text:"Examples",url:"examples.html"}]} diff --git a/0.13.6/model_8h.html b/0.13.6/model_8h.html new file mode 100644 index 00000000..01c78b3d --- /dev/null +++ b/0.13.6/model_8h.html @@ -0,0 +1,209 @@ + + + + + + + +libfranka: include/franka/model.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    model.h File Reference
    +
    +
    + +

    Contains model library types. +More...

    +
    #include <array>
    +#include <memory>
    +#include <franka/robot.h>
    +#include <franka/robot_state.h>
    +
    +Include dependency graph for model.h:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  franka::Model
     Calculates poses of joints and dynamic properties of the robot. More...
     
    + + + + +

    +Enumerations

    enum class  franka::Frame {
    +  kJoint1 +, kJoint2 +, kJoint3 +, kJoint4 +,
    +  kJoint5 +, kJoint6 +, kJoint7 +, kFlange +,
    +  kEndEffector +, kStiffness +
    + }
     Enumerates the seven joints, the flange, and the end effector of a robot.
     
    + + + + +

    +Functions

    Frame franka::operator++ (Frame &frame, int) noexcept
     Post-increments the given Frame by one. More...
     
    +

    Detailed Description

    +

    Contains model library types.

    +

    Function Documentation

    + +

    ◆ operator++()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Frame franka::operator++ (Frameframe,
    int  
    )
    +
    +noexcept
    +
    + +

    Post-increments the given Frame by one.

    +

    For example, Frame::kJoint2++ results in Frame::kJoint3.

    +
    Parameters
    + + +
    [in]frameFrame to increment.
    +
    +
    +
    Returns
    Original Frame.
    + +
    +
    +
    + + + + diff --git a/0.13.6/model_8h__incl.map b/0.13.6/model_8h__incl.map new file mode 100644 index 00000000..0b26c942 --- /dev/null +++ b/0.13.6/model_8h__incl.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/model_8h__incl.md5 b/0.13.6/model_8h__incl.md5 new file mode 100644 index 00000000..92921650 --- /dev/null +++ b/0.13.6/model_8h__incl.md5 @@ -0,0 +1 @@ +76eee6b042db692a0fb0f395d8731c72 \ No newline at end of file diff --git a/0.13.6/model_8h__incl.png b/0.13.6/model_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b3009381b18b00f9604bc4ea55bfb3bd85439c GIT binary patch literal 75754 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 UzX5I1847%9AJHS1X;_B-A5jX@$N&HU literal 0 HcmV?d00001 diff --git a/0.13.6/model_8h_source.html b/0.13.6/model_8h_source.html new file mode 100644 index 00000000..48a507dd --- /dev/null +++ b/0.13.6/model_8h_source.html @@ -0,0 +1,211 @@ + + + + + + + +libfranka: include/franka/model.h Source File + + + + + + + + + + + +

    +
    +
    +
    model.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <array>
    +
    6 #include <memory>
    +
    7 
    +
    8 #include <franka/robot.h>
    +
    9 #include <franka/robot_state.h>
    +
    10 
    +
    16 namespace franka {
    +
    17 
    +
    21 enum class Frame {
    +
    22  kJoint1,
    +
    23  kJoint2,
    +
    24  kJoint3,
    +
    25  kJoint4,
    +
    26  kJoint5,
    +
    27  kJoint6,
    +
    28  kJoint7,
    +
    29  kFlange,
    +
    30  kEndEffector,
    +
    31  kStiffness
    +
    32 };
    +
    33 
    +
    43 Frame operator++(Frame& frame, int /* dummy */) noexcept;
    +
    44 
    +
    45 class ModelLibrary;
    +
    46 class Network;
    +
    47 
    +
    51 class Model {
    +
    52  public:
    +
    64  explicit Model(franka::Network& network);
    +
    65 
    +
    71  Model(Model&& model) noexcept;
    +
    72 
    +
    80  Model& operator=(Model&& model) noexcept;
    +
    81 
    +
    85  ~Model() noexcept;
    +
    86 
    +
    97  std::array<double, 16> pose(Frame frame, const franka::RobotState& robot_state) const;
    +
    98 
    +
    111  std::array<double, 16> pose(
    +
    112  Frame frame,
    +
    113  const std::array<double, 7>& q,
    +
    114  const std::array<double, 16>& F_T_EE, // NOLINT(readability-identifier-naming)
    +
    115  const std::array<double, 16>& EE_T_K) // NOLINT(readability-identifier-naming)
    +
    116  const;
    +
    117 
    +
    128  std::array<double, 42> bodyJacobian(Frame frame, const franka::RobotState& robot_state) const;
    +
    129 
    +
    142  std::array<double, 42> bodyJacobian(
    +
    143  Frame frame,
    +
    144  const std::array<double, 7>& q,
    +
    145  const std::array<double, 16>& F_T_EE, // NOLINT(readability-identifier-naming)
    +
    146  const std::array<double, 16>& EE_T_K) // NOLINT(readability-identifier-naming)
    +
    147  const;
    +
    148 
    +
    159  std::array<double, 42> zeroJacobian(Frame frame, const franka::RobotState& robot_state) const;
    +
    160 
    +
    173  std::array<double, 42> zeroJacobian(
    +
    174  Frame frame,
    +
    175  const std::array<double, 7>& q,
    +
    176  const std::array<double, 16>& F_T_EE, // NOLINT(readability-identifier-naming)
    +
    177  const std::array<double, 16>& EE_T_K) // NOLINT(readability-identifier-naming)
    +
    178  const;
    +
    179 
    +
    187  std::array<double, 49> mass(const franka::RobotState& robot_state) const noexcept;
    +
    188 
    +
    202  std::array<double, 49> mass(
    +
    203  const std::array<double, 7>& q,
    +
    204  const std::array<double, 9>& I_total, // NOLINT(readability-identifier-naming)
    +
    205  double m_total,
    +
    206  const std::array<double, 3>& F_x_Ctotal) // NOLINT(readability-identifier-naming)
    +
    207  const noexcept;
    +
    208 
    +
    217  std::array<double, 7> coriolis(const franka::RobotState& robot_state) const noexcept;
    +
    218 
    +
    234  std::array<double, 7> coriolis(
    +
    235  const std::array<double, 7>& q,
    +
    236  const std::array<double, 7>& dq,
    +
    237  const std::array<double, 9>& I_total, // NOLINT(readability-identifier-naming)
    +
    238  double m_total,
    +
    239  const std::array<double, 3>& F_x_Ctotal) // NOLINT(readability-identifier-naming)
    +
    240  const noexcept;
    +
    241 
    +
    255  std::array<double, 7> gravity(
    +
    256  const std::array<double, 7>& q,
    +
    257  double m_total,
    +
    258  const std::array<double, 3>& F_x_Ctotal, // NOLINT(readability-identifier-naming)
    +
    259  const std::array<double, 3>& gravity_earth = {{0., 0., -9.81}}) const noexcept;
    +
    260 
    +
    269  std::array<double, 7> gravity(const franka::RobotState& robot_state,
    +
    270  const std::array<double, 3>& gravity_earth) const noexcept;
    +
    271 
    +
    279  std::array<double, 7> gravity(const franka::RobotState& robot_state) const noexcept;
    +
    280 
    +
    282  Model(const Model&) = delete;
    +
    283  Model& operator=(const Model&) = delete;
    +
    285 
    +
    286  private:
    +
    287  std::unique_ptr<ModelLibrary> library_;
    +
    288 };
    +
    289 
    +
    290 } // namespace franka
    +
    Calculates poses of joints and dynamic properties of the robot.
    Definition: model.h:51
    +
    ~Model() noexcept
    Unloads the model library.
    +
    std::array< double, 16 > pose(Frame frame, const franka::RobotState &robot_state) const
    Gets the 4x4 pose matrix for the given frame in base frame.
    +
    Model & operator=(Model &&model) noexcept
    Move-assigns this Model from another Model instance.
    +
    std::array< double, 42 > zeroJacobian(Frame frame, const franka::RobotState &robot_state) const
    Gets the 6x7 Jacobian for the given joint relative to the base frame.
    +
    Model(franka::Network &network)
    Creates a new Model instance.
    +
    std::array< double, 7 > gravity(const franka::RobotState &robot_state, const std::array< double, 3 > &gravity_earth) const noexcept
    Calculates the gravity vector.
    +
    Model(Model &&model) noexcept
    Move-constructs a new Model instance.
    +
    std::array< double, 7 > coriolis(const franka::RobotState &robot_state) const noexcept
    Calculates the Coriolis force vector (state-space equation): , in .
    +
    std::array< double, 42 > bodyJacobian(Frame frame, const franka::RobotState &robot_state) const
    Gets the 6x7 Jacobian for the given frame, relative to that frame.
    +
    std::array< double, 7 > gravity(const franka::RobotState &robot_state) const noexcept
    Calculates the gravity vector using the robot state.
    +
    std::array< double, 7 > gravity(const std::array< double, 7 > &q, double m_total, const std::array< double, 3 > &F_x_Ctotal, const std::array< double, 3 > &gravity_earth={{0., 0., -9.81}}) const noexcept
    Calculates the gravity vector.
    +
    std::array< double, 49 > mass(const franka::RobotState &robot_state) const noexcept
    Calculates the 7x7 mass matrix.
    +
    Frame
    Enumerates the seven joints, the flange, and the end effector of a robot.
    Definition: model.h:21
    +
    Frame operator++(Frame &frame, int) noexcept
    Post-increments the given Frame by one.
    +
    Contains the franka::Robot type.
    +
    Contains the franka::RobotState types.
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/motion_with_control_8cpp-example.html b/0.13.6/motion_with_control_8cpp-example.html new file mode 100644 index 00000000..9e65c128 --- /dev/null +++ b/0.13.6/motion_with_control_8cpp-example.html @@ -0,0 +1,305 @@ + + + + + + + +libfranka: motion_with_control.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    motion_with_control.cpp
    +
    +
    +

    An example showing how to use a joint velocity motion generator and torque control.Additionally, this example shows how to capture and write logs in case an exception is thrown during a motion.

    +
    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <fstream>
    +
    #include <iomanip>
    +
    #include <iostream>
    +
    #include <vector>
    +
    +
    #include <Poco/DateTimeFormatter.h>
    +
    #include <Poco/File.h>
    +
    #include <Poco/Path.h>
    +
    + +
    #include <franka/robot.h>
    +
    + +
    +
    namespace {
    +
    +
    class Controller {
    +
    public:
    +
    Controller(size_t dq_filter_size,
    +
    const std::array<double, 7>& K_P, // NOLINT(readability-identifier-naming)
    +
    const std::array<double, 7>& K_D) // NOLINT(readability-identifier-naming)
    +
    : dq_current_filter_position_(0), dq_filter_size_(dq_filter_size), K_P_(K_P), K_D_(K_D) {
    +
    std::fill(dq_d_.begin(), dq_d_.end(), 0);
    +
    dq_buffer_ = std::make_unique<double[]>(dq_filter_size_ * 7);
    +
    std::fill(&dq_buffer_.get()[0], &dq_buffer_.get()[dq_filter_size_ * 7], 0);
    +
    }
    +
    +
    inline franka::Torques step(const franka::RobotState& state) {
    +
    updateDQFilter(state);
    +
    +
    std::array<double, 7> tau_J_d; // NOLINT(readability-identifier-naming)
    +
    for (size_t i = 0; i < 7; i++) {
    +
    tau_J_d[i] = K_P_[i] * (state.q_d[i] - state.q[i]) + K_D_[i] * (dq_d_[i] - getDQFiltered(i));
    +
    }
    +
    return tau_J_d;
    +
    }
    +
    +
    void updateDQFilter(const franka::RobotState& state) {
    +
    for (size_t i = 0; i < 7; i++) {
    +
    dq_buffer_.get()[dq_current_filter_position_ * 7 + i] = state.dq[i];
    +
    }
    +
    dq_current_filter_position_ = (dq_current_filter_position_ + 1) % dq_filter_size_;
    +
    }
    +
    +
    double getDQFiltered(size_t index) const {
    +
    double value = 0;
    +
    for (size_t i = index; i < 7 * dq_filter_size_; i += 7) {
    +
    value += dq_buffer_.get()[i];
    +
    }
    +
    return value / dq_filter_size_;
    +
    }
    +
    +
    private:
    +
    size_t dq_current_filter_position_;
    +
    size_t dq_filter_size_;
    +
    +
    const std::array<double, 7> K_P_; // NOLINT(readability-identifier-naming)
    +
    const std::array<double, 7> K_D_; // NOLINT(readability-identifier-naming)
    +
    +
    std::array<double, 7> dq_d_;
    +
    std::unique_ptr<double[]> dq_buffer_;
    +
    };
    +
    +
    std::vector<double> generateTrajectory(double a_max) {
    +
    // Generating a motion with smooth velocity and acceleration.
    +
    // Squared sine is used for the acceleration/deceleration phase.
    +
    std::vector<double> trajectory;
    +
    constexpr double kTimeStep = 0.001; // [s]
    +
    constexpr double kAccelerationTime = 1; // time spend accelerating and decelerating [s]
    +
    constexpr double kConstantVelocityTime = 1; // time spend with constant speed [s]
    +
    // obtained during the speed up
    +
    // and slow down [rad/s^2]
    +
    double a = 0; // [rad/s^2]
    +
    double v = 0; // [rad/s]
    +
    double t = 0; // [s]
    +
    while (t < (2 * kAccelerationTime + kConstantVelocityTime)) {
    +
    if (t <= kAccelerationTime) {
    +
    a = pow(sin(t * M_PI / kAccelerationTime), 2) * a_max;
    +
    } else if (t <= (kAccelerationTime + kConstantVelocityTime)) {
    +
    a = 0;
    +
    } else {
    +
    const double deceleration_time =
    +
    (kAccelerationTime + kConstantVelocityTime) - t; // time spent in the deceleration phase
    +
    a = -pow(sin(deceleration_time * M_PI / kAccelerationTime), 2) * a_max;
    +
    }
    +
    v += a * kTimeStep;
    +
    t += kTimeStep;
    +
    trajectory.push_back(v);
    +
    }
    +
    return trajectory;
    +
    }
    +
    +
    } // anonymous namespace
    +
    +
    void writeLogToFile(const std::vector<franka::Record>& log);
    +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    // Parameters
    +
    const size_t joint_number{3};
    +
    const size_t filter_size{5};
    +
    +
    // NOLINTNEXTLINE(readability-identifier-naming)
    +
    const std::array<double, 7> K_P{{200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0}};
    +
    // NOLINTNEXTLINE(readability-identifier-naming)
    +
    const std::array<double, 7> K_D{{10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0}};
    +
    const double max_acceleration{1.0};
    +
    +
    Controller controller(filter_size, K_P, K_D);
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    +
    robot.setCollisionBehavior(
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    size_t index = 0;
    +
    std::vector<double> trajectory = generateTrajectory(max_acceleration);
    +
    +
    robot.control(
    +
    [&](const franka::RobotState& robot_state, franka::Duration) -> franka::Torques {
    +
    return controller.step(robot_state);
    +
    },
    + +
    index += period.toMSec();
    +
    +
    if (index >= trajectory.size()) {
    +
    index = trajectory.size() - 1;
    +
    }
    +
    +
    franka::JointVelocities velocities{{0, 0, 0, 0, 0, 0, 0}};
    +
    velocities.dq[joint_number] = trajectory[index];
    +
    +
    if (index >= trajectory.size() - 1) {
    +
    return franka::MotionFinished(velocities);
    +
    }
    +
    return velocities;
    +
    });
    +
    } catch (const franka::ControlException& e) {
    +
    std::cout << e.what() << std::endl;
    +
    writeLogToFile(e.log);
    +
    return -1;
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    +
    void writeLogToFile(const std::vector<franka::Record>& log) {
    +
    if (log.empty()) {
    +
    return;
    +
    }
    +
    try {
    +
    Poco::Path temp_dir_path(Poco::Path::temp());
    +
    temp_dir_path.pushDirectory("libfranka-logs");
    +
    +
    Poco::File temp_dir(temp_dir_path);
    +
    temp_dir.createDirectories();
    +
    +
    std::string now_string =
    +
    Poco::DateTimeFormatter::format(Poco::Timestamp{}, "%Y-%m-%d-%h-%m-%S-%i");
    +
    std::string filename = std::string{"log-" + now_string + ".csv"};
    +
    Poco::File log_file(Poco::Path(temp_dir_path, filename));
    +
    if (!log_file.createFile()) {
    +
    std::cout << "Failed to write log file." << std::endl;
    +
    return;
    +
    }
    +
    std::ofstream log_stream(log_file.path().c_str());
    +
    log_stream << franka::logToCSV(log);
    +
    +
    std::cout << "Log file written to: " << log_file.path() << std::endl;
    +
    } catch (...) {
    +
    std::cout << "Failed to write log file." << std::endl;
    +
    }
    +
    }
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Stores values for joint velocity motion generation.
    Definition: control_types.h:99
    +
    std::array< double, 7 > dq
    Desired joint velocities in .
    Definition: control_types.h:121
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    std::string logToCSV(const std::vector< Record > &log)
    Writes the log to a string in CSV format.
    +
    Contains the franka::Robot type.
    +
    ControlException is thrown if an error occurs during motion generation or torque control.
    Definition: exception.h:73
    +
    const std::vector< franka::Record > log
    Vector of states and commands logged just before the exception occurred.
    Definition: exception.h:85
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    std::array< double, 7 > q_d
    Desired joint position.
    Definition: robot_state.h:239
    +
    std::array< double, 7 > q
    Measured joint position.
    Definition: robot_state.h:233
    +
    std::array< double, 7 > dq
    Measured joint velocity.
    Definition: robot_state.h:245
    +
    + + + + diff --git a/0.13.6/motion_with_control_external_control_loop_8cpp-example.html b/0.13.6/motion_with_control_external_control_loop_8cpp-example.html new file mode 100644 index 00000000..8d6b99b8 --- /dev/null +++ b/0.13.6/motion_with_control_external_control_loop_8cpp-example.html @@ -0,0 +1,326 @@ + + + + + + + +libfranka: motion_with_control_external_control_loop.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    motion_with_control_external_control_loop.cpp
    +
    +
    +

    An example showing how to use a joint velocity motion generator and torque control with an external control loop.Additionally, this example shows how to capture and write logs in case an exception is thrown during a motion.

    +
    Warning
    Before executing this example, make sure there is enough space in front of the robot.
    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <cmath>
    +
    #include <fstream>
    +
    #include <iomanip>
    +
    #include <iostream>
    +
    #include <vector>
    +
    +
    #include <Poco/DateTimeFormatter.h>
    +
    #include <Poco/File.h>
    +
    #include <Poco/Path.h>
    +
    + + + +
    #include <franka/robot.h>
    +
    + +
    +
    namespace {
    +
    +
    class Controller {
    +
    public:
    +
    Controller(size_t dq_filter_size,
    +
    const std::array<double, 7>& K_P, // NOLINT(readability-identifier-naming)
    +
    const std::array<double, 7>& K_D) // NOLINT(readability-identifier-naming)
    +
    : dq_current_filter_position_(0), dq_filter_size_(dq_filter_size), K_P_(K_P), K_D_(K_D) {
    +
    std::fill(dq_d_.begin(), dq_d_.end(), 0);
    +
    dq_buffer_ = std::make_unique<double[]>(dq_filter_size_ * 7);
    +
    std::fill(&dq_buffer_.get()[0], &dq_buffer_.get()[dq_filter_size_ * 7], 0);
    +
    }
    +
    +
    inline franka::Torques step(const franka::RobotState& state) {
    +
    updateDQFilter(state);
    +
    +
    std::array<double, 7> tau_J_d; // NOLINT(readability-identifier-naming)
    +
    for (size_t i = 0; i < 7; i++) {
    +
    tau_J_d[i] = K_P_[i] * (state.q_d[i] - state.q[i]) + K_D_[i] * (dq_d_[i] - getDQFiltered(i));
    +
    }
    +
    return tau_J_d;
    +
    }
    +
    +
    void updateDQFilter(const franka::RobotState& state) {
    +
    for (size_t i = 0; i < 7; i++) {
    +
    dq_buffer_.get()[dq_current_filter_position_ * 7 + i] = state.dq[i];
    +
    }
    +
    dq_current_filter_position_ = (dq_current_filter_position_ + 1) % dq_filter_size_;
    +
    }
    +
    +
    double getDQFiltered(size_t index) const {
    +
    double value = 0;
    +
    for (size_t i = index; i < 7 * dq_filter_size_; i += 7) {
    +
    value += dq_buffer_.get()[i];
    +
    }
    +
    return value / dq_filter_size_;
    +
    }
    +
    +
    private:
    +
    size_t dq_current_filter_position_;
    +
    size_t dq_filter_size_;
    +
    +
    const std::array<double, 7> K_P_; // NOLINT(readability-identifier-naming)
    +
    const std::array<double, 7> K_D_; // NOLINT(readability-identifier-naming)
    +
    +
    std::array<double, 7> dq_d_;
    +
    std::unique_ptr<double[]> dq_buffer_;
    +
    };
    +
    +
    std::vector<double> generateTrajectory(double a_max) {
    +
    // Generating a motion with smooth velocity and acceleration.
    +
    // Squared sine is used for the acceleration/deceleration phase.
    +
    std::vector<double> trajectory;
    +
    constexpr double kTimeStep = 0.001; // [s]
    +
    constexpr double kAccelerationTime = 1; // time spend accelerating and decelerating [s]
    +
    constexpr double kConstantVelocityTime = 1; // time spend with constant speed [s]
    +
    // obtained during the speed up
    +
    // and slow down [rad/s^2]
    +
    double a = 0; // [rad/s^2]
    +
    double v = 0; // [rad/s]
    +
    double t = 0; // [s]
    +
    while (t < (2 * kAccelerationTime + kConstantVelocityTime)) {
    +
    if (t <= kAccelerationTime) {
    +
    a = pow(sin(t * M_PI / kAccelerationTime), 2) * a_max;
    +
    } else if (t <= (kAccelerationTime + kConstantVelocityTime)) {
    +
    a = 0;
    +
    } else {
    +
    const double deceleration_time =
    +
    (kAccelerationTime + kConstantVelocityTime) - t; // time spent in the deceleration phase
    +
    a = -pow(sin(deceleration_time * M_PI / kAccelerationTime), 2) * a_max;
    +
    }
    +
    v += a * kTimeStep;
    +
    t += kTimeStep;
    +
    trajectory.push_back(v);
    +
    }
    +
    return trajectory;
    +
    }
    +
    +
    } // anonymous namespace
    +
    +
    void writeLogToFile(const std::vector<franka::Record>& log);
    +
    +
    int main(int argc, char** argv) {
    +
    // Check whether the required arguments were passed
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    // Parameters
    +
    const size_t joint_number{3};
    +
    const size_t filter_size{5};
    +
    +
    // NOLINTNEXTLINE(readability-identifier-naming)
    +
    const std::array<double, 7> K_P{{200.0, 200.0, 200.0, 200.0, 200.0, 200.0, 200.0}};
    +
    // NOLINTNEXTLINE(readability-identifier-naming)
    +
    const std::array<double, 7> K_D{{10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0}};
    +
    const double max_acceleration{1.0};
    +
    +
    Controller controller(filter_size, K_P, K_D);
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    + +
    +
    // First move the robot to a suitable joint configuration
    +
    std::array<double, 7> q_goal = {{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};
    +
    MotionGenerator motion_generator(0.5, q_goal);
    +
    std::cout << "WARNING: This example will move the robot! "
    +
    << "Please make sure to have the user stop button at hand!" << std::endl
    +
    << "Press Enter to continue..." << std::endl;
    +
    std::cin.ignore();
    +
    robot.control(motion_generator);
    +
    std::cout << "Finished moving to initial joint configuration." << std::endl;
    +
    +
    // Set additional parameters always before the control loop, NEVER in the control loop!
    +
    // Set collision behavior.
    +
    robot.setCollisionBehavior(
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}}, {{20.0, 20.0, 18.0, 18.0, 16.0, 14.0, 12.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}},
    +
    {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}}, {{20.0, 20.0, 20.0, 25.0, 25.0, 25.0}});
    +
    +
    size_t index = 0;
    +
    std::vector<double> trajectory = generateTrajectory(max_acceleration);
    +
    +
    auto callback_control = [&](const franka::RobotState& robot_state,
    + +
    return controller.step(robot_state);
    +
    };
    +
    +
    auto callback_motion_generator = [&](const franka::RobotState&,
    + +
    index += period.toMSec();
    +
    +
    if (index >= trajectory.size()) {
    +
    index = trajectory.size() - 1;
    +
    }
    +
    +
    franka::JointVelocities velocities{{0, 0, 0, 0, 0, 0, 0}};
    +
    velocities.dq[joint_number] = trajectory[index];
    +
    +
    if (index >= trajectory.size() - 1) {
    +
    return franka::MotionFinished(velocities);
    +
    }
    +
    return velocities;
    +
    };
    +
    +
    bool motion_finished = false;
    +
    auto active_control = robot.startJointVelocityControl(
    +
    research_interface::robot::Move::ControllerMode::kExternalController);
    +
    while (!motion_finished) {
    +
    auto read_once_return = active_control->readOnce();
    +
    auto robot_state = read_once_return.first;
    +
    auto duration = read_once_return.second;
    +
    auto cartesian_velocities = callback_motion_generator(robot_state, duration);
    +
    auto torques = callback_control(robot_state, duration);
    +
    motion_finished = cartesian_velocities.motion_finished;
    +
    active_control->writeOnce(cartesian_velocities, torques);
    +
    }
    +
    +
    } catch (const franka::ControlException& e) {
    +
    std::cout << e.what() << std::endl;
    +
    writeLogToFile(e.log);
    +
    return -1;
    +
    } catch (const franka::Exception& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    +
    void writeLogToFile(const std::vector<franka::Record>& log) {
    +
    if (log.empty()) {
    +
    return;
    +
    }
    +
    try {
    +
    Poco::Path temp_dir_path(Poco::Path::temp());
    +
    temp_dir_path.pushDirectory("libfranka-logs");
    +
    +
    Poco::File temp_dir(temp_dir_path);
    +
    temp_dir.createDirectories();
    +
    +
    std::string now_string =
    +
    Poco::DateTimeFormatter::format(Poco::Timestamp{}, "%Y-%m-%d-%h-%m-%S-%i");
    +
    std::string filename = std::string{"log-" + now_string + ".csv"};
    +
    Poco::File log_file(Poco::Path(temp_dir_path, filename));
    +
    if (!log_file.createFile()) {
    +
    std::cout << "Failed to write log file." << std::endl;
    +
    return;
    +
    }
    +
    std::ofstream log_stream(log_file.path().c_str());
    +
    log_stream << franka::logToCSV(log);
    +
    +
    std::cout << "Log file written to: " << log_file.path() << std::endl;
    +
    } catch (...) {
    +
    std::cout << "Failed to write log file." << std::endl;
    +
    }
    +
    }
    +
    Implements the ActiveControlBase abstract class.
    +
    Contains the franka::ActiveMotionGenerator type.
    +
    An example showing how to generate a joint pose motion to a goal position.
    Definition: examples_common.h:31
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Stores values for joint velocity motion generation.
    Definition: control_types.h:99
    +
    std::array< double, 7 > dq
    Desired joint velocities in .
    Definition: control_types.h:121
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Torques MotionFinished(Torques command) noexcept
    Helper method to indicate that a motion should stop after processing the given command.
    Definition: control_types.h:294
    +
    Contains common types and functions for the examples.
    +
    void setDefaultBehavior(franka::Robot &robot)
    Sets a default collision behavior, joint impedance and Cartesian impedance.
    Definition: examples_common.cpp:12
    +
    Contains exception definitions.
    +
    std::string logToCSV(const std::vector< Record > &log)
    Writes the log to a string in CSV format.
    +
    Contains the franka::Robot type.
    +
    ControlException is thrown if an error occurs during motion generation or torque control.
    Definition: exception.h:73
    +
    const std::vector< franka::Record > log
    Vector of states and commands logged just before the exception occurred.
    Definition: exception.h:85
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    std::array< double, 7 > q_d
    Desired joint position.
    Definition: robot_state.h:239
    +
    std::array< double, 7 > q
    Measured joint position.
    Definition: robot_state.h:233
    +
    std::array< double, 7 > dq
    Measured joint velocity.
    Definition: robot_state.h:245
    +
    + + + + diff --git a/0.13.6/nav_f.png b/0.13.6/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/0.13.6/nav_g.png b/0.13.6/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libfranka: print_joint_poses.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    print_joint_poses.cpp
    +
    +
    +

    An example showing how to use the model library that prints the transformation matrix of each joint with respect to the base frame.

    +
    // Copyright (c) 2023 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <iostream>
    +
    #include <iterator>
    +
    + +
    #include <franka/model.h>
    +
    +
    template <class T, size_t N>
    +
    std::ostream& operator<<(std::ostream& ostream, const std::array<T, N>& array) {
    +
    ostream << "[";
    +
    std::copy(array.cbegin(), array.cend() - 1, std::ostream_iterator<T>(ostream, ","));
    +
    std::copy(array.cend() - 1, array.cend(), std::ostream_iterator<T>(ostream));
    +
    ostream << "]";
    +
    return ostream;
    +
    }
    +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: " << argv[0] << " <robot-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    try {
    +
    franka::Robot robot(argv[1]);
    +
    +
    franka::RobotState state = robot.readOnce();
    +
    +
    franka::Model model(robot.loadModel());
    +
    for (franka::Frame frame = franka::Frame::kJoint1; frame <= franka::Frame::kEndEffector;
    +
    frame++) {
    +
    std::cout << model.pose(frame, state) << std::endl;
    +
    }
    +
    } catch (franka::Exception const& e) {
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Calculates poses of joints and dynamic properties of the robot.
    Definition: model.h:51
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    std::ostream & operator<<(std::ostream &ostream, const Errors &errors)
    Streams the errors as JSON array.
    +
    Contains exception definitions.
    +
    Contains model library types.
    +
    Frame
    Enumerates the seven joints, the flange, and the end effector of a robot.
    Definition: model.h:21
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/rate__limiting_8h.html b/0.13.6/rate__limiting_8h.html new file mode 100644 index 00000000..c9f02dd8 --- /dev/null +++ b/0.13.6/rate__limiting_8h.html @@ -0,0 +1,1095 @@ + + + + + + + +libfranka: include/franka/rate_limiting.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    rate_limiting.h File Reference
    +
    +
    + +

    Contains functions for limiting the rate of torques, Cartesian pose, Cartesian velocity, joint position and joint velocity. +More...

    +
    #include <algorithm>
    +#include <array>
    +#include <cmath>
    +#include <limits>
    +
    +Include dependency graph for rate_limiting.h:
    +
    +
    + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    std::array< double, 7 > franka::computeUpperLimitsJointVelocity (const std::array< double, 7 > &q)
     Computes the maximum joint velocity based on joint position. More...
     
    std::array< double, 7 > franka::computeLowerLimitsJointVelocity (const std::array< double, 7 > &q)
     Computes the minimum joint velocity based on joint position. More...
     
    std::array< double, 7 > franka::limitRate (const std::array< double, 7 > &max_derivatives, const std::array< double, 7 > &commanded_values, const std::array< double, 7 > &last_commanded_values)
     Limits the rate of an input vector of per-joint commands considering the maximum allowed time derivatives. More...
     
    double franka::limitRate (double upper_limits_velocity, double lower_limits_velocity, double max_acceleration, double max_jerk, double commanded_velocity, double last_commanded_velocity, double last_commanded_acceleration)
     Limits the rate of a desired joint velocity considering the limits provided. More...
     
    double franka::limitRate (double upper_limits_velocity, double lower_limits_velocity, double max_acceleration, double max_jerk, double commanded_position, double last_commanded_position, double last_commanded_velocity, double last_commanded_acceleration)
     Limits the rate of a desired joint position considering the limits provided. More...
     
    std::array< double, 7 > franka::limitRate (const std::array< double, 7 > &upper_limits_velocity, const std::array< double, 7 > &lower_limits_velocity, const std::array< double, 7 > &max_acceleration, const std::array< double, 7 > &max_jerk, const std::array< double, 7 > &commanded_velocities, const std::array< double, 7 > &last_commanded_velocities, const std::array< double, 7 > &last_commanded_accelerations)
     Limits the rate of a desired joint velocity considering the limits provided. More...
     
    std::array< double, 7 > franka::limitRate (const std::array< double, 7 > &upper_limits_velocity, const std::array< double, 7 > &lower_limits_velocity, const std::array< double, 7 > &max_acceleration, const std::array< double, 7 > &max_jerk, const std::array< double, 7 > &commanded_positions, const std::array< double, 7 > &last_commanded_positions, const std::array< double, 7 > &last_commanded_velocities, const std::array< double, 7 > &last_commanded_accelerations)
     Limits the rate of a desired joint position considering the limits provided. More...
     
    std::array< double, 6 > franka::limitRate (double max_translational_velocity, double max_translational_acceleration, double max_translational_jerk, double max_rotational_velocity, double max_rotational_acceleration, double max_rotational_jerk, const std::array< double, 6 > &O_dP_EE_c, const std::array< double, 6 > &last_O_dP_EE_c, const std::array< double, 6 > &last_O_ddP_EE_c)
     Limits the rate of a desired Cartesian velocity considering the limits provided. More...
     
    std::array< double, 16 > franka::limitRate (double max_translational_velocity, double max_translational_acceleration, double max_translational_jerk, double max_rotational_velocity, double max_rotational_acceleration, double max_rotational_jerk, const std::array< double, 16 > &O_T_EE_c, const std::array< double, 16 > &last_O_T_EE_c, const std::array< double, 6 > &last_O_dP_EE_c, const std::array< double, 6 > &last_O_ddP_EE_c)
     Limits the rate of a desired Cartesian pose considering the limits provided. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    +constexpr double franka::kDeltaT = 1e-3
     Sample time constant.
     
    +constexpr double franka::kLimitEps = 1e-3
     Epsilon value for checking limits.
     
    +constexpr double franka::kNormEps = std::numeric_limits<double>::epsilon()
     Epsilon value for limiting Cartesian accelerations/jerks or not.
     
    constexpr double franka::kTolNumberPacketsLost = 0.0
     Number of packets lost considered for the definition of velocity limits. More...
     
    +constexpr double franka::kFactorCartesianRotationPoseInterface = 0.99
     Factor for the definition of rotational limits using the Cartesian Pose interface.
     
    constexpr std::array< double, 7 > franka::kMaxTorqueRate
     Maximum torque rate. More...
     
    constexpr std::array< double, 7 > franka::kMaxJointJerk
     Maximum joint jerk. More...
     
    constexpr std::array< double, 7 > franka::kMaxJointAcceleration
     Maximum joint acceleration. More...
     
    constexpr std::array< double, 7 > franka::kJointVelocityLimitsTolerance
     Tolerance value for joint velocity limits to deal with numerical errors and data losses. More...
     
    +constexpr double franka::kMaxTranslationalJerk = 4500.0 - kLimitEps
     Maximum translational jerk.
     
    +constexpr double franka::kMaxTranslationalAcceleration = 9.0000 - kLimitEps
     Maximum translational acceleration.
     
    constexpr double franka::kMaxTranslationalVelocity
     Maximum translational velocity. More...
     
    +constexpr double franka::kMaxRotationalJerk = 8500.0 - kLimitEps
     Maximum rotational jerk.
     
    +constexpr double franka::kMaxRotationalAcceleration = 17.0000 - kLimitEps
     Maximum rotational acceleration.
     
    constexpr double franka::kMaxRotationalVelocity
     Maximum rotational velocity. More...
     
    +constexpr double franka::kMaxElbowJerk = 5000 - kLimitEps
     Maximum elbow jerk.
     
    +constexpr double franka::kMaxElbowAcceleration = 10.0000 - kLimitEps
     Maximum elbow acceleration.
     
    constexpr double franka::kMaxElbowVelocity
     Maximum elbow velocity. More...
     
    +

    Detailed Description

    +

    Contains functions for limiting the rate of torques, Cartesian pose, Cartesian velocity, joint position and joint velocity.

    +

    Function Documentation

    + +

    ◆ computeLowerLimitsJointVelocity()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::array<double, 7> franka::computeLowerLimitsJointVelocity (const std::array< double, 7 > & q)
    +
    +inline
    +
    + +

    Computes the minimum joint velocity based on joint position.

    +
    Note
    The implementation is based on https://frankaemika.github.io/docs/control_parameters.html#limits-for-franka-research-3.
    +
    Parameters
    + + +
    [in]qjoint position.
    +
    +
    +
    Returns
    Lower limits of joint velocity at the given joint position.
    + +
    +
    + +

    ◆ computeUpperLimitsJointVelocity()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::array<double, 7> franka::computeUpperLimitsJointVelocity (const std::array< double, 7 > & q)
    +
    +inline
    +
    + +

    Computes the maximum joint velocity based on joint position.

    +
    Note
    The implementation is based on https://frankaemika.github.io/docs/control_parameters.html#limits-for-franka-research-3.
    +
    Parameters
    + + +
    [in]qjoint position.
    +
    +
    +
    Returns
    Upper limits of joint velocity at the given joint position.
    + +
    +
    + +

    ◆ limitRate() [1/7]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 7> franka::limitRate (const std::array< double, 7 > & max_derivatives,
    const std::array< double, 7 > & commanded_values,
    const std::array< double, 7 > & last_commanded_values 
    )
    +
    + +

    Limits the rate of an input vector of per-joint commands considering the maximum allowed time derivatives.

    +
    Note
    FCI filters must be deactivated to work properly.
    +
    Parameters
    + + + + +
    [in]max_derivativesPer-joint maximum allowed time derivative.
    [in]commanded_valuesCommanded values of the current time step.
    [in]last_commanded_valuesCommanded values of the previous time step.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif commanded_values are infinite or NaN.
    +
    +
    +
    Returns
    Rate-limited vector of desired values.
    +
    Examples
    joint_impedance_control.cpp.
    +
    + +
    +
    + +

    ◆ limitRate() [2/7]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 7> franka::limitRate (const std::array< double, 7 > & upper_limits_velocity,
    const std::array< double, 7 > & lower_limits_velocity,
    const std::array< double, 7 > & max_acceleration,
    const std::array< double, 7 > & max_jerk,
    const std::array< double, 7 > & commanded_positions,
    const std::array< double, 7 > & last_commanded_positions,
    const std::array< double, 7 > & last_commanded_velocities,
    const std::array< double, 7 > & last_commanded_accelerations 
    )
    +
    + +

    Limits the rate of a desired joint position considering the limits provided.

    +
    Note
    FCI filters must be deactivated to work properly.
    +
    Parameters
    + + + + + + + + + +
    [in]upper_limits_velocityPer-joint upper limits of allowed velocity.
    [in]lower_limits_velocityPer-joint lower limits of allowed velocity.
    [in]max_accelerationPer-joint maximum allowed acceleration.
    [in]max_jerkPer-joint maximum allowed jerk.
    [in]commanded_positionsCommanded joint positions of the current time step.
    [in]last_commanded_positionsCommanded joint positions of the previous time step.
    [in]last_commanded_velocitiesCommanded joint velocities of the previous time step.
    [in]last_commanded_accelerationsCommanded joint accelerations of the previous time step.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif commanded_positions are infinite or NaN.
    +
    +
    +
    Returns
    Rate-limited vector of desired joint positions.
    + +
    +
    + +

    ◆ limitRate() [3/7]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 7> franka::limitRate (const std::array< double, 7 > & upper_limits_velocity,
    const std::array< double, 7 > & lower_limits_velocity,
    const std::array< double, 7 > & max_acceleration,
    const std::array< double, 7 > & max_jerk,
    const std::array< double, 7 > & commanded_velocities,
    const std::array< double, 7 > & last_commanded_velocities,
    const std::array< double, 7 > & last_commanded_accelerations 
    )
    +
    + +

    Limits the rate of a desired joint velocity considering the limits provided.

    +
    Note
    FCI filters must be deactivated to work properly.
    +
    Parameters
    + + + + + + + + +
    [in]upper_limits_velocityPer-joint upper limits of allowed velocity.
    [in]lower_limits_velocityPer-joint lower limits of allowed velocity.
    [in]max_accelerationPer-joint maximum allowed acceleration.
    [in]max_jerkPer-joint maximum allowed jerk.
    [in]commanded_velocitiesCommanded joint velocity of the current time step.
    [in]last_commanded_velocitiesCommanded joint velocities of the previous time step.
    [in]last_commanded_accelerationsCommanded joint accelerations of the previous time step.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif commanded_velocities are infinite or NaN.
    +
    +
    +
    Returns
    Rate-limited vector of desired joint velocities.
    + +
    +
    + +

    ◆ limitRate() [4/7]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 16> franka::limitRate (double max_translational_velocity,
    double max_translational_acceleration,
    double max_translational_jerk,
    double max_rotational_velocity,
    double max_rotational_acceleration,
    double max_rotational_jerk,
    const std::array< double, 16 > & O_T_EE_c,
    const std::array< double, 16 > & last_O_T_EE_c,
    const std::array< double, 6 > & last_O_dP_EE_c,
    const std::array< double, 6 > & last_O_ddP_EE_c 
    )
    +
    + +

    Limits the rate of a desired Cartesian pose considering the limits provided.

    +
    Note
    FCI filters must be deactivated to work properly.
    +
    Parameters
    + + + + + + + + + + + +
    [in]max_translational_velocityMaximum translational velocity.
    [in]max_translational_accelerationMaximum translational acceleration.
    [in]max_translational_jerkMaximum translational jerk.
    [in]max_rotational_velocityMaximum rotational velocity.
    [in]max_rotational_accelerationMaximum rotational acceleration.
    [in]max_rotational_jerkMaximum rotational jerk.
    [in]O_T_EE_cCommanded pose of the current time step.
    [in]last_O_T_EE_cCommanded pose of the previous time step.
    [in]last_O_dP_EE_cCommanded end effector twist of the previous time step.
    [in]last_O_ddP_EE_cCommanded end effector acceleration of the previous time step.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif an element of O_T_EE_c is infinite or NaN.
    +
    +
    +
    Returns
    Rate-limited desired pose.
    + +
    +
    + +

    ◆ limitRate() [5/7]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::array<double, 6> franka::limitRate (double max_translational_velocity,
    double max_translational_acceleration,
    double max_translational_jerk,
    double max_rotational_velocity,
    double max_rotational_acceleration,
    double max_rotational_jerk,
    const std::array< double, 6 > & O_dP_EE_c,
    const std::array< double, 6 > & last_O_dP_EE_c,
    const std::array< double, 6 > & last_O_ddP_EE_c 
    )
    +
    + +

    Limits the rate of a desired Cartesian velocity considering the limits provided.

    +
    Note
    FCI filters must be deactivated to work properly.
    +
    Parameters
    + + + + + + + + + + +
    [in]max_translational_velocityMaximum translational velocity.
    [in]max_translational_accelerationMaximum translational acceleration.
    [in]max_translational_jerkMaximum translational jerk.
    [in]max_rotational_velocityMaximum rotational velocity.
    [in]max_rotational_accelerationMaximum rotational acceleration.
    [in]max_rotational_jerkMaximum rotational jerk.
    [in]O_dP_EE_cCommanded end effector twist of the current time step.
    [in]last_O_dP_EE_cCommanded end effector twist of the previous time step.
    [in]last_O_ddP_EE_cCommanded end effector acceleration of the previous time step.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif an element of O_dP_EE_c is infinite or NaN.
    +
    +
    +
    Returns
    Rate-limited desired end effector twist.
    + +
    +
    + +

    ◆ limitRate() [6/7]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    double franka::limitRate (double upper_limits_velocity,
    double lower_limits_velocity,
    double max_acceleration,
    double max_jerk,
    double commanded_position,
    double last_commanded_position,
    double last_commanded_velocity,
    double last_commanded_acceleration 
    )
    +
    + +

    Limits the rate of a desired joint position considering the limits provided.

    +
    Note
    FCI filters must be deactivated to work properly.
    +
    Parameters
    + + + + + + + + + +
    [in]upper_limits_velocityUpper limits of allowed velocity.
    [in]lower_limits_velocityLower limits of allowed velocity.
    [in]max_accelerationMaximum allowed acceleration.
    [in]max_jerkMaximum allowed jerk.
    [in]commanded_positionCommanded joint position of the current time step.
    [in]last_commanded_positionCommanded joint position of the previous time step.
    [in]last_commanded_velocityCommanded joint velocity of the previous time step.
    [in]last_commanded_accelerationCommanded joint acceleration of the previous time step.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif commanded_position is infinite or NaN.
    +
    +
    +
    Returns
    Rate-limited desired joint position.
    + +
    +
    + +

    ◆ limitRate() [7/7]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    double franka::limitRate (double upper_limits_velocity,
    double lower_limits_velocity,
    double max_acceleration,
    double max_jerk,
    double commanded_velocity,
    double last_commanded_velocity,
    double last_commanded_acceleration 
    )
    +
    + +

    Limits the rate of a desired joint velocity considering the limits provided.

    +
    Note
    FCI filters must be deactivated to work properly.
    +
    Parameters
    + + + + + + + + +
    [in]upper_limits_velocityUpper limits of allowed velocity.
    [in]lower_limits_velocityLower limits of allowed velocity.
    [in]max_accelerationMaximum allowed acceleration.
    [in]max_jerkMaximum allowed jerk.
    [in]commanded_velocityCommanded joint velocity of the current time step.
    [in]last_commanded_velocityCommanded joint velocity of the previous time step.
    [in]last_commanded_accelerationCommanded joint acceleration of the previous time step.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif commanded_velocity is infinite or NaN.
    +
    +
    +
    Returns
    Rate-limited desired joint velocity.
    + +
    +
    +

    Variable Documentation

    + +

    ◆ kJointVelocityLimitsTolerance

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::array<double, 7> franka::kJointVelocityLimitsTolerance
    +
    +constexpr
    +
    +Initial value:
    {
    + + + + + + + +
    }
    +
    constexpr double kDeltaT
    Sample time constant.
    Definition: rate_limiting.h:20
    +
    constexpr double kTolNumberPacketsLost
    Number of packets lost considered for the definition of velocity limits.
    Definition: rate_limiting.h:35
    +
    constexpr std::array< double, 7 > kMaxJointAcceleration
    Maximum joint acceleration.
    Definition: rate_limiting.h:55
    +
    constexpr double kLimitEps
    Epsilon value for checking limits.
    Definition: rate_limiting.h:24
    +
    +

    Tolerance value for joint velocity limits to deal with numerical errors and data losses.

    + +
    +
    + +

    ◆ kMaxElbowVelocity

    + +
    +
    + + + + + +
    + + + + +
    constexpr double franka::kMaxElbowVelocity
    +
    +constexpr
    +
    +Initial value:
    =
    + +
    constexpr double kMaxElbowAcceleration
    Maximum elbow acceleration.
    Definition: rate_limiting.h:103
    +
    +

    Maximum elbow velocity.

    + +
    +
    + +

    ◆ kMaxJointAcceleration

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::array<double, 7> franka::kMaxJointAcceleration
    +
    +constexpr
    +
    +Initial value:
    {
    +
    {10.0000 - kLimitEps, 10.0000 - kLimitEps, 10.0000 - kLimitEps, 10.0000 - kLimitEps,
    +
    10.0000 - kLimitEps, 10.0000 - kLimitEps, 10.0000 - kLimitEps}}
    +
    +

    Maximum joint acceleration.

    + +
    +
    + +

    ◆ kMaxJointJerk

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::array<double, 7> franka::kMaxJointJerk
    +
    +constexpr
    +
    +Initial value:
    {
    +
    {5000.0 - kLimitEps, 5000.0 - kLimitEps, 5000.0 - kLimitEps, 5000.0 - kLimitEps,
    +
    5000.0 - kLimitEps, 5000.0 - kLimitEps, 5000.0 - kLimitEps}}
    +
    +

    Maximum joint jerk.

    + +
    +
    + +

    ◆ kMaxRotationalVelocity

    + +
    +
    + + + + + +
    + + + + +
    constexpr double franka::kMaxRotationalVelocity
    +
    +constexpr
    +
    +Initial value:
    =
    + +
    constexpr double kMaxRotationalAcceleration
    Maximum rotational acceleration.
    Definition: rate_limiting.h:90
    +
    +

    Maximum rotational velocity.

    + +
    +
    + +

    ◆ kMaxTorqueRate

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::array<double, 7> franka::kMaxTorqueRate
    +
    +constexpr
    +
    +Initial value:
    {
    +
    {1000 - kLimitEps, 1000 - kLimitEps, 1000 - kLimitEps, 1000 - kLimitEps, 1000 - kLimitEps,
    +
    1000 - kLimitEps, 1000 - kLimitEps}}
    +
    +

    Maximum torque rate.

    +
    Examples
    joint_impedance_control.cpp.
    +
    + +
    +
    + +

    ◆ kMaxTranslationalVelocity

    + +
    +
    + + + + + +
    + + + + +
    constexpr double franka::kMaxTranslationalVelocity
    +
    +constexpr
    +
    +Initial value:
    =
    + +
    constexpr double kMaxTranslationalAcceleration
    Maximum translational acceleration.
    Definition: rate_limiting.h:77
    +
    +

    Maximum translational velocity.

    + +
    +
    + +

    ◆ kTolNumberPacketsLost

    + +
    +
    + + + + + +
    + + + + +
    constexpr double franka::kTolNumberPacketsLost = 0.0
    +
    +constexpr
    +
    + +

    Number of packets lost considered for the definition of velocity limits.

    +

    When a packet is lost, FCI assumes a constant acceleration model. For FR3 there are no expected package loses. Therefore this number is set to 0. If you encounter package loses with your setup you can increase this number

    + +
    +
    +
    + + + + diff --git a/0.13.6/rate__limiting_8h__incl.map b/0.13.6/rate__limiting_8h__incl.map new file mode 100644 index 00000000..5d754c94 --- /dev/null +++ b/0.13.6/rate__limiting_8h__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/0.13.6/rate__limiting_8h__incl.md5 b/0.13.6/rate__limiting_8h__incl.md5 new file mode 100644 index 00000000..d8bb1bc3 --- /dev/null +++ b/0.13.6/rate__limiting_8h__incl.md5 @@ -0,0 +1 @@ +57c627e80ba2707574cf3a9c16db283a \ No newline at end of file diff --git a/0.13.6/rate__limiting_8h__incl.png b/0.13.6/rate__limiting_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3737d46e04743b245d2ff0eb1c8ad7c7854f01f2 GIT binary patch literal 8972 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 literal 0 HcmV?d00001 diff --git a/0.13.6/rate__limiting_8h_source.html b/0.13.6/rate__limiting_8h_source.html new file mode 100644 index 00000000..866d6917 --- /dev/null +++ b/0.13.6/rate__limiting_8h_source.html @@ -0,0 +1,255 @@ + + + + + + + +libfranka: include/franka/rate_limiting.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    rate_limiting.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <algorithm>
    +
    6 #include <array>
    +
    7 #include <cmath>
    +
    8 #include <limits>
    +
    9 
    +
    16 namespace franka {
    +
    20 constexpr double kDeltaT = 1e-3;
    +
    24 constexpr double kLimitEps = 1e-3;
    +
    28 constexpr double kNormEps = std::numeric_limits<double>::epsilon();
    +
    35 constexpr double kTolNumberPacketsLost = 0.0;
    +
    39 constexpr double kFactorCartesianRotationPoseInterface = 0.99;
    +
    43 constexpr std::array<double, 7> kMaxTorqueRate{
    +
    44  {1000 - kLimitEps, 1000 - kLimitEps, 1000 - kLimitEps, 1000 - kLimitEps, 1000 - kLimitEps,
    +
    45  1000 - kLimitEps, 1000 - kLimitEps}};
    +
    49 constexpr std::array<double, 7> kMaxJointJerk{
    +
    50  {5000.0 - kLimitEps, 5000.0 - kLimitEps, 5000.0 - kLimitEps, 5000.0 - kLimitEps,
    +
    51  5000.0 - kLimitEps, 5000.0 - kLimitEps, 5000.0 - kLimitEps}};
    +
    55 constexpr std::array<double, 7> kMaxJointAcceleration{
    +
    56  {10.0000 - kLimitEps, 10.0000 - kLimitEps, 10.0000 - kLimitEps, 10.0000 - kLimitEps,
    +
    57  10.0000 - kLimitEps, 10.0000 - kLimitEps, 10.0000 - kLimitEps}};
    +
    61 constexpr std::array<double, 7> kJointVelocityLimitsTolerance{
    + + + + + + + +
    69 };
    +
    73 constexpr double kMaxTranslationalJerk = 4500.0 - kLimitEps;
    +
    77 constexpr double kMaxTranslationalAcceleration = 9.0000 - kLimitEps;
    +
    81 constexpr double kMaxTranslationalVelocity =
    + +
    86 constexpr double kMaxRotationalJerk = 8500.0 - kLimitEps;
    +
    90 constexpr double kMaxRotationalAcceleration = 17.0000 - kLimitEps;
    +
    94 constexpr double kMaxRotationalVelocity =
    + +
    99 constexpr double kMaxElbowJerk = 5000 - kLimitEps;
    +
    103 constexpr double kMaxElbowAcceleration = 10.0000 - kLimitEps;
    +
    107 constexpr double kMaxElbowVelocity =
    + +
    109 
    +
    120 inline std::array<double, 7> computeUpperLimitsJointVelocity(const std::array<double, 7>& q) {
    +
    121  return std::array<double, 7>{
    +
    122  std::min(2.62, std::max(0.0, -0.30 + std::sqrt(std::max(0.0, 12.0 * (2.75010 - q[0]))))) -
    + +
    124  std::min(2.62, std::max(0.0, -0.20 + std::sqrt(std::max(0.0, 5.17 * (1.79180 - q[1]))))) -
    + +
    126  std::min(2.62, std::max(0.0, -0.20 + std::sqrt(std::max(0.0, 7.00 * (2.90650 - q[2]))))) -
    + +
    128  std::min(2.62, std::max(0.0, -0.30 + std::sqrt(std::max(0.0, 8.00 * (-0.1458 - q[3]))))) -
    + +
    130  std::min(5.26, std::max(0.0, -0.35 + std::sqrt(std::max(0.0, 34.0 * (2.81010 - q[4]))))) -
    + +
    132  std::min(4.18, std::max(0.0, -0.35 + std::sqrt(std::max(0.0, 11.0 * (4.52050 - q[5]))))) -
    + +
    134  std::min(5.26, std::max(0.0, -0.35 + std::sqrt(std::max(0.0, 34.0 * (3.01960 - q[6]))))) -
    + +
    136  };
    +
    137 }
    +
    138 
    +
    149 inline std::array<double, 7> computeLowerLimitsJointVelocity(const std::array<double, 7>& q) {
    +
    150  return std::array<double, 7>{
    +
    151  std::max(-2.62, std::min(0.0, 0.30 - std::sqrt(std::max(0.0, 12.0 * (2.750100 + q[0]))))) +
    + +
    153  std::max(-2.62, std::min(0.0, 0.20 - std::sqrt(std::max(0.0, 5.17 * (1.791800 + q[1]))))) +
    + +
    155  std::max(-2.62, std::min(0.0, 0.20 - std::sqrt(std::max(0.0, 7.00 * (2.906500 + q[2]))))) +
    + +
    157  std::max(-2.62, std::min(0.0, 0.30 - std::sqrt(std::max(0.0, 8.00 * (3.048100 + q[3]))))) +
    + +
    159  std::max(-5.26, std::min(0.0, 0.35 - std::sqrt(std::max(0.0, 34.0 * (2.810100 + q[4]))))) +
    + +
    161  std::max(-4.18, std::min(0.0, 0.35 - std::sqrt(std::max(0.0, 11.0 * (-0.54092 + q[5]))))) +
    + +
    163  std::max(-5.26, std::min(0.0, 0.35 - std::sqrt(std::max(0.0, 34.0 * (3.019600 + q[6]))))) +
    + +
    165  };
    +
    166 }
    +
    167 
    +
    183 std::array<double, 7> limitRate(const std::array<double, 7>& max_derivatives,
    +
    184  const std::array<double, 7>& commanded_values,
    +
    185  const std::array<double, 7>& last_commanded_values);
    +
    186 
    +
    205 double limitRate(double upper_limits_velocity,
    +
    206  double lower_limits_velocity,
    +
    207  double max_acceleration,
    +
    208  double max_jerk,
    +
    209  double commanded_velocity,
    +
    210  double last_commanded_velocity,
    +
    211  double last_commanded_acceleration);
    +
    212 
    +
    232 double limitRate(double upper_limits_velocity,
    +
    233  double lower_limits_velocity,
    +
    234  double max_acceleration,
    +
    235  double max_jerk,
    +
    236  double commanded_position,
    +
    237  double last_commanded_position,
    +
    238  double last_commanded_velocity,
    +
    239  double last_commanded_acceleration);
    +
    240 
    +
    259 std::array<double, 7> limitRate(const std::array<double, 7>& upper_limits_velocity,
    +
    260  const std::array<double, 7>& lower_limits_velocity,
    +
    261  const std::array<double, 7>& max_acceleration,
    +
    262  const std::array<double, 7>& max_jerk,
    +
    263  const std::array<double, 7>& commanded_velocities,
    +
    264  const std::array<double, 7>& last_commanded_velocities,
    +
    265  const std::array<double, 7>& last_commanded_accelerations);
    +
    266 
    +
    286 std::array<double, 7> limitRate(const std::array<double, 7>& upper_limits_velocity,
    +
    287  const std::array<double, 7>& lower_limits_velocity,
    +
    288  const std::array<double, 7>& max_acceleration,
    +
    289  const std::array<double, 7>& max_jerk,
    +
    290  const std::array<double, 7>& commanded_positions,
    +
    291  const std::array<double, 7>& last_commanded_positions,
    +
    292  const std::array<double, 7>& last_commanded_velocities,
    +
    293  const std::array<double, 7>& last_commanded_accelerations);
    +
    294 
    +
    315 std::array<double, 6> limitRate(
    +
    316  double max_translational_velocity,
    +
    317  double max_translational_acceleration,
    +
    318  double max_translational_jerk,
    +
    319  double max_rotational_velocity,
    +
    320  double max_rotational_acceleration,
    +
    321  double max_rotational_jerk,
    +
    322  const std::array<double, 6>& O_dP_EE_c, // NOLINT(readability-identifier-naming)
    +
    323  const std::array<double, 6>& last_O_dP_EE_c, // NOLINT(readability-identifier-naming)
    +
    324  const std::array<double, 6>& last_O_ddP_EE_c); // NOLINT(readability-identifier-naming)
    +
    325 
    +
    347 std::array<double, 16> limitRate(
    +
    348  double max_translational_velocity,
    +
    349  double max_translational_acceleration,
    +
    350  double max_translational_jerk,
    +
    351  double max_rotational_velocity,
    +
    352  double max_rotational_acceleration,
    +
    353  double max_rotational_jerk,
    +
    354  const std::array<double, 16>& O_T_EE_c, // NOLINT(readability-identifier-naming)
    +
    355  const std::array<double, 16>& last_O_T_EE_c, // NOLINT(readability-identifier-naming)
    +
    356  const std::array<double, 6>& last_O_dP_EE_c, // NOLINT(readability-identifier-naming)
    +
    357  const std::array<double, 6>& last_O_ddP_EE_c); // NOLINT(readability-identifier-naming)
    +
    358 
    +
    359 } // namespace franka
    +
    constexpr double kFactorCartesianRotationPoseInterface
    Factor for the definition of rotational limits using the Cartesian Pose interface.
    Definition: rate_limiting.h:39
    +
    constexpr double kDeltaT
    Sample time constant.
    Definition: rate_limiting.h:20
    +
    constexpr double kMaxRotationalJerk
    Maximum rotational jerk.
    Definition: rate_limiting.h:86
    +
    constexpr double kMaxElbowVelocity
    Maximum elbow velocity.
    Definition: rate_limiting.h:107
    +
    constexpr double kMaxTranslationalAcceleration
    Maximum translational acceleration.
    Definition: rate_limiting.h:77
    +
    constexpr std::array< double, 7 > kJointVelocityLimitsTolerance
    Tolerance value for joint velocity limits to deal with numerical errors and data losses.
    Definition: rate_limiting.h:61
    +
    std::array< double, 7 > computeUpperLimitsJointVelocity(const std::array< double, 7 > &q)
    Computes the maximum joint velocity based on joint position.
    Definition: rate_limiting.h:120
    +
    constexpr double kNormEps
    Epsilon value for limiting Cartesian accelerations/jerks or not.
    Definition: rate_limiting.h:28
    +
    constexpr double kMaxTranslationalJerk
    Maximum translational jerk.
    Definition: rate_limiting.h:73
    +
    constexpr double kMaxRotationalAcceleration
    Maximum rotational acceleration.
    Definition: rate_limiting.h:90
    +
    constexpr std::array< double, 7 > kMaxJointJerk
    Maximum joint jerk.
    Definition: rate_limiting.h:49
    +
    constexpr double kTolNumberPacketsLost
    Number of packets lost considered for the definition of velocity limits.
    Definition: rate_limiting.h:35
    +
    constexpr std::array< double, 7 > kMaxTorqueRate
    Maximum torque rate.
    Definition: rate_limiting.h:43
    +
    std::array< double, 7 > computeLowerLimitsJointVelocity(const std::array< double, 7 > &q)
    Computes the minimum joint velocity based on joint position.
    Definition: rate_limiting.h:149
    +
    constexpr std::array< double, 7 > kMaxJointAcceleration
    Maximum joint acceleration.
    Definition: rate_limiting.h:55
    +
    constexpr double kMaxTranslationalVelocity
    Maximum translational velocity.
    Definition: rate_limiting.h:81
    +
    constexpr double kLimitEps
    Epsilon value for checking limits.
    Definition: rate_limiting.h:24
    +
    constexpr double kMaxRotationalVelocity
    Maximum rotational velocity.
    Definition: rate_limiting.h:94
    +
    constexpr double kMaxElbowJerk
    Maximum elbow jerk.
    Definition: rate_limiting.h:99
    +
    std::array< double, 7 > limitRate(const std::array< double, 7 > &max_derivatives, const std::array< double, 7 > &commanded_values, const std::array< double, 7 > &last_commanded_values)
    Limits the rate of an input vector of per-joint commands considering the maximum allowed time derivat...
    +
    constexpr double kMaxElbowAcceleration
    Maximum elbow acceleration.
    Definition: rate_limiting.h:103
    +
    + + + + diff --git a/0.13.6/robot_8h.html b/0.13.6/robot_8h.html new file mode 100644 index 00000000..33979402 --- /dev/null +++ b/0.13.6/robot_8h.html @@ -0,0 +1,151 @@ + + + + + + + +libfranka: include/franka/robot.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    robot.h File Reference
    +
    +
    + +

    Contains the franka::Robot type. +More...

    +
    #include <functional>
    +#include <memory>
    +#include <mutex>
    +#include <string>
    +#include <franka/control_types.h>
    +#include <franka/duration.h>
    +#include <franka/lowpass_filter.h>
    +#include <franka/robot_state.h>
    +#include <research_interface/robot/service_types.h>
    +
    +Include dependency graph for robot.h:
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  franka::Robot
     Maintains a network connection to the robot, provides the current robot state, gives access to the model library and allows to control the robot. More...
     
    +

    Detailed Description

    +

    Contains the franka::Robot type.

    +
    + + + + diff --git a/0.13.6/robot_8h__dep__incl.map b/0.13.6/robot_8h__dep__incl.map new file mode 100644 index 00000000..c0c7a777 --- /dev/null +++ b/0.13.6/robot_8h__dep__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/0.13.6/robot_8h__dep__incl.md5 b/0.13.6/robot_8h__dep__incl.md5 new file mode 100644 index 00000000..edf1ab76 --- /dev/null +++ b/0.13.6/robot_8h__dep__incl.md5 @@ -0,0 +1 @@ +593b8bcdeee6aad6acb905fdb2260cdb \ No newline at end of file diff --git a/0.13.6/robot_8h__dep__incl.png b/0.13.6/robot_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..decc00c162668966e37cd6c1c848d87d34ee8cd3 GIT binary patch literal 17905 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 literal 0 HcmV?d00001 diff --git a/0.13.6/robot_8h__incl.map b/0.13.6/robot_8h__incl.map new file mode 100644 index 00000000..b3bae200 --- /dev/null +++ b/0.13.6/robot_8h__incl.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/0.13.6/robot_8h__incl.md5 b/0.13.6/robot_8h__incl.md5 new file mode 100644 index 00000000..7a283eb3 --- /dev/null +++ b/0.13.6/robot_8h__incl.md5 @@ -0,0 +1 @@ +7e58e1636e6895ca00080143cb2bc8dc \ No newline at end of file diff --git a/0.13.6/robot_8h__incl.png b/0.13.6/robot_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ab94e1dd95dda96d101571043e3e27df6624693f GIT binary patch literal 50455 zcmZ5|1yoeg8ZH6~($bBh(lK;N2uMqJBi#+sB2rQ!-7$1Z3|)$VbazR2_fT)+z4yJf z9-ak9W;k8l9*_uXb1=hn9@?>$_NO^=?Dmq@KF)LZ`M9o=YStiKFCUn zBiujy%WTe%K|pwpAT9n@^<(Ppyt}uG+BL#q%J{qskL76Id&vf(d6DTq5<{P#6TE$< zuk`jY3L4$tzvGj8*akjIZ%L@%#bTYdMbB=%zgf1%Z-*bo;&dh&*|7kj4 z2qVAwQO=eROmWscJ7t)nx0x;1LbKK(pl(t`7#<$C|- z>SVG^Pax;XU3-J;PGx0fP-{Ay=Dh_E!NWBI9$Bg)Aefo0bVi^PGHL!W^sgWr8I2(0 zVPIs8q7t^Vx3}M|d3dAYoWH&R!l$I^TKkN`4%aBbb4@KREmv1pP0hq-EBs^OO4?UJ zm}D%vbr2aw6z~Uahi@&w&-Py{NBC&(K7RZtDTxv&%I3)tKK^h$1Y#nLKgbA)B<+uq zb|y+wcpX1jT3VW#<`x(4toNtj;o?FtR2bq6{BF>Nn$jHdrdgBBG+YAabv8L4V$WR%2mdeWthC1b+jVCmHzy}HKHiBpwN$6p z%+z#kbrlB{nKXji@9ri%90SoG(#En`s9H4N=xz<0;aT){20iRkCcX$>8ZvIgqmjG3 zIT=JpLxW(*%E)-0Pn(0!9#$bGCFQoAQB_fCH-vx_d=ipSqeNAPz2=+!`9?nSf!6!m z1Hb$0MI$4l>+`*xqrAh9O+*IX6|H&?{nbYN2~0l21s46LI_pUm!Z6pH%cI&w-|PGg zUuqmw`_@}GFR$x`X0Q3VxiZ~)r;UNMv9YnACAJs)^8*6|!Pr#l3~`O_2NU;q^X`j# z`}+@*F)cL}i}Fn!n3JrnH@JanJoXFTmrKF6t#8Swc^_a!GAg9i)E0!&Qd zQm+OQ*^t^HY4RE>DplYSJ+S-;kpKD7={Q(0QD!$x!&@#IyqsZZD ze{r>uQCm?l-Rjq>UJQEeVAj61+5JGjda6(*-|b+b->k~-YAr!S-(&4?sU6&{ean^E z!J7O2T=&LF0*f9$IQ!X(9^ixiur46Dh9WcwZB4oP`N2U!+B!PImwyA43ssp2Ypbj0 znmkV8H1v;7PMjSaH0vCep070I<>f6eFB9p1{5d^6Jv-}l3qRYuppM?0fmyRQpMFnB zNJvYYZ@oKX70NKs&q<4zj3D)LB5Us{r&IWy#uqXDJ3N(KYzn{P|$s6g83Fs#HvqD zMrLhpUhA|bgN+@vGg*$^bmP;E9^mowU#mW6g4J%gkeZe@jAU(XjnS^k5U0sRgB!ZA zuyE1H5G`e5Yz#HX^2G!nK^z1cPsYN8gNlfV=;Z7S&CcH4-G%FB<>%+$9mO$fM3VD? zh1bx~0KpK0QeDqJK3#O)7~tdMBZ)-cvwtm^oV92tD~lc~o;|v?*^2Q5X)iA&g)GQO zUtb^2<>lc4Uhq$#67g$%n0lYskU*Ge8yVViNt2%(8~Z{XBc!FHv(t`UsQQ%>ENvH8 zSLs}3{DRC7tkQ2H&u_r&S7m^8dD<;B@i{L4zN^WmilvK|I^UfJQ>N@G9?jIuOggXQ z^2MTG>qcaWL8}let38MUUKjhWE-vJT|L(60v_-wx*3$CrPs)rz$;QyTqQ$qTA4hVe zk(lhKY*8QX3=cWM3gJ`k(dj7&y*>xc7hsL?^Yag+^2LB5HBQRR%tR+*p~FYZQoLMC zFvvFW^zxFFknjbwTe+~hzW%DXyk(@^0bCP&w5^SeYN4w8!NPonaj;2M@K=zsUJoGax}6E3X3(iI@;RFcNg|eM-t}d z8%1ixHMXtn0Hq)F!k##*R4OEDAjRZ@0$jx=s6iSXv(Jw@ixb~DO+$R z{0#LA&%#IJnQF^UyFZz`v$cagJy!D#u0!E35`}!=6~+3R6!1c~qSo}Ku;Z(+Z_}~JD;{S>P2x6K%3EoPLw?_{`uZwG; zDSNK!41El}X{CIYA`5=ckl*YKzm@en_UVkMajViLyn|^HDX5YqXHivEGmJ|Y1uS?? z)Vdt-1A>U?e{;2As!>jPeCTj`>~wy5b7H_h-#syb#%ydXR#D+d+NUU2-y}QYN5X3K?EL1EkAUU}G`^0`*ZY4(>dMUv$B6^kZz7@+2ju4_&hOle43!HbWnSY-R(*&B z;}{d8CndEAoAg5V#l-xOrI?&5 z9TIDvVgcxV9UV!X6vPf++)(9LRzzV09UVe)3Lk~;F}!>HLfhR zHL>2g&@TOen&Re^T&NmfFwQLY(ata8_*6G+g*3NPypXBG@$7I?3VItRRXt*nV+B(z zwcFZXFCM4HAe$gC$&rb7cemEoo_UN|s2GCS>gF#JcXD9N&M6|F~tFB>CqyuTk?ocz!o;JwHg#B5E7yNLrzdv09 z+R!M_(7->mr3!jQ3IP(fpOhwwxN-WI7mw? z+Q&yPNlrspn8(0?hh{Xc+r^k&FD+HV>@rD_j*-QViDjLDh-aZ?{y8Bd1Oqx;Fg)Bc zJS+shKYe;9cIn0v$52(-<9iFcsa@<*W9a|#)HjTmqjs`ndqj&Z?@c!=Ns3Xic_;BtHpXdaOqDROv`;#1v(52zr49wEVNWWd{ zh3Boa^Ny3VwXEzFNQLL;6H7}A@X3t+JWL^WDp@_f?N*78J*O20&Q+>(u{>PTXIg3{ zrQQ1a19S`ER>4osdjs!V*i6tlP zzuAOB8u9hB2x-Ljy4k`0{^pkS-pT$`FsIO;fYKoo+sQ-2ry2FJldEfX&=W^Jy<$bW zc1XC$^Pw&IpcmxZVc;WQUiU9R;u+}*?5%g6M~C?Pr_+54i98PtKP5R%(5TQnx;`K< zAHdhEcS?|Y_3HKGzI2L;kB+JN`76&S9X7DsHwH4ke*MU({;Ku3$D4;II17eMmNtYH z-7DaC!*;M!Ue3)K0)_fyc(dDfe}8(xMOUFf8c~*)_qdr0ERkQLW!j~=%C@4SP2ayG ze*doN=;*t@FXs2QQ&}T{^z7hipc9LR4exr)V1fmwpZwvDb83D@23dr}*N1!8te>8jLdD-@h;#v%R#mxxW5)Yb%5j zwEx@bV*ms(0KN-%_rc0vb($UO_LqQGPP?>M#DZRc9z`e?kB^U4$HsCJ67j^xa>mDV zGvG6z1^zZ01r35`duL~RQ&TtD+5~ZBMf4IFG^o14U5tEvnNUn=Rq1bHe!~S zFyGwD#_DP%s$dPZr;g-2yNd7Su`-oyC9Rx|pZf5B5v>=x5feT;D}`@4tE-z35ec+^ zRLEHF=;|^JZ_nSiix3}q5$BeTpk{!fc%KPVGfMo{IXzw06)t|eQh}lM5L8jYVk4Hs zfY$ZMJPLkUQcl#prbis4MEA8g1Umml5QOOO=^77Ue_)(V@2oSS1%$n5}CZ8*Y zvGz_uKPXJ^TzG-KF9^i$}rly9}RMO~zW=VHz8zyIr zPM%2a_I;sK=pcc~=XoDb(g>`x%csbd6YB548hWLSimV(h^#Z>~TYD8`L}ux%Z;IV- z-Q7`GS!qF7Ic5E-4bq8J&ahk&2rz%|06P9;3SuqY$5HpL@rfEbdGM6|(2lS98R>VsRaFv@(2m4F zw-D{pW{0fRp{!l&NnWP-E@%{uFx;YN^Yt?}jK3$x+d0aw14Tbnya5X$G_+*XV)3tG za^M-3C1=CLgqx7T%m}r;T|62x`{_&ko-6NA<*SQbA^!QN{hKGpPRHkNpmu0#N+rf1 z0-476vAl9&W$xn$nYb|VJw$(u+u50!g*m2Cg>x}JOOR)`PFtZZt$FnPZ=aj%$8_917Y_S zO=ZxWpqlbXo%2Tb++0I2Rpere&(YtF70eOhU^mb4ab_@E05;YkjX3v5q0aEMk`YC; zuI8B;dOpx!ddoPqQm9HQDVZ{)$U2slkV@___yK7hlv7+>(u$%9>t-M)*js(ioGJ&m zrWY&yDmys%Wx$d7kBz-O(R>wWiNjKxKhu~PR|vln19_h%wAoRzm7gG zH57GdV}Y}C(s;`E2M=>MXE=2TSr{z(>trte5-r9N!y*MW2sU8(O!;PdGtg4{_sJ_;29-q7MV0#Ig)8+FB zOY+lgRg`@ zwP^5rl9O}bj_Gh*e2gG;hPO+55x%+-O||48H()=k1mx3P%>GERCGy~xo7>99#Otdj z8yg#)W}}LzJWrUNOwJVXx|dzf)i3YvS|R#> zizj?zuYa1#7u{YcVz@cOH4sTbTd#W*qaZ)s!zi_zTa0kg)+~ndTHt|3@o71))WwmJ*gc-JC*j7~4h4JDq1xERXY2de zw6(A+3_dHlaRsJWsztp|CRzxotWlkJrEn7v`=@T2s#{{ zyO}|BJDuAAcnktVY*^yzZVhm<5-T~{#{Pn>gh49^kD&LSydY<0>YJ^5S%MQ?a66C| zB;a0GYtMsE;J9|oVr}iD8f&jh?)(e6wT^dvsxQjQ(oz`o!0z;~)KqP2>*KzprIYn{ z{i!5EpIMb`OE>#@{O-;skEg3%p6_b$b6=Y(XHjIACphfuRx~ymdwTxDQ;?&SBe@th zZs8h@KsP-eGd~!+xF(sf7g3@rnm*Lny)c(iFfh-1TPP$TR4;Ikt5 zGM;ff1%O;~C=dC)ERV)gEe_{)Y@$Y0BTRA0o;_)EXNM4fH8ijDG4jVJk3GUoKgakN zj?aAkng@aqrONuL*h(k6pO21Cmwjto2A_({mDA%SIT=}FR$XEaKi|_o>KI_H3SaNm zmbWzE;)*Udds)iJ{6#JEHl!h**&3g$r4&kaKDChd@|v8hS0W)PjG;v#6a2iLZ`NQd z7jCbN%g8@78E%zF7OlH5KF4Hh^*#ITce*5VFf9wEt%%P&Joq?>2No7sgoIc?RS43P zkWiUK#w4K00MhvPu3sxK5aq7C=`&a@ZDK>jozk$nAbmYwclY-C40$<-!Jn2{u!4~` zFqnMS=YWoYkcR}&o;1F-te|V=XAyE`F`X|4gB-!6OkM{NB-(ACU-jG(H7gepg*{5t{o-F|^M()=0M zn_;9U?HzQ+QI8M|b3`mq+HkTsX~`o$wLi;rj59U$j_qsf?#6l_A;u>^Wy2pK!R6+4 z{XD@PL?lJtgbV}LXqQtuUbEO|cK!V$Rpwy|87xe61+_JKnIU#RKPM`|t$bG`&dBUj zONwyI^aZza6V{aqB{oAKw?p#Sx!PA-`H0lfKTNv6fMP8;*o&-DNigd>8QqSV(ThoC z>pU{qgJcgXN5L z7Ibt48%Hy!$f6+4=#q1=46w39l05qfQ8)OY5_1aT4@fL0Cp)$_5`x)cI&+N|HfCnN z+N6MY%YE^}I2m)~8wn^!bQb`fng)tCZ7q6{Gu)9;JUQ;TK%@TCxjFu%zGKj&FeC1S zM+`i~zr9p_w24;ax5YwB6j?KT`Ll%*;^GLVdwaWo_zeyY_HRl{K0?Uk0k!3(n3tD^ zUK(m{;i|)zxVX>B$%Liq!9`e^B3QY60AH{j`Rm)-QapZqc69{~*TBH0fdM;)aqbsC z{eB?}$3E()Yv0Cr$q%wS3T239HJ#h`*f*s;)vev#h1!D)K=wxbbnsY-KrtVTByP6F z44Mvf^Q^Cj0fKDr=IR3x(e+wyjCy%GSnF215}4w}<7yiBg3|Wh6LLIgKD%GCX?*gj zq9*e)h&I;7IpV?`U(%JTPlC$mVmC`)h@}>@KcN%S*U^#Q?Q(YJYRW#3h&WVY={}mo zj)_1V3_|5!sz8(>1X)!ftoa$qD~4f&-fuXpRf*nFX8l=@EG-tI0aDq{l#==IP6AHc z9QAoHAr<7im)R-Y%r4c}7>?w^&UqFW`zm{TdV_*ICx!WW$-mm(oM7(Z0Olbn>0+;T z@-ZSwQ3Axzw_3}D=1cOH#N>SG+wr}-uNUw{qRB>0s_oO0Ggq#jG_E)qDE9fsH*5*B z6GKDV8k1i;p)=E3phyE1TG-k%oWl(yY;59@rwGL8I5Yl^k}L-$1r{w{we{KAg+(%d zmQXuBJPtBaEqbqr!_1pVNG@kwwe|BSC)E6wvMCZvO^bxeN3g%QI7TK8FcQz6Vc_?^ zPsV@KNumfJouaFESQ-q8l!2uQ3V7R4^XC+V)Eakn&(`ixdD8iA44}NH4alw!b_-E2 zzP`QqdV5{2->Sd1u~B2C*3%P5Pvi6#6L(CGhn_vDvQTX&RpMFLP#(Yq8S`LS}`RAV=U?<#RBR8n(XirM4R1|bdB_R`3NB% zQ&hlkY0S!2E$(oCe*NoLaO5?*r=%q35C`$`O$P>zOxy6M+?w;6&n4@LJ;(2Ha=s5= zlaVD;vJbcuu+UA-*fROMdNjkL&%~uJ9&D7TNO%1=AWSlHH75sof1!D7jNMOD!XjTo zhmqg&bOK-+8Pf}p-9enUw6rniv7+18;+V(hZ|izN-ld~Gqck0`zAkJm9NVTs7YjAD zu`TuX(Ideyr=rqOT_b<&3wV?8>ljSQz|2tZ@o~{uSfC8-?82R=Z^W{auNDDe9T7Ch z67Yt}6dJmHqqG9U*rg^_mKJ%beCj+ClgYik#k~V%cD8DYbU8mD_V~TIc~1b0A#RMg zHzXbgEgnebns`PLWMl<9|NE2dpw(~T=g;+Vjg9<#+Qh%tc19rgDqG5@HJprV_{GK@ z0dPy{WwR`X-H~$nd(8iBzsqR8y0uc05NDH$aAQ=L_0I0DL@#l?;LzYEI_jZ|1MyN3 z!|m{vgOGu;!J_s*+%P^4oA`$tw!gYKR$!w#U}NQ>JoZSQzkG)9X&B(JKC&LC$Pav2 zl8Wk`fP84fs8k2IDsh;+enDG@z{A6})^2=teIhQN+lrH)f1duuPvIB-1XKr96nn<} zdd{A@WtStll@Ialcsn(1FC2IH1;Akf?&&s`mWy?c@T$Q9_G#lbYB2#pRn`|A92uf7 z1OZipr;rmEX009?7VU;DI zn_j#)4M7d^=s(=bYH8u(sokF_ooQ;C0RRCvl$dloE|naBBpIngbBJ8AwS0M*{An+% zyL<)y9N`%z^yZ~m_=qSVp2w>vPc!rlXfl$$SO$B8H)CX8Q zFE18O-=K!t)5;!$Axl;l_0Ss(&fam~f1*^c^+<1bPSkoA~I#wvqdgGLzlQTR& zZ?yC)5ilb$F-YNY&y^U|d=GziAfc2=ibFsdn4I{BU4~=7_ao{aP8wFLBXk=eWao{q z0KtQlG+B~lQt8eZgkhDZ^NF%h;7rh0w~Uye5vnLvR(1}TQdnFeBHpyL7uGfwz&xm8DO3SSke_ zj!QTh{#_4XxpLvi&!7Atq0)!O0X!RvZ&(RMiLR-M1UD2#HAuFy{TOM;!bSMT!TMmK z3Lnj~H@-efDER{mo@%FpMLsRgA1tZ?A&0*~szs@6FKqzT0ZPD>GtA^ir&=6(!m@-k zTS*k{@bxF-q~cBb>+}7oW*Ln%?(L4a7 zb9#!rBH{AqY$r8Mz^|;(Qmff>q?dKj*`=Dz&TGGy7h?|xrtP&P+MOjfJz3_6i1+P)z z4j*sDEN2Z+&x2|;T5z3;0Awp5R>5~g zJqmd)bu^*g=41{(JbodkVlUw!Px(i3VNq+qj(1jng%eo1>%p2 zC?kvTzkC^rm~VRv$VygyCPC-C&7QbMacZNU*l%Et5;BFb1#XFf7|`rBm?osh3s{}~ zdD;F7)v-Fvz0;ziFN;3zC&5&9mYg$y{F*G!ASCIAxIsG+NezOZ7!wiki1xdLjg99{ zNP0#@;0hW1TB|wwXe*k9@qPoU{Lt(qIUf82pjptJlNHV;Tfu4?v^AB6b@dlim4?9) zj$2(hi!+m405Fm0Oi7S1fNzL>I1>)yy>U7_{RNnzRS;m27qK*?SCZ+?f~)GqLss#_a)JAy13)6Y-9`^8NV z5d0vh!a+m^$vU1{R=3vfE1z2@R>smR!Ga_q-%Jb^_#88Q3fuHc=bcuv0@XDpt#qCQ zw73X2K0dqG{o&r5o5SR2o;>l)mSSb-p=Idl61Uragzy9b%vQp7drG=zdH~YiiV^qr-D@KGCa8fu@)x?7Yiw2UR>s4*VXKA`EJsUDvGI z_@E?lq@>K_I@uVY*dIs}CLlOcFOl+Hi@UP3Gcypx5N#BKRaa99r+Xd#jmV?f%8~vF z3KW3CQ(Q5G<$}0IWo1Yk8^#2!@=|&c>>->CaT3ojCI3vCTMGI738sV)vxr@e5$n%| zeXV0=-Xjjmnns4NV8TxkAaB9+yEgvV(CVE3s2__;gG20eX>Poj9B}okZXmVcv9r_t?9BzBsq=aVYapliY_nv&( ze!aWscQ$FzYstA?q(&blEJRY|zgT4k2Qm$z!z2<$kX+sv?e#wot`AlCoJ%hw=E#Rj-NH zuH$P?n}~vOZ80`bcz_FOZzZY<@Tj%6IzKF;-@OBUgDK(Tv$NFB2kJ#Sd_Ct42~(4t zyxfY2c{&xx!Q?HVL#}K$o#;k#Xp7 zaCAuUmTCad_Kv)Ws$z49zxXiPzlct6jlRoQAX?v;^zu|DVhPu(rlVntHm!_5u8G0oG1B7GXNI|Py&5o`SZq8}G)ISbt%=d*2TMhzM<%XLZ&>pbWZ zfg%URbAAdSz1Pig$Cf|7&D`<^{Cqn^K!DL;QFzpKn+lRtrdnj1!8m5&LLQm<<6BCC zhK8b|fy&EYj&C4C96}4M|EcM4MT1GQ5W-0SZUm$p8oGyH1njR&?te-5$n$qgx*zLm zwItaCCPzkmchn=^1vw|aeH74}z_`0xLizEz({MI$leNov94kvpuMDKo0v(Rhm)H0D zydz%w09~~41s%&e1%Is1viPG=am`ATUo)_n_Fqk4Q1Cz@_)`!tn-z6>bg?_ZF4-s` zUIVOp#t~h9Q6LX8V}^m>wVRl)?|hoTTqIT;6#5_=K7Cp;HrDnO@5V5Q5&?=P+IUpZ z++3WUE$x@P;eb3Pd}0kkc6hKapE#4cZmYiQ9_a>%R&cmFhCjD7fgwi0sI{5K%dsRvOF$`t*(b2Y@ovi^)0q)R-iGzy^^7=L8#ZM~u z>?2}FoS6u8kfXA*>3M3g^aipR>@*Vid1}wM)dt3kn_KAxUdffE?aQFr+q7VKi~)zLTVqo;9cA37)>c(5)Y!iD^!(g$ zK`UaxBgY$Q06J__@%-wfgN5b1H-T30?(!8C6_IgmFUDMzndb-U-s$OI<|+X%AgO=y z{e}!Yo}2jl}_S0Ha>_%h(2nm9W4<;t!Qu|{$v%pQU=$ZeOmd+lq6w^Pr_;2N6``Ao0reKI zSIy<+QBzYBKP&6T)d^IiOb!d1CuLfai;EdJ15fN*)qwbWG@*li1#cj2d}oXz+8CXy zZq2Go$LB(K4L@TL7Oqt*Rt80&f2@y~A+I#6aH~G`Riha{X&V)}TmS~i-*kXsgJ0g5 z^9cdoGth`QP&9iq4d~fiq`)WAD4tzi@q(5XWgzice0(PsChQv;&%c<^M_go`LnQ?r zbSuqZCnDP55!y&~aVfA{w5#)sbKWD(uS+yH7L%4Ud7t!4Ue*{aJI$$0p*R`mEoDnH zv%5G(cUxO}>^C^|Hd@Q8-9OE$Q`nP^PX_(&w~HA8OcV5?l#$1RxP^6+esP25LcQ3I5SE7 zFl`;x-~EI3fNNx>DB<0&2leup<-(4ox#alhMd*4?rDIHzw>sqvrE%murxO}H8vg} zACIsqkLeZ%obccvMTghj-KKwIKzm(c5vB+>XaRL-&P(A|O0^VFBowKVy1NI1piL`x z7#4LA6>$cXnAh;pnId4!ZPX}tD$`#>4P-YrZv?f;@JCrcKX>C=yXwSiRerJe??(U> zFf&`v&#k!F)#@>ex+tFnVKH|?y`#dow&h+ZrI&z~rV<#d+3oeK={4LrB`->ngzPrZ zKP?Sy9SXRUf>aBvCt#6vFDx(!r4x{DukG5*j=iGD#Gy)gkNz|ZNMLyxFG)WceI6Q6 z-Q0kzu8ji*WZQ*TMka`6;H{w6?Z;l(gdQ}sZ2$>d5LZ3j`S-`$lxMo@2xJxdZ7LOz}YQ{Q052N^_qnJ{Y7KjKL@I$f5$!VG9@Fvf-o>6le?@O!(IQ z`_Mt+12rRkD3{|0oId3?NC`|WI!!MvPAxu84akH5A&m*}*lHJaEP4S+@$S-izdOdA zpT8kb0o&_x=?kATb-(+_^T-uoQQ2GYDQa%ssoyXwGZ60ojC6ecI4kYhf25d`cI?_5 z<+X4UBfyZbl{1N(p;+YwM2`cR&adUNFDV;f2zvYx@H#qCXI~PYB`<=ea3J=YHJHDk zZgIb-OnDC&QJ{D~dXx@H$4jI~-Rq2%%j@ee?Hw#1>@Ni~%hk0I5EUR*$9zY`#k)2B zka%cHbX^>P73d6rxw?7|5C`#xfly1@=n4f+$aFrH(|LCu8QCjfH<6A1U8)(~XPD@o z7L-lB0OUdY#WKImtjjb3Di?REgIZ=_fj$8|%iWy}^|O-`_Yn(u-q4bEhaSU_pLj-| zY(d(XK>FQQtgrtMP=<^+A&6!@IHmmVo0maO^ztGKTVpepm^$6c!lQi>5xlCQUAhm- z8nNI?kO(R&vig#YeYr5;ukd?>F8?k^zvQE*_iuD(o^8zwp*rGyC6>J?~6r)8Yk19 zsamv6Sgrf*ac`P^OTF8L9Y;~ZxAb%fy=|d<7?(?mwin$nC``Q`?Wo1N4A5PQZ zY)!`E>lUs|WlO~z4Gr3&!e_wbGB#EXjCjBdrzi!4T)I9nVKC#``?UI(Q1jkj^8_qa z8h0%N3Zw59iNqvmn^k=oe`6s7$p5Y472qoCbF{Eoe`rMK5m3_rU!e&lJ{P>o^cYR91Sm{Ltel3 zV!94Dk^r{4);su2Ao^{RTW@I$_zM=(D z82yCO`|~Fb^RL`Cyi(5%c_RTm>2{!>{2iCKZ{qV2l4xV=e3O=~y*&k15{}9bUv2{bJfIzP?uv?lXq9tMw*~b$>`Pt%=z1mKqCts z7KCs5fl&Mu*=8WMpuEMC{I&(mzD_dX`yiiQ06z=S7N< z`c1;|3yV_MyhPpqf7HO=wup7J|4{=Qk{5hvvMdMTVP3{-J!A8Y2_p6*1>03-4gY8l zEKd=tRiF~m;KHD((f}n#&wr82yRlwRKP=bse$Xj*tdI4jLNqci1i|i*W%CSEU?yP0 z0AmOiH7GX)z2buce}+GCu*aD(A`V*Oy}R0Iy}e%C05;1TP*`F%IXG9H0zh%L12)B| z^YF-mMRs)L3zi{0{abLdV)a{IGI%@5980f3m6T%7Yw1^*4@stj_&n7}9ml$$8wb>JoYEk5y; zKpI5;WP7YK4Ff^nONU5bsijc7!Jt47pZ_w{66_CCAQ6><2uX>d@g=psWP-OKkb&(N zt)${ClfkqHQS#!T)$`VqAVNY9#$ei?+%5Py7|2~MSL=hsLH$X1_2A8$<&+#~fkkzR z0OG$B20#FgaE|HWmUrHee3JVANTPkq-qmU@0&$PBGAq#qXay9tL)59vj||=Qhzx z5yI?A1>?)uf}CKZ)4Oj*=olEH0&)y$LKkyO07kp;&-M3b6OEm2 z?d^_N$2pRe(rBoM5I3*jwfnn+TK5G$sIbR3DRI(%>8#C47|e4I_FxGzn|x}CzcWeI z4UM!FbDFNG17n# zeknQ8Sf@E7$W-+l7e++r6!!IFVBj3EwBSmE{c>nev${I2Iy%@u61U;r^Q|%<=a0R; zyWRkFXeH47m8`glWr1)FIKwNTv2TrvffquXP#E-&96zF*iHqed)4O(+ zl@);VM;d|6S}CWauNW8~x8AC!$Em3+DwdBffhGX#1_Cee2Re=mOwIzP*LreagHCl* zhdxjgZ26b~?q!&^-rKjgfcF9A(bGV75Q4R;s0o?B0;HsM?(RcbZhLj?^Zvau3_gey zDo0~C$J;(UybkDHbYynU5bOOpI`q0{4(B$*@G}(8RK5`LUm)#+{c^`&)w`C9=m)WOGM!8&u&yO2o$>LqQn@Qet*%>+JUU^%?rN?pHLU zXHymVMw*qwTcZ`3a52E5{YO*2-R%EqQoK;PHia!b_Y3ldkMHl|y*?$m99c?dfKptH zN)<2(7BMVYmoq=mu@x=Fe|ZNsWUZ~V0TclUSX%nudJ+a z#P1<@s_E-vWzCBK^Vn>|8FAzaym1{LZR@Cu78sIzx0I)W%LjO3fPFcMqus0zHRBE6 z)bSG>tbR~e&DNNHAU6BBeFQW)K91ex4t9Vhs6SU2zCHc?m~CaXM?;HVv&B0@JbP^M zxd9fB5^GrD9wA@{%sLxe^VEnp46 zz&U@MZa0UNkvwPzXww7$!`>$VD6wg)|q_t_yQZg5&d`{L%av#s0; zw^~11@o08mTv#ZALIvK;c>!$*__kJ-6Cnip3ee%^qt0$56uVQ8DZuuDyv(A-{sQ8# zE5St!W?wrr>JHF5jqXKah>xz}JG8(Q%`Vd}ffO~#?Y@uVX7tTTiVUy>s?3@fuk{6z{L-H&Kx)sZnc~%zC8Q zj%io?&Urrubv8&N8ruYc;18JJ%}wDLW7$^}?)x`MVQWC) zFD*p_er<9&b4aRJDx8xvO?>3&=0p-)*#9Vr@HuyUQXK4TT!Vwk&-;G8zv@Bz2$`g& z!oZRgp?;=x2&jNiam3`!rN4%Fq}v1pYk2=8#16C3`Z-dJc53Rs*9@1zjzlvc+&5W{ zE&;yrK#1^*9L;=#8hVxA7-Mo20`ZNmJJ|es zt%8gHkV6rm9>v6(J8LXoDwIx?X`OII(e9rFh&{)l!&i2%l_(zffm=>=Q3>;(Gjpnd zYP`OIzZyo*Ny_Yfz+(WaJkZ=*J#|3Hbiv4YdDUMrB~<1?D|a-~iFef{p^$`14y*NhJ2hMlN85yMyl(BO`Jj%6ob6 zZEPHTsp$0tV8w36MH4!V2`MLf;ER6v-OqTOFy+Kp8G^3gy1ih;`V)%x7(O748!G<%FC8C4ntVjqN!Zup&=5m$3HD8wx|_KSp2Zumh4K!hj3#Gu zB8+=(6(HjYo&lozAFd>FFO!ZPQh+eXxc^z!C@xyFK3vGxW}TOvkWX zYTzdVI`(=mMoGyyIsX-F`M~_Vf457cd4`de7KvF2-| zuv`0~@AKO)_Ikk{Wp>0z=O=JYy8t)FWkvkRNU4FxC(SMm{++Vcocz%RJ}2uh0eNaG@(D~r zj<#Qh7#JH75#l_q%tn8T1L$cJQq@?fP*|AP|1$bR%XRPMt1;8U2 zR{r$$>DJgxgBzoaN&s(3PZy#tZ7_KI_Iu{@r=BIlIGm)}>at^7A*7gZi}#KUz<(^P zoD3l|5hJRy-(zApDj9bVm~zzd)QW_b8z=)l(czcEVDX~EAssdP`e@Y8vfZI1cNI&! zHtv^)aKPEw&Rqho(+`-*Aw?f{G1qv(OYVq<%?dsa3fa+LbdO99TK%cGT-b=-!_KqYP+tQtCK z)i5#f&b=>hZjLA~mo>}`&d30IOs7c$dy*Zn{jQi7)o+nS8wZF}x7@*h0dARD$G4!s zVy4!fOZB3Hm_4blq*4Eg;g?lmunz$vVzv$op~}$O8V11p?e(O7L-pDIyn9j6!tL!v z!u>@n41@*kX3u3n_ybb}&ZJfmP-Do2TPmun9lO6PkdeLav>WgVi-_>KJ)6vbpR&HW zdD)IFOo#s!JPP9a>WWW5fK|8dM^@G&=JT!mj7m)=@Z^K)>gw5Ad#J&A?cuLL^ry&( zV8eWcrhW5SywHJ2lx_FgG5F&uO(r6u1hAjk#pQ;NH@C9VsWY5Jm4WNkE5MA%B5?}6 zeroK~T#44#i`` zu(q*z<8k~dWANhqyc4q9e6ir{=t$4V2%g69qp~tvxsaQio1UJ&;JUaq5So407cWU2 z4Ia*r?zLa9k}nU)1gKz5$C{Hu8o!#F8Ua537o#cg?2fZNusgw7Ss6FTh>XW>uEobo zMFlV5Cvjio+({@>t=3}A-RTrm$bBiDHEb9&cT&DoT^I-ek&%(n(a|p#GKY<)iqR1u zk}tiELn9&tT{ees(k&us@k-UNS7Q|Td3jGiZb>*81l@Q>zQ*JG68^^|O5fRot$zoH zJwd}2A+HJ@Y@h_g^&1+M2c+o>DsP9MQ~mYWax{2?1;xc+E8|Z?P*NlMi%>_eI(hi` z2!?e4Kjx+^Yjf9}6z~ZMFn>UTjKJdqG9X5u0|Ef;I0f2dY;1gBJ3cuXBbC$E z*0!)WOq=xs2J3*7R8={D6L1=&#TqheuQ{98pggNbN3#EgkMX*Cloo@cSrmuHYwuB; zw^m!16^8u(Ve6}-y4-?ju>hqcq(hVjX{13wLPSsjLApDYZb^|6=~lYCyE_D=ySuyJ z=zX=`daV1$U0&~x?{~g)X7=ovy^lcnI=ptUw{Q}uD=uai6r5?*i>12bCW4HLO)R`X z;QP|)V#^0=!~K5oh*C5D;Uv$Rjsg9w{ey$2SiU(qIptqK*{_LTYS5nujtPs)%i!~& z-5E+NnNnEiseXW#JnwqLtd=e;e$s10ffmCo^ zWOGy|?!4VtAH#f4mBuPk+}!Cd#pAR)1<4`?q0@PL7Wk+>lqAA6XlGMoi`dT=R+Y-k zI&ZGajv=mr7md85BiYLPkQNmfw1Qz z&X5r=FRwL^sw+xT9S=9~UmwBW#p$qL{L0jLuF*?|Z||k3sFxJg#mvpM?Q(Zi|0pda zzxjDB9RH({Bd^vcI z=<^W&IhQAbwVbB%j^a^eaG7awv}z-mL?X|DyWNYd*}NqDSi=;(~V z@#5C4TlenW8%&cS3*dJEq|%olXl`ummx_Em22agg|L>_sn-mUsuO9`$fzvo{*3bOJW&m>1$ZDH1i?YE#P^?$Iq{jr}hljuYc!4S(BT!Z4T;eblTJb#na z?=Nw&WB7gJ459*j$*s*zDw%kdw{P7R>~?C{oLqxQ`HfC7S9cZ$M@PBLr}@Oi+u#`? z2IDj_2TQP9yhi*Si-8EIJdlJ)+>ysD}4#DZs*GP z0~dDcZmy#_jCX}%f3mW%jhQ@GLZJMRn~~9A$wy7?BbkypWK?`)3dS4pd}ICnER2lX z5DdMm#;R`B%$E6NL4Le!&DyYju zBhEfH_UF8po|p8lR`(+4{lNazNJh8YB02O__jSQyUG^Ah}SjxtN=z#196rJ zmrJWaanqaShlGn0Q!^8PX7>5fGp7;lkJilb5bb}kuoq)@je6Q}1(ucB<|rNMzWq%P z#z@wo_kK-r>0JKa_P`K$Q3t`Mi8;HV0CVUl3y@4f@3k;5yL~}!F8Wn1e3hnruwl9$ zp3yG(YboBR(vxkx?h8c`HeR zjgGzcJ>60EeNmsM^Awz%_}FYiE@Z1*c38tIGDtj-!X;CnQ;>j7Ee(0Sy}eyS`_jZP zEkFOQlvFnTAI2KNb!%4_N2x7`Iwt|w>q%$Eh~VG`_<(KO{HpD|tJ-OLgBks-^z>6u z8cj&3s>T6~1}GC&!I}OMTG`&-0FNYJy@G!k5YPcXw#Sbj|D?~XaXhg(;?V8H89xj% zL$FHNtM$I6dM9q2#bx5xMLyd>{3Ox3Eblf3dF6@_uCxuR+77A`(eFQj<0tlCwh^|C zN153^e8d;zV=WO`QvKSI7PCFrJbUVrW+N5vd|rvto#0-Tf85$wl0gzCxwZOuYmy)( zeU+5-+LM=m05vLugOZsTHW$>YGbz3=U`Rlgr_Xgv-JpT@`O-oEnWMpK#dj2CiT5{sgpBh_4CdQ{vlfZCny3SQy zM#jA5+as_;Gd47YNPE zDAc@&CtjAucN%A_e>);z(3CisUvjxTJe>B5bgFa|eB(htDkTus?S!Q*;L8_;fqLuK zWQMFUKVSIP1m4bytzW0rEwlKRC3kF~*lSj(MIKL~YsWf%A7d`T#>8B6h>}-OU=t|M zQ%Rqajj(|;5B^Kv{QL|BUC#Esj=O5d^<#g8$)K_J(=D{+JJS6%OzVweqvqqggqQ^Z z5d6PPYRFWEM)Gx7UomVpRlo;`yG zO-V5s3JS{Dqh~8tQ$oXP7cMR?02|Z`bzT8*T@Zt^*0F9Czq;Jt-yfXmz*r*=tfc%2 z*z`7mE|*Cl?8yXp@Ra#~I`ZafPvg3HXsp({)Uh%dnjd9Bi zUg3X`DI-0dhL+aS+FG^NsiL~tNqvhg>PJ`|Dr^6`8>t9bWr5WlzvHq0Owr;A2Sb$9 z569KtzkdAq(G|fYE-Jb;SrIa_j@REK>wkE~qXpY2IzApoAb5?8j2@t%z}D#+PUrS3 z84(~2s&hD62Twv=MioU>)hUIi6j-z{oA=`JVL7)4Uc{F#Lb9@hP=p(FSpg6M)W1`! zP1B5#zqSz1%-}=#$yHs zKCs2SD-_P~aR6Km7n;5S;EaeE0ZX+!wHgO7*dri_s@=XfrC*(=Szp+Y_I=rSl33WP z&*Kiy82MGrG}8G0Uc+_-*(?kegBlca)C99i8CmtV6Gtq~<;|v9OZbqKLut-DveXmjGh!LPy~P7fbGd2YrMN zK}}#6DdvygzoR)RmE?|VYkRVtfjpW>zjnslmb(%M|F6MZ^TT<<%9VR+`1R?@?}Sj) zG03+U^a#VIYn`*=ct;czMj)9~-Xwi&xlFsaJ<`3p9&9#*tw*;3+EHU8BbzBNIB*QO zue+`W`SEb3gju_BhJMcFePWVRlSsOKiV`M?hKh=Vi3tiBj`0Ent7iCVYvbhPtOLJG zux%I~9ySnf#)c!lw(W7-?bRi(=WKQT(^FeyG?9h2AW5l7a!Sfdqam>Q{P;?}S#1hQ zMp1EeuE~dpkT5$Z2f_y!aKcx=0vrp+<}Z^nwFr?&KtKSX$cGOf0QjT>>Urq7z1QF0 zuj(sPR9IMfatc)hL=v#xy9VwF{sF_xq$_}D$6zgqLCQzN$QaLOUlKr9C zH69L5waZoX@x|`$?mZOTL$#9Wd`%HEvu#*o*dE0tB|9^9edSlA4tLG9wPjUQzyVZt zTpfy@I-QOmdkbxBc2cXyLn9m$b zUb4W^jS*Jci;{1|S-iIp^U8KLcf7y2v@}oMRZV_~?dj75>@Bu4!!H*cY?Thl%5)xQ zojl>;;qZyz?I`@qpG;7ImG#H*MXo$=rI$`5LuS8MP-o5CsEcMV{jST0sA$#UZ}BZ= z(%&T|CMER;YALRsv;GJ$piLf|X25rdB%^bV!{cIcyS3xS8Pb6L=n*Q0?PL*k@3g?; z>N~#@*uee)zdkD?Bf5hnHHSk{3M|K& zy=iC5^h_ivaLoGqqrt{U>NxMYG+OY!%C;>$g450p|FfXCi?QBsJz0Nay~xN&X0BTC z9{+8A;E*NlCw;o#CNH}Px>lN+bD^Q3o}PEX6Lb7B zttwZTb&8FT#jLKZwzGzUf`XaxL`zGn@n_z&t%{snXp|iyMlN^+{{3;gV#fFP@hJ!j z8q1JfyEvKo`L?_gxAQ8RV9N2|+i+J?WPoq<{PE*iF!cmxY10`2&eWY}_|FeJYwG{} zPxoEvvGRUqn)c_ctb=1`lHy2yCHf!h|9#44mK@@NC=)R;F+_D3#%6UqHmOAV{fvU` zXCk3U-Xw|%c-;Pb6b~sWcJTnLnPS>Mt;<@9qhgkpW^%h51w=({l!fpTe#KN5(V_`nnLJw(aGk`j( zuYaL8o|fgf%Z~FPB`HZ8@*#hqoPvVjr$uD8laxGOQY@^2qnmBp58&7v5K%f1H4f0D zD9hUA4{&;|-=f~Ud9!KsO}}6d(-;-P$_4wvk0iRhg^m=+YBipQR8d z7BGJ*DgEiwCp$Z?G)JK_@#DmO*9try>afd8r|q@|Sp(y2lXpr=ow=!Y1XZL3si{=8 zq%ON$r~?o@WD*1dY;cG@TfRMbKzDh56xG0jh4uMWvUh@@&jJE|_4bjzJpnE~9o2JL zDXF5|Z833iZuiGrv7zbd4xbN-zC8D8dL=2b%E7^(_|{wd+X9F2aDJJPixXa>#$B*Y zQc{YywHZEiWX7d`Ld%_3!5tz+x~tIl;|I#UyJ8&d$%8dH{{H;#Z(Xjt&5gSjy!zXZ z3mR}ksJmvWE1Jg7W245#j7Li8X#8glY@u|WH@K+&{ge&3*wn!cO1CL!~GK->>c6W9f41jW>GBF66%iMvQE>{m=JPcqnzLIq%$2k$wN(cCN9h zy$7_#7_JQaI7-U;Pbh7>+ph}Gb+ zspNR^yS246KmU!A(!x1^ZTYEB?)I;VGFwBVV^<3dG6A{GQOgqe)3P!kMb(1pYMqs_ z2%@4QBPaTW)JjdF0|Mf|G&Bp0oO+k7uP+~M^ofAVH@A2A zH-ZcZyBfggv?`P8_r1T4(r!eZo$K&KrN$%g5f6Co3Vq0lj*7XcNl(8qpSk6FcAPUj z$o4^fhLiuQCIXLzdd1DJON%vXeT|?>yG>qJHfK?%>`U*)!@K0c?SK`KXSp7-&RT!` zsP5a$cKddDXlPt__r~`dK{Jdzyd;baW}Pu+=T8>FVJ)KFZBiKtl@xlKX6TjzcEFft#ln8>_L-UbfIA z%GGGSYIpZdTj0kBC`E-gJ}(m=BfB>>j5&?^`ga!>J{TTJhzwoqysQ-<4t!pcls}x| zhS1y8#KmGM{_b5)aKGI5Wb_KX&d~-_H|kGT*ToLeQ=|(c#M*CfUi5cw{90ve%k;7FJe-a-%KtGk zDTe-mW^z%;<{V~`zD#UZ);o(`L`+PfW%JiWbRMy~hQ{=1X*&SQqmvd=;&_vkl-F?3 zVz}P*cKLmexlnlf8}Y7CsaZ{S(m`3CIh3_i8kMAyckk`3^i4!X8jMZ&Ojh4lU%7Sc zHmL%pq?Y1AshOFbxk?-%Q6368(FBC&t5a2Q`t2E;h&0|yOKWP(*6`Zy{~3DJ8&^d6 zP|r%$>d)k5SI@Kc?I}LaGRi8OXH8m2)-3P!sqYCrVO zx`T)gpU2;7nu_Sz&d&>9Uw>$A9h{s>Qm^H+pL3rIrPX#MqoVmrjm6>nvZt{z+IXZ; zTdNStk+lt(;(~s*=ke%7zLs3sb#+7S!CJk&3YnR}_%0`rV9q)+|IIqRbTsJ_uk4-Y z-1$SQmWxZ;veMfrD5^a(NCZ1OX!$JXXQ*Wa)>hMBzT`Sq4DRYxwX8;=kzOsEM;q2*Vd6!U_yS%H8pk`-f%xPOyR$vf z(Rxfwx5qJWT_ehZ%l#~aV4d<{DlMbBK-^hOwo=NYM`2q_qMpX-r}x4nYaBUmx}$h2 zDrT&$6Eh!}r_s6*jq+KQUuhqv{S z(N`>Hyx$v5xxHQDrKl;lGtX6C9ad2h%GFg4C8gH|kKzl2G9BM@_*!9M0egE)PoBgh zBI+3!(2R|)=BVZH|BOo!@rS@bK+rK&m87ifO7cKS3sf!t-4Vc39Np1!2{jt`le{{Bv`H?A`^ z^c<|w>&vA&%iZx^mK0b^tNjySz7RZr?oeBsHCB%CjQi{;{269S3N=zi0roB{oD>|Z zo!vQQXh)-ex_nC`Cn|b^g133!lfcCPq0o1Dx8^f0qADt*(ky zjq}2>!Nz`rgmkBph}Xy0^~Sl*+PFDURMy?Y^xnOTkIqot0=J82d;3nch@_;Xgv8f| zTmQBc`X>wIoE%eWX;O>0%9PhKusm^G4P+eUK54zupR}~L$BJxGP>gYz;@9U2q(nqA zPBi7^17bMEad1K}E|g;;4GKBEo0}&|cyq%;Pm9Vv*7GVUPpGQqP1nS@9;S=d(b`1) z0=fskyy1_W@$Q?Wx5^WR&W<`Z#|o`6Y>qHKQR#AJucNbkvLk5VXScjOo|xEViMcaY z#DtFi3-*AQmnjyW{^5O6gi4JpFz>SHTp1 zvC8DZJ(R%hX_BN2?(GH-!6#3M*LpY9YA;J6eu7*zN11m_AW!6>=gY+U+$r+SixaY! z^HH0djjOAsCQ&2g5KuLd62!c6`;%Jo)U3zBrLVz*Q&lCmxQy-M7)pn=`NGpR*}TX| z(-5i-60Yw*Q;yQo^f#+)Q)0h{MD)aE;o_}a&WW^)moz|HfY^D85etv)CVTt#HpCx7 zf`T98)00km#>N*lj`vK09-xYW)0IT~Q`IREK(q$NL9VB}L2hnGMn;8J7}AmsHF|Gm z{RtM#W~Mm|vFKkhor_Y*KKAK+8y2T3K@s1o#bRhk>fn&MX@ncpW|`YejP7%^%Z!dO zV|8Lyo1**n%^S9ZvKB2C$TYWa4+F0dQC4<;%QzTT2~GoQ)~i5o@Aq1X#=5$L>q9qk z@*KZN&}Z2!1R&f8(lD7zNIER78#RxMzWwy+{pV$vCurAo)Ntbf2WN8fpu;2Qt4p&S z#b3c;C4!GN_&pX~;7?=Ym?lQM(NHF6$ouuRe1+CGDMZl2$Y}xL4zL<*tCTG2aEglR z(f?o*dEq9TWupqaD>{5xO?{@)BdWOYldNcnR&_Ib-w?%MsR!Do8bBw(yLLY+%sN~ndzmb)tMW) zqb$7}p1h=IW)=}&*+~*N$3~8Z?0R+@+0pg-#G23d<=H||xd)Ot+*i=q*5;o?MD>aS zVvdmn#kYu&0Di~$*jU`VNE3zp<`n2{4f0itbabq*UYTK2cjhQPvRG(+JxtjD`z?=6 zH!J7K&!8atckcqipkN9yQ!HC0~Vd}y#IpLH96=5KVQT{JE*qeQp> z{d!xoj`<{)IWt)moOe08AK}M=0bjn{I@?QXnGt*=zM}E=_tl#i)C57n*#&JXYU++z zDp0E*ACp5+Mn;(^HylJ@eU9R#!KBrN5ONZ8oq!fwJCWZqd^-B0QXD^8qSzMr!I= zqnD4SW{{}pJx=p@AP84)$a=+Qh}-jDF|Vfp9W0;R9_J zfMy*bOWc1@NP{*u7dO4T8M%muyZnA;^BK+5p6<*T%Ot3AMpj1<5=yoO(q3Jajm7cW z2M0$1et}oAyv#O|J4C`;+9z*SOGQP6Lr`JAG2HdxgOH{s(Mrz++SXTuJdeC{*eE^e zaz=Ki*!1)yhKBt@&vo@uuNFI2*4J+(KSA)2d;flAD~{Rmc&4C$dwcu!=TFuAeEv~U zBQ^H2S|(0EBt_vow#3 z)d^z5Ux3Tnr~^FCc`J znQa-FnsTym%PJ~1g+GTb#KHcPYKNo$4Yl}SJ!)%dDJiW@3=?c;_eN#YhRsHqZM(w1 zMn)1BH{Iexd;WKpBS!Qk9|wCZyJh0!Yz!7wBa`xTesb~%6a`Z>eZaU44JTMwpTa`L zNCm1}#~pgz7&W@OFO7^HEg?2Q!t?ShchI5?Zohpy->9t((#h0h;=tg{#c5>0(#21g z`^XmNfUy1&O0UKY_3?xs#|D12_|yMR^L3HCyWNv_ArgNW7_uwCil2&#m+LgX_WC6e z5x@4rn#l6dmj;dNYsawse77n`EA0gt>a;Th@w;|7PD8NJn{sN?ySsC3XhesjLqDU& zx+f=hL`65x;)xD-ubsyrSp(U6u-_>iU+i*emlqH)?Y3-9KybD(lEBFtO^7vLzhqD1 z{#b|g(TA;51$%psiZel|Dw2}QEcMlV0PzN;y!|~^P6LOEq()v`yk-1cMNCY+dFYoDQR^x z#cKndVQjteB|^H+KZ~$gb@sF1?`vzjV)_1vUKg;>NYm zVV*H5`*-9$u0 z`K70}!?_u}MK6W}U*C$rzzC24!`%-&#mfphtS0S?ui>=g;tD~W>gX_&lzdt-R^o;b z*kvf^P`^+Bpqq%3u(DhQUcaA6O?%hts&a5t=@E2bQ5k9IFdGZd1 z+zD`xN5|~@r)%g76ps~hwf%W1y9nT}9@lF_9*5%7?WuyEo~_ubPpEz^_=M7|?6Gq4 zLsnPk2kq_M?d?)%Xq2#pKY!k8kkfh*k&zKzUj98q_T}e;yw59}<#msUcNy@(2(C+FmD+8=S4iDE>;BlGq?8p)*pwLDmTHar~Sf6i^O-d{s9aAkX;3gy8rlF$p zw0Y@9{f`41O-e}tpVev+pKk8{@{Ek(65}y7wU>&C1mFK31nMyFIW#NS3dZ6kuC9%> z&h)A(xJ8uh4UdCqxQJn6U_fjE&`5!G)*7%yBTc<)hx3i>Pn^GA_h+9% zP|FuLT2}_|KBqG)X?8QSTvhp@$T0bK-&UXG|8VEo!IjNUVE-TD6DX`PF#|nr_?$O} ziDde?Y)?|Eng0Ww$jJ2>u^7+^Dl?L=k7Rid;BA!=dv0&lynVB`-*URaBMY6Z_7UOv zSK~OzSH4g~PgSi%g)c+b#BLG1QgQ^#OnmJwPq9a|H2l^EA7NwJ;Nacl=Yz+oF=Pxk zfq#I)k%DTOQH4vl8JR_z9eiPVO`~s9$ZGzFG?TbLJHdlSalAg8YZ3%dn3dUyUb_TE z!_KA?3?0`uHQDXv6x{QD*}9-P6qwde_k)+qGdkL+rNy%PiG7`&zKC7~Ocw3T$naS_ zX5qV}ji?&_hkf>kvOEL?mc6_pLdlJk@%0A@A2FGoYJj_@7 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 literal 0 HcmV?d00001 diff --git a/0.13.6/robot_8h_source.html b/0.13.6/robot_8h_source.html new file mode 100644 index 00000000..66eaddf4 --- /dev/null +++ b/0.13.6/robot_8h_source.html @@ -0,0 +1,291 @@ + + + + + + + +libfranka: include/franka/robot.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    robot.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <functional>
    +
    6 #include <memory>
    +
    7 #include <mutex>
    +
    8 #include <string>
    +
    9 
    +
    10 #include <franka/control_types.h>
    +
    11 #include <franka/duration.h>
    +
    12 #include <franka/lowpass_filter.h>
    +
    13 #include <franka/robot_state.h>
    +
    14 #include <research_interface/robot/service_types.h>
    +
    15 
    +
    21 namespace franka {
    +
    22 
    +
    23 class Model;
    +
    24 
    +
    25 class ActiveControlBase;
    +
    26 
    +
    67 class Robot {
    +
    68  public:
    +
    72  using ServerVersion = uint16_t;
    +
    73 
    +
    86  explicit Robot(const std::string& franka_address,
    +
    87  RealtimeConfig realtime_config = RealtimeConfig::kEnforce,
    +
    88  size_t log_size = 50);
    +
    89 
    +
    95  Robot(Robot&& other) noexcept;
    +
    96 
    +
    104  Robot& operator=(Robot&& other) noexcept;
    +
    105 
    +
    109  virtual ~Robot() noexcept;
    +
    110 
    +
    174  void control(std::function<Torques(const RobotState&, franka::Duration)> control_callback,
    +
    175  bool limit_rate = false,
    +
    176  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    177 
    +
    202  void control(
    +
    203  std::function<Torques(const RobotState&, franka::Duration)> control_callback,
    +
    204  std::function<JointPositions(const RobotState&, franka::Duration)> motion_generator_callback,
    +
    205  bool limit_rate = false,
    +
    206  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    207 
    +
    232  void control(
    +
    233  std::function<Torques(const RobotState&, franka::Duration)> control_callback,
    +
    234  std::function<JointVelocities(const RobotState&, franka::Duration)> motion_generator_callback,
    +
    235  bool limit_rate = false,
    +
    236  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    237 
    +
    262  void control(
    +
    263  std::function<Torques(const RobotState&, franka::Duration)> control_callback,
    +
    264  std::function<CartesianPose(const RobotState&, franka::Duration)> motion_generator_callback,
    +
    265  bool limit_rate = false,
    +
    266  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    267 
    +
    292  void control(std::function<Torques(const RobotState&, franka::Duration)> control_callback,
    +
    293  std::function<CartesianVelocities(const RobotState&, franka::Duration)>
    +
    294  motion_generator_callback,
    +
    295  bool limit_rate = false,
    +
    296  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    297 
    +
    320  void control(
    +
    321  std::function<JointPositions(const RobotState&, franka::Duration)> motion_generator_callback,
    +
    322  ControllerMode controller_mode = ControllerMode::kJointImpedance,
    +
    323  bool limit_rate = false,
    +
    324  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    325 
    +
    348  void control(
    +
    349  std::function<JointVelocities(const RobotState&, franka::Duration)> motion_generator_callback,
    +
    350  ControllerMode controller_mode = ControllerMode::kJointImpedance,
    +
    351  bool limit_rate = false,
    +
    352  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    353 
    +
    376  void control(
    +
    377  std::function<CartesianPose(const RobotState&, franka::Duration)> motion_generator_callback,
    +
    378  ControllerMode controller_mode = ControllerMode::kJointImpedance,
    +
    379  bool limit_rate = false,
    +
    380  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    381 
    +
    404  void control(std::function<CartesianVelocities(const RobotState&, franka::Duration)>
    +
    405  motion_generator_callback,
    +
    406  ControllerMode controller_mode = ControllerMode::kJointImpedance,
    +
    407  bool limit_rate = false,
    +
    408  double cutoff_frequency = kDefaultCutoffFrequency);
    +
    409 
    +
    434  void read(std::function<bool(const RobotState&)> read_callback);
    +
    435 
    +
    448  virtual RobotState readOnce();
    +
    449 
    +
    494  void setCollisionBehavior(const std::array<double, 7>& lower_torque_thresholds_acceleration,
    +
    495  const std::array<double, 7>& upper_torque_thresholds_acceleration,
    +
    496  const std::array<double, 7>& lower_torque_thresholds_nominal,
    +
    497  const std::array<double, 7>& upper_torque_thresholds_nominal,
    +
    498  const std::array<double, 6>& lower_force_thresholds_acceleration,
    +
    499  const std::array<double, 6>& upper_force_thresholds_acceleration,
    +
    500  const std::array<double, 6>& lower_force_thresholds_nominal,
    +
    501  const std::array<double, 6>& upper_force_thresholds_nominal);
    +
    502 
    +
    529  void setCollisionBehavior(const std::array<double, 7>& lower_torque_thresholds,
    +
    530  const std::array<double, 7>& upper_torque_thresholds,
    +
    531  const std::array<double, 6>& lower_force_thresholds,
    +
    532  const std::array<double, 6>& upper_force_thresholds);
    +
    533 
    + +
    546  const std::array<double, 7>& K_theta); // NOLINT(readability-identifier-naming)
    +
    547 
    + +
    563  const std::array<double, 6>& K_x); // NOLINT(readability-identifier-naming)
    +
    564 
    +
    579  void setGuidingMode(const std::array<bool, 6>& guiding_mode, bool elbow);
    +
    580 
    +
    593  void setK(const std::array<double, 16>& EE_T_K); // NOLINT(readability-identifier-naming)
    +
    594 
    +
    610  void setEE(const std::array<double, 16>& NE_T_EE); // NOLINT(readability-identifier-naming)
    +
    611 
    +
    628  void setLoad(double load_mass,
    +
    629  const std::array<double, 3>& F_x_Cload, // NOLINT(readability-identifier-naming)
    +
    630  const std::array<double, 9>& load_inertia);
    +
    631 
    + +
    641 
    +
    653  virtual std::unique_ptr<ActiveControlBase> startTorqueControl();
    +
    654 
    + +
    669  const research_interface::robot::Move::ControllerMode& control_type);
    +
    670 
    + +
    684  const research_interface::robot::Move::ControllerMode& control_type);
    +
    685 
    + +
    699  const research_interface::robot::Move::ControllerMode& control_type);
    +
    700 
    + +
    715  const research_interface::robot::Move::ControllerMode& control_type);
    +
    716 
    +
    726  void stop();
    +
    727 
    + +
    741 
    +
    747  ServerVersion serverVersion() const noexcept;
    +
    748 
    +
    750  Robot(const Robot&) = delete;
    +
    751  Robot& operator=(const Robot&) = delete;
    +
    753 
    +
    754  class Impl;
    +
    755 
    +
    756  protected:
    +
    762  Robot(std::shared_ptr<Impl> robot_impl);
    +
    763 
    +
    767  Robot() = default;
    +
    768 
    +
    769  private:
    +
    784  template <typename T>
    +
    785  std::unique_ptr<ActiveControlBase> startControl(
    +
    786  const research_interface::robot::Move::ControllerMode& controller_type);
    +
    787 
    +
    788  std::shared_ptr<Impl> impl_;
    +
    789  std::mutex control_mutex_;
    +
    790 };
    +
    791 
    +
    792 } // namespace franka
    +
    Allows the user to read the state of a Robot and to send new control commands after starting a contro...
    Definition: active_control_base.h:27
    +
    Stores values for Cartesian pose motion generation.
    Definition: control_types.h:127
    +
    Stores values for Cartesian velocity motion generation.
    Definition: control_types.h:211
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Stores values for joint position motion generation.
    Definition: control_types.h:72
    +
    Stores values for joint velocity motion generation.
    Definition: control_types.h:99
    +
    Calculates poses of joints and dynamic properties of the robot.
    Definition: model.h:51
    +
    Maintains a network connection to the robot, provides the current robot state, gives access to the mo...
    Definition: robot.h:67
    +
    void control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)
    Starts a control loop for sending joint-level torque commands.
    +
    void setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)
    Changes the collision behavior.
    +
    Model loadModel()
    Loads the model library from the robot.
    +
    Robot & operator=(Robot &&other) noexcept
    Move-assigns this Robot from another Robot instance.
    +
    Robot(Robot &&other) noexcept
    Move-constructs a new Robot instance.
    +
    virtual std::unique_ptr< ActiveControlBase > startCartesianPoseControl(const research_interface::robot::Move::ControllerMode &control_type)
    Starts a new cartesian position motion generator.
    +
    ServerVersion serverVersion() const noexcept
    Returns the software version reported by the connected server.
    +
    void stop()
    Stops all currently running motions.
    +
    void setGuidingMode(const std::array< bool, 6 > &guiding_mode, bool elbow)
    Locks or unlocks guiding mode movement in (x, y, z, roll, pitch, yaw).
    +
    virtual std::unique_ptr< ActiveControlBase > startTorqueControl()
    Starts a new torque controller.
    +
    void read(std::function< bool(const RobotState &)> read_callback)
    Starts a loop for reading the current robot state.
    +
    virtual std::unique_ptr< ActiveControlBase > startCartesianVelocityControl(const research_interface::robot::Move::ControllerMode &control_type)
    Starts a new cartesian velocity motion generator.
    +
    void setJointImpedance(const std::array< double, 7 > &K_theta)
    Sets the impedance for each joint in the internal controller.
    +
    virtual ~Robot() noexcept
    Closes the connection.
    +
    void setCartesianImpedance(const std::array< double, 6 > &K_x)
    Sets the Cartesian stiffness/compliance (for x, y, z, roll, pitch, yaw) in the internal controller.
    +
    virtual std::unique_ptr< ActiveControlBase > startJointPositionControl(const research_interface::robot::Move::ControllerMode &control_type)
    Starts a new joint position motion generator.
    +
    void setK(const std::array< double, 16 > &EE_T_K)
    Sets the transformation from end effector frame to stiffness frame.
    +
    uint16_t ServerVersion
    Version of the robot server.
    Definition: robot.h:72
    +
    virtual RobotState readOnce()
    Waits for a robot state update and returns it.
    +
    Robot(const std::string &franka_address, RealtimeConfig realtime_config=RealtimeConfig::kEnforce, size_t log_size=50)
    Establishes a connection with the robot.
    +
    virtual std::unique_ptr< ActiveControlBase > startJointVelocityControl(const research_interface::robot::Move::ControllerMode &control_type)
    Starts a new joint velocity motion generator.
    +
    void setEE(const std::array< double, 16 > &NE_T_EE)
    Sets the transformation from nominal end effector to end effector frame.
    +
    void automaticErrorRecovery()
    Runs automatic error recovery on the robot.
    +
    void setLoad(double load_mass, const std::array< double, 3 > &F_x_Cload, const std::array< double, 9 > &load_inertia)
    Sets dynamic parameters of a payload.
    +
    Stores joint-level torque commands without gravity and friction.
    Definition: control_types.h:45
    +
    Contains helper types for returning motion generation and joint-level torque commands.
    +
    ControllerMode
    Available controller modes for a franka::Robot.
    Definition: control_types.h:19
    +
    RealtimeConfig
    Used to decide whether to enforce realtime mode for a control loop thread.
    Definition: control_types.h:26
    +
    Contains the franka::Duration type.
    +
    Contains functions for filtering signals with a low-pass filter.
    +
    Contains the franka::RobotState types.
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    + + + + diff --git a/0.13.6/robot__state_8h.html b/0.13.6/robot__state_8h.html new file mode 100644 index 00000000..2dda357e --- /dev/null +++ b/0.13.6/robot__state_8h.html @@ -0,0 +1,244 @@ + + + + + + + +libfranka: include/franka/robot_state.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    robot_state.h File Reference
    +
    +
    + +

    Contains the franka::RobotState types. +More...

    +
    #include <array>
    +#include <ostream>
    +#include <franka/duration.h>
    +#include <franka/errors.h>
    +
    +Include dependency graph for robot_state.h:
    +
    +
    + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    struct  franka::RobotState
     Describes the robot state. More...
     
    + + + + +

    +Enumerations

    enum class  franka::RobotMode {
    +  kOther +, kIdle +, kMove +, kGuiding +,
    +  kReflex +, kUserStopped +, kAutomaticErrorRecovery +
    + }
     Describes the robot's current mode.
     
    + + + + + + + +

    +Functions

    std::ostream & franka::operator<< (std::ostream &ostream, const franka::RobotState &robot_state)
     Streams the robot state as JSON object: {"field_name_1": [0,0,0,0,0,0,0], "field_name_2": [0,0,0,0,0,0], ...}. More...
     
    std::ostream & franka::operator<< (std::ostream &ostream, RobotMode robot_mode)
     Streams RobotMode in human-readable form. More...
     
    +

    Detailed Description

    +

    Contains the franka::RobotState types.

    +

    Function Documentation

    + +

    ◆ operator<<() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& franka::operator<< (std::ostream & ostream,
    const franka::RobotStaterobot_state 
    )
    +
    + +

    Streams the robot state as JSON object: {"field_name_1": [0,0,0,0,0,0,0], "field_name_2": [0,0,0,0,0,0], ...}.

    +
    Parameters
    + + + +
    [in]ostreamOstream instance
    [in]robot_stateRobotState instance to stream
    +
    +
    +
    Returns
    Ostream instance
    + +
    +
    + +

    ◆ operator<<() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& franka::operator<< (std::ostream & ostream,
    RobotMode robot_mode 
    )
    +
    + +

    Streams RobotMode in human-readable form.

    +
    Parameters
    + + + +
    [in]ostreamOstream instance
    [in]robot_modeRobotMode to stream
    +
    +
    +
    Returns
    Ostream instance
    + +
    +
    +
    + + + + diff --git a/0.13.6/robot__state_8h__dep__incl.map b/0.13.6/robot__state_8h__dep__incl.map new file mode 100644 index 00000000..0fad4be3 --- /dev/null +++ b/0.13.6/robot__state_8h__dep__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/0.13.6/robot__state_8h__dep__incl.md5 b/0.13.6/robot__state_8h__dep__incl.md5 new file mode 100644 index 00000000..8fa8f224 --- /dev/null +++ b/0.13.6/robot__state_8h__dep__incl.md5 @@ -0,0 +1 @@ +973a36e4032513bb7f4d07a325676715 \ No newline at end of file diff --git a/0.13.6/robot__state_8h__dep__incl.png b/0.13.6/robot__state_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..b05ab8d22a3faccc2772ea839a4be6f4033e9168 GIT binary patch literal 46603 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 I#?edv1*s)#1poj5 literal 0 HcmV?d00001 diff --git a/0.13.6/robot__state_8h__incl.map b/0.13.6/robot__state_8h__incl.map new file mode 100644 index 00000000..09049e04 --- /dev/null +++ b/0.13.6/robot__state_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/0.13.6/robot__state_8h__incl.md5 b/0.13.6/robot__state_8h__incl.md5 new file mode 100644 index 00000000..f027b933 --- /dev/null +++ b/0.13.6/robot__state_8h__incl.md5 @@ -0,0 +1 @@ +aeacef374b3e8fe87bf91bcf6657c6de \ No newline at end of file diff --git a/0.13.6/robot__state_8h__incl.png b/0.13.6/robot__state_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..fbae517d7d2a84992076520b42cf500740b68749 GIT binary patch literal 16165 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 + + + + + + +libfranka: include/franka/robot_state.h Source File + + + + + + + + + + + + +
    +
    +
    robot_state.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <array>
    +
    6 #include <ostream>
    +
    7 
    +
    8 #include <franka/duration.h>
    +
    9 #include <franka/errors.h>
    +
    10 
    +
    16 namespace franka {
    +
    17 
    +
    21 enum class RobotMode {
    +
    22  kOther,
    +
    23  kIdle,
    +
    24  kMove,
    +
    25  kGuiding,
    +
    26  kReflex,
    +
    27  kUserStopped,
    +
    28  kAutomaticErrorRecovery
    +
    29 };
    +
    30 
    +
    34 struct RobotState {
    +
    40  std::array<double, 16> O_T_EE{}; // NOLINT(readability-identifier-naming)
    +
    41 
    +
    47  std::array<double, 16> O_T_EE_d{}; // NOLINT(readability-identifier-naming)
    +
    48 
    +
    58  std::array<double, 16> F_T_EE{}; // NOLINT(readability-identifier-naming)
    +
    59 
    +
    69  std::array<double, 16> F_T_NE{}; // NOLINT(readability-identifier-naming)
    +
    70 
    +
    81  std::array<double, 16> NE_T_EE{}; // NOLINT(readability-identifier-naming)
    +
    82 
    +
    90  std::array<double, 16> EE_T_K{}; // NOLINT(readability-identifier-naming)
    +
    91 
    +
    96  double m_ee{};
    +
    97 
    +
    102  std::array<double, 9> I_ee{}; // NOLINT(readability-identifier-naming)
    +
    103 
    +
    108  std::array<double, 3> F_x_Cee{}; // NOLINT(readability-identifier-naming)
    +
    109 
    +
    114  double m_load{};
    +
    115 
    +
    120  std::array<double, 9> I_load{}; // NOLINT(readability-identifier-naming)
    +
    121 
    +
    126  std::array<double, 3> F_x_Cload{}; // NOLINT(readability-identifier-naming)
    +
    127 
    +
    132  double m_total{};
    +
    133 
    +
    139  std::array<double, 9> I_total{}; // NOLINT(readability-identifier-naming)
    +
    140 
    +
    146  std::array<double, 3> F_x_Ctotal{}; // NOLINT(readability-identifier-naming)
    +
    147 
    +
    161  std::array<double, 2> elbow{};
    +
    162 
    +
    176  std::array<double, 2> elbow_d{};
    +
    177 
    +
    191  std::array<double, 2> elbow_c{};
    +
    192 
    +
    200  std::array<double, 2> delbow_c{};
    +
    201 
    +
    209  std::array<double, 2> ddelbow_c{};
    +
    210 
    +
    215  std::array<double, 7> tau_J{}; // NOLINT(readability-identifier-naming)
    +
    216 
    +
    221  std::array<double, 7> tau_J_d{}; // NOLINT(readability-identifier-naming)
    +
    222 
    +
    227  std::array<double, 7> dtau_J{}; // NOLINT(readability-identifier-naming)
    +
    228 
    +
    233  std::array<double, 7> q{};
    +
    234 
    +
    239  std::array<double, 7> q_d{};
    +
    240 
    +
    245  std::array<double, 7> dq{};
    +
    246 
    +
    251  std::array<double, 7> dq_d{};
    +
    252 
    +
    257  std::array<double, 7> ddq_d{};
    +
    258 
    +
    265  std::array<double, 7> joint_contact{};
    +
    266 
    +
    273  std::array<double, 6> cartesian_contact{};
    +
    274 
    +
    282  std::array<double, 7> joint_collision{};
    +
    283 
    +
    291  std::array<double, 6> cartesian_collision{};
    +
    292 
    +
    299  std::array<double, 7> tau_ext_hat_filtered{};
    +
    300 
    +
    309  std::array<double, 6> O_F_ext_hat_K{}; // NOLINT(readability-identifier-naming)
    +
    310 
    +
    319  std::array<double, 6> K_F_ext_hat_K{}; // NOLINT(readability-identifier-naming)
    +
    320 
    +
    326  std::array<double, 6> O_dP_EE_d{}; // NOLINT(readability-identifier-naming)
    +
    327 
    +
    335  std::array<double, 3> O_ddP_O{}; // NOLINT(readability-identifier-naming)
    +
    336 
    +
    342  std::array<double, 16> O_T_EE_c{}; // NOLINT(readability-identifier-naming)
    +
    343 
    +
    349  std::array<double, 6> O_dP_EE_c{}; // NOLINT(readability-identifier-naming)
    +
    350 
    +
    357  std::array<double, 6> O_ddP_EE_c{}; // NOLINT(readability-identifier-naming)
    +
    358 
    +
    363  std::array<double, 7> theta{};
    +
    364 
    +
    369  std::array<double, 7> dtheta{};
    +
    370 
    + +
    375 
    + +
    380 
    + +
    389 
    +
    393  RobotMode robot_mode = RobotMode::kUserStopped;
    +
    394 
    + +
    402 };
    +
    403 
    +
    413 std::ostream& operator<<(std::ostream& ostream, const franka::RobotState& robot_state);
    +
    414 
    +
    423 std::ostream& operator<<(std::ostream& ostream, RobotMode robot_mode);
    +
    424 
    +
    425 } // namespace franka
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Contains the franka::Duration type.
    +
    Contains the franka::Errors type.
    +
    std::ostream & operator<<(std::ostream &ostream, const Errors &errors)
    Streams the errors as JSON array.
    +
    RobotMode
    Describes the robot's current mode.
    Definition: robot_state.h:21
    +
    Enumerates errors that can occur while controlling a franka::Robot.
    Definition: errors.h:18
    +
    Describes the robot state.
    Definition: robot_state.h:34
    +
    Errors last_motion_errors
    Contains the errors that aborted the previous motion.
    Definition: robot_state.h:379
    +
    std::array< double, 2 > elbow_c
    Commanded elbow configuration.
    Definition: robot_state.h:191
    +
    std::array< double, 16 > O_T_EE
    Measured end effector pose in base frame.
    Definition: robot_state.h:40
    +
    std::array< double, 6 > O_dP_EE_d
    Desired end effector twist in base frame.
    Definition: robot_state.h:326
    +
    std::array< double, 2 > ddelbow_c
    Commanded elbow acceleration.
    Definition: robot_state.h:209
    +
    std::array< double, 7 > dtheta
    Motor velocity.
    Definition: robot_state.h:369
    +
    std::array< double, 2 > elbow_d
    Desired elbow configuration.
    Definition: robot_state.h:176
    +
    std::array< double, 7 > joint_collision
    Indicates which contact level is activated in which joint.
    Definition: robot_state.h:282
    +
    std::array< double, 16 > O_T_EE_c
    Last commanded end effector pose of motion generation in base frame.
    Definition: robot_state.h:342
    +
    std::array< double, 16 > O_T_EE_d
    Last desired end effector pose of motion generation in base frame.
    Definition: robot_state.h:47
    +
    std::array< double, 2 > elbow
    Elbow configuration.
    Definition: robot_state.h:161
    +
    std::array< double, 3 > F_x_Cload
    Configured center of mass of the external load with respect to flange frame.
    Definition: robot_state.h:126
    +
    RobotMode robot_mode
    Current robot mode.
    Definition: robot_state.h:393
    +
    std::array< double, 6 > O_dP_EE_c
    Last commanded end effector twist in base frame.
    Definition: robot_state.h:349
    +
    std::array< double, 6 > cartesian_collision
    Indicates which contact level is activated in which Cartesian dimension .
    Definition: robot_state.h:291
    +
    std::array< double, 2 > delbow_c
    Commanded elbow velocity.
    Definition: robot_state.h:200
    +
    std::array< double, 6 > O_F_ext_hat_K
    Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the base f...
    Definition: robot_state.h:309
    +
    std::array< double, 9 > I_load
    Configured rotational inertia matrix of the external load with respect to center of mass.
    Definition: robot_state.h:120
    +
    std::array< double, 7 > ddq_d
    Desired joint acceleration.
    Definition: robot_state.h:257
    +
    std::array< double, 16 > F_T_EE
    End effector frame pose in flange frame.
    Definition: robot_state.h:58
    +
    std::array< double, 7 > q_d
    Desired joint position.
    Definition: robot_state.h:239
    +
    std::array< double, 7 > tau_J_d
    Desired link-side joint torque sensor signals without gravity.
    Definition: robot_state.h:221
    +
    std::array< double, 7 > joint_contact
    Indicates which contact level is activated in which joint.
    Definition: robot_state.h:265
    +
    std::array< double, 3 > F_x_Ctotal
    Combined center of mass of the end effector load and the external load with respect to flange frame.
    Definition: robot_state.h:146
    +
    std::array< double, 9 > I_ee
    Configured rotational inertia matrix of the end effector load with respect to center of mass.
    Definition: robot_state.h:102
    +
    std::array< double, 6 > cartesian_contact
    Indicates which contact level is activated in which Cartesian dimension .
    Definition: robot_state.h:273
    +
    double m_total
    Sum of the mass of the end effector and the external load.
    Definition: robot_state.h:132
    +
    std::array< double, 16 > F_T_NE
    Nominal end effector frame pose in flange frame.
    Definition: robot_state.h:69
    +
    std::array< double, 3 > F_x_Cee
    Configured center of mass of the end effector load with respect to flange frame.
    Definition: robot_state.h:108
    +
    std::array< double, 6 > K_F_ext_hat_K
    Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the stiffn...
    Definition: robot_state.h:319
    +
    double m_load
    Configured mass of the external load.
    Definition: robot_state.h:114
    +
    std::array< double, 7 > theta
    Motor position.
    Definition: robot_state.h:363
    +
    Duration time
    Strictly monotonically increasing timestamp since robot start.
    Definition: robot_state.h:401
    +
    std::array< double, 3 > O_ddP_O
    Linear component of the acceleration of the robot's base, expressed in frame parallel to the base fra...
    Definition: robot_state.h:335
    +
    Errors current_errors
    Current error state.
    Definition: robot_state.h:374
    +
    std::array< double, 16 > NE_T_EE
    End effector frame pose in nominal end effector frame.
    Definition: robot_state.h:81
    +
    std::array< double, 6 > O_ddP_EE_c
    Last commanded end effector acceleration in base frame.
    Definition: robot_state.h:357
    +
    std::array< double, 7 > tau_ext_hat_filtered
    Low-pass filtered torques generated by external forces on the joints.
    Definition: robot_state.h:299
    +
    std::array< double, 7 > tau_J
    Measured link-side joint torque sensor signals.
    Definition: robot_state.h:215
    +
    std::array< double, 9 > I_total
    Combined rotational inertia matrix of the end effector load and the external load with respect to the...
    Definition: robot_state.h:139
    +
    std::array< double, 7 > q
    Measured joint position.
    Definition: robot_state.h:233
    +
    std::array< double, 7 > dtau_J
    Derivative of measured link-side joint torque sensor signals.
    Definition: robot_state.h:227
    +
    std::array< double, 16 > EE_T_K
    Stiffness frame pose in end effector frame.
    Definition: robot_state.h:90
    +
    std::array< double, 7 > dq_d
    Desired joint velocity.
    Definition: robot_state.h:251
    +
    double control_command_success_rate
    Percentage of the last 100 control commands that were successfully received by the robot.
    Definition: robot_state.h:388
    +
    std::array< double, 7 > dq
    Measured joint velocity.
    Definition: robot_state.h:245
    +
    double m_ee
    Configured mass of the end effector.
    Definition: robot_state.h:96
    +
    + + + + diff --git a/0.13.6/search/all_0.html b/0.13.6/search/all_0.html new file mode 100644 index 00000000..1ec5b2d5 --- /dev/null +++ b/0.13.6/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_0.js b/0.13.6/search/all_0.js new file mode 100644 index 00000000..5c0a85b1 --- /dev/null +++ b/0.13.6/search/all_0.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['active_5fcontrol_2eh_0',['active_control.h',['../active__control_8h.html',1,'']]], + ['active_5fcontrol_5fbase_2eh_1',['active_control_base.h',['../active__control__base_8h.html',1,'']]], + ['active_5fmotion_5fgenerator_2eh_2',['active_motion_generator.h',['../active__motion__generator_8h.html',1,'']]], + ['active_5ftorque_5fcontrol_2eh_3',['active_torque_control.h',['../active__torque__control_8h.html',1,'']]], + ['activecontrol_4',['ActiveControl',['../classfranka_1_1ActiveControl.html#a4aa09537fddbec6cf1eed05fdc147b30',1,'franka::ActiveControl::ActiveControl()'],['../classfranka_1_1ActiveControl.html',1,'franka::ActiveControl']]], + ['activecontrolbase_5',['ActiveControlBase',['../classfranka_1_1ActiveControlBase.html',1,'franka']]], + ['activemotiongenerator_6',['ActiveMotionGenerator',['../classfranka_1_1ActiveMotionGenerator.html',1,'franka']]], + ['activetorquecontrol_7',['ActiveTorqueControl',['../classfranka_1_1ActiveTorqueControl.html',1,'franka']]], + ['actual_5fpower_8',['actual_power',['../structfranka_1_1VacuumGripperState.html#a4230c68698cdbf6c1c560e181133bdc3',1,'franka::VacuumGripperState']]], + ['automaticerrorrecovery_9',['automaticErrorRecovery',['../classfranka_1_1Robot.html#af682aa673415718715bd859116bc2fed',1,'franka::Robot']]] +]; diff --git a/0.13.6/search/all_1.html b/0.13.6/search/all_1.html new file mode 100644 index 00000000..9f80e904 --- /dev/null +++ b/0.13.6/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_1.js b/0.13.6/search/all_1.js new file mode 100644 index 00000000..65296956 --- /dev/null +++ b/0.13.6/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['base_5facceleration_5finitialization_5ftimeout_10',['base_acceleration_initialization_timeout',['../structfranka_1_1Errors.html#a4dc331a7ae3242ea43e6fbf7e21c695a',1,'franka::Errors']]], + ['base_5facceleration_5finvalid_5freading_11',['base_acceleration_invalid_reading',['../structfranka_1_1Errors.html#a8467b7b8a3a68c3e0be7adc39933cb0e',1,'franka::Errors']]], + ['bodyjacobian_12',['bodyJacobian',['../classfranka_1_1Model.html#a914a197a900a275799cf8d7461bb9d8a',1,'franka::Model::bodyJacobian(Frame frame, const franka::RobotState &robot_state) const'],['../classfranka_1_1Model.html#a9ceca00546fa221f15ddaa7c0d27c40e',1,'franka::Model::bodyJacobian(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const']]] +]; diff --git a/0.13.6/search/all_10.html b/0.13.6/search/all_10.html new file mode 100644 index 00000000..3bf11961 --- /dev/null +++ b/0.13.6/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_10.js b/0.13.6/search/all_10.js new file mode 100644 index 00000000..360a4e37 --- /dev/null +++ b/0.13.6/search/all_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['q_212',['q',['../classfranka_1_1JointPositions.html#a40e9098abe1c51cd48e17e41fbf78337',1,'franka::JointPositions::q()'],['../structfranka_1_1RobotState.html#ade3335d1ac2f6c44741a916d565f7091',1,'franka::RobotState::q()']]], + ['q_5fd_213',['q_d',['../structfranka_1_1RobotState.html#a706045af1b176049e9e56df755325bd2',1,'franka::RobotState']]] +]; diff --git a/0.13.6/search/all_11.html b/0.13.6/search/all_11.html new file mode 100644 index 00000000..c9f79d28 --- /dev/null +++ b/0.13.6/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_11.js b/0.13.6/search/all_11.js new file mode 100644 index 00000000..ff323687 --- /dev/null +++ b/0.13.6/search/all_11.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['rate_5flimiting_2eh_214',['rate_limiting.h',['../rate__limiting_8h.html',1,'']]], + ['read_215',['read',['../classfranka_1_1Robot.html#a82f85eed20426901a7e77b66c041664b',1,'franka::Robot']]], + ['readonce_216',['readOnce',['../classfranka_1_1VacuumGripper.html#aaa61bfd1027cf5dc2eb9e96536a9fabf',1,'franka::VacuumGripper::readOnce()'],['../classfranka_1_1Robot.html#ae3c3d7c5c4491a1e96a0a543931e899a',1,'franka::Robot::readOnce()'],['../classfranka_1_1Gripper.html#ab0afc8a41c9c5fff808e76851dcf23ce',1,'franka::Gripper::readOnce()'],['../classfranka_1_1ActiveControlBase.html#ae99dac6dae3b0dcd79104a1a404e42d0',1,'franka::ActiveControlBase::readOnce()'],['../classfranka_1_1ActiveControl.html#a55f5b94e5ac491e5b2ccc1782a873582',1,'franka::ActiveControl::readOnce()']]], + ['realtimeconfig_217',['RealtimeConfig',['../control__types_8h.html#aeede4f4629390fea21ca5e5a35a8a943',1,'franka']]], + ['realtimeexception_218',['RealtimeException',['../structfranka_1_1RealtimeException.html',1,'franka']]], + ['record_219',['Record',['../structfranka_1_1Record.html',1,'franka']]], + ['robot_220',['Robot',['../classfranka_1_1Robot.html',1,'franka::Robot'],['../classfranka_1_1ActiveMotionGenerator.html#a9f34d4a840b0d3e73fc3185af5fed175',1,'franka::ActiveMotionGenerator::Robot()'],['../classfranka_1_1ActiveTorqueControl.html#a9f34d4a840b0d3e73fc3185af5fed175',1,'franka::ActiveTorqueControl::Robot()'],['../classfranka_1_1Robot.html#ae63bc19390df3d54f3a270814df35eb6',1,'franka::Robot::Robot(const std::string &franka_address, RealtimeConfig realtime_config=RealtimeConfig::kEnforce, size_t log_size=50)'],['../classfranka_1_1Robot.html#a378d415475336082e81a35b9811dc6c2',1,'franka::Robot::Robot(Robot &&other) noexcept'],['../classfranka_1_1Robot.html#a7cb49336d7e8b261b590a364daff2913',1,'franka::Robot::Robot(std::shared_ptr< Impl > robot_impl)'],['../classfranka_1_1Robot.html#abf60ce0434f4dc262f04fcab0beff5ac',1,'franka::Robot::Robot()=default']]], + ['robot_2eh_221',['robot.h',['../robot_8h.html',1,'']]], + ['robot_5fimpl_222',['robot_impl',['../classfranka_1_1ActiveControl.html#a94e725adb409391547a260f204c74564',1,'franka::ActiveControl']]], + ['robot_5fmode_223',['robot_mode',['../structfranka_1_1RobotState.html#a4943ae75e0e2ec534e0afac31cbcc987',1,'franka::RobotState']]], + ['robot_5fstate_2eh_224',['robot_state.h',['../robot__state_8h.html',1,'']]], + ['robotcommand_225',['RobotCommand',['../structfranka_1_1RobotCommand.html',1,'franka']]], + ['robotmode_226',['RobotMode',['../robot__state_8h.html#adfe059ae23ebbad59e421edaa879651a',1,'franka']]], + ['robotstate_227',['RobotState',['../structfranka_1_1RobotState.html',1,'franka']]] +]; diff --git a/0.13.6/search/all_12.html b/0.13.6/search/all_12.html new file mode 100644 index 00000000..ab934722 --- /dev/null +++ b/0.13.6/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_12.js b/0.13.6/search/all_12.js new file mode 100644 index 00000000..18e97836 --- /dev/null +++ b/0.13.6/search/all_12.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['self_5fcollision_5favoidance_5fviolation_228',['self_collision_avoidance_violation',['../structfranka_1_1Errors.html#adf68f6333624cb5558864441a991de8c',1,'franka::Errors']]], + ['server_5fversion_229',['server_version',['../structfranka_1_1IncompatibleVersionException.html#a0928098d8c32f405d17b65a0f004b5ab',1,'franka::IncompatibleVersionException']]], + ['serverversion_230',['serverVersion',['../classfranka_1_1Gripper.html#a8b0b4246c042465fb00871b31efdbd8b',1,'franka::Gripper::serverVersion()'],['../classfranka_1_1Robot.html#a3b864e16b7accafdf1a755dc21765701',1,'franka::Robot::serverVersion()'],['../classfranka_1_1VacuumGripper.html#a19abac44be2fc6df7f54fa11078a13ca',1,'franka::VacuumGripper::serverVersion()']]], + ['serverversion_231',['ServerVersion',['../classfranka_1_1Gripper.html#a613bf52d9433b733685d0fb9ea71602e',1,'franka::Gripper::ServerVersion()'],['../classfranka_1_1Robot.html#ad1dd3dccff6f33691d2c66eaa5ac5a10',1,'franka::Robot::ServerVersion()'],['../classfranka_1_1VacuumGripper.html#a7b1d752680134e2a9df347002c6ace61',1,'franka::VacuumGripper::ServerVersion()']]], + ['setcartesianimpedance_232',['setCartesianImpedance',['../classfranka_1_1Robot.html#ac2678c5c31cc8c0627ecda7485f81f6d',1,'franka::Robot']]], + ['setcollisionbehavior_233',['setCollisionBehavior',['../classfranka_1_1Robot.html#a168e1214ac36d74ac64f894332b84534',1,'franka::Robot::setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)'],['../classfranka_1_1Robot.html#aa188f58c9025594be4d1700da744a962',1,'franka::Robot::setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds, const std::array< double, 7 > &upper_torque_thresholds, const std::array< double, 6 > &lower_force_thresholds, const std::array< double, 6 > &upper_force_thresholds)']]], + ['setcurrentthreadtohighestschedulerpriority_234',['setCurrentThreadToHighestSchedulerPriority',['../control__tools_8h.html#a5c090196bc50ead82194d3e594e61e65',1,'franka']]], + ['setdefaultbehavior_235',['setDefaultBehavior',['../examples__common_8h.html#ad0c6e1cb044845ee8a01b5aa1e801a45',1,'examples_common.cpp']]], + ['setee_236',['setEE',['../classfranka_1_1Robot.html#aec4abdefbc0f9a7400a36bfa0a6068af',1,'franka::Robot']]], + ['setguidingmode_237',['setGuidingMode',['../classfranka_1_1Robot.html#a7992cee203e66f9a61fe2f318ef88a26',1,'franka::Robot']]], + ['setjointimpedance_238',['setJointImpedance',['../classfranka_1_1Robot.html#aa18a28697cf6e3be16c6cff2dd839560',1,'franka::Robot']]], + ['setk_239',['setK',['../classfranka_1_1Robot.html#ad1cf59d1b11306d80cd3c7144a989c56',1,'franka::Robot']]], + ['setload_240',['setLoad',['../classfranka_1_1Robot.html#afcb708df10f24563dbcf7d5b907b4a15',1,'franka::Robot']]], + ['start_5felbow_5fsign_5finconsistent_241',['start_elbow_sign_inconsistent',['../structfranka_1_1Errors.html#aa6de1956ac056792a1dea6b9ddd52a50',1,'franka::Errors']]], + ['startcartesianposecontrol_242',['startCartesianPoseControl',['../classfranka_1_1Robot.html#a3822866cf931fab955d3dcfc6cf746e5',1,'franka::Robot']]], + ['startcartesianvelocitycontrol_243',['startCartesianVelocityControl',['../classfranka_1_1Robot.html#a838e2cfba6b08dd87742bbcfe62f15bf',1,'franka::Robot']]], + ['startjointpositioncontrol_244',['startJointPositionControl',['../classfranka_1_1Robot.html#aca7ecf76cf9c5af49cc5a878c91e19a9',1,'franka::Robot']]], + ['startjointvelocitycontrol_245',['startJointVelocityControl',['../classfranka_1_1Robot.html#ae9c867d10817b2485e306450f389a009',1,'franka::Robot']]], + ['starttorquecontrol_246',['startTorqueControl',['../classfranka_1_1Robot.html#a8146de9e50217068672b6f726a91de91',1,'franka::Robot']]], + ['state_247',['state',['../structfranka_1_1Record.html#a58249658c9549fbc792eea90e7b6a7cc',1,'franka::Record']]], + ['stop_248',['stop',['../classfranka_1_1Gripper.html#add7397fb6c5631650c139d26a85c8e1d',1,'franka::Gripper::stop()'],['../classfranka_1_1Robot.html#a69cb08e075a81ecf3f26e94d26a06296',1,'franka::Robot::stop()'],['../classfranka_1_1VacuumGripper.html#a3722fe5488c516b4082c878a083cc865',1,'franka::VacuumGripper::stop()']]] +]; diff --git a/0.13.6/search/all_13.html b/0.13.6/search/all_13.html new file mode 100644 index 00000000..51172c2f --- /dev/null +++ b/0.13.6/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_13.js b/0.13.6/search/all_13.js new file mode 100644 index 00000000..62f761e9 --- /dev/null +++ b/0.13.6/search/all_13.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['tau_5fext_5fhat_5ffiltered_249',['tau_ext_hat_filtered',['../structfranka_1_1RobotState.html#acdef8005828d193e45b128085a9e363b',1,'franka::RobotState']]], + ['tau_5fj_250',['tau_J',['../classfranka_1_1Torques.html#ac2a266cc2d3b7e0fb4f8eff045dbaed8',1,'franka::Torques::tau_J()'],['../structfranka_1_1RobotState.html#ad90e2518d661da0d8fa4c864bae210e5',1,'franka::RobotState::tau_J()']]], + ['tau_5fj_5fd_251',['tau_J_d',['../structfranka_1_1RobotState.html#a7086a89a2705810f93a3a95d43df2d9d',1,'franka::RobotState']]], + ['tau_5fj_5frange_5fviolation_252',['tau_j_range_violation',['../structfranka_1_1Errors.html#a1491f8428341649befa3d088aebb317e',1,'franka::Errors']]], + ['temperature_253',['temperature',['../structfranka_1_1GripperState.html#aa6733fa786dbf3b073acbaf3779e34b3',1,'franka::GripperState']]], + ['theta_254',['theta',['../structfranka_1_1RobotState.html#aa34145d77dd411d7ca578c355f0ba2b4',1,'franka::RobotState']]], + ['time_255',['time',['../structfranka_1_1GripperState.html#a80bf474b0e4351e2eefab62d1bd10c07',1,'franka::GripperState::time()'],['../structfranka_1_1RobotState.html#aabfdabeaef8c1858c52dd32344bdd039',1,'franka::RobotState::time()'],['../structfranka_1_1VacuumGripperState.html#aaa98eb6e1888094aace2014121a468ab',1,'franka::VacuumGripperState::time()']]], + ['tomsec_256',['toMSec',['../classfranka_1_1Duration.html#a2a25ae33c8739b8f705f13798aa9e162',1,'franka::Duration']]], + ['torques_257',['Torques',['../classfranka_1_1Torques.html',1,'franka::Torques'],['../classfranka_1_1Torques.html#a509d63195827289ffc645e4b62a9750d',1,'franka::Torques::Torques(const std::array< double, 7 > &torques) noexcept'],['../classfranka_1_1Torques.html#a744a08e16dcfc40b3a90ab6a85bac0d8',1,'franka::Torques::Torques(std::initializer_list< double > torques)']]], + ['torques_258',['torques',['../structfranka_1_1RobotCommand.html#a8b23e8b669b1fd594988ecdbf54bfbce',1,'franka::RobotCommand']]], + ['tosec_259',['toSec',['../classfranka_1_1Duration.html#a497af77a3280159547f231f0374e9ac1',1,'franka::Duration']]] +]; diff --git a/0.13.6/search/all_14.html b/0.13.6/search/all_14.html new file mode 100644 index 00000000..afecf563 --- /dev/null +++ b/0.13.6/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_14.js b/0.13.6/search/all_14.js new file mode 100644 index 00000000..ff3f0fe4 --- /dev/null +++ b/0.13.6/search/all_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['vacuum_260',['vacuum',['../structfranka_1_1VacuumGripperState.html#ae94720737193caa696a47563a8efe6a8',1,'franka::VacuumGripperState::vacuum()'],['../classfranka_1_1VacuumGripper.html#a517d95d9800990ca1a5892473c2def89',1,'franka::VacuumGripper::vacuum()']]], + ['vacuum_5fgripper_2eh_261',['vacuum_gripper.h',['../vacuum__gripper_8h.html',1,'']]], + ['vacuum_5fgripper_5fstate_2eh_262',['vacuum_gripper_state.h',['../vacuum__gripper__state_8h.html',1,'']]], + ['vacuumgripper_263',['VacuumGripper',['../classfranka_1_1VacuumGripper.html',1,'franka::VacuumGripper'],['../classfranka_1_1VacuumGripper.html#ab5d8483a0bb16136da684cfac721eae1',1,'franka::VacuumGripper::VacuumGripper(const std::string &franka_address)'],['../classfranka_1_1VacuumGripper.html#ab80730b14b5948eea37395e87800ce5f',1,'franka::VacuumGripper::VacuumGripper(VacuumGripper &&vacuum_gripper) noexcept']]], + ['vacuumgripperdevicestatus_264',['VacuumGripperDeviceStatus',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611',1,'franka']]], + ['vacuumgripperstate_265',['VacuumGripperState',['../structfranka_1_1VacuumGripperState.html',1,'franka']]] +]; diff --git a/0.13.6/search/all_15.html b/0.13.6/search/all_15.html new file mode 100644 index 00000000..69f382b3 --- /dev/null +++ b/0.13.6/search/all_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_15.js b/0.13.6/search/all_15.js new file mode 100644 index 00000000..3866b619 --- /dev/null +++ b/0.13.6/search/all_15.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['width_266',['width',['../structfranka_1_1GripperState.html#adf095f446ec39a9a48e120b209dcd6e9',1,'franka::GripperState']]], + ['writeonce_267',['writeOnce',['../classfranka_1_1ActiveControlBase.html#a070846c3bd259aa703848d984a82e43d',1,'franka::ActiveControlBase::writeOnce()'],['../classfranka_1_1ActiveTorqueControl.html#acc3b1d8c41cd191786e384887adf5da2',1,'franka::ActiveTorqueControl::writeOnce()'],['../classfranka_1_1ActiveMotionGenerator.html#aae24c0819a0bd0996657063832245d69',1,'franka::ActiveMotionGenerator::writeOnce()'],['../classfranka_1_1ActiveControlBase.html#a35ad38e4c512e34b0c82b081cefe4020',1,'franka::ActiveControlBase::writeOnce(const CartesianVelocities &motion_generator_input)=0'],['../classfranka_1_1ActiveControlBase.html#a9b05a521b8ab9d1af6c58b3d1fbcf12f',1,'franka::ActiveControlBase::writeOnce(const CartesianPose &motion_generator_input)=0'],['../classfranka_1_1ActiveControlBase.html#ae00c5b9387e21b76443ddfd173f7d01e',1,'franka::ActiveControlBase::writeOnce(const JointVelocities &motion_generator_input)=0'],['../classfranka_1_1ActiveControlBase.html#a800a13f3d6d12408dbff3afc8d072af2',1,'franka::ActiveControlBase::writeOnce(const JointPositions &motion_generator_input)=0'],['../classfranka_1_1ActiveControlBase.html#ac94d472225bbe8b6322b9f3cbf98bd3b',1,'franka::ActiveControlBase::writeOnce(const CartesianVelocities &, const std::optional< const Torques > &)=0'],['../classfranka_1_1ActiveControlBase.html#a61ffd2a40b082e275784175f7a38aa08',1,'franka::ActiveControlBase::writeOnce(const CartesianPose &, const std::optional< const Torques > &)=0'],['../classfranka_1_1ActiveControlBase.html#a46f54e3366ad083c9dedf62b9f4e1fea',1,'franka::ActiveControlBase::writeOnce(const JointVelocities &, const std::optional< const Torques > &)=0'],['../classfranka_1_1ActiveControlBase.html#ab0b5421122071fa0d578dcd0f4cabc36',1,'franka::ActiveControlBase::writeOnce(const JointPositions &, const std::optional< const Torques > &)=0'],['../classfranka_1_1ActiveControl.html#ad4bf06b3e873fd95a2261d67d89a4d1f',1,'franka::ActiveControl::writeOnce(const CartesianVelocities &motion_generator_input) override'],['../classfranka_1_1ActiveControl.html#a6b6265ccad26dc2e32c7b6329b74fb80',1,'franka::ActiveControl::writeOnce(const CartesianPose &motion_generator_input) override'],['../classfranka_1_1ActiveControl.html#a7f54a6bc037fa63f14e1a3f1329d4bf5',1,'franka::ActiveControl::writeOnce(const JointVelocities &motion_generator_input) override'],['../classfranka_1_1ActiveControl.html#a8166a590c84c749cd90c874bd2f1aca4',1,'franka::ActiveControl::writeOnce(const JointPositions &motion_generator_input) override'],['../classfranka_1_1ActiveControl.html#a12c3c6916e26e66dae41eb624daabb4a',1,'franka::ActiveControl::writeOnce(const CartesianVelocities &, const std::optional< const Torques > &) override'],['../classfranka_1_1ActiveControl.html#a52f9ce19182359732bddee7b52a87419',1,'franka::ActiveControl::writeOnce(const CartesianPose &, const std::optional< const Torques > &) override'],['../classfranka_1_1ActiveControl.html#a2a27360ae8203fa8a413c47708e03ede',1,'franka::ActiveControl::writeOnce(const JointVelocities &, const std::optional< const Torques > &) override'],['../classfranka_1_1ActiveControl.html#a762615a1a3d5cf18064bfbd0b45effa6',1,'franka::ActiveControl::writeOnce(const JointPositions &, const std::optional< const Torques > &) override'],['../classfranka_1_1ActiveControl.html#a888b87832cd3def156c07a0b57d95663',1,'franka::ActiveControl::writeOnce(const Torques &) override']]] +]; diff --git a/0.13.6/search/all_16.html b/0.13.6/search/all_16.html new file mode 100644 index 00000000..b19867ad --- /dev/null +++ b/0.13.6/search/all_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_16.js b/0.13.6/search/all_16.js new file mode 100644 index 00000000..b3b5b4e6 --- /dev/null +++ b/0.13.6/search/all_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zerojacobian_268',['zeroJacobian',['../classfranka_1_1Model.html#a6fb6347b571a6759bad10b3a9e28a28f',1,'franka::Model::zeroJacobian(Frame frame, const franka::RobotState &robot_state) const'],['../classfranka_1_1Model.html#a6522f1079e1dc5f6799dde6197b45259',1,'franka::Model::zeroJacobian(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const']]] +]; diff --git a/0.13.6/search/all_17.html b/0.13.6/search/all_17.html new file mode 100644 index 00000000..1ad5d34b --- /dev/null +++ b/0.13.6/search/all_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_17.js b/0.13.6/search/all_17.js new file mode 100644 index 00000000..9653495e --- /dev/null +++ b/0.13.6/search/all_17.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_7egripper_269',['~Gripper',['../classfranka_1_1Gripper.html#ade253b8a35312d52c636c6aafb7b2e1d',1,'franka::Gripper']]], + ['_7emodel_270',['~Model',['../classfranka_1_1Model.html#a1d6ffa26afc6cfdff7e329d15b8bd65e',1,'franka::Model']]], + ['_7erobot_271',['~Robot',['../classfranka_1_1Robot.html#ac19400de0fd39852d5825b1f1ccc85e2',1,'franka::Robot']]], + ['_7evacuumgripper_272',['~VacuumGripper',['../classfranka_1_1VacuumGripper.html#af43f640f3cb9ca873b02bb464d3c279b',1,'franka::VacuumGripper']]] +]; diff --git a/0.13.6/search/all_2.html b/0.13.6/search/all_2.html new file mode 100644 index 00000000..02cfffc2 --- /dev/null +++ b/0.13.6/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_2.js b/0.13.6/search/all_2.js new file mode 100644 index 00000000..9745ea96 --- /dev/null +++ b/0.13.6/search/all_2.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['cartesian_5fcollision_13',['cartesian_collision',['../structfranka_1_1RobotState.html#a52c20478f4c1e162df38582ea9bda044',1,'franka::RobotState']]], + ['cartesian_5fcontact_14',['cartesian_contact',['../structfranka_1_1RobotState.html#a7fc1f0358d2104d39d301d70544fa6c1',1,'franka::RobotState']]], + ['cartesian_5fmotion_5fgenerator_5facceleration_5fdiscontinuity_15',['cartesian_motion_generator_acceleration_discontinuity',['../structfranka_1_1Errors.html#a10c6ac36bf48b4a9edf91e74d9bc4837',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5felbow_5flimit_5fviolation_16',['cartesian_motion_generator_elbow_limit_violation',['../structfranka_1_1Errors.html#ac21ebdc1e0e8fb3099a7dce284550c4c',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5felbow_5fsign_5finconsistent_17',['cartesian_motion_generator_elbow_sign_inconsistent',['../structfranka_1_1Errors.html#a58b0e1199c9dded5a32bfeb110e63037',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fjoint_5facceleration_5fdiscontinuity_18',['cartesian_motion_generator_joint_acceleration_discontinuity',['../structfranka_1_1Errors.html#a2e223ef3c771709a6a3f094adf12f9cb',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fjoint_5fposition_5flimits_5fviolation_19',['cartesian_motion_generator_joint_position_limits_violation',['../structfranka_1_1Errors.html#a73aef7473fd6d1d5b207e68fa35948c5',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fjoint_5fvelocity_5fdiscontinuity_20',['cartesian_motion_generator_joint_velocity_discontinuity',['../structfranka_1_1Errors.html#a1c8c56766fefc19fda5d5de909ca5b37',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fjoint_5fvelocity_5flimits_5fviolation_21',['cartesian_motion_generator_joint_velocity_limits_violation',['../structfranka_1_1Errors.html#a435d16d62a123bfbf578bc76e3780605',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fstart_5felbow_5finvalid_22',['cartesian_motion_generator_start_elbow_invalid',['../structfranka_1_1Errors.html#a6d905b803bbe8a7be8490f2a94ba524a',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fvelocity_5fdiscontinuity_23',['cartesian_motion_generator_velocity_discontinuity',['../structfranka_1_1Errors.html#a17e4a9b6b7dc4cc12c1328d36cac3eaf',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fvelocity_5flimits_5fviolation_24',['cartesian_motion_generator_velocity_limits_violation',['../structfranka_1_1Errors.html#a91437c081452ef708563346b102ba894',1,'franka::Errors']]], + ['cartesian_5fpose_25',['cartesian_pose',['../structfranka_1_1RobotCommand.html#acce2090d696ebb9759fd0f37fd35a298',1,'franka::RobotCommand']]], + ['cartesian_5fposition_5flimits_5fviolation_26',['cartesian_position_limits_violation',['../structfranka_1_1Errors.html#a41c8b50ecbb015a2dba1a3dbbff694b6',1,'franka::Errors']]], + ['cartesian_5fposition_5fmotion_5fgenerator_5finvalid_5fframe_27',['cartesian_position_motion_generator_invalid_frame',['../structfranka_1_1Errors.html#aa1952c6da2f81578861a19b947c97b85',1,'franka::Errors']]], + ['cartesian_5fposition_5fmotion_5fgenerator_5fstart_5fpose_5finvalid_28',['cartesian_position_motion_generator_start_pose_invalid',['../structfranka_1_1Errors.html#aa910fad4992b91be1ea1c321ee9b7a1e',1,'franka::Errors']]], + ['cartesian_5freflex_29',['cartesian_reflex',['../structfranka_1_1Errors.html#a47bd58b0ab2198e4d038e0a24eafb310',1,'franka::Errors']]], + ['cartesian_5fspline_5fmotion_5fgenerator_5fviolation_30',['cartesian_spline_motion_generator_violation',['../structfranka_1_1Errors.html#a5617689cd7e875baebcecf054513f0c4',1,'franka::Errors']]], + ['cartesian_5fvelocities_31',['cartesian_velocities',['../structfranka_1_1RobotCommand.html#a04b4841130fab920936190be1bc5dba3',1,'franka::RobotCommand']]], + ['cartesian_5fvelocity_5fprofile_5fsafety_5fviolation_32',['cartesian_velocity_profile_safety_violation',['../structfranka_1_1Errors.html#afc093fc5f99e1f6cab6de4fa9bc32692',1,'franka::Errors']]], + ['cartesian_5fvelocity_5fviolation_33',['cartesian_velocity_violation',['../structfranka_1_1Errors.html#a382fbec6b463ddcc2cbfd90340021ff1',1,'franka::Errors']]], + ['cartesianlowpassfilter_34',['cartesianLowpassFilter',['../lowpass__filter_8h.html#ac25e174345ea5e2ea9099287ad43cd2b',1,'franka']]], + ['cartesianpose_35',['CartesianPose',['../classfranka_1_1CartesianPose.html#a5559a53a898f9b369b1df9d51f9351b5',1,'franka::CartesianPose::CartesianPose(const std::array< double, 16 > &cartesian_pose) noexcept'],['../classfranka_1_1CartesianPose.html#a17272cb33af9aa4b726fa96b31cf0101',1,'franka::CartesianPose::CartesianPose(const std::array< double, 16 > &cartesian_pose, const std::array< double, 2 > &elbow) noexcept'],['../classfranka_1_1CartesianPose.html#a70b6460e98bc763a49c53accd48d54a2',1,'franka::CartesianPose::CartesianPose(std::initializer_list< double > cartesian_pose)'],['../classfranka_1_1CartesianPose.html#ab7fb1dfd7cdb89c0caebab95c669ba49',1,'franka::CartesianPose::CartesianPose(std::initializer_list< double > cartesian_pose, std::initializer_list< double > elbow)'],['../classfranka_1_1CartesianPose.html',1,'franka::CartesianPose']]], + ['cartesianvelocities_36',['CartesianVelocities',['../classfranka_1_1CartesianVelocities.html#a95f6feec3539ed9f96d555447717eb72',1,'franka::CartesianVelocities::CartesianVelocities(const std::array< double, 6 > &cartesian_velocities, const std::array< double, 2 > &elbow) noexcept'],['../classfranka_1_1CartesianVelocities.html#a39c4b06c315c963460e24324de8ad079',1,'franka::CartesianVelocities::CartesianVelocities(std::initializer_list< double > cartesian_velocities)'],['../classfranka_1_1CartesianVelocities.html#aec434afa3f92e462ad3ab4766d3456a4',1,'franka::CartesianVelocities::CartesianVelocities(std::initializer_list< double > cartesian_velocities, std::initializer_list< double > elbow)'],['../classfranka_1_1CartesianVelocities.html#a713380954e1f10c1be3033b95ca00657',1,'franka::CartesianVelocities::CartesianVelocities(const std::array< double, 6 > &cartesian_velocities) noexcept'],['../classfranka_1_1CartesianVelocities.html',1,'franka::CartesianVelocities']]], + ['checkelbow_37',['checkElbow',['../control__tools_8h.html#add0cd2cd1401ac0b2393a84ca1577cde',1,'franka']]], + ['checkfinite_38',['checkFinite',['../control__tools_8h.html#a80d02c11ba41e5973ee76624bf1d4466',1,'franka']]], + ['checkmatrix_39',['checkMatrix',['../control__tools_8h.html#ab38ee604eecfedfb591ddb8327805ea4',1,'franka']]], + ['command_40',['command',['../structfranka_1_1Record.html#a8106f2ba9c2cf5ec7cbcf914c4c99e9c',1,'franka::Record']]], + ['commandexception_41',['CommandException',['../structfranka_1_1CommandException.html',1,'franka']]], + ['communication_5fconstraints_5fviolation_42',['communication_constraints_violation',['../structfranka_1_1Errors.html#a4d17af86c1ebb698c218796fa15f9bd7',1,'franka::Errors']]], + ['computelowerlimitsjointvelocity_43',['computeLowerLimitsJointVelocity',['../rate__limiting_8h.html#a75fe6c28325d7631f7bdb6c2b388b268',1,'franka']]], + ['computeupperlimitsjointvelocity_44',['computeUpperLimitsJointVelocity',['../rate__limiting_8h.html#a3a025c3c8f71f59627fe4f7e801021ac',1,'franka']]], + ['control_45',['control',['../classfranka_1_1Robot.html#a4ce9fd531f97c8cc943dd2479298a55f',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#aeb276d0a0e55f032841976de7db86f5a',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a7fef8f6418cff168f680ac7c61a6b5cd',1,'franka::Robot::control(std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a6ba6193e52178899dc8c6a34aa4c537c',1,'franka::Robot::control(std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#adce4add23b47befadccd30e3dbe9f2f4',1,'franka::Robot::control(std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a2176c99664b83bb394f0b2dfd416a8ee',1,'franka::Robot::control(std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a76e8b7a9c7e2b874c3e300ba7cdeb8ca',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a4b625b781d388f3379e0961c724239d5',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a0d5effba5daff2fee123802bbd5f95d1',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)']]], + ['control_5fcommand_5fsuccess_5frate_46',['control_command_success_rate',['../structfranka_1_1RobotState.html#af208572613a6afcdc61a24970c71fa28',1,'franka::RobotState']]], + ['control_5ffinished_47',['control_finished',['../classfranka_1_1ActiveControl.html#afa521707548926e9d1e38e4b83496db2',1,'franka::ActiveControl']]], + ['control_5flock_48',['control_lock',['../classfranka_1_1ActiveControl.html#aed53605877b237435581e36f4c0b34a4',1,'franka::ActiveControl']]], + ['control_5ftools_2eh_49',['control_tools.h',['../control__tools_8h.html',1,'']]], + ['control_5ftypes_2eh_50',['control_types.h',['../control__types_8h.html',1,'']]], + ['controlexception_51',['ControlException',['../structfranka_1_1ControlException.html#a2efb9628eef80a3819031dbf2e2cb518',1,'franka::ControlException::ControlException()'],['../structfranka_1_1ControlException.html',1,'franka::ControlException']]], + ['controller_5ftorque_5fdiscontinuity_52',['controller_torque_discontinuity',['../structfranka_1_1Errors.html#af40d93759ace9ee6026208110692a732',1,'franka::Errors']]], + ['controllermode_53',['ControllerMode',['../control__types_8h.html#a3e20bc77587e2c0c53598753e3f4816b',1,'franka']]], + ['coriolis_54',['coriolis',['../classfranka_1_1Model.html#a3445ad932ddda2e3540768af9b7b4852',1,'franka::Model::coriolis(const std::array< double, 7 > &q, const std::array< double, 7 > &dq, const std::array< double, 9 > &I_total, double m_total, const std::array< double, 3 > &F_x_Ctotal) const noexcept'],['../classfranka_1_1Model.html#a91424f181a93bb47bda6af2d3567c65c',1,'franka::Model::coriolis(const franka::RobotState &robot_state) const noexcept']]], + ['current_5ferrors_55',['current_errors',['../structfranka_1_1RobotState.html#abc5515f7a27f5de82396ea792a5ecb48',1,'franka::RobotState']]] +]; diff --git a/0.13.6/search/all_3.html b/0.13.6/search/all_3.html new file mode 100644 index 00000000..39767b85 --- /dev/null +++ b/0.13.6/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_3.js b/0.13.6/search/all_3.js new file mode 100644 index 00000000..636e3cba --- /dev/null +++ b/0.13.6/search/all_3.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['ddelbow_5fc_56',['ddelbow_c',['../structfranka_1_1RobotState.html#a1e5b6caf84249b1129491dbbcb1fc2e6',1,'franka::RobotState']]], + ['ddq_5fd_57',['ddq_d',['../structfranka_1_1RobotState.html#a6251e748cf72f4b86bcfdcb97d77ace2',1,'franka::RobotState']]], + ['delbow_5fc_58',['delbow_c',['../structfranka_1_1RobotState.html#a57c2c145e9f79010adf23085b8a9c5ad',1,'franka::RobotState']]], + ['device_5fstatus_59',['device_status',['../structfranka_1_1VacuumGripperState.html#ab44560b09c4a959c06ddafbd7f21da02',1,'franka::VacuumGripperState']]], + ['dq_60',['dq',['../classfranka_1_1JointVelocities.html#a14fddb6fe7a7c4034dc82c283de8c2d3',1,'franka::JointVelocities::dq()'],['../structfranka_1_1RobotState.html#af372a0081d72bc7b4fe873f99c7b2d8c',1,'franka::RobotState::dq()']]], + ['dq_5fd_61',['dq_d',['../structfranka_1_1RobotState.html#aed294a088be27b927be9575a18bec949',1,'franka::RobotState']]], + ['dropoff_62',['dropOff',['../classfranka_1_1VacuumGripper.html#a04645348e97b946a788205c8b1168cac',1,'franka::VacuumGripper']]], + ['dtau_5fj_63',['dtau_J',['../structfranka_1_1RobotState.html#ae6b0d4ee0d7b36240a2165e6ded6f4b9',1,'franka::RobotState']]], + ['dtheta_64',['dtheta',['../structfranka_1_1RobotState.html#a271db0a55dd346715ed8a0daf3f8887c',1,'franka::RobotState']]], + ['duration_65',['Duration',['../classfranka_1_1Duration.html#af721da321423772b4ce7ff11280d38d5',1,'franka::Duration::Duration() noexcept'],['../classfranka_1_1Duration.html#a46f0cea3e05c27cdaaba5ff25e0e6cd6',1,'franka::Duration::Duration(uint64_t milliseconds) noexcept'],['../classfranka_1_1Duration.html#a389dfef50f34e9cc5be69838fbdafba7',1,'franka::Duration::Duration(std::chrono::duration< uint64_t, std::milli > duration) noexcept'],['../classfranka_1_1Duration.html#a886575e716b45e85de1bb78def2eb133',1,'franka::Duration::Duration(const Duration &)=default'],['../classfranka_1_1Duration.html',1,'franka::Duration']]], + ['duration_2eh_66',['duration.h',['../duration_8h.html',1,'']]] +]; diff --git a/0.13.6/search/all_4.html b/0.13.6/search/all_4.html new file mode 100644 index 00000000..fc40463c --- /dev/null +++ b/0.13.6/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_4.js b/0.13.6/search/all_4.js new file mode 100644 index 00000000..31a0e066 --- /dev/null +++ b/0.13.6/search/all_4.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['ee_5ft_5fk_67',['EE_T_K',['../structfranka_1_1RobotState.html#aeb78a3b4b76d4f57b9898cbea3a0f7aa',1,'franka::RobotState']]], + ['elbow_68',['elbow',['../classfranka_1_1CartesianPose.html#abef660743df9cf94d11c556d9c3d25be',1,'franka::CartesianPose::elbow()'],['../classfranka_1_1CartesianVelocities.html#a6419df1399d3dfab79b1654b94ced344',1,'franka::CartesianVelocities::elbow()'],['../structfranka_1_1RobotState.html#a43485841c427d70e7f36a912cc3116d1',1,'franka::RobotState::elbow()']]], + ['elbow_5fc_69',['elbow_c',['../structfranka_1_1RobotState.html#a16cfc844894e8b5b1ad829be529962f0',1,'franka::RobotState']]], + ['elbow_5fd_70',['elbow_d',['../structfranka_1_1RobotState.html#a295dada05d8588fc3c19a74fd427dcc0',1,'franka::RobotState']]], + ['errors_71',['Errors',['../structfranka_1_1Errors.html#aedd6b6af230c01b6f106b5050b29d9ae',1,'franka::Errors::Errors()'],['../structfranka_1_1Errors.html#a4548a72089cc6d61c9249a1b8f4cc480',1,'franka::Errors::Errors(const Errors &other)'],['../structfranka_1_1Errors.html#adffc6f8b2235e566c4a43ce69a86634e',1,'franka::Errors::Errors(const std::array< bool, 41 > &errors)'],['../structfranka_1_1Errors.html',1,'franka::Errors']]], + ['errors_2eh_72',['errors.h',['../errors_8h.html',1,'']]], + ['examples_5fcommon_2eh_73',['examples_common.h',['../examples__common_8h.html',1,'']]], + ['exception_74',['Exception',['../structfranka_1_1Exception.html',1,'franka']]], + ['exception_2eh_75',['exception.h',['../exception_8h.html',1,'']]] +]; diff --git a/0.13.6/search/all_5.html b/0.13.6/search/all_5.html new file mode 100644 index 00000000..9dd9344b --- /dev/null +++ b/0.13.6/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_5.js b/0.13.6/search/all_5.js new file mode 100644 index 00000000..b6f342be --- /dev/null +++ b/0.13.6/search/all_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['f_5ft_5fee_76',['F_T_EE',['../structfranka_1_1RobotState.html#a705b85049fef747008b0eba8284c8057',1,'franka::RobotState']]], + ['f_5ft_5fne_77',['F_T_NE',['../structfranka_1_1RobotState.html#a88142795c453775c360e18d8a6570d15',1,'franka::RobotState']]], + ['f_5fx_5fcee_78',['F_x_Cee',['../structfranka_1_1RobotState.html#a907c4561d8f1c1a2af7980cf58ceb112',1,'franka::RobotState']]], + ['f_5fx_5fcload_79',['F_x_Cload',['../structfranka_1_1RobotState.html#a48e921e6215ad32f36e424b4d7b66a89',1,'franka::RobotState']]], + ['f_5fx_5fctotal_80',['F_x_Ctotal',['../structfranka_1_1RobotState.html#a72ee7362018e3c9e95e3c41e857bfd8d',1,'franka::RobotState']]], + ['finishable_81',['Finishable',['../structfranka_1_1Finishable.html',1,'franka']]], + ['force_5fcontrol_5fsafety_5fviolation_82',['force_control_safety_violation',['../structfranka_1_1Errors.html#ae7b19674da28b11ba970c30c7d800923',1,'franka::Errors']]], + ['force_5fcontroller_5fdesired_5fforce_5ftolerance_5fviolation_83',['force_controller_desired_force_tolerance_violation',['../structfranka_1_1Errors.html#ae474f20a64b2585dbe6496966dddff0a',1,'franka::Errors']]], + ['frame_84',['Frame',['../model_8h.html#a00b729ddce916481d3f0d10febec4f5b',1,'franka']]] +]; diff --git a/0.13.6/search/all_6.html b/0.13.6/search/all_6.html new file mode 100644 index 00000000..f1e516d7 --- /dev/null +++ b/0.13.6/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_6.js b/0.13.6/search/all_6.js new file mode 100644 index 00000000..d8ec7cf2 --- /dev/null +++ b/0.13.6/search/all_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['grasp_85',['grasp',['../classfranka_1_1Gripper.html#abff6a03a6c75b9079bd4b9b5ca380254',1,'franka::Gripper']]], + ['gravity_86',['gravity',['../classfranka_1_1Model.html#a9b28a648cf413297d80f383e62363ab9',1,'franka::Model::gravity(const std::array< double, 7 > &q, double m_total, const std::array< double, 3 > &F_x_Ctotal, const std::array< double, 3 > &gravity_earth={{0., 0., -9.81}}) const noexcept'],['../classfranka_1_1Model.html#a76a94e1ddb45cf1cdded25be4cf2dcae',1,'franka::Model::gravity(const franka::RobotState &robot_state, const std::array< double, 3 > &gravity_earth) const noexcept'],['../classfranka_1_1Model.html#a983611785e894e1cd1f07a2df97ddbdd',1,'franka::Model::gravity(const franka::RobotState &robot_state) const noexcept']]], + ['gripper_87',['Gripper',['../classfranka_1_1Gripper.html',1,'franka::Gripper'],['../classfranka_1_1Gripper.html#a02b30632b08001592c62d3563561afc5',1,'franka::Gripper::Gripper(const std::string &franka_address)'],['../classfranka_1_1Gripper.html#aa045ea81b36f22420f9bc6f2a256a4f0',1,'franka::Gripper::Gripper(Gripper &&gripper) noexcept']]], + ['gripper_2eh_88',['gripper.h',['../gripper_8h.html',1,'']]], + ['gripper_5fstate_2eh_89',['gripper_state.h',['../gripper__state_8h.html',1,'']]], + ['gripperstate_90',['GripperState',['../structfranka_1_1GripperState.html',1,'franka']]] +]; diff --git a/0.13.6/search/all_7.html b/0.13.6/search/all_7.html new file mode 100644 index 00000000..8ddbf6c8 --- /dev/null +++ b/0.13.6/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_7.js b/0.13.6/search/all_7.js new file mode 100644 index 00000000..97c770e4 --- /dev/null +++ b/0.13.6/search/all_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['haselbow_91',['hasElbow',['../classfranka_1_1CartesianPose.html#a5fa9f47dbf73ab45f671d89e11f89ccf',1,'franka::CartesianPose::hasElbow()'],['../classfranka_1_1CartesianVelocities.html#a51a41893b10250982597fe367abb2ca6',1,'franka::CartesianVelocities::hasElbow()']]], + ['hasrealtimekernel_92',['hasRealtimeKernel',['../control__tools_8h.html#ad165a74da105c78586c0cd4c1ed57bd2',1,'franka']]], + ['homing_93',['homing',['../classfranka_1_1Gripper.html#aef356f93a4c3b9d6b2532c29126d478c',1,'franka::Gripper']]] +]; diff --git a/0.13.6/search/all_8.html b/0.13.6/search/all_8.html new file mode 100644 index 00000000..83c55ae2 --- /dev/null +++ b/0.13.6/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_8.js b/0.13.6/search/all_8.js new file mode 100644 index 00000000..c79e9906 --- /dev/null +++ b/0.13.6/search/all_8.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['i_5fee_94',['I_ee',['../structfranka_1_1RobotState.html#a74cee1beb5d400694133deea2846e611',1,'franka::RobotState']]], + ['i_5fload_95',['I_load',['../structfranka_1_1RobotState.html#a5b194153497eff98049681f852118f82',1,'franka::RobotState']]], + ['i_5ftotal_96',['I_total',['../structfranka_1_1RobotState.html#ad9120ae7b7613e77df8c1c3eba8fb033',1,'franka::RobotState']]], + ['in_5fcontrol_5frange_97',['in_control_range',['../structfranka_1_1VacuumGripperState.html#a70c1b14b10c2a79511fcada258c7e0ba',1,'franka::VacuumGripperState']]], + ['incompatibleversionexception_98',['IncompatibleVersionException',['../structfranka_1_1IncompatibleVersionException.html',1,'franka::IncompatibleVersionException'],['../structfranka_1_1IncompatibleVersionException.html#a518f40d994ed7e970c6f7fdafb673239',1,'franka::IncompatibleVersionException::IncompatibleVersionException()']]], + ['instability_5fdetected_99',['instability_detected',['../structfranka_1_1Errors.html#aebb701987262097687d21b3cf1bc8930',1,'franka::Errors']]], + ['invalidoperationexception_100',['InvalidOperationException',['../structfranka_1_1InvalidOperationException.html',1,'franka']]], + ['is_5fgrasped_101',['is_grasped',['../structfranka_1_1GripperState.html#aa65b46313e740454ead9c9ea27e7bf8d',1,'franka::GripperState']]], + ['ishomogeneoustransformation_102',['isHomogeneousTransformation',['../control__tools_8h.html#ad81c99e8af3f2536ae3c6ec1ce8dce1e',1,'franka']]], + ['isvalidelbow_103',['isValidElbow',['../control__tools_8h.html#a4eda3eda0514fabf6d630a6d8c0373a0',1,'franka']]] +]; diff --git a/0.13.6/search/all_9.html b/0.13.6/search/all_9.html new file mode 100644 index 00000000..1e263c13 --- /dev/null +++ b/0.13.6/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_9.js b/0.13.6/search/all_9.js new file mode 100644 index 00000000..62be9775 --- /dev/null +++ b/0.13.6/search/all_9.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['joint_5fcollision_104',['joint_collision',['../structfranka_1_1RobotState.html#a38757bafd4dd8e138410de1dca0c36f8',1,'franka::RobotState']]], + ['joint_5fcontact_105',['joint_contact',['../structfranka_1_1RobotState.html#a7243c652a8efe58c343a0d1252302fa4',1,'franka::RobotState']]], + ['joint_5fmotion_5fgenerator_5facceleration_5fdiscontinuity_106',['joint_motion_generator_acceleration_discontinuity',['../structfranka_1_1Errors.html#a633195adca91f5ecaf1506da12f3311f',1,'franka::Errors']]], + ['joint_5fmotion_5fgenerator_5fposition_5flimits_5fviolation_107',['joint_motion_generator_position_limits_violation',['../structfranka_1_1Errors.html#a9536ad072868b90525c56143cbb956ef',1,'franka::Errors']]], + ['joint_5fmotion_5fgenerator_5fvelocity_5fdiscontinuity_108',['joint_motion_generator_velocity_discontinuity',['../structfranka_1_1Errors.html#abd6da8e6a32d817a7b4848a24efd9379',1,'franka::Errors']]], + ['joint_5fmotion_5fgenerator_5fvelocity_5flimits_5fviolation_109',['joint_motion_generator_velocity_limits_violation',['../structfranka_1_1Errors.html#ae211638df9b0e23905c8a9d36e249207',1,'franka::Errors']]], + ['joint_5fmove_5fin_5fwrong_5fdirection_110',['joint_move_in_wrong_direction',['../structfranka_1_1Errors.html#a7d3a6480cbe572fd46e579b43732edc9',1,'franka::Errors']]], + ['joint_5fp2p_5finsufficient_5ftorque_5ffor_5fplanning_111',['joint_p2p_insufficient_torque_for_planning',['../structfranka_1_1Errors.html#a1c78be870253b510a4516acf14c2d3e3',1,'franka::Errors']]], + ['joint_5fposition_5flimits_5fviolation_112',['joint_position_limits_violation',['../structfranka_1_1Errors.html#a44ba0d45e52639280d32cf447f967e29',1,'franka::Errors']]], + ['joint_5fposition_5fmotion_5fgenerator_5fstart_5fpose_5finvalid_113',['joint_position_motion_generator_start_pose_invalid',['../structfranka_1_1Errors.html#a7af91cbf61dc79304bff3ffadc51ea86',1,'franka::Errors']]], + ['joint_5fpositions_114',['joint_positions',['../structfranka_1_1RobotCommand.html#a086afcec596eae5284b6c39dc1452280',1,'franka::RobotCommand']]], + ['joint_5freflex_115',['joint_reflex',['../structfranka_1_1Errors.html#afb0928680c586e73d4e2cd4b42c7fe48',1,'franka::Errors']]], + ['joint_5fvelocities_116',['joint_velocities',['../structfranka_1_1RobotCommand.html#a049657cf2bbbb53d6ffa5581721e7b71',1,'franka::RobotCommand']]], + ['joint_5fvelocity_5fviolation_117',['joint_velocity_violation',['../structfranka_1_1Errors.html#a803ac4acbc26350602ea2eb02b7b30c4',1,'franka::Errors']]], + ['joint_5fvia_5fmotion_5fgenerator_5fplanning_5fjoint_5flimit_5fviolation_118',['joint_via_motion_generator_planning_joint_limit_violation',['../structfranka_1_1Errors.html#aef3c74f48978545187ee2dc3a96db1c8',1,'franka::Errors']]], + ['jointpositions_119',['JointPositions',['../classfranka_1_1JointPositions.html',1,'franka::JointPositions'],['../classfranka_1_1JointPositions.html#a57bc9d7e033493b1182333276af5ce84',1,'franka::JointPositions::JointPositions(const std::array< double, 7 > &joint_positions) noexcept'],['../classfranka_1_1JointPositions.html#a1e2006bccc9de89d8eb1a4d1c4da2fb8',1,'franka::JointPositions::JointPositions(std::initializer_list< double > joint_positions)']]], + ['jointvelocities_120',['JointVelocities',['../classfranka_1_1JointVelocities.html',1,'franka::JointVelocities'],['../classfranka_1_1JointVelocities.html#a1130f851055de3b7ebe9e6fbac960826',1,'franka::JointVelocities::JointVelocities(const std::array< double, 7 > &joint_velocities) noexcept'],['../classfranka_1_1JointVelocities.html#aed384fad8e302638c2e5baea6378c2d2',1,'franka::JointVelocities::JointVelocities(std::initializer_list< double > joint_velocities)']]] +]; diff --git a/0.13.6/search/all_a.html b/0.13.6/search/all_a.html new file mode 100644 index 00000000..3a6cac10 --- /dev/null +++ b/0.13.6/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_a.js b/0.13.6/search/all_a.js new file mode 100644 index 00000000..24b448bd --- /dev/null +++ b/0.13.6/search/all_a.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['k_5ff_5fext_5fhat_5fk_121',['K_F_ext_hat_K',['../structfranka_1_1RobotState.html#a96267d443c05fcc58d7ac32f63912649',1,'franka::RobotState']]], + ['kdefaultcutofffrequency_122',['kDefaultCutoffFrequency',['../lowpass__filter_8h.html#ad8e3b7da346e03181ab5ac138a4171d4',1,'franka']]], + ['kdeltat_123',['kDeltaT',['../rate__limiting_8h.html#a1e207a0d5a6e90c1e1a78e6e1057120a',1,'franka']]], + ['kfactorcartesianrotationposeinterface_124',['kFactorCartesianRotationPoseInterface',['../rate__limiting_8h.html#a19166d1a64c5a84f80b4ed3aa0bfb3a0',1,'franka']]], + ['kgreen_125',['kGreen',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611a1299e6e2ec6371a79385cd3a862f7cc9',1,'franka']]], + ['kjointvelocitylimitstolerance_126',['kJointVelocityLimitsTolerance',['../rate__limiting_8h.html#a39b6d9504e2844d289f834471994d889',1,'franka']]], + ['klimiteps_127',['kLimitEps',['../rate__limiting_8h.html#aad1f9b575274830b8da9e638559d424b',1,'franka']]], + ['kmaxcutofffrequency_128',['kMaxCutoffFrequency',['../lowpass__filter_8h.html#adb10b364af8deb9e17d9bcc1ff2695be',1,'franka']]], + ['kmaxelbowacceleration_129',['kMaxElbowAcceleration',['../rate__limiting_8h.html#af365e574ad7b1580ce15e30dd909b3ba',1,'franka']]], + ['kmaxelbowjerk_130',['kMaxElbowJerk',['../rate__limiting_8h.html#adc70178204d4da073c78de777a2dff74',1,'franka']]], + ['kmaxelbowvelocity_131',['kMaxElbowVelocity',['../rate__limiting_8h.html#a2896b2e0c8bd96f9ee242c1203ac3483',1,'franka']]], + ['kmaxjointacceleration_132',['kMaxJointAcceleration',['../rate__limiting_8h.html#a826ecf0b7d214df69c1ee416d3e66b93',1,'franka']]], + ['kmaxjointjerk_133',['kMaxJointJerk',['../rate__limiting_8h.html#a600a21a6151ff2eee38294293dd8aeec',1,'franka']]], + ['kmaxrotationalacceleration_134',['kMaxRotationalAcceleration',['../rate__limiting_8h.html#a5e3d5c95ba72f9660f17f8ebf1e0aa2e',1,'franka']]], + ['kmaxrotationaljerk_135',['kMaxRotationalJerk',['../rate__limiting_8h.html#a259520ce1b6b5b85a88d05262286820d',1,'franka']]], + ['kmaxrotationalvelocity_136',['kMaxRotationalVelocity',['../rate__limiting_8h.html#aafb1f5ef8f8a7abd546edea498c18b45',1,'franka']]], + ['kmaxtorquerate_137',['kMaxTorqueRate',['../rate__limiting_8h.html#a6c1a0e9a5e1f375d2aad61edac907d4e',1,'franka']]], + ['kmaxtranslationalacceleration_138',['kMaxTranslationalAcceleration',['../rate__limiting_8h.html#a3803b1a54ba526ccaa4fa0d15446f3db',1,'franka']]], + ['kmaxtranslationaljerk_139',['kMaxTranslationalJerk',['../rate__limiting_8h.html#a46b8f11959ed3f731a0914f524af8e69',1,'franka']]], + ['kmaxtranslationalvelocity_140',['kMaxTranslationalVelocity',['../rate__limiting_8h.html#a857e1e5e18d688ec7095264a629bf474',1,'franka']]], + ['knormeps_141',['kNormEps',['../rate__limiting_8h.html#a420d72830a872ef375d9d6cbb1c439b5',1,'franka']]], + ['korange_142',['kOrange',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611a11e1aa07606f098e5025e37830a1b22e',1,'franka']]], + ['kred_143',['kRed',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611afb0136b923af8c04b31a9d1b5e989acf',1,'franka']]], + ['ktolnumberpacketslost_144',['kTolNumberPacketsLost',['../rate__limiting_8h.html#a664b546834ceecd4e3220ffa92f1172c',1,'franka']]], + ['kyellow_145',['kYellow',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611a4c6c30a3642462190739bb7f13af9c7b',1,'franka']]] +]; diff --git a/0.13.6/search/all_b.html b/0.13.6/search/all_b.html new file mode 100644 index 00000000..130deb4e --- /dev/null +++ b/0.13.6/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_b.js b/0.13.6/search/all_b.js new file mode 100644 index 00000000..b19ee860 --- /dev/null +++ b/0.13.6/search/all_b.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['last_5fmotion_5ferrors_146',['last_motion_errors',['../structfranka_1_1RobotState.html#a06d7019f85339409e932dc086b7a260b',1,'franka::RobotState']]], + ['last_5fread_5faccess_147',['last_read_access',['../classfranka_1_1ActiveControl.html#a226304deac8032ed6c8428caa60c9fb4',1,'franka::ActiveControl']]], + ['libfranka_3a_20c_2b_2b_20library_20for_20franka_20robotics_20research_20robots_148',['libfranka: C++ library for Franka Robotics research robots',['../index.html',1,'']]], + ['library_5fversion_149',['library_version',['../structfranka_1_1IncompatibleVersionException.html#a81e6d7f01965ed7ee34f83dc3883ad01',1,'franka::IncompatibleVersionException']]], + ['limitrate_150',['limitRate',['../rate__limiting_8h.html#ae425f551c62b289a93ad471f94f87b7c',1,'franka::limitRate(double upper_limits_velocity, double lower_limits_velocity, double max_acceleration, double max_jerk, double commanded_velocity, double last_commanded_velocity, double last_commanded_acceleration)'],['../rate__limiting_8h.html#a9288f438fcfc1aedf7e0b52aa95b23ba',1,'franka::limitRate(double max_translational_velocity, double max_translational_acceleration, double max_translational_jerk, double max_rotational_velocity, double max_rotational_acceleration, double max_rotational_jerk, const std::array< double, 16 > &O_T_EE_c, const std::array< double, 16 > &last_O_T_EE_c, const std::array< double, 6 > &last_O_dP_EE_c, const std::array< double, 6 > &last_O_ddP_EE_c)'],['../rate__limiting_8h.html#ad3e0243f9be5335ae3d04f87852dfccb',1,'franka::limitRate(double max_translational_velocity, double max_translational_acceleration, double max_translational_jerk, double max_rotational_velocity, double max_rotational_acceleration, double max_rotational_jerk, const std::array< double, 6 > &O_dP_EE_c, const std::array< double, 6 > &last_O_dP_EE_c, const std::array< double, 6 > &last_O_ddP_EE_c)'],['../rate__limiting_8h.html#aaaa22e0873d0630465e506ddc877083f',1,'franka::limitRate(const std::array< double, 7 > &upper_limits_velocity, const std::array< double, 7 > &lower_limits_velocity, const std::array< double, 7 > &max_acceleration, const std::array< double, 7 > &max_jerk, const std::array< double, 7 > &commanded_positions, const std::array< double, 7 > &last_commanded_positions, const std::array< double, 7 > &last_commanded_velocities, const std::array< double, 7 > &last_commanded_accelerations)'],['../rate__limiting_8h.html#a62ebac6ebbef784d44135855a899abef',1,'franka::limitRate(const std::array< double, 7 > &upper_limits_velocity, const std::array< double, 7 > &lower_limits_velocity, const std::array< double, 7 > &max_acceleration, const std::array< double, 7 > &max_jerk, const std::array< double, 7 > &commanded_velocities, const std::array< double, 7 > &last_commanded_velocities, const std::array< double, 7 > &last_commanded_accelerations)'],['../rate__limiting_8h.html#afacb3c087c76dded71874eaa7862b05d',1,'franka::limitRate(double upper_limits_velocity, double lower_limits_velocity, double max_acceleration, double max_jerk, double commanded_position, double last_commanded_position, double last_commanded_velocity, double last_commanded_acceleration)'],['../rate__limiting_8h.html#aea6895d6bf209a86319c6cd5180e4b60',1,'franka::limitRate(const std::array< double, 7 > &max_derivatives, const std::array< double, 7 > &commanded_values, const std::array< double, 7 > &last_commanded_values)']]], + ['loadmodel_151',['loadModel',['../classfranka_1_1Robot.html#a2da598c539469827409ac7e3bb61d5da',1,'franka::Robot']]], + ['log_152',['log',['../structfranka_1_1ControlException.html#ae57f0ac0a9aa195057af1f1cc712b41e',1,'franka::ControlException']]], + ['log_2eh_153',['log.h',['../log_8h.html',1,'']]], + ['logtocsv_154',['logToCSV',['../log_8h.html#a01fbdb37b0e6beb04ba108d5f5024fd9',1,'franka']]], + ['lowpass_5ffilter_2eh_155',['lowpass_filter.h',['../lowpass__filter_8h.html',1,'']]], + ['lowpassfilter_156',['lowpassFilter',['../lowpass__filter_8h.html#a94c21b0e87afce0147a9cd6025c239ca',1,'franka']]] +]; diff --git a/0.13.6/search/all_c.html b/0.13.6/search/all_c.html new file mode 100644 index 00000000..3dd5af06 --- /dev/null +++ b/0.13.6/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_c.js b/0.13.6/search/all_c.js new file mode 100644 index 00000000..9c14b197 --- /dev/null +++ b/0.13.6/search/all_c.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['m_5fee_157',['m_ee',['../structfranka_1_1RobotState.html#af982a16246e33c1495ec02972a36bce3',1,'franka::RobotState']]], + ['m_5fload_158',['m_load',['../structfranka_1_1RobotState.html#a99ea4ab9c5a42a5c17365ed8fd730cd1',1,'franka::RobotState']]], + ['m_5ftotal_159',['m_total',['../structfranka_1_1RobotState.html#a87880d4693c8f576ebdabf00f4d4f981',1,'franka::RobotState']]], + ['mass_160',['mass',['../classfranka_1_1Model.html#ad5f6156064bc18e42fc0b6d2f36b2006',1,'franka::Model::mass(const franka::RobotState &robot_state) const noexcept'],['../classfranka_1_1Model.html#a61c3a8968e927c8629f1d549d20aaf85',1,'franka::Model::mass(const std::array< double, 7 > &q, const std::array< double, 9 > &I_total, double m_total, const std::array< double, 3 > &F_x_Ctotal) const noexcept']]], + ['max_5fgoal_5fpose_5fdeviation_5fviolation_161',['max_goal_pose_deviation_violation',['../structfranka_1_1Errors.html#ac55d3624087e606cb4ffab121869d580',1,'franka::Errors']]], + ['max_5fpath_5fpose_5fdeviation_5fviolation_162',['max_path_pose_deviation_violation',['../structfranka_1_1Errors.html#ad90cffe703ca1b782007f3ba49da587c',1,'franka::Errors']]], + ['max_5fwidth_163',['max_width',['../structfranka_1_1GripperState.html#ab71a26356c2898c49609bf991843e166',1,'franka::GripperState']]], + ['model_164',['Model',['../classfranka_1_1Model.html',1,'franka::Model'],['../classfranka_1_1Model.html#a8b58ff37f62512aecdcd0e6aabfd9548',1,'franka::Model::Model(Model &&model) noexcept'],['../classfranka_1_1Model.html#a751d939935eb51f06dcfd18c6c756ceb',1,'franka::Model::Model(franka::Network &network)']]], + ['model_2eh_165',['model.h',['../model_8h.html',1,'']]], + ['modelexception_166',['ModelException',['../structfranka_1_1ModelException.html',1,'franka']]], + ['motion_5ffinished_167',['motion_finished',['../structfranka_1_1Finishable.html#a5d48028c0f912d4a089e6220d8715f7f',1,'franka::Finishable']]], + ['motion_5fid_168',['motion_id',['../classfranka_1_1ActiveControl.html#a0852a7d4b5a67df218440c2cc629f638',1,'franka::ActiveControl']]], + ['motionfinished_169',['MotionFinished',['../control__types_8h.html#a20791f7142d78bbbe3c957cc66a23ade',1,'franka::MotionFinished(Torques command) noexcept'],['../control__types_8h.html#a7f505509951b6568b08b3aec8ffb9098',1,'franka::MotionFinished(JointPositions command) noexcept'],['../control__types_8h.html#ab478c128d691a46c0ab85bbf3b5caac5',1,'franka::MotionFinished(JointVelocities command) noexcept'],['../control__types_8h.html#ab0b308e2a9348fd3eb5fd1d08db12dcf',1,'franka::MotionFinished(CartesianPose command) noexcept'],['../control__types_8h.html#a5898ad5e3bbc2682c24c0415bf7e9a95',1,'franka::MotionFinished(CartesianVelocities command) noexcept']]], + ['motiongenerator_170',['MotionGenerator',['../classMotionGenerator.html',1,'MotionGenerator'],['../classMotionGenerator.html#a23dd564a60401c539fb7f1bf63470894',1,'MotionGenerator::MotionGenerator()']]], + ['move_171',['move',['../classfranka_1_1Gripper.html#a047bc39267d66d6fb26c4c70669d68c2',1,'franka::Gripper']]] +]; diff --git a/0.13.6/search/all_d.html b/0.13.6/search/all_d.html new file mode 100644 index 00000000..af7f2f0f --- /dev/null +++ b/0.13.6/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_d.js b/0.13.6/search/all_d.js new file mode 100644 index 00000000..490aeb07 --- /dev/null +++ b/0.13.6/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ne_5ft_5fee_172',['NE_T_EE',['../structfranka_1_1RobotState.html#ac53f1046fe758cfdda438a8e3ba08fff',1,'franka::RobotState']]], + ['networkexception_173',['NetworkException',['../structfranka_1_1NetworkException.html',1,'franka']]] +]; diff --git a/0.13.6/search/all_e.html b/0.13.6/search/all_e.html new file mode 100644 index 00000000..e25df423 --- /dev/null +++ b/0.13.6/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_e.js b/0.13.6/search/all_e.js new file mode 100644 index 00000000..71b46ffa --- /dev/null +++ b/0.13.6/search/all_e.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['duration_3c_20uint64_5ft_2c_20std_3a_3amilli_20_3e_174',['duration< uint64_t, std::milli >',['../classfranka_1_1Duration.html#ae58e283f511f9de8ac7e145db5cac1cf',1,'franka::Duration']]], + ['o_5fddp_5fee_5fc_175',['O_ddP_EE_c',['../structfranka_1_1RobotState.html#ac8dfcf78ddbb27852484e921d6d66ca1',1,'franka::RobotState']]], + ['o_5fddp_5fo_176',['O_ddP_O',['../structfranka_1_1RobotState.html#ab24d7982942d316459fc35337dc38ecd',1,'franka::RobotState']]], + ['o_5fdp_5fee_177',['O_dP_EE',['../classfranka_1_1CartesianVelocities.html#ab7a42c7c1ee7109025aff5c43a56b398',1,'franka::CartesianVelocities']]], + ['o_5fdp_5fee_5fc_178',['O_dP_EE_c',['../structfranka_1_1RobotState.html#a4be112bd1a9a7d777a67aea4a18a8dcc',1,'franka::RobotState']]], + ['o_5fdp_5fee_5fd_179',['O_dP_EE_d',['../structfranka_1_1RobotState.html#a1e0a82b98534929c3061295d5761d607',1,'franka::RobotState']]], + ['o_5ff_5fext_5fhat_5fk_180',['O_F_ext_hat_K',['../structfranka_1_1RobotState.html#a5a830b4f9d6a3c2dc92e4a9cc6050493',1,'franka::RobotState']]], + ['o_5ft_5fee_181',['O_T_EE',['../classfranka_1_1CartesianPose.html#a406e53e3d8fe594a11888f516eb4bf7d',1,'franka::CartesianPose::O_T_EE()'],['../structfranka_1_1RobotState.html#a193781d47722b32925e0ea7ac415f442',1,'franka::RobotState::O_T_EE()']]], + ['o_5ft_5fee_5fc_182',['O_T_EE_c',['../structfranka_1_1RobotState.html#a395c48eff099419ea5d42eaf0870fc18',1,'franka::RobotState']]], + ['o_5ft_5fee_5fd_183',['O_T_EE_d',['../structfranka_1_1RobotState.html#a3e5b4b7687856e92d826044be7d15733',1,'franka::RobotState']]], + ['operator_20bool_184',['operator bool',['../structfranka_1_1Errors.html#a50cb6e50c1ce2b5ec281dcad83f1779e',1,'franka::Errors']]], + ['operator_21_3d_185',['operator!=',['../classfranka_1_1Duration.html#a61603353e39361af2f405c1df7097e84',1,'franka::Duration']]], + ['operator_25_186',['operator%',['../classfranka_1_1Duration.html#a5e472345c1bec29b645bee938932fdb1',1,'franka::Duration::operator%(const Duration &rhs) const noexcept'],['../classfranka_1_1Duration.html#af06ff91f24d881c479768c1bcbf31a1e',1,'franka::Duration::operator%(uint64_t rhs) const noexcept']]], + ['operator_25_3d_187',['operator%=',['../classfranka_1_1Duration.html#a97a6ea669877875ffc54c801ac0b152d',1,'franka::Duration::operator%=(const Duration &rhs) noexcept'],['../classfranka_1_1Duration.html#acd85bab22062a2258af83ac5b3b7a647',1,'franka::Duration::operator%=(uint64_t rhs) noexcept']]], + ['operator_28_29_188',['operator()',['../classMotionGenerator.html#aefd763e7c31c54b56404f33d2295fda9',1,'MotionGenerator']]], + ['operator_2a_189',['operator*',['../duration_8h.html#ab3a36a47682756845ef855994aadd7b6',1,'franka::operator*()'],['../classfranka_1_1Duration.html#a3eebc39550880fb2d23d45ba34d8acc5',1,'franka::Duration::operator*(uint64_t rhs) const noexcept']]], + ['operator_2a_3d_190',['operator*=',['../classfranka_1_1Duration.html#a73f971b2efb29a8ce663e8675d1ec09a',1,'franka::Duration']]], + ['operator_2b_191',['operator+',['../classfranka_1_1Duration.html#adb459e7bf5c6b02f9e72c808f5f30237',1,'franka::Duration']]], + ['operator_2b_2b_192',['operator++',['../model_8h.html#ae39c3a098fdb1bc9a097a262312454d0',1,'franka']]], + ['operator_2b_3d_193',['operator+=',['../classfranka_1_1Duration.html#ac55eb81937a12e736560bd856a8f23ae',1,'franka::Duration']]], + ['operator_2d_194',['operator-',['../classfranka_1_1Duration.html#a2a3bc1a8278b91bebe88d7498d410de9',1,'franka::Duration']]], + ['operator_2d_3d_195',['operator-=',['../classfranka_1_1Duration.html#acb24af377db86646918bcfb3e1e2ebe6',1,'franka::Duration']]], + ['operator_2f_196',['operator/',['../classfranka_1_1Duration.html#a15b7299198f36734b62ac98da1ef8c9c',1,'franka::Duration::operator/(uint64_t rhs) const noexcept'],['../classfranka_1_1Duration.html#a90c76be31b53e11f5761416a05d990be',1,'franka::Duration::operator/(const Duration &rhs) const noexcept']]], + ['operator_2f_3d_197',['operator/=',['../classfranka_1_1Duration.html#ac866dd8d0e8f2dbb92089dbd78418571',1,'franka::Duration']]], + ['operator_3c_198',['operator<',['../classfranka_1_1Duration.html#af1650b31c1226a447406fc243f4a2ac1',1,'franka::Duration']]], + ['operator_3c_3c_199',['operator<<',['../vacuum__gripper__state_8h.html#aa2caece6baf774e998b6dec6e803cf24',1,'franka::operator<<(std::ostream &ostream, const franka::VacuumGripperState &vacuum_gripper_state)'],['../robot__state_8h.html#a7d75ab63150979690a639f432c166755',1,'franka::operator<<(std::ostream &ostream, RobotMode robot_mode)'],['../robot__state_8h.html#aee38e87180cc96476d0f11335da29e20',1,'franka::operator<<(std::ostream &ostream, const franka::RobotState &robot_state)'],['../gripper__state_8h.html#ab66181a74d1d3b7e90ae3b424ee85f4f',1,'franka::operator<<(std::ostream &ostream, const franka::GripperState &gripper_state)'],['../errors_8h.html#ad1027058086c3c154f4bbc9cade1f197',1,'franka::operator<<(std::ostream &ostream, const Errors &errors)']]], + ['operator_3c_3d_200',['operator<=',['../classfranka_1_1Duration.html#ae4b9c8646fd50a2105d36f3848a5b949',1,'franka::Duration']]], + ['operator_3d_201',['operator=',['../classfranka_1_1VacuumGripper.html#a21d59603ac4deb8d9de5e074a57d080d',1,'franka::VacuumGripper::operator=()'],['../classfranka_1_1Robot.html#a35465b8497a7adbd277e70e98b7d97a7',1,'franka::Robot::operator=()'],['../classfranka_1_1Model.html#a625529a4c9aed7783c9c6e150dbba793',1,'franka::Model::operator=()'],['../classfranka_1_1Gripper.html#a3c99c6973f8951ca489c4177cfacb069',1,'franka::Gripper::operator=()'],['../structfranka_1_1Errors.html#a6fefa4083d79362080b79f3492fd4cb6',1,'franka::Errors::operator=()'],['../classfranka_1_1Duration.html#adf2fec0c87fe1668e42f217ab029df19',1,'franka::Duration::operator=(const Duration &)=default']]], + ['operator_3d_3d_202',['operator==',['../classfranka_1_1Duration.html#add0c7bcdfe51b563016236b223d74eae',1,'franka::Duration']]], + ['operator_3e_203',['operator>',['../classfranka_1_1Duration.html#a1702ec9121fe6cff1de533d116edcce0',1,'franka::Duration']]], + ['operator_3e_3d_204',['operator>=',['../classfranka_1_1Duration.html#a5bc498cf96d96f5908d6bd93eea491aa',1,'franka::Duration']]], + ['string_205',['string',['../structfranka_1_1Errors.html#a63ed1948f69db5be95a9c70107955d68',1,'franka::Errors']]] +]; diff --git a/0.13.6/search/all_f.html b/0.13.6/search/all_f.html new file mode 100644 index 00000000..b23da6ce --- /dev/null +++ b/0.13.6/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/all_f.js b/0.13.6/search/all_f.js new file mode 100644 index 00000000..fc3ea966 --- /dev/null +++ b/0.13.6/search/all_f.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['part_5fdetached_206',['part_detached',['../structfranka_1_1VacuumGripperState.html#aa27a2b4b9d19bdcb059995a8121ba309',1,'franka::VacuumGripperState']]], + ['part_5fpresent_207',['part_present',['../structfranka_1_1VacuumGripperState.html#aeb5664ab2a9784c9e31ce5f67c914107',1,'franka::VacuumGripperState']]], + ['pose_208',['pose',['../classfranka_1_1Model.html#a593c39dae76a6801cdd2402c2a783157',1,'franka::Model::pose(Frame frame, const franka::RobotState &robot_state) const'],['../classfranka_1_1Model.html#adf4fdf0404c2acf783493f7e646a6281',1,'franka::Model::pose(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const']]], + ['power_5flimit_5fviolation_209',['power_limit_violation',['../structfranka_1_1Errors.html#a6c4d8cb1fb314567ebd07a6195b840f5',1,'franka::Errors']]], + ['productionsetupprofile_210',['ProductionSetupProfile',['../classfranka_1_1VacuumGripper.html#a0c81171a75c385780a82ff8dc36ef51e',1,'franka::VacuumGripper']]], + ['protocolexception_211',['ProtocolException',['../structfranka_1_1ProtocolException.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_0.html b/0.13.6/search/classes_0.html new file mode 100644 index 00000000..af8159ee --- /dev/null +++ b/0.13.6/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_0.js b/0.13.6/search/classes_0.js new file mode 100644 index 00000000..3df8de67 --- /dev/null +++ b/0.13.6/search/classes_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['activecontrol_273',['ActiveControl',['../classfranka_1_1ActiveControl.html',1,'franka']]], + ['activecontrolbase_274',['ActiveControlBase',['../classfranka_1_1ActiveControlBase.html',1,'franka']]], + ['activemotiongenerator_275',['ActiveMotionGenerator',['../classfranka_1_1ActiveMotionGenerator.html',1,'franka']]], + ['activetorquecontrol_276',['ActiveTorqueControl',['../classfranka_1_1ActiveTorqueControl.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_1.html b/0.13.6/search/classes_1.html new file mode 100644 index 00000000..576e9168 --- /dev/null +++ b/0.13.6/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_1.js b/0.13.6/search/classes_1.js new file mode 100644 index 00000000..9a65d5b0 --- /dev/null +++ b/0.13.6/search/classes_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['cartesianpose_277',['CartesianPose',['../classfranka_1_1CartesianPose.html',1,'franka']]], + ['cartesianvelocities_278',['CartesianVelocities',['../classfranka_1_1CartesianVelocities.html',1,'franka']]], + ['commandexception_279',['CommandException',['../structfranka_1_1CommandException.html',1,'franka']]], + ['controlexception_280',['ControlException',['../structfranka_1_1ControlException.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_2.html b/0.13.6/search/classes_2.html new file mode 100644 index 00000000..956405e5 --- /dev/null +++ b/0.13.6/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_2.js b/0.13.6/search/classes_2.js new file mode 100644 index 00000000..2151ecef --- /dev/null +++ b/0.13.6/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['duration_281',['Duration',['../classfranka_1_1Duration.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_3.html b/0.13.6/search/classes_3.html new file mode 100644 index 00000000..d33343bc --- /dev/null +++ b/0.13.6/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_3.js b/0.13.6/search/classes_3.js new file mode 100644 index 00000000..6d8496db --- /dev/null +++ b/0.13.6/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['errors_282',['Errors',['../structfranka_1_1Errors.html',1,'franka']]], + ['exception_283',['Exception',['../structfranka_1_1Exception.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_4.html b/0.13.6/search/classes_4.html new file mode 100644 index 00000000..8430b07f --- /dev/null +++ b/0.13.6/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_4.js b/0.13.6/search/classes_4.js new file mode 100644 index 00000000..9f74bafa --- /dev/null +++ b/0.13.6/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['finishable_284',['Finishable',['../structfranka_1_1Finishable.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_5.html b/0.13.6/search/classes_5.html new file mode 100644 index 00000000..c2f1b767 --- /dev/null +++ b/0.13.6/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_5.js b/0.13.6/search/classes_5.js new file mode 100644 index 00000000..1ba146e0 --- /dev/null +++ b/0.13.6/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gripper_285',['Gripper',['../classfranka_1_1Gripper.html',1,'franka']]], + ['gripperstate_286',['GripperState',['../structfranka_1_1GripperState.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_6.html b/0.13.6/search/classes_6.html new file mode 100644 index 00000000..e39847ce --- /dev/null +++ b/0.13.6/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_6.js b/0.13.6/search/classes_6.js new file mode 100644 index 00000000..5ca264af --- /dev/null +++ b/0.13.6/search/classes_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['incompatibleversionexception_287',['IncompatibleVersionException',['../structfranka_1_1IncompatibleVersionException.html',1,'franka']]], + ['invalidoperationexception_288',['InvalidOperationException',['../structfranka_1_1InvalidOperationException.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_7.html b/0.13.6/search/classes_7.html new file mode 100644 index 00000000..a2c4d1a3 --- /dev/null +++ b/0.13.6/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_7.js b/0.13.6/search/classes_7.js new file mode 100644 index 00000000..4660f7ed --- /dev/null +++ b/0.13.6/search/classes_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['jointpositions_289',['JointPositions',['../classfranka_1_1JointPositions.html',1,'franka']]], + ['jointvelocities_290',['JointVelocities',['../classfranka_1_1JointVelocities.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_8.html b/0.13.6/search/classes_8.html new file mode 100644 index 00000000..17003e48 --- /dev/null +++ b/0.13.6/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_8.js b/0.13.6/search/classes_8.js new file mode 100644 index 00000000..1e3e6cce --- /dev/null +++ b/0.13.6/search/classes_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['model_291',['Model',['../classfranka_1_1Model.html',1,'franka']]], + ['modelexception_292',['ModelException',['../structfranka_1_1ModelException.html',1,'franka']]], + ['motiongenerator_293',['MotionGenerator',['../classMotionGenerator.html',1,'']]] +]; diff --git a/0.13.6/search/classes_9.html b/0.13.6/search/classes_9.html new file mode 100644 index 00000000..b8afa8cb --- /dev/null +++ b/0.13.6/search/classes_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_9.js b/0.13.6/search/classes_9.js new file mode 100644 index 00000000..984f81e5 --- /dev/null +++ b/0.13.6/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['networkexception_294',['NetworkException',['../structfranka_1_1NetworkException.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_a.html b/0.13.6/search/classes_a.html new file mode 100644 index 00000000..6788af27 --- /dev/null +++ b/0.13.6/search/classes_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_a.js b/0.13.6/search/classes_a.js new file mode 100644 index 00000000..f2c7a8d8 --- /dev/null +++ b/0.13.6/search/classes_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['protocolexception_295',['ProtocolException',['../structfranka_1_1ProtocolException.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_b.html b/0.13.6/search/classes_b.html new file mode 100644 index 00000000..3fcb4985 --- /dev/null +++ b/0.13.6/search/classes_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_b.js b/0.13.6/search/classes_b.js new file mode 100644 index 00000000..27b1ad29 --- /dev/null +++ b/0.13.6/search/classes_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['realtimeexception_296',['RealtimeException',['../structfranka_1_1RealtimeException.html',1,'franka']]], + ['record_297',['Record',['../structfranka_1_1Record.html',1,'franka']]], + ['robot_298',['Robot',['../classfranka_1_1Robot.html',1,'franka']]], + ['robotcommand_299',['RobotCommand',['../structfranka_1_1RobotCommand.html',1,'franka']]], + ['robotstate_300',['RobotState',['../structfranka_1_1RobotState.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_c.html b/0.13.6/search/classes_c.html new file mode 100644 index 00000000..2f7b1f3d --- /dev/null +++ b/0.13.6/search/classes_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_c.js b/0.13.6/search/classes_c.js new file mode 100644 index 00000000..9f4175c3 --- /dev/null +++ b/0.13.6/search/classes_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['torques_301',['Torques',['../classfranka_1_1Torques.html',1,'franka']]] +]; diff --git a/0.13.6/search/classes_d.html b/0.13.6/search/classes_d.html new file mode 100644 index 00000000..f9011e70 --- /dev/null +++ b/0.13.6/search/classes_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/classes_d.js b/0.13.6/search/classes_d.js new file mode 100644 index 00000000..945909df --- /dev/null +++ b/0.13.6/search/classes_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vacuumgripper_302',['VacuumGripper',['../classfranka_1_1VacuumGripper.html',1,'franka']]], + ['vacuumgripperstate_303',['VacuumGripperState',['../structfranka_1_1VacuumGripperState.html',1,'franka']]] +]; diff --git a/0.13.6/search/close.svg b/0.13.6/search/close.svg new file mode 100644 index 00000000..a933eea1 --- /dev/null +++ b/0.13.6/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/0.13.6/search/enums_0.html b/0.13.6/search/enums_0.html new file mode 100644 index 00000000..141fff57 --- /dev/null +++ b/0.13.6/search/enums_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/enums_0.js b/0.13.6/search/enums_0.js new file mode 100644 index 00000000..5ffecd15 --- /dev/null +++ b/0.13.6/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['controllermode_551',['ControllerMode',['../control__types_8h.html#a3e20bc77587e2c0c53598753e3f4816b',1,'franka']]] +]; diff --git a/0.13.6/search/enums_1.html b/0.13.6/search/enums_1.html new file mode 100644 index 00000000..d29f3b16 --- /dev/null +++ b/0.13.6/search/enums_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/enums_1.js b/0.13.6/search/enums_1.js new file mode 100644 index 00000000..e103f163 --- /dev/null +++ b/0.13.6/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['frame_552',['Frame',['../model_8h.html#a00b729ddce916481d3f0d10febec4f5b',1,'franka']]] +]; diff --git a/0.13.6/search/enums_2.html b/0.13.6/search/enums_2.html new file mode 100644 index 00000000..59aadf2c --- /dev/null +++ b/0.13.6/search/enums_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/enums_2.js b/0.13.6/search/enums_2.js new file mode 100644 index 00000000..0823f5e8 --- /dev/null +++ b/0.13.6/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['productionsetupprofile_553',['ProductionSetupProfile',['../classfranka_1_1VacuumGripper.html#a0c81171a75c385780a82ff8dc36ef51e',1,'franka::VacuumGripper']]] +]; diff --git a/0.13.6/search/enums_3.html b/0.13.6/search/enums_3.html new file mode 100644 index 00000000..87c17443 --- /dev/null +++ b/0.13.6/search/enums_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/enums_3.js b/0.13.6/search/enums_3.js new file mode 100644 index 00000000..d018c78d --- /dev/null +++ b/0.13.6/search/enums_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['realtimeconfig_554',['RealtimeConfig',['../control__types_8h.html#aeede4f4629390fea21ca5e5a35a8a943',1,'franka']]], + ['robotmode_555',['RobotMode',['../robot__state_8h.html#adfe059ae23ebbad59e421edaa879651a',1,'franka']]] +]; diff --git a/0.13.6/search/enums_4.html b/0.13.6/search/enums_4.html new file mode 100644 index 00000000..90dda139 --- /dev/null +++ b/0.13.6/search/enums_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/enums_4.js b/0.13.6/search/enums_4.js new file mode 100644 index 00000000..e13fc071 --- /dev/null +++ b/0.13.6/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vacuumgripperdevicestatus_556',['VacuumGripperDeviceStatus',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611',1,'franka']]] +]; diff --git a/0.13.6/search/enumvalues_0.html b/0.13.6/search/enumvalues_0.html new file mode 100644 index 00000000..0d131d95 --- /dev/null +++ b/0.13.6/search/enumvalues_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/enumvalues_0.js b/0.13.6/search/enumvalues_0.js new file mode 100644 index 00000000..2f3d960c --- /dev/null +++ b/0.13.6/search/enumvalues_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['kgreen_557',['kGreen',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611a1299e6e2ec6371a79385cd3a862f7cc9',1,'franka']]], + ['korange_558',['kOrange',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611a11e1aa07606f098e5025e37830a1b22e',1,'franka']]], + ['kred_559',['kRed',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611afb0136b923af8c04b31a9d1b5e989acf',1,'franka']]], + ['kyellow_560',['kYellow',['../vacuum__gripper__state_8h.html#a423e2ce5f95933b9897c6e308d91b611a4c6c30a3642462190739bb7f13af9c7b',1,'franka']]] +]; diff --git a/0.13.6/search/files_0.html b/0.13.6/search/files_0.html new file mode 100644 index 00000000..9498842a --- /dev/null +++ b/0.13.6/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_0.js b/0.13.6/search/files_0.js new file mode 100644 index 00000000..673d5c39 --- /dev/null +++ b/0.13.6/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['active_5fcontrol_2eh_304',['active_control.h',['../active__control_8h.html',1,'']]], + ['active_5fcontrol_5fbase_2eh_305',['active_control_base.h',['../active__control__base_8h.html',1,'']]], + ['active_5fmotion_5fgenerator_2eh_306',['active_motion_generator.h',['../active__motion__generator_8h.html',1,'']]], + ['active_5ftorque_5fcontrol_2eh_307',['active_torque_control.h',['../active__torque__control_8h.html',1,'']]] +]; diff --git a/0.13.6/search/files_1.html b/0.13.6/search/files_1.html new file mode 100644 index 00000000..7050ef48 --- /dev/null +++ b/0.13.6/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_1.js b/0.13.6/search/files_1.js new file mode 100644 index 00000000..0bd3813c --- /dev/null +++ b/0.13.6/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['control_5ftools_2eh_308',['control_tools.h',['../control__tools_8h.html',1,'']]], + ['control_5ftypes_2eh_309',['control_types.h',['../control__types_8h.html',1,'']]] +]; diff --git a/0.13.6/search/files_2.html b/0.13.6/search/files_2.html new file mode 100644 index 00000000..497cdf5c --- /dev/null +++ b/0.13.6/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_2.js b/0.13.6/search/files_2.js new file mode 100644 index 00000000..daeee59e --- /dev/null +++ b/0.13.6/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['duration_2eh_310',['duration.h',['../duration_8h.html',1,'']]] +]; diff --git a/0.13.6/search/files_3.html b/0.13.6/search/files_3.html new file mode 100644 index 00000000..1ba106b2 --- /dev/null +++ b/0.13.6/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_3.js b/0.13.6/search/files_3.js new file mode 100644 index 00000000..f142a9f7 --- /dev/null +++ b/0.13.6/search/files_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['errors_2eh_311',['errors.h',['../errors_8h.html',1,'']]], + ['examples_5fcommon_2eh_312',['examples_common.h',['../examples__common_8h.html',1,'']]], + ['exception_2eh_313',['exception.h',['../exception_8h.html',1,'']]] +]; diff --git a/0.13.6/search/files_4.html b/0.13.6/search/files_4.html new file mode 100644 index 00000000..753b7b10 --- /dev/null +++ b/0.13.6/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_4.js b/0.13.6/search/files_4.js new file mode 100644 index 00000000..c0d1211a --- /dev/null +++ b/0.13.6/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gripper_2eh_314',['gripper.h',['../gripper_8h.html',1,'']]], + ['gripper_5fstate_2eh_315',['gripper_state.h',['../gripper__state_8h.html',1,'']]] +]; diff --git a/0.13.6/search/files_5.html b/0.13.6/search/files_5.html new file mode 100644 index 00000000..7b6affd7 --- /dev/null +++ b/0.13.6/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_5.js b/0.13.6/search/files_5.js new file mode 100644 index 00000000..babb79b4 --- /dev/null +++ b/0.13.6/search/files_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['log_2eh_316',['log.h',['../log_8h.html',1,'']]], + ['lowpass_5ffilter_2eh_317',['lowpass_filter.h',['../lowpass__filter_8h.html',1,'']]] +]; diff --git a/0.13.6/search/files_6.html b/0.13.6/search/files_6.html new file mode 100644 index 00000000..802ebf71 --- /dev/null +++ b/0.13.6/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_6.js b/0.13.6/search/files_6.js new file mode 100644 index 00000000..aa326cc5 --- /dev/null +++ b/0.13.6/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_2eh_318',['model.h',['../model_8h.html',1,'']]] +]; diff --git a/0.13.6/search/files_7.html b/0.13.6/search/files_7.html new file mode 100644 index 00000000..365e6484 --- /dev/null +++ b/0.13.6/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_7.js b/0.13.6/search/files_7.js new file mode 100644 index 00000000..e88b822d --- /dev/null +++ b/0.13.6/search/files_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['rate_5flimiting_2eh_319',['rate_limiting.h',['../rate__limiting_8h.html',1,'']]], + ['robot_2eh_320',['robot.h',['../robot_8h.html',1,'']]], + ['robot_5fstate_2eh_321',['robot_state.h',['../robot__state_8h.html',1,'']]] +]; diff --git a/0.13.6/search/files_8.html b/0.13.6/search/files_8.html new file mode 100644 index 00000000..3df0f2fa --- /dev/null +++ b/0.13.6/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/files_8.js b/0.13.6/search/files_8.js new file mode 100644 index 00000000..9cc94ac7 --- /dev/null +++ b/0.13.6/search/files_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vacuum_5fgripper_2eh_322',['vacuum_gripper.h',['../vacuum__gripper_8h.html',1,'']]], + ['vacuum_5fgripper_5fstate_2eh_323',['vacuum_gripper_state.h',['../vacuum__gripper__state_8h.html',1,'']]] +]; diff --git a/0.13.6/search/functions_0.html b/0.13.6/search/functions_0.html new file mode 100644 index 00000000..eb4c5014 --- /dev/null +++ b/0.13.6/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_0.js b/0.13.6/search/functions_0.js new file mode 100644 index 00000000..c145ac5f --- /dev/null +++ b/0.13.6/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['activecontrol_324',['ActiveControl',['../classfranka_1_1ActiveControl.html#a4aa09537fddbec6cf1eed05fdc147b30',1,'franka::ActiveControl']]], + ['automaticerrorrecovery_325',['automaticErrorRecovery',['../classfranka_1_1Robot.html#af682aa673415718715bd859116bc2fed',1,'franka::Robot']]] +]; diff --git a/0.13.6/search/functions_1.html b/0.13.6/search/functions_1.html new file mode 100644 index 00000000..ef4088b8 --- /dev/null +++ b/0.13.6/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_1.js b/0.13.6/search/functions_1.js new file mode 100644 index 00000000..b24a3474 --- /dev/null +++ b/0.13.6/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bodyjacobian_326',['bodyJacobian',['../classfranka_1_1Model.html#a914a197a900a275799cf8d7461bb9d8a',1,'franka::Model::bodyJacobian(Frame frame, const franka::RobotState &robot_state) const'],['../classfranka_1_1Model.html#a9ceca00546fa221f15ddaa7c0d27c40e',1,'franka::Model::bodyJacobian(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const']]] +]; diff --git a/0.13.6/search/functions_10.html b/0.13.6/search/functions_10.html new file mode 100644 index 00000000..1bdc1257 --- /dev/null +++ b/0.13.6/search/functions_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_10.js b/0.13.6/search/functions_10.js new file mode 100644 index 00000000..73ad9978 --- /dev/null +++ b/0.13.6/search/functions_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vacuum_407',['vacuum',['../classfranka_1_1VacuumGripper.html#a517d95d9800990ca1a5892473c2def89',1,'franka::VacuumGripper']]], + ['vacuumgripper_408',['VacuumGripper',['../classfranka_1_1VacuumGripper.html#ab5d8483a0bb16136da684cfac721eae1',1,'franka::VacuumGripper::VacuumGripper(const std::string &franka_address)'],['../classfranka_1_1VacuumGripper.html#ab80730b14b5948eea37395e87800ce5f',1,'franka::VacuumGripper::VacuumGripper(VacuumGripper &&vacuum_gripper) noexcept']]] +]; diff --git a/0.13.6/search/functions_11.html b/0.13.6/search/functions_11.html new file mode 100644 index 00000000..188076ef --- /dev/null +++ b/0.13.6/search/functions_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_11.js b/0.13.6/search/functions_11.js new file mode 100644 index 00000000..bd5bfd64 --- /dev/null +++ b/0.13.6/search/functions_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['writeonce_409',['writeOnce',['../classfranka_1_1ActiveControlBase.html#ab0b5421122071fa0d578dcd0f4cabc36',1,'franka::ActiveControlBase::writeOnce()'],['../classfranka_1_1ActiveTorqueControl.html#acc3b1d8c41cd191786e384887adf5da2',1,'franka::ActiveTorqueControl::writeOnce()'],['../classfranka_1_1ActiveMotionGenerator.html#aae24c0819a0bd0996657063832245d69',1,'franka::ActiveMotionGenerator::writeOnce()'],['../classfranka_1_1ActiveControlBase.html#a35ad38e4c512e34b0c82b081cefe4020',1,'franka::ActiveControlBase::writeOnce(const CartesianVelocities &motion_generator_input)=0'],['../classfranka_1_1ActiveControlBase.html#a9b05a521b8ab9d1af6c58b3d1fbcf12f',1,'franka::ActiveControlBase::writeOnce(const CartesianPose &motion_generator_input)=0'],['../classfranka_1_1ActiveControlBase.html#ae00c5b9387e21b76443ddfd173f7d01e',1,'franka::ActiveControlBase::writeOnce(const JointVelocities &motion_generator_input)=0'],['../classfranka_1_1ActiveControlBase.html#a800a13f3d6d12408dbff3afc8d072af2',1,'franka::ActiveControlBase::writeOnce(const JointPositions &motion_generator_input)=0'],['../classfranka_1_1ActiveControlBase.html#ac94d472225bbe8b6322b9f3cbf98bd3b',1,'franka::ActiveControlBase::writeOnce(const CartesianVelocities &, const std::optional< const Torques > &)=0'],['../classfranka_1_1ActiveControlBase.html#a61ffd2a40b082e275784175f7a38aa08',1,'franka::ActiveControlBase::writeOnce(const CartesianPose &, const std::optional< const Torques > &)=0'],['../classfranka_1_1ActiveControlBase.html#a46f54e3366ad083c9dedf62b9f4e1fea',1,'franka::ActiveControlBase::writeOnce(const JointVelocities &, const std::optional< const Torques > &)=0'],['../classfranka_1_1ActiveControl.html#a888b87832cd3def156c07a0b57d95663',1,'franka::ActiveControl::writeOnce()'],['../classfranka_1_1ActiveControlBase.html#a070846c3bd259aa703848d984a82e43d',1,'franka::ActiveControlBase::writeOnce()'],['../classfranka_1_1ActiveControl.html#ad4bf06b3e873fd95a2261d67d89a4d1f',1,'franka::ActiveControl::writeOnce(const CartesianVelocities &motion_generator_input) override'],['../classfranka_1_1ActiveControl.html#a6b6265ccad26dc2e32c7b6329b74fb80',1,'franka::ActiveControl::writeOnce(const CartesianPose &motion_generator_input) override'],['../classfranka_1_1ActiveControl.html#a7f54a6bc037fa63f14e1a3f1329d4bf5',1,'franka::ActiveControl::writeOnce(const JointVelocities &motion_generator_input) override'],['../classfranka_1_1ActiveControl.html#a8166a590c84c749cd90c874bd2f1aca4',1,'franka::ActiveControl::writeOnce(const JointPositions &motion_generator_input) override'],['../classfranka_1_1ActiveControl.html#a12c3c6916e26e66dae41eb624daabb4a',1,'franka::ActiveControl::writeOnce(const CartesianVelocities &, const std::optional< const Torques > &) override'],['../classfranka_1_1ActiveControl.html#a52f9ce19182359732bddee7b52a87419',1,'franka::ActiveControl::writeOnce(const CartesianPose &, const std::optional< const Torques > &) override'],['../classfranka_1_1ActiveControl.html#a2a27360ae8203fa8a413c47708e03ede',1,'franka::ActiveControl::writeOnce(const JointVelocities &, const std::optional< const Torques > &) override'],['../classfranka_1_1ActiveControl.html#a762615a1a3d5cf18064bfbd0b45effa6',1,'franka::ActiveControl::writeOnce(const JointPositions &, const std::optional< const Torques > &) override']]] +]; diff --git a/0.13.6/search/functions_12.html b/0.13.6/search/functions_12.html new file mode 100644 index 00000000..eb29d8f9 --- /dev/null +++ b/0.13.6/search/functions_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_12.js b/0.13.6/search/functions_12.js new file mode 100644 index 00000000..c24aa6fa --- /dev/null +++ b/0.13.6/search/functions_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zerojacobian_410',['zeroJacobian',['../classfranka_1_1Model.html#a6fb6347b571a6759bad10b3a9e28a28f',1,'franka::Model::zeroJacobian(Frame frame, const franka::RobotState &robot_state) const'],['../classfranka_1_1Model.html#a6522f1079e1dc5f6799dde6197b45259',1,'franka::Model::zeroJacobian(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const']]] +]; diff --git a/0.13.6/search/functions_13.html b/0.13.6/search/functions_13.html new file mode 100644 index 00000000..3da2ea69 --- /dev/null +++ b/0.13.6/search/functions_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_13.js b/0.13.6/search/functions_13.js new file mode 100644 index 00000000..e12b91fb --- /dev/null +++ b/0.13.6/search/functions_13.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_7egripper_411',['~Gripper',['../classfranka_1_1Gripper.html#ade253b8a35312d52c636c6aafb7b2e1d',1,'franka::Gripper']]], + ['_7emodel_412',['~Model',['../classfranka_1_1Model.html#a1d6ffa26afc6cfdff7e329d15b8bd65e',1,'franka::Model']]], + ['_7erobot_413',['~Robot',['../classfranka_1_1Robot.html#ac19400de0fd39852d5825b1f1ccc85e2',1,'franka::Robot']]], + ['_7evacuumgripper_414',['~VacuumGripper',['../classfranka_1_1VacuumGripper.html#af43f640f3cb9ca873b02bb464d3c279b',1,'franka::VacuumGripper']]] +]; diff --git a/0.13.6/search/functions_2.html b/0.13.6/search/functions_2.html new file mode 100644 index 00000000..ca5aa10e --- /dev/null +++ b/0.13.6/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_2.js b/0.13.6/search/functions_2.js new file mode 100644 index 00000000..9d64419c --- /dev/null +++ b/0.13.6/search/functions_2.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['cartesianlowpassfilter_327',['cartesianLowpassFilter',['../lowpass__filter_8h.html#ac25e174345ea5e2ea9099287ad43cd2b',1,'franka']]], + ['cartesianpose_328',['CartesianPose',['../classfranka_1_1CartesianPose.html#a17272cb33af9aa4b726fa96b31cf0101',1,'franka::CartesianPose::CartesianPose(const std::array< double, 16 > &cartesian_pose, const std::array< double, 2 > &elbow) noexcept'],['../classfranka_1_1CartesianPose.html#a70b6460e98bc763a49c53accd48d54a2',1,'franka::CartesianPose::CartesianPose(std::initializer_list< double > cartesian_pose)'],['../classfranka_1_1CartesianPose.html#ab7fb1dfd7cdb89c0caebab95c669ba49',1,'franka::CartesianPose::CartesianPose(std::initializer_list< double > cartesian_pose, std::initializer_list< double > elbow)'],['../classfranka_1_1CartesianPose.html#a5559a53a898f9b369b1df9d51f9351b5',1,'franka::CartesianPose::CartesianPose(const std::array< double, 16 > &cartesian_pose) noexcept']]], + ['cartesianvelocities_329',['CartesianVelocities',['../classfranka_1_1CartesianVelocities.html#a713380954e1f10c1be3033b95ca00657',1,'franka::CartesianVelocities::CartesianVelocities(const std::array< double, 6 > &cartesian_velocities) noexcept'],['../classfranka_1_1CartesianVelocities.html#a95f6feec3539ed9f96d555447717eb72',1,'franka::CartesianVelocities::CartesianVelocities(const std::array< double, 6 > &cartesian_velocities, const std::array< double, 2 > &elbow) noexcept'],['../classfranka_1_1CartesianVelocities.html#a39c4b06c315c963460e24324de8ad079',1,'franka::CartesianVelocities::CartesianVelocities(std::initializer_list< double > cartesian_velocities)'],['../classfranka_1_1CartesianVelocities.html#aec434afa3f92e462ad3ab4766d3456a4',1,'franka::CartesianVelocities::CartesianVelocities(std::initializer_list< double > cartesian_velocities, std::initializer_list< double > elbow)']]], + ['checkelbow_330',['checkElbow',['../control__tools_8h.html#add0cd2cd1401ac0b2393a84ca1577cde',1,'franka']]], + ['checkfinite_331',['checkFinite',['../control__tools_8h.html#a80d02c11ba41e5973ee76624bf1d4466',1,'franka']]], + ['checkmatrix_332',['checkMatrix',['../control__tools_8h.html#ab38ee604eecfedfb591ddb8327805ea4',1,'franka']]], + ['computelowerlimitsjointvelocity_333',['computeLowerLimitsJointVelocity',['../rate__limiting_8h.html#a75fe6c28325d7631f7bdb6c2b388b268',1,'franka']]], + ['computeupperlimitsjointvelocity_334',['computeUpperLimitsJointVelocity',['../rate__limiting_8h.html#a3a025c3c8f71f59627fe4f7e801021ac',1,'franka']]], + ['control_335',['control',['../classfranka_1_1Robot.html#a6ba6193e52178899dc8c6a34aa4c537c',1,'franka::Robot::control(std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#adce4add23b47befadccd30e3dbe9f2f4',1,'franka::Robot::control(std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a2176c99664b83bb394f0b2dfd416a8ee',1,'franka::Robot::control(std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a7fef8f6418cff168f680ac7c61a6b5cd',1,'franka::Robot::control(std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback, ControllerMode controller_mode=ControllerMode::kJointImpedance, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#aeb276d0a0e55f032841976de7db86f5a',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< CartesianVelocities(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a4ce9fd531f97c8cc943dd2479298a55f',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< CartesianPose(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a76e8b7a9c7e2b874c3e300ba7cdeb8ca',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< JointVelocities(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a4b625b781d388f3379e0961c724239d5',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, std::function< JointPositions(const RobotState &, franka::Duration)> motion_generator_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)'],['../classfranka_1_1Robot.html#a0d5effba5daff2fee123802bbd5f95d1',1,'franka::Robot::control(std::function< Torques(const RobotState &, franka::Duration)> control_callback, bool limit_rate=false, double cutoff_frequency=kDefaultCutoffFrequency)']]], + ['controlexception_336',['ControlException',['../structfranka_1_1ControlException.html#a2efb9628eef80a3819031dbf2e2cb518',1,'franka::ControlException']]], + ['coriolis_337',['coriolis',['../classfranka_1_1Model.html#a91424f181a93bb47bda6af2d3567c65c',1,'franka::Model::coriolis(const franka::RobotState &robot_state) const noexcept'],['../classfranka_1_1Model.html#a3445ad932ddda2e3540768af9b7b4852',1,'franka::Model::coriolis(const std::array< double, 7 > &q, const std::array< double, 7 > &dq, const std::array< double, 9 > &I_total, double m_total, const std::array< double, 3 > &F_x_Ctotal) const noexcept']]] +]; diff --git a/0.13.6/search/functions_3.html b/0.13.6/search/functions_3.html new file mode 100644 index 00000000..d79f55b8 --- /dev/null +++ b/0.13.6/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_3.js b/0.13.6/search/functions_3.js new file mode 100644 index 00000000..2c37950d --- /dev/null +++ b/0.13.6/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dropoff_338',['dropOff',['../classfranka_1_1VacuumGripper.html#a04645348e97b946a788205c8b1168cac',1,'franka::VacuumGripper']]], + ['duration_339',['Duration',['../classfranka_1_1Duration.html#af721da321423772b4ce7ff11280d38d5',1,'franka::Duration::Duration() noexcept'],['../classfranka_1_1Duration.html#a46f0cea3e05c27cdaaba5ff25e0e6cd6',1,'franka::Duration::Duration(uint64_t milliseconds) noexcept'],['../classfranka_1_1Duration.html#a389dfef50f34e9cc5be69838fbdafba7',1,'franka::Duration::Duration(std::chrono::duration< uint64_t, std::milli > duration) noexcept'],['../classfranka_1_1Duration.html#a886575e716b45e85de1bb78def2eb133',1,'franka::Duration::Duration(const Duration &)=default']]] +]; diff --git a/0.13.6/search/functions_4.html b/0.13.6/search/functions_4.html new file mode 100644 index 00000000..1657cad0 --- /dev/null +++ b/0.13.6/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_4.js b/0.13.6/search/functions_4.js new file mode 100644 index 00000000..c3bedbcc --- /dev/null +++ b/0.13.6/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['errors_340',['Errors',['../structfranka_1_1Errors.html#aedd6b6af230c01b6f106b5050b29d9ae',1,'franka::Errors::Errors()'],['../structfranka_1_1Errors.html#a4548a72089cc6d61c9249a1b8f4cc480',1,'franka::Errors::Errors(const Errors &other)'],['../structfranka_1_1Errors.html#adffc6f8b2235e566c4a43ce69a86634e',1,'franka::Errors::Errors(const std::array< bool, 41 > &errors)']]] +]; diff --git a/0.13.6/search/functions_5.html b/0.13.6/search/functions_5.html new file mode 100644 index 00000000..9301d6b9 --- /dev/null +++ b/0.13.6/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_5.js b/0.13.6/search/functions_5.js new file mode 100644 index 00000000..6cf52feb --- /dev/null +++ b/0.13.6/search/functions_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['grasp_341',['grasp',['../classfranka_1_1Gripper.html#abff6a03a6c75b9079bd4b9b5ca380254',1,'franka::Gripper']]], + ['gravity_342',['gravity',['../classfranka_1_1Model.html#a9b28a648cf413297d80f383e62363ab9',1,'franka::Model::gravity(const std::array< double, 7 > &q, double m_total, const std::array< double, 3 > &F_x_Ctotal, const std::array< double, 3 > &gravity_earth={{0., 0., -9.81}}) const noexcept'],['../classfranka_1_1Model.html#a76a94e1ddb45cf1cdded25be4cf2dcae',1,'franka::Model::gravity(const franka::RobotState &robot_state, const std::array< double, 3 > &gravity_earth) const noexcept'],['../classfranka_1_1Model.html#a983611785e894e1cd1f07a2df97ddbdd',1,'franka::Model::gravity(const franka::RobotState &robot_state) const noexcept']]], + ['gripper_343',['Gripper',['../classfranka_1_1Gripper.html#a02b30632b08001592c62d3563561afc5',1,'franka::Gripper::Gripper(const std::string &franka_address)'],['../classfranka_1_1Gripper.html#aa045ea81b36f22420f9bc6f2a256a4f0',1,'franka::Gripper::Gripper(Gripper &&gripper) noexcept']]] +]; diff --git a/0.13.6/search/functions_6.html b/0.13.6/search/functions_6.html new file mode 100644 index 00000000..9c4f5fc6 --- /dev/null +++ b/0.13.6/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_6.js b/0.13.6/search/functions_6.js new file mode 100644 index 00000000..e06cad9c --- /dev/null +++ b/0.13.6/search/functions_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['haselbow_344',['hasElbow',['../classfranka_1_1CartesianPose.html#a5fa9f47dbf73ab45f671d89e11f89ccf',1,'franka::CartesianPose::hasElbow()'],['../classfranka_1_1CartesianVelocities.html#a51a41893b10250982597fe367abb2ca6',1,'franka::CartesianVelocities::hasElbow()']]], + ['hasrealtimekernel_345',['hasRealtimeKernel',['../control__tools_8h.html#ad165a74da105c78586c0cd4c1ed57bd2',1,'franka']]], + ['homing_346',['homing',['../classfranka_1_1Gripper.html#aef356f93a4c3b9d6b2532c29126d478c',1,'franka::Gripper']]] +]; diff --git a/0.13.6/search/functions_7.html b/0.13.6/search/functions_7.html new file mode 100644 index 00000000..46b5c0f6 --- /dev/null +++ b/0.13.6/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_7.js b/0.13.6/search/functions_7.js new file mode 100644 index 00000000..6cb515e9 --- /dev/null +++ b/0.13.6/search/functions_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['incompatibleversionexception_347',['IncompatibleVersionException',['../structfranka_1_1IncompatibleVersionException.html#a518f40d994ed7e970c6f7fdafb673239',1,'franka::IncompatibleVersionException']]], + ['ishomogeneoustransformation_348',['isHomogeneousTransformation',['../control__tools_8h.html#ad81c99e8af3f2536ae3c6ec1ce8dce1e',1,'franka']]], + ['isvalidelbow_349',['isValidElbow',['../control__tools_8h.html#a4eda3eda0514fabf6d630a6d8c0373a0',1,'franka']]] +]; diff --git a/0.13.6/search/functions_8.html b/0.13.6/search/functions_8.html new file mode 100644 index 00000000..31a1d950 --- /dev/null +++ b/0.13.6/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_8.js b/0.13.6/search/functions_8.js new file mode 100644 index 00000000..3979dec2 --- /dev/null +++ b/0.13.6/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['jointpositions_350',['JointPositions',['../classfranka_1_1JointPositions.html#a57bc9d7e033493b1182333276af5ce84',1,'franka::JointPositions::JointPositions(const std::array< double, 7 > &joint_positions) noexcept'],['../classfranka_1_1JointPositions.html#a1e2006bccc9de89d8eb1a4d1c4da2fb8',1,'franka::JointPositions::JointPositions(std::initializer_list< double > joint_positions)']]], + ['jointvelocities_351',['JointVelocities',['../classfranka_1_1JointVelocities.html#a1130f851055de3b7ebe9e6fbac960826',1,'franka::JointVelocities::JointVelocities(const std::array< double, 7 > &joint_velocities) noexcept'],['../classfranka_1_1JointVelocities.html#aed384fad8e302638c2e5baea6378c2d2',1,'franka::JointVelocities::JointVelocities(std::initializer_list< double > joint_velocities)']]] +]; diff --git a/0.13.6/search/functions_9.html b/0.13.6/search/functions_9.html new file mode 100644 index 00000000..9a8e4290 --- /dev/null +++ b/0.13.6/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_9.js b/0.13.6/search/functions_9.js new file mode 100644 index 00000000..3a80cf18 --- /dev/null +++ b/0.13.6/search/functions_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['limitrate_352',['limitRate',['../rate__limiting_8h.html#aea6895d6bf209a86319c6cd5180e4b60',1,'franka::limitRate(const std::array< double, 7 > &max_derivatives, const std::array< double, 7 > &commanded_values, const std::array< double, 7 > &last_commanded_values)'],['../rate__limiting_8h.html#ae425f551c62b289a93ad471f94f87b7c',1,'franka::limitRate(double upper_limits_velocity, double lower_limits_velocity, double max_acceleration, double max_jerk, double commanded_velocity, double last_commanded_velocity, double last_commanded_acceleration)'],['../rate__limiting_8h.html#afacb3c087c76dded71874eaa7862b05d',1,'franka::limitRate(double upper_limits_velocity, double lower_limits_velocity, double max_acceleration, double max_jerk, double commanded_position, double last_commanded_position, double last_commanded_velocity, double last_commanded_acceleration)'],['../rate__limiting_8h.html#a62ebac6ebbef784d44135855a899abef',1,'franka::limitRate(const std::array< double, 7 > &upper_limits_velocity, const std::array< double, 7 > &lower_limits_velocity, const std::array< double, 7 > &max_acceleration, const std::array< double, 7 > &max_jerk, const std::array< double, 7 > &commanded_velocities, const std::array< double, 7 > &last_commanded_velocities, const std::array< double, 7 > &last_commanded_accelerations)'],['../rate__limiting_8h.html#aaaa22e0873d0630465e506ddc877083f',1,'franka::limitRate(const std::array< double, 7 > &upper_limits_velocity, const std::array< double, 7 > &lower_limits_velocity, const std::array< double, 7 > &max_acceleration, const std::array< double, 7 > &max_jerk, const std::array< double, 7 > &commanded_positions, const std::array< double, 7 > &last_commanded_positions, const std::array< double, 7 > &last_commanded_velocities, const std::array< double, 7 > &last_commanded_accelerations)'],['../rate__limiting_8h.html#ad3e0243f9be5335ae3d04f87852dfccb',1,'franka::limitRate(double max_translational_velocity, double max_translational_acceleration, double max_translational_jerk, double max_rotational_velocity, double max_rotational_acceleration, double max_rotational_jerk, const std::array< double, 6 > &O_dP_EE_c, const std::array< double, 6 > &last_O_dP_EE_c, const std::array< double, 6 > &last_O_ddP_EE_c)'],['../rate__limiting_8h.html#a9288f438fcfc1aedf7e0b52aa95b23ba',1,'franka::limitRate(double max_translational_velocity, double max_translational_acceleration, double max_translational_jerk, double max_rotational_velocity, double max_rotational_acceleration, double max_rotational_jerk, const std::array< double, 16 > &O_T_EE_c, const std::array< double, 16 > &last_O_T_EE_c, const std::array< double, 6 > &last_O_dP_EE_c, const std::array< double, 6 > &last_O_ddP_EE_c)']]], + ['loadmodel_353',['loadModel',['../classfranka_1_1Robot.html#a2da598c539469827409ac7e3bb61d5da',1,'franka::Robot']]], + ['logtocsv_354',['logToCSV',['../log_8h.html#a01fbdb37b0e6beb04ba108d5f5024fd9',1,'franka']]], + ['lowpassfilter_355',['lowpassFilter',['../lowpass__filter_8h.html#a94c21b0e87afce0147a9cd6025c239ca',1,'franka']]] +]; diff --git a/0.13.6/search/functions_a.html b/0.13.6/search/functions_a.html new file mode 100644 index 00000000..5ecc152c --- /dev/null +++ b/0.13.6/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_a.js b/0.13.6/search/functions_a.js new file mode 100644 index 00000000..b1751e8b --- /dev/null +++ b/0.13.6/search/functions_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['mass_356',['mass',['../classfranka_1_1Model.html#ad5f6156064bc18e42fc0b6d2f36b2006',1,'franka::Model::mass(const franka::RobotState &robot_state) const noexcept'],['../classfranka_1_1Model.html#a61c3a8968e927c8629f1d549d20aaf85',1,'franka::Model::mass(const std::array< double, 7 > &q, const std::array< double, 9 > &I_total, double m_total, const std::array< double, 3 > &F_x_Ctotal) const noexcept']]], + ['model_357',['Model',['../classfranka_1_1Model.html#a751d939935eb51f06dcfd18c6c756ceb',1,'franka::Model::Model(franka::Network &network)'],['../classfranka_1_1Model.html#a8b58ff37f62512aecdcd0e6aabfd9548',1,'franka::Model::Model(Model &&model) noexcept']]], + ['motionfinished_358',['MotionFinished',['../control__types_8h.html#a20791f7142d78bbbe3c957cc66a23ade',1,'franka::MotionFinished(Torques command) noexcept'],['../control__types_8h.html#a7f505509951b6568b08b3aec8ffb9098',1,'franka::MotionFinished(JointPositions command) noexcept'],['../control__types_8h.html#ab478c128d691a46c0ab85bbf3b5caac5',1,'franka::MotionFinished(JointVelocities command) noexcept'],['../control__types_8h.html#ab0b308e2a9348fd3eb5fd1d08db12dcf',1,'franka::MotionFinished(CartesianPose command) noexcept'],['../control__types_8h.html#a5898ad5e3bbc2682c24c0415bf7e9a95',1,'franka::MotionFinished(CartesianVelocities command) noexcept']]], + ['motiongenerator_359',['MotionGenerator',['../classMotionGenerator.html#a23dd564a60401c539fb7f1bf63470894',1,'MotionGenerator']]], + ['move_360',['move',['../classfranka_1_1Gripper.html#a047bc39267d66d6fb26c4c70669d68c2',1,'franka::Gripper']]] +]; diff --git a/0.13.6/search/functions_b.html b/0.13.6/search/functions_b.html new file mode 100644 index 00000000..e301fedd --- /dev/null +++ b/0.13.6/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_b.js b/0.13.6/search/functions_b.js new file mode 100644 index 00000000..d3dc28cf --- /dev/null +++ b/0.13.6/search/functions_b.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['duration_3c_20uint64_5ft_2c_20std_3a_3amilli_20_3e_361',['duration< uint64_t, std::milli >',['../classfranka_1_1Duration.html#ae58e283f511f9de8ac7e145db5cac1cf',1,'franka::Duration']]], + ['operator_20bool_362',['operator bool',['../structfranka_1_1Errors.html#a50cb6e50c1ce2b5ec281dcad83f1779e',1,'franka::Errors']]], + ['operator_21_3d_363',['operator!=',['../classfranka_1_1Duration.html#a61603353e39361af2f405c1df7097e84',1,'franka::Duration']]], + ['operator_25_364',['operator%',['../classfranka_1_1Duration.html#a5e472345c1bec29b645bee938932fdb1',1,'franka::Duration::operator%(const Duration &rhs) const noexcept'],['../classfranka_1_1Duration.html#af06ff91f24d881c479768c1bcbf31a1e',1,'franka::Duration::operator%(uint64_t rhs) const noexcept']]], + ['operator_25_3d_365',['operator%=',['../classfranka_1_1Duration.html#a97a6ea669877875ffc54c801ac0b152d',1,'franka::Duration::operator%=(const Duration &rhs) noexcept'],['../classfranka_1_1Duration.html#acd85bab22062a2258af83ac5b3b7a647',1,'franka::Duration::operator%=(uint64_t rhs) noexcept']]], + ['operator_28_29_366',['operator()',['../classMotionGenerator.html#aefd763e7c31c54b56404f33d2295fda9',1,'MotionGenerator']]], + ['operator_2a_367',['operator*',['../duration_8h.html#ab3a36a47682756845ef855994aadd7b6',1,'franka::operator*()'],['../classfranka_1_1Duration.html#a3eebc39550880fb2d23d45ba34d8acc5',1,'franka::Duration::operator*(uint64_t rhs) const noexcept']]], + ['operator_2a_3d_368',['operator*=',['../classfranka_1_1Duration.html#a73f971b2efb29a8ce663e8675d1ec09a',1,'franka::Duration']]], + ['operator_2b_369',['operator+',['../classfranka_1_1Duration.html#adb459e7bf5c6b02f9e72c808f5f30237',1,'franka::Duration']]], + ['operator_2b_2b_370',['operator++',['../model_8h.html#ae39c3a098fdb1bc9a097a262312454d0',1,'franka']]], + ['operator_2b_3d_371',['operator+=',['../classfranka_1_1Duration.html#ac55eb81937a12e736560bd856a8f23ae',1,'franka::Duration']]], + ['operator_2d_372',['operator-',['../classfranka_1_1Duration.html#a2a3bc1a8278b91bebe88d7498d410de9',1,'franka::Duration']]], + ['operator_2d_3d_373',['operator-=',['../classfranka_1_1Duration.html#acb24af377db86646918bcfb3e1e2ebe6',1,'franka::Duration']]], + ['operator_2f_374',['operator/',['../classfranka_1_1Duration.html#a90c76be31b53e11f5761416a05d990be',1,'franka::Duration::operator/(const Duration &rhs) const noexcept'],['../classfranka_1_1Duration.html#a15b7299198f36734b62ac98da1ef8c9c',1,'franka::Duration::operator/(uint64_t rhs) const noexcept']]], + ['operator_2f_3d_375',['operator/=',['../classfranka_1_1Duration.html#ac866dd8d0e8f2dbb92089dbd78418571',1,'franka::Duration']]], + ['operator_3c_376',['operator<',['../classfranka_1_1Duration.html#af1650b31c1226a447406fc243f4a2ac1',1,'franka::Duration']]], + ['operator_3c_3c_377',['operator<<',['../errors_8h.html#ad1027058086c3c154f4bbc9cade1f197',1,'franka::operator<<(std::ostream &ostream, const Errors &errors)'],['../gripper__state_8h.html#ab66181a74d1d3b7e90ae3b424ee85f4f',1,'franka::operator<<(std::ostream &ostream, const franka::GripperState &gripper_state)'],['../robot__state_8h.html#aee38e87180cc96476d0f11335da29e20',1,'franka::operator<<(std::ostream &ostream, const franka::RobotState &robot_state)'],['../robot__state_8h.html#a7d75ab63150979690a639f432c166755',1,'franka::operator<<(std::ostream &ostream, RobotMode robot_mode)'],['../vacuum__gripper__state_8h.html#aa2caece6baf774e998b6dec6e803cf24',1,'franka::operator<<(std::ostream &ostream, const franka::VacuumGripperState &vacuum_gripper_state)']]], + ['operator_3c_3d_378',['operator<=',['../classfranka_1_1Duration.html#ae4b9c8646fd50a2105d36f3848a5b949',1,'franka::Duration']]], + ['operator_3d_379',['operator=',['../classfranka_1_1Duration.html#adf2fec0c87fe1668e42f217ab029df19',1,'franka::Duration::operator=()'],['../structfranka_1_1Errors.html#a6fefa4083d79362080b79f3492fd4cb6',1,'franka::Errors::operator=()'],['../classfranka_1_1Gripper.html#a3c99c6973f8951ca489c4177cfacb069',1,'franka::Gripper::operator=()'],['../classfranka_1_1Model.html#a625529a4c9aed7783c9c6e150dbba793',1,'franka::Model::operator=()'],['../classfranka_1_1Robot.html#a35465b8497a7adbd277e70e98b7d97a7',1,'franka::Robot::operator=()'],['../classfranka_1_1VacuumGripper.html#a21d59603ac4deb8d9de5e074a57d080d',1,'franka::VacuumGripper::operator=()']]], + ['operator_3d_3d_380',['operator==',['../classfranka_1_1Duration.html#add0c7bcdfe51b563016236b223d74eae',1,'franka::Duration']]], + ['operator_3e_381',['operator>',['../classfranka_1_1Duration.html#a1702ec9121fe6cff1de533d116edcce0',1,'franka::Duration']]], + ['operator_3e_3d_382',['operator>=',['../classfranka_1_1Duration.html#a5bc498cf96d96f5908d6bd93eea491aa',1,'franka::Duration']]], + ['string_383',['string',['../structfranka_1_1Errors.html#a63ed1948f69db5be95a9c70107955d68',1,'franka::Errors']]] +]; diff --git a/0.13.6/search/functions_c.html b/0.13.6/search/functions_c.html new file mode 100644 index 00000000..c4f32687 --- /dev/null +++ b/0.13.6/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_c.js b/0.13.6/search/functions_c.js new file mode 100644 index 00000000..99c62b17 --- /dev/null +++ b/0.13.6/search/functions_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pose_384',['pose',['../classfranka_1_1Model.html#a593c39dae76a6801cdd2402c2a783157',1,'franka::Model::pose(Frame frame, const franka::RobotState &robot_state) const'],['../classfranka_1_1Model.html#adf4fdf0404c2acf783493f7e646a6281',1,'franka::Model::pose(Frame frame, const std::array< double, 7 > &q, const std::array< double, 16 > &F_T_EE, const std::array< double, 16 > &EE_T_K) const']]] +]; diff --git a/0.13.6/search/functions_d.html b/0.13.6/search/functions_d.html new file mode 100644 index 00000000..7a1ed065 --- /dev/null +++ b/0.13.6/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_d.js b/0.13.6/search/functions_d.js new file mode 100644 index 00000000..e103ffb7 --- /dev/null +++ b/0.13.6/search/functions_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['read_385',['read',['../classfranka_1_1Robot.html#a82f85eed20426901a7e77b66c041664b',1,'franka::Robot']]], + ['readonce_386',['readOnce',['../classfranka_1_1ActiveControl.html#a55f5b94e5ac491e5b2ccc1782a873582',1,'franka::ActiveControl::readOnce()'],['../classfranka_1_1ActiveControlBase.html#ae99dac6dae3b0dcd79104a1a404e42d0',1,'franka::ActiveControlBase::readOnce()'],['../classfranka_1_1Gripper.html#ab0afc8a41c9c5fff808e76851dcf23ce',1,'franka::Gripper::readOnce()'],['../classfranka_1_1Robot.html#ae3c3d7c5c4491a1e96a0a543931e899a',1,'franka::Robot::readOnce()'],['../classfranka_1_1VacuumGripper.html#aaa61bfd1027cf5dc2eb9e96536a9fabf',1,'franka::VacuumGripper::readOnce()']]], + ['robot_387',['Robot',['../classfranka_1_1Robot.html#ae63bc19390df3d54f3a270814df35eb6',1,'franka::Robot::Robot(const std::string &franka_address, RealtimeConfig realtime_config=RealtimeConfig::kEnforce, size_t log_size=50)'],['../classfranka_1_1Robot.html#a378d415475336082e81a35b9811dc6c2',1,'franka::Robot::Robot(Robot &&other) noexcept'],['../classfranka_1_1Robot.html#a7cb49336d7e8b261b590a364daff2913',1,'franka::Robot::Robot(std::shared_ptr< Impl > robot_impl)'],['../classfranka_1_1Robot.html#abf60ce0434f4dc262f04fcab0beff5ac',1,'franka::Robot::Robot()=default']]] +]; diff --git a/0.13.6/search/functions_e.html b/0.13.6/search/functions_e.html new file mode 100644 index 00000000..22d2a6bf --- /dev/null +++ b/0.13.6/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_e.js b/0.13.6/search/functions_e.js new file mode 100644 index 00000000..ad20a23f --- /dev/null +++ b/0.13.6/search/functions_e.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['serverversion_388',['serverVersion',['../classfranka_1_1Robot.html#a3b864e16b7accafdf1a755dc21765701',1,'franka::Robot::serverVersion()'],['../classfranka_1_1VacuumGripper.html#a19abac44be2fc6df7f54fa11078a13ca',1,'franka::VacuumGripper::serverVersion()'],['../classfranka_1_1Gripper.html#a8b0b4246c042465fb00871b31efdbd8b',1,'franka::Gripper::serverVersion()']]], + ['setcartesianimpedance_389',['setCartesianImpedance',['../classfranka_1_1Robot.html#ac2678c5c31cc8c0627ecda7485f81f6d',1,'franka::Robot']]], + ['setcollisionbehavior_390',['setCollisionBehavior',['../classfranka_1_1Robot.html#a168e1214ac36d74ac64f894332b84534',1,'franka::Robot::setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds_acceleration, const std::array< double, 7 > &upper_torque_thresholds_acceleration, const std::array< double, 7 > &lower_torque_thresholds_nominal, const std::array< double, 7 > &upper_torque_thresholds_nominal, const std::array< double, 6 > &lower_force_thresholds_acceleration, const std::array< double, 6 > &upper_force_thresholds_acceleration, const std::array< double, 6 > &lower_force_thresholds_nominal, const std::array< double, 6 > &upper_force_thresholds_nominal)'],['../classfranka_1_1Robot.html#aa188f58c9025594be4d1700da744a962',1,'franka::Robot::setCollisionBehavior(const std::array< double, 7 > &lower_torque_thresholds, const std::array< double, 7 > &upper_torque_thresholds, const std::array< double, 6 > &lower_force_thresholds, const std::array< double, 6 > &upper_force_thresholds)']]], + ['setcurrentthreadtohighestschedulerpriority_391',['setCurrentThreadToHighestSchedulerPriority',['../control__tools_8h.html#a5c090196bc50ead82194d3e594e61e65',1,'franka']]], + ['setdefaultbehavior_392',['setDefaultBehavior',['../examples__common_8h.html#ad0c6e1cb044845ee8a01b5aa1e801a45',1,'examples_common.cpp']]], + ['setee_393',['setEE',['../classfranka_1_1Robot.html#aec4abdefbc0f9a7400a36bfa0a6068af',1,'franka::Robot']]], + ['setguidingmode_394',['setGuidingMode',['../classfranka_1_1Robot.html#a7992cee203e66f9a61fe2f318ef88a26',1,'franka::Robot']]], + ['setjointimpedance_395',['setJointImpedance',['../classfranka_1_1Robot.html#aa18a28697cf6e3be16c6cff2dd839560',1,'franka::Robot']]], + ['setk_396',['setK',['../classfranka_1_1Robot.html#ad1cf59d1b11306d80cd3c7144a989c56',1,'franka::Robot']]], + ['setload_397',['setLoad',['../classfranka_1_1Robot.html#afcb708df10f24563dbcf7d5b907b4a15',1,'franka::Robot']]], + ['startcartesianposecontrol_398',['startCartesianPoseControl',['../classfranka_1_1Robot.html#a3822866cf931fab955d3dcfc6cf746e5',1,'franka::Robot']]], + ['startcartesianvelocitycontrol_399',['startCartesianVelocityControl',['../classfranka_1_1Robot.html#a838e2cfba6b08dd87742bbcfe62f15bf',1,'franka::Robot']]], + ['startjointpositioncontrol_400',['startJointPositionControl',['../classfranka_1_1Robot.html#aca7ecf76cf9c5af49cc5a878c91e19a9',1,'franka::Robot']]], + ['startjointvelocitycontrol_401',['startJointVelocityControl',['../classfranka_1_1Robot.html#ae9c867d10817b2485e306450f389a009',1,'franka::Robot']]], + ['starttorquecontrol_402',['startTorqueControl',['../classfranka_1_1Robot.html#a8146de9e50217068672b6f726a91de91',1,'franka::Robot']]], + ['stop_403',['stop',['../classfranka_1_1Gripper.html#add7397fb6c5631650c139d26a85c8e1d',1,'franka::Gripper::stop()'],['../classfranka_1_1Robot.html#a69cb08e075a81ecf3f26e94d26a06296',1,'franka::Robot::stop()'],['../classfranka_1_1VacuumGripper.html#a3722fe5488c516b4082c878a083cc865',1,'franka::VacuumGripper::stop()']]] +]; diff --git a/0.13.6/search/functions_f.html b/0.13.6/search/functions_f.html new file mode 100644 index 00000000..54b7dee0 --- /dev/null +++ b/0.13.6/search/functions_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/functions_f.js b/0.13.6/search/functions_f.js new file mode 100644 index 00000000..22090fa3 --- /dev/null +++ b/0.13.6/search/functions_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tomsec_404',['toMSec',['../classfranka_1_1Duration.html#a2a25ae33c8739b8f705f13798aa9e162',1,'franka::Duration']]], + ['torques_405',['Torques',['../classfranka_1_1Torques.html#a509d63195827289ffc645e4b62a9750d',1,'franka::Torques::Torques(const std::array< double, 7 > &torques) noexcept'],['../classfranka_1_1Torques.html#a744a08e16dcfc40b3a90ab6a85bac0d8',1,'franka::Torques::Torques(std::initializer_list< double > torques)']]], + ['tosec_406',['toSec',['../classfranka_1_1Duration.html#a497af77a3280159547f231f0374e9ac1',1,'franka::Duration']]] +]; diff --git a/0.13.6/search/mag_sel.svg b/0.13.6/search/mag_sel.svg new file mode 100644 index 00000000..03626f64 --- /dev/null +++ b/0.13.6/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/0.13.6/search/nomatches.html b/0.13.6/search/nomatches.html new file mode 100644 index 00000000..2b9360b6 --- /dev/null +++ b/0.13.6/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/0.13.6/search/pages_0.html b/0.13.6/search/pages_0.html new file mode 100644 index 00000000..8517b48f --- /dev/null +++ b/0.13.6/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/pages_0.js b/0.13.6/search/pages_0.js new file mode 100644 index 00000000..774f0f38 --- /dev/null +++ b/0.13.6/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['libfranka_3a_20c_2b_2b_20library_20for_20franka_20robotics_20research_20robots_562',['libfranka: C++ library for Franka Robotics research robots',['../index.html',1,'']]] +]; diff --git a/0.13.6/search/related_0.html b/0.13.6/search/related_0.html new file mode 100644 index 00000000..506aaecc --- /dev/null +++ b/0.13.6/search/related_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/related_0.js b/0.13.6/search/related_0.js new file mode 100644 index 00000000..50d8669e --- /dev/null +++ b/0.13.6/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['robot_561',['Robot',['../classfranka_1_1ActiveMotionGenerator.html#a9f34d4a840b0d3e73fc3185af5fed175',1,'franka::ActiveMotionGenerator::Robot()'],['../classfranka_1_1ActiveTorqueControl.html#a9f34d4a840b0d3e73fc3185af5fed175',1,'franka::ActiveTorqueControl::Robot()']]] +]; diff --git a/0.13.6/search/search.css b/0.13.6/search/search.css new file mode 100644 index 00000000..9074198f --- /dev/null +++ b/0.13.6/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/0.13.6/search/search.js b/0.13.6/search/search.js new file mode 100644 index 00000000..fb226f73 --- /dev/null +++ b/0.13.6/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/0.13.6/search/search_r.png b/0.13.6/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/0.13.6/search/searchdata.js b/0.13.6/search/searchdata.js new file mode 100644 index 00000000..57c5c272 --- /dev/null +++ b/0.13.6/search/searchdata.js @@ -0,0 +1,42 @@ +var indexSectionsWithContent = +{ + 0: "abcdefghijklmnopqrstvwz~", + 1: "acdefgijmnprtv", + 2: "acdeglmrv", + 3: "abcdeghijlmoprstvwz~", + 4: "abcdefijklmnopqrstvw", + 5: "s", + 6: "cfprv", + 7: "k", + 8: "r", + 9: "l" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues", + 8: "related", + 9: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Files", + 3: "Functions", + 4: "Variables", + 5: "Typedefs", + 6: "Enumerations", + 7: "Enumerator", + 8: "Friends", + 9: "Pages" +}; + diff --git a/0.13.6/search/typedefs_0.html b/0.13.6/search/typedefs_0.html new file mode 100644 index 00000000..a4684c4a --- /dev/null +++ b/0.13.6/search/typedefs_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/typedefs_0.js b/0.13.6/search/typedefs_0.js new file mode 100644 index 00000000..2ef86fcb --- /dev/null +++ b/0.13.6/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['serverversion_550',['ServerVersion',['../classfranka_1_1Gripper.html#a613bf52d9433b733685d0fb9ea71602e',1,'franka::Gripper::ServerVersion()'],['../classfranka_1_1Robot.html#ad1dd3dccff6f33691d2c66eaa5ac5a10',1,'franka::Robot::ServerVersion()'],['../classfranka_1_1VacuumGripper.html#a7b1d752680134e2a9df347002c6ace61',1,'franka::VacuumGripper::ServerVersion()']]] +]; diff --git a/0.13.6/search/variables_0.html b/0.13.6/search/variables_0.html new file mode 100644 index 00000000..1e477c08 --- /dev/null +++ b/0.13.6/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_0.js b/0.13.6/search/variables_0.js new file mode 100644 index 00000000..dd6cd09a --- /dev/null +++ b/0.13.6/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['actual_5fpower_415',['actual_power',['../structfranka_1_1VacuumGripperState.html#a4230c68698cdbf6c1c560e181133bdc3',1,'franka::VacuumGripperState']]] +]; diff --git a/0.13.6/search/variables_1.html b/0.13.6/search/variables_1.html new file mode 100644 index 00000000..ea73d9a4 --- /dev/null +++ b/0.13.6/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_1.js b/0.13.6/search/variables_1.js new file mode 100644 index 00000000..d8718404 --- /dev/null +++ b/0.13.6/search/variables_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['base_5facceleration_5finitialization_5ftimeout_416',['base_acceleration_initialization_timeout',['../structfranka_1_1Errors.html#a4dc331a7ae3242ea43e6fbf7e21c695a',1,'franka::Errors']]], + ['base_5facceleration_5finvalid_5freading_417',['base_acceleration_invalid_reading',['../structfranka_1_1Errors.html#a8467b7b8a3a68c3e0be7adc39933cb0e',1,'franka::Errors']]] +]; diff --git a/0.13.6/search/variables_10.html b/0.13.6/search/variables_10.html new file mode 100644 index 00000000..dc9920b6 --- /dev/null +++ b/0.13.6/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_10.js b/0.13.6/search/variables_10.js new file mode 100644 index 00000000..ae8515c8 --- /dev/null +++ b/0.13.6/search/variables_10.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['self_5fcollision_5favoidance_5fviolation_536',['self_collision_avoidance_violation',['../structfranka_1_1Errors.html#adf68f6333624cb5558864441a991de8c',1,'franka::Errors']]], + ['server_5fversion_537',['server_version',['../structfranka_1_1IncompatibleVersionException.html#a0928098d8c32f405d17b65a0f004b5ab',1,'franka::IncompatibleVersionException']]], + ['start_5felbow_5fsign_5finconsistent_538',['start_elbow_sign_inconsistent',['../structfranka_1_1Errors.html#aa6de1956ac056792a1dea6b9ddd52a50',1,'franka::Errors']]], + ['state_539',['state',['../structfranka_1_1Record.html#a58249658c9549fbc792eea90e7b6a7cc',1,'franka::Record']]] +]; diff --git a/0.13.6/search/variables_11.html b/0.13.6/search/variables_11.html new file mode 100644 index 00000000..704bcb18 --- /dev/null +++ b/0.13.6/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_11.js b/0.13.6/search/variables_11.js new file mode 100644 index 00000000..7c389b3c --- /dev/null +++ b/0.13.6/search/variables_11.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['tau_5fext_5fhat_5ffiltered_540',['tau_ext_hat_filtered',['../structfranka_1_1RobotState.html#acdef8005828d193e45b128085a9e363b',1,'franka::RobotState']]], + ['tau_5fj_541',['tau_J',['../classfranka_1_1Torques.html#ac2a266cc2d3b7e0fb4f8eff045dbaed8',1,'franka::Torques::tau_J()'],['../structfranka_1_1RobotState.html#ad90e2518d661da0d8fa4c864bae210e5',1,'franka::RobotState::tau_J()']]], + ['tau_5fj_5fd_542',['tau_J_d',['../structfranka_1_1RobotState.html#a7086a89a2705810f93a3a95d43df2d9d',1,'franka::RobotState']]], + ['tau_5fj_5frange_5fviolation_543',['tau_j_range_violation',['../structfranka_1_1Errors.html#a1491f8428341649befa3d088aebb317e',1,'franka::Errors']]], + ['temperature_544',['temperature',['../structfranka_1_1GripperState.html#aa6733fa786dbf3b073acbaf3779e34b3',1,'franka::GripperState']]], + ['theta_545',['theta',['../structfranka_1_1RobotState.html#aa34145d77dd411d7ca578c355f0ba2b4',1,'franka::RobotState']]], + ['time_546',['time',['../structfranka_1_1GripperState.html#a80bf474b0e4351e2eefab62d1bd10c07',1,'franka::GripperState::time()'],['../structfranka_1_1RobotState.html#aabfdabeaef8c1858c52dd32344bdd039',1,'franka::RobotState::time()'],['../structfranka_1_1VacuumGripperState.html#aaa98eb6e1888094aace2014121a468ab',1,'franka::VacuumGripperState::time()']]], + ['torques_547',['torques',['../structfranka_1_1RobotCommand.html#a8b23e8b669b1fd594988ecdbf54bfbce',1,'franka::RobotCommand']]] +]; diff --git a/0.13.6/search/variables_12.html b/0.13.6/search/variables_12.html new file mode 100644 index 00000000..a3a32eb8 --- /dev/null +++ b/0.13.6/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_12.js b/0.13.6/search/variables_12.js new file mode 100644 index 00000000..f693c444 --- /dev/null +++ b/0.13.6/search/variables_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vacuum_548',['vacuum',['../structfranka_1_1VacuumGripperState.html#ae94720737193caa696a47563a8efe6a8',1,'franka::VacuumGripperState']]] +]; diff --git a/0.13.6/search/variables_13.html b/0.13.6/search/variables_13.html new file mode 100644 index 00000000..7d05bd86 --- /dev/null +++ b/0.13.6/search/variables_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_13.js b/0.13.6/search/variables_13.js new file mode 100644 index 00000000..9fe64f05 --- /dev/null +++ b/0.13.6/search/variables_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['width_549',['width',['../structfranka_1_1GripperState.html#adf095f446ec39a9a48e120b209dcd6e9',1,'franka::GripperState']]] +]; diff --git a/0.13.6/search/variables_2.html b/0.13.6/search/variables_2.html new file mode 100644 index 00000000..0580462e --- /dev/null +++ b/0.13.6/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_2.js b/0.13.6/search/variables_2.js new file mode 100644 index 00000000..bd23fc01 --- /dev/null +++ b/0.13.6/search/variables_2.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['cartesian_5fcollision_418',['cartesian_collision',['../structfranka_1_1RobotState.html#a52c20478f4c1e162df38582ea9bda044',1,'franka::RobotState']]], + ['cartesian_5fcontact_419',['cartesian_contact',['../structfranka_1_1RobotState.html#a7fc1f0358d2104d39d301d70544fa6c1',1,'franka::RobotState']]], + ['cartesian_5fmotion_5fgenerator_5facceleration_5fdiscontinuity_420',['cartesian_motion_generator_acceleration_discontinuity',['../structfranka_1_1Errors.html#a10c6ac36bf48b4a9edf91e74d9bc4837',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5felbow_5flimit_5fviolation_421',['cartesian_motion_generator_elbow_limit_violation',['../structfranka_1_1Errors.html#ac21ebdc1e0e8fb3099a7dce284550c4c',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5felbow_5fsign_5finconsistent_422',['cartesian_motion_generator_elbow_sign_inconsistent',['../structfranka_1_1Errors.html#a58b0e1199c9dded5a32bfeb110e63037',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fjoint_5facceleration_5fdiscontinuity_423',['cartesian_motion_generator_joint_acceleration_discontinuity',['../structfranka_1_1Errors.html#a2e223ef3c771709a6a3f094adf12f9cb',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fjoint_5fposition_5flimits_5fviolation_424',['cartesian_motion_generator_joint_position_limits_violation',['../structfranka_1_1Errors.html#a73aef7473fd6d1d5b207e68fa35948c5',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fjoint_5fvelocity_5fdiscontinuity_425',['cartesian_motion_generator_joint_velocity_discontinuity',['../structfranka_1_1Errors.html#a1c8c56766fefc19fda5d5de909ca5b37',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fjoint_5fvelocity_5flimits_5fviolation_426',['cartesian_motion_generator_joint_velocity_limits_violation',['../structfranka_1_1Errors.html#a435d16d62a123bfbf578bc76e3780605',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fstart_5felbow_5finvalid_427',['cartesian_motion_generator_start_elbow_invalid',['../structfranka_1_1Errors.html#a6d905b803bbe8a7be8490f2a94ba524a',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fvelocity_5fdiscontinuity_428',['cartesian_motion_generator_velocity_discontinuity',['../structfranka_1_1Errors.html#a17e4a9b6b7dc4cc12c1328d36cac3eaf',1,'franka::Errors']]], + ['cartesian_5fmotion_5fgenerator_5fvelocity_5flimits_5fviolation_429',['cartesian_motion_generator_velocity_limits_violation',['../structfranka_1_1Errors.html#a91437c081452ef708563346b102ba894',1,'franka::Errors']]], + ['cartesian_5fpose_430',['cartesian_pose',['../structfranka_1_1RobotCommand.html#acce2090d696ebb9759fd0f37fd35a298',1,'franka::RobotCommand']]], + ['cartesian_5fposition_5flimits_5fviolation_431',['cartesian_position_limits_violation',['../structfranka_1_1Errors.html#a41c8b50ecbb015a2dba1a3dbbff694b6',1,'franka::Errors']]], + ['cartesian_5fposition_5fmotion_5fgenerator_5finvalid_5fframe_432',['cartesian_position_motion_generator_invalid_frame',['../structfranka_1_1Errors.html#aa1952c6da2f81578861a19b947c97b85',1,'franka::Errors']]], + ['cartesian_5fposition_5fmotion_5fgenerator_5fstart_5fpose_5finvalid_433',['cartesian_position_motion_generator_start_pose_invalid',['../structfranka_1_1Errors.html#aa910fad4992b91be1ea1c321ee9b7a1e',1,'franka::Errors']]], + ['cartesian_5freflex_434',['cartesian_reflex',['../structfranka_1_1Errors.html#a47bd58b0ab2198e4d038e0a24eafb310',1,'franka::Errors']]], + ['cartesian_5fspline_5fmotion_5fgenerator_5fviolation_435',['cartesian_spline_motion_generator_violation',['../structfranka_1_1Errors.html#a5617689cd7e875baebcecf054513f0c4',1,'franka::Errors']]], + ['cartesian_5fvelocities_436',['cartesian_velocities',['../structfranka_1_1RobotCommand.html#a04b4841130fab920936190be1bc5dba3',1,'franka::RobotCommand']]], + ['cartesian_5fvelocity_5fprofile_5fsafety_5fviolation_437',['cartesian_velocity_profile_safety_violation',['../structfranka_1_1Errors.html#afc093fc5f99e1f6cab6de4fa9bc32692',1,'franka::Errors']]], + ['cartesian_5fvelocity_5fviolation_438',['cartesian_velocity_violation',['../structfranka_1_1Errors.html#a382fbec6b463ddcc2cbfd90340021ff1',1,'franka::Errors']]], + ['command_439',['command',['../structfranka_1_1Record.html#a8106f2ba9c2cf5ec7cbcf914c4c99e9c',1,'franka::Record']]], + ['communication_5fconstraints_5fviolation_440',['communication_constraints_violation',['../structfranka_1_1Errors.html#a4d17af86c1ebb698c218796fa15f9bd7',1,'franka::Errors']]], + ['control_5fcommand_5fsuccess_5frate_441',['control_command_success_rate',['../structfranka_1_1RobotState.html#af208572613a6afcdc61a24970c71fa28',1,'franka::RobotState']]], + ['control_5ffinished_442',['control_finished',['../classfranka_1_1ActiveControl.html#afa521707548926e9d1e38e4b83496db2',1,'franka::ActiveControl']]], + ['control_5flock_443',['control_lock',['../classfranka_1_1ActiveControl.html#aed53605877b237435581e36f4c0b34a4',1,'franka::ActiveControl']]], + ['controller_5ftorque_5fdiscontinuity_444',['controller_torque_discontinuity',['../structfranka_1_1Errors.html#af40d93759ace9ee6026208110692a732',1,'franka::Errors']]], + ['current_5ferrors_445',['current_errors',['../structfranka_1_1RobotState.html#abc5515f7a27f5de82396ea792a5ecb48',1,'franka::RobotState']]] +]; diff --git a/0.13.6/search/variables_3.html b/0.13.6/search/variables_3.html new file mode 100644 index 00000000..0d69e761 --- /dev/null +++ b/0.13.6/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_3.js b/0.13.6/search/variables_3.js new file mode 100644 index 00000000..5d3b7807 --- /dev/null +++ b/0.13.6/search/variables_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['ddelbow_5fc_446',['ddelbow_c',['../structfranka_1_1RobotState.html#a1e5b6caf84249b1129491dbbcb1fc2e6',1,'franka::RobotState']]], + ['ddq_5fd_447',['ddq_d',['../structfranka_1_1RobotState.html#a6251e748cf72f4b86bcfdcb97d77ace2',1,'franka::RobotState']]], + ['delbow_5fc_448',['delbow_c',['../structfranka_1_1RobotState.html#a57c2c145e9f79010adf23085b8a9c5ad',1,'franka::RobotState']]], + ['device_5fstatus_449',['device_status',['../structfranka_1_1VacuumGripperState.html#ab44560b09c4a959c06ddafbd7f21da02',1,'franka::VacuumGripperState']]], + ['dq_450',['dq',['../classfranka_1_1JointVelocities.html#a14fddb6fe7a7c4034dc82c283de8c2d3',1,'franka::JointVelocities::dq()'],['../structfranka_1_1RobotState.html#af372a0081d72bc7b4fe873f99c7b2d8c',1,'franka::RobotState::dq()']]], + ['dq_5fd_451',['dq_d',['../structfranka_1_1RobotState.html#aed294a088be27b927be9575a18bec949',1,'franka::RobotState']]], + ['dtau_5fj_452',['dtau_J',['../structfranka_1_1RobotState.html#ae6b0d4ee0d7b36240a2165e6ded6f4b9',1,'franka::RobotState']]], + ['dtheta_453',['dtheta',['../structfranka_1_1RobotState.html#a271db0a55dd346715ed8a0daf3f8887c',1,'franka::RobotState']]] +]; diff --git a/0.13.6/search/variables_4.html b/0.13.6/search/variables_4.html new file mode 100644 index 00000000..a4b6506b --- /dev/null +++ b/0.13.6/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_4.js b/0.13.6/search/variables_4.js new file mode 100644 index 00000000..4a1ae822 --- /dev/null +++ b/0.13.6/search/variables_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ee_5ft_5fk_454',['EE_T_K',['../structfranka_1_1RobotState.html#aeb78a3b4b76d4f57b9898cbea3a0f7aa',1,'franka::RobotState']]], + ['elbow_455',['elbow',['../classfranka_1_1CartesianPose.html#abef660743df9cf94d11c556d9c3d25be',1,'franka::CartesianPose::elbow()'],['../classfranka_1_1CartesianVelocities.html#a6419df1399d3dfab79b1654b94ced344',1,'franka::CartesianVelocities::elbow()'],['../structfranka_1_1RobotState.html#a43485841c427d70e7f36a912cc3116d1',1,'franka::RobotState::elbow()']]], + ['elbow_5fc_456',['elbow_c',['../structfranka_1_1RobotState.html#a16cfc844894e8b5b1ad829be529962f0',1,'franka::RobotState']]], + ['elbow_5fd_457',['elbow_d',['../structfranka_1_1RobotState.html#a295dada05d8588fc3c19a74fd427dcc0',1,'franka::RobotState']]] +]; diff --git a/0.13.6/search/variables_5.html b/0.13.6/search/variables_5.html new file mode 100644 index 00000000..7e345d16 --- /dev/null +++ b/0.13.6/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_5.js b/0.13.6/search/variables_5.js new file mode 100644 index 00000000..f7f03e77 --- /dev/null +++ b/0.13.6/search/variables_5.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['f_5ft_5fee_458',['F_T_EE',['../structfranka_1_1RobotState.html#a705b85049fef747008b0eba8284c8057',1,'franka::RobotState']]], + ['f_5ft_5fne_459',['F_T_NE',['../structfranka_1_1RobotState.html#a88142795c453775c360e18d8a6570d15',1,'franka::RobotState']]], + ['f_5fx_5fcee_460',['F_x_Cee',['../structfranka_1_1RobotState.html#a907c4561d8f1c1a2af7980cf58ceb112',1,'franka::RobotState']]], + ['f_5fx_5fcload_461',['F_x_Cload',['../structfranka_1_1RobotState.html#a48e921e6215ad32f36e424b4d7b66a89',1,'franka::RobotState']]], + ['f_5fx_5fctotal_462',['F_x_Ctotal',['../structfranka_1_1RobotState.html#a72ee7362018e3c9e95e3c41e857bfd8d',1,'franka::RobotState']]], + ['force_5fcontrol_5fsafety_5fviolation_463',['force_control_safety_violation',['../structfranka_1_1Errors.html#ae7b19674da28b11ba970c30c7d800923',1,'franka::Errors']]], + ['force_5fcontroller_5fdesired_5fforce_5ftolerance_5fviolation_464',['force_controller_desired_force_tolerance_violation',['../structfranka_1_1Errors.html#ae474f20a64b2585dbe6496966dddff0a',1,'franka::Errors']]] +]; diff --git a/0.13.6/search/variables_6.html b/0.13.6/search/variables_6.html new file mode 100644 index 00000000..7d48e75e --- /dev/null +++ b/0.13.6/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_6.js b/0.13.6/search/variables_6.js new file mode 100644 index 00000000..7ed6ec60 --- /dev/null +++ b/0.13.6/search/variables_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['i_5fee_465',['I_ee',['../structfranka_1_1RobotState.html#a74cee1beb5d400694133deea2846e611',1,'franka::RobotState']]], + ['i_5fload_466',['I_load',['../structfranka_1_1RobotState.html#a5b194153497eff98049681f852118f82',1,'franka::RobotState']]], + ['i_5ftotal_467',['I_total',['../structfranka_1_1RobotState.html#ad9120ae7b7613e77df8c1c3eba8fb033',1,'franka::RobotState']]], + ['in_5fcontrol_5frange_468',['in_control_range',['../structfranka_1_1VacuumGripperState.html#a70c1b14b10c2a79511fcada258c7e0ba',1,'franka::VacuumGripperState']]], + ['instability_5fdetected_469',['instability_detected',['../structfranka_1_1Errors.html#aebb701987262097687d21b3cf1bc8930',1,'franka::Errors']]], + ['is_5fgrasped_470',['is_grasped',['../structfranka_1_1GripperState.html#aa65b46313e740454ead9c9ea27e7bf8d',1,'franka::GripperState']]] +]; diff --git a/0.13.6/search/variables_7.html b/0.13.6/search/variables_7.html new file mode 100644 index 00000000..5c263409 --- /dev/null +++ b/0.13.6/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_7.js b/0.13.6/search/variables_7.js new file mode 100644 index 00000000..3efb6c0e --- /dev/null +++ b/0.13.6/search/variables_7.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['joint_5fcollision_471',['joint_collision',['../structfranka_1_1RobotState.html#a38757bafd4dd8e138410de1dca0c36f8',1,'franka::RobotState']]], + ['joint_5fcontact_472',['joint_contact',['../structfranka_1_1RobotState.html#a7243c652a8efe58c343a0d1252302fa4',1,'franka::RobotState']]], + ['joint_5fmotion_5fgenerator_5facceleration_5fdiscontinuity_473',['joint_motion_generator_acceleration_discontinuity',['../structfranka_1_1Errors.html#a633195adca91f5ecaf1506da12f3311f',1,'franka::Errors']]], + ['joint_5fmotion_5fgenerator_5fposition_5flimits_5fviolation_474',['joint_motion_generator_position_limits_violation',['../structfranka_1_1Errors.html#a9536ad072868b90525c56143cbb956ef',1,'franka::Errors']]], + ['joint_5fmotion_5fgenerator_5fvelocity_5fdiscontinuity_475',['joint_motion_generator_velocity_discontinuity',['../structfranka_1_1Errors.html#abd6da8e6a32d817a7b4848a24efd9379',1,'franka::Errors']]], + ['joint_5fmotion_5fgenerator_5fvelocity_5flimits_5fviolation_476',['joint_motion_generator_velocity_limits_violation',['../structfranka_1_1Errors.html#ae211638df9b0e23905c8a9d36e249207',1,'franka::Errors']]], + ['joint_5fmove_5fin_5fwrong_5fdirection_477',['joint_move_in_wrong_direction',['../structfranka_1_1Errors.html#a7d3a6480cbe572fd46e579b43732edc9',1,'franka::Errors']]], + ['joint_5fp2p_5finsufficient_5ftorque_5ffor_5fplanning_478',['joint_p2p_insufficient_torque_for_planning',['../structfranka_1_1Errors.html#a1c78be870253b510a4516acf14c2d3e3',1,'franka::Errors']]], + ['joint_5fposition_5flimits_5fviolation_479',['joint_position_limits_violation',['../structfranka_1_1Errors.html#a44ba0d45e52639280d32cf447f967e29',1,'franka::Errors']]], + ['joint_5fposition_5fmotion_5fgenerator_5fstart_5fpose_5finvalid_480',['joint_position_motion_generator_start_pose_invalid',['../structfranka_1_1Errors.html#a7af91cbf61dc79304bff3ffadc51ea86',1,'franka::Errors']]], + ['joint_5fpositions_481',['joint_positions',['../structfranka_1_1RobotCommand.html#a086afcec596eae5284b6c39dc1452280',1,'franka::RobotCommand']]], + ['joint_5freflex_482',['joint_reflex',['../structfranka_1_1Errors.html#afb0928680c586e73d4e2cd4b42c7fe48',1,'franka::Errors']]], + ['joint_5fvelocities_483',['joint_velocities',['../structfranka_1_1RobotCommand.html#a049657cf2bbbb53d6ffa5581721e7b71',1,'franka::RobotCommand']]], + ['joint_5fvelocity_5fviolation_484',['joint_velocity_violation',['../structfranka_1_1Errors.html#a803ac4acbc26350602ea2eb02b7b30c4',1,'franka::Errors']]], + ['joint_5fvia_5fmotion_5fgenerator_5fplanning_5fjoint_5flimit_5fviolation_485',['joint_via_motion_generator_planning_joint_limit_violation',['../structfranka_1_1Errors.html#aef3c74f48978545187ee2dc3a96db1c8',1,'franka::Errors']]] +]; diff --git a/0.13.6/search/variables_8.html b/0.13.6/search/variables_8.html new file mode 100644 index 00000000..dc9ec54a --- /dev/null +++ b/0.13.6/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_8.js b/0.13.6/search/variables_8.js new file mode 100644 index 00000000..db34d379 --- /dev/null +++ b/0.13.6/search/variables_8.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['k_5ff_5fext_5fhat_5fk_486',['K_F_ext_hat_K',['../structfranka_1_1RobotState.html#a96267d443c05fcc58d7ac32f63912649',1,'franka::RobotState']]], + ['kdefaultcutofffrequency_487',['kDefaultCutoffFrequency',['../lowpass__filter_8h.html#ad8e3b7da346e03181ab5ac138a4171d4',1,'franka']]], + ['kdeltat_488',['kDeltaT',['../rate__limiting_8h.html#a1e207a0d5a6e90c1e1a78e6e1057120a',1,'franka']]], + ['kfactorcartesianrotationposeinterface_489',['kFactorCartesianRotationPoseInterface',['../rate__limiting_8h.html#a19166d1a64c5a84f80b4ed3aa0bfb3a0',1,'franka']]], + ['kjointvelocitylimitstolerance_490',['kJointVelocityLimitsTolerance',['../rate__limiting_8h.html#a39b6d9504e2844d289f834471994d889',1,'franka']]], + ['klimiteps_491',['kLimitEps',['../rate__limiting_8h.html#aad1f9b575274830b8da9e638559d424b',1,'franka']]], + ['kmaxcutofffrequency_492',['kMaxCutoffFrequency',['../lowpass__filter_8h.html#adb10b364af8deb9e17d9bcc1ff2695be',1,'franka']]], + ['kmaxelbowacceleration_493',['kMaxElbowAcceleration',['../rate__limiting_8h.html#af365e574ad7b1580ce15e30dd909b3ba',1,'franka']]], + ['kmaxelbowjerk_494',['kMaxElbowJerk',['../rate__limiting_8h.html#adc70178204d4da073c78de777a2dff74',1,'franka']]], + ['kmaxelbowvelocity_495',['kMaxElbowVelocity',['../rate__limiting_8h.html#a2896b2e0c8bd96f9ee242c1203ac3483',1,'franka']]], + ['kmaxjointacceleration_496',['kMaxJointAcceleration',['../rate__limiting_8h.html#a826ecf0b7d214df69c1ee416d3e66b93',1,'franka']]], + ['kmaxjointjerk_497',['kMaxJointJerk',['../rate__limiting_8h.html#a600a21a6151ff2eee38294293dd8aeec',1,'franka']]], + ['kmaxrotationalacceleration_498',['kMaxRotationalAcceleration',['../rate__limiting_8h.html#a5e3d5c95ba72f9660f17f8ebf1e0aa2e',1,'franka']]], + ['kmaxrotationaljerk_499',['kMaxRotationalJerk',['../rate__limiting_8h.html#a259520ce1b6b5b85a88d05262286820d',1,'franka']]], + ['kmaxrotationalvelocity_500',['kMaxRotationalVelocity',['../rate__limiting_8h.html#aafb1f5ef8f8a7abd546edea498c18b45',1,'franka']]], + ['kmaxtorquerate_501',['kMaxTorqueRate',['../rate__limiting_8h.html#a6c1a0e9a5e1f375d2aad61edac907d4e',1,'franka']]], + ['kmaxtranslationalacceleration_502',['kMaxTranslationalAcceleration',['../rate__limiting_8h.html#a3803b1a54ba526ccaa4fa0d15446f3db',1,'franka']]], + ['kmaxtranslationaljerk_503',['kMaxTranslationalJerk',['../rate__limiting_8h.html#a46b8f11959ed3f731a0914f524af8e69',1,'franka']]], + ['kmaxtranslationalvelocity_504',['kMaxTranslationalVelocity',['../rate__limiting_8h.html#a857e1e5e18d688ec7095264a629bf474',1,'franka']]], + ['knormeps_505',['kNormEps',['../rate__limiting_8h.html#a420d72830a872ef375d9d6cbb1c439b5',1,'franka']]], + ['ktolnumberpacketslost_506',['kTolNumberPacketsLost',['../rate__limiting_8h.html#a664b546834ceecd4e3220ffa92f1172c',1,'franka']]] +]; diff --git a/0.13.6/search/variables_9.html b/0.13.6/search/variables_9.html new file mode 100644 index 00000000..7b014750 --- /dev/null +++ b/0.13.6/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_9.js b/0.13.6/search/variables_9.js new file mode 100644 index 00000000..79e60ab9 --- /dev/null +++ b/0.13.6/search/variables_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['last_5fmotion_5ferrors_507',['last_motion_errors',['../structfranka_1_1RobotState.html#a06d7019f85339409e932dc086b7a260b',1,'franka::RobotState']]], + ['last_5fread_5faccess_508',['last_read_access',['../classfranka_1_1ActiveControl.html#a226304deac8032ed6c8428caa60c9fb4',1,'franka::ActiveControl']]], + ['library_5fversion_509',['library_version',['../structfranka_1_1IncompatibleVersionException.html#a81e6d7f01965ed7ee34f83dc3883ad01',1,'franka::IncompatibleVersionException']]], + ['log_510',['log',['../structfranka_1_1ControlException.html#ae57f0ac0a9aa195057af1f1cc712b41e',1,'franka::ControlException']]] +]; diff --git a/0.13.6/search/variables_a.html b/0.13.6/search/variables_a.html new file mode 100644 index 00000000..52a724d1 --- /dev/null +++ b/0.13.6/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_a.js b/0.13.6/search/variables_a.js new file mode 100644 index 00000000..49ca7e14 --- /dev/null +++ b/0.13.6/search/variables_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['m_5fee_511',['m_ee',['../structfranka_1_1RobotState.html#af982a16246e33c1495ec02972a36bce3',1,'franka::RobotState']]], + ['m_5fload_512',['m_load',['../structfranka_1_1RobotState.html#a99ea4ab9c5a42a5c17365ed8fd730cd1',1,'franka::RobotState']]], + ['m_5ftotal_513',['m_total',['../structfranka_1_1RobotState.html#a87880d4693c8f576ebdabf00f4d4f981',1,'franka::RobotState']]], + ['max_5fgoal_5fpose_5fdeviation_5fviolation_514',['max_goal_pose_deviation_violation',['../structfranka_1_1Errors.html#ac55d3624087e606cb4ffab121869d580',1,'franka::Errors']]], + ['max_5fpath_5fpose_5fdeviation_5fviolation_515',['max_path_pose_deviation_violation',['../structfranka_1_1Errors.html#ad90cffe703ca1b782007f3ba49da587c',1,'franka::Errors']]], + ['max_5fwidth_516',['max_width',['../structfranka_1_1GripperState.html#ab71a26356c2898c49609bf991843e166',1,'franka::GripperState']]], + ['motion_5ffinished_517',['motion_finished',['../structfranka_1_1Finishable.html#a5d48028c0f912d4a089e6220d8715f7f',1,'franka::Finishable']]], + ['motion_5fid_518',['motion_id',['../classfranka_1_1ActiveControl.html#a0852a7d4b5a67df218440c2cc629f638',1,'franka::ActiveControl']]] +]; diff --git a/0.13.6/search/variables_b.html b/0.13.6/search/variables_b.html new file mode 100644 index 00000000..f376b27a --- /dev/null +++ b/0.13.6/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_b.js b/0.13.6/search/variables_b.js new file mode 100644 index 00000000..106316ba --- /dev/null +++ b/0.13.6/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ne_5ft_5fee_519',['NE_T_EE',['../structfranka_1_1RobotState.html#ac53f1046fe758cfdda438a8e3ba08fff',1,'franka::RobotState']]] +]; diff --git a/0.13.6/search/variables_c.html b/0.13.6/search/variables_c.html new file mode 100644 index 00000000..6019eba9 --- /dev/null +++ b/0.13.6/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_c.js b/0.13.6/search/variables_c.js new file mode 100644 index 00000000..40b6f78a --- /dev/null +++ b/0.13.6/search/variables_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['o_5fddp_5fee_5fc_520',['O_ddP_EE_c',['../structfranka_1_1RobotState.html#ac8dfcf78ddbb27852484e921d6d66ca1',1,'franka::RobotState']]], + ['o_5fddp_5fo_521',['O_ddP_O',['../structfranka_1_1RobotState.html#ab24d7982942d316459fc35337dc38ecd',1,'franka::RobotState']]], + ['o_5fdp_5fee_522',['O_dP_EE',['../classfranka_1_1CartesianVelocities.html#ab7a42c7c1ee7109025aff5c43a56b398',1,'franka::CartesianVelocities']]], + ['o_5fdp_5fee_5fc_523',['O_dP_EE_c',['../structfranka_1_1RobotState.html#a4be112bd1a9a7d777a67aea4a18a8dcc',1,'franka::RobotState']]], + ['o_5fdp_5fee_5fd_524',['O_dP_EE_d',['../structfranka_1_1RobotState.html#a1e0a82b98534929c3061295d5761d607',1,'franka::RobotState']]], + ['o_5ff_5fext_5fhat_5fk_525',['O_F_ext_hat_K',['../structfranka_1_1RobotState.html#a5a830b4f9d6a3c2dc92e4a9cc6050493',1,'franka::RobotState']]], + ['o_5ft_5fee_526',['O_T_EE',['../classfranka_1_1CartesianPose.html#a406e53e3d8fe594a11888f516eb4bf7d',1,'franka::CartesianPose::O_T_EE()'],['../structfranka_1_1RobotState.html#a193781d47722b32925e0ea7ac415f442',1,'franka::RobotState::O_T_EE()']]], + ['o_5ft_5fee_5fc_527',['O_T_EE_c',['../structfranka_1_1RobotState.html#a395c48eff099419ea5d42eaf0870fc18',1,'franka::RobotState']]], + ['o_5ft_5fee_5fd_528',['O_T_EE_d',['../structfranka_1_1RobotState.html#a3e5b4b7687856e92d826044be7d15733',1,'franka::RobotState']]] +]; diff --git a/0.13.6/search/variables_d.html b/0.13.6/search/variables_d.html new file mode 100644 index 00000000..f61ae751 --- /dev/null +++ b/0.13.6/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_d.js b/0.13.6/search/variables_d.js new file mode 100644 index 00000000..f05dd611 --- /dev/null +++ b/0.13.6/search/variables_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['part_5fdetached_529',['part_detached',['../structfranka_1_1VacuumGripperState.html#aa27a2b4b9d19bdcb059995a8121ba309',1,'franka::VacuumGripperState']]], + ['part_5fpresent_530',['part_present',['../structfranka_1_1VacuumGripperState.html#aeb5664ab2a9784c9e31ce5f67c914107',1,'franka::VacuumGripperState']]], + ['power_5flimit_5fviolation_531',['power_limit_violation',['../structfranka_1_1Errors.html#a6c4d8cb1fb314567ebd07a6195b840f5',1,'franka::Errors']]] +]; diff --git a/0.13.6/search/variables_e.html b/0.13.6/search/variables_e.html new file mode 100644 index 00000000..7bfd3721 --- /dev/null +++ b/0.13.6/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_e.js b/0.13.6/search/variables_e.js new file mode 100644 index 00000000..ac71c5c3 --- /dev/null +++ b/0.13.6/search/variables_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['q_532',['q',['../classfranka_1_1JointPositions.html#a40e9098abe1c51cd48e17e41fbf78337',1,'franka::JointPositions::q()'],['../structfranka_1_1RobotState.html#ade3335d1ac2f6c44741a916d565f7091',1,'franka::RobotState::q()']]], + ['q_5fd_533',['q_d',['../structfranka_1_1RobotState.html#a706045af1b176049e9e56df755325bd2',1,'franka::RobotState']]] +]; diff --git a/0.13.6/search/variables_f.html b/0.13.6/search/variables_f.html new file mode 100644 index 00000000..d97920d0 --- /dev/null +++ b/0.13.6/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/0.13.6/search/variables_f.js b/0.13.6/search/variables_f.js new file mode 100644 index 00000000..6e4d82e7 --- /dev/null +++ b/0.13.6/search/variables_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['robot_5fimpl_534',['robot_impl',['../classfranka_1_1ActiveControl.html#a94e725adb409391547a260f204c74564',1,'franka::ActiveControl']]], + ['robot_5fmode_535',['robot_mode',['../structfranka_1_1RobotState.html#a4943ae75e0e2ec534e0afac31cbcc987',1,'franka::RobotState']]] +]; diff --git a/0.13.6/splitbar.png b/0.13.6/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1CommandException.html b/0.13.6/structfranka_1_1CommandException.html new file mode 100644 index 00000000..fd36ba1d --- /dev/null +++ b/0.13.6/structfranka_1_1CommandException.html @@ -0,0 +1,118 @@ + + + + + + + +libfranka: franka::CommandException Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::CommandException Struct Reference
    +
    +
    + +

    CommandException is thrown if an error occurs during command execution. + More...

    + +

    #include <exception.h>

    +
    +Inheritance diagram for franka::CommandException:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::CommandException:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    +

    Detailed Description

    +

    CommandException is thrown if an error occurs during command execution.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1CommandException__coll__graph.map b/0.13.6/structfranka_1_1CommandException__coll__graph.map new file mode 100644 index 00000000..73c58e3f --- /dev/null +++ b/0.13.6/structfranka_1_1CommandException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1CommandException__coll__graph.md5 b/0.13.6/structfranka_1_1CommandException__coll__graph.md5 new file mode 100644 index 00000000..d76a1d46 --- /dev/null +++ b/0.13.6/structfranka_1_1CommandException__coll__graph.md5 @@ -0,0 +1 @@ +8f554c30479b664936d4c1cfc452d7af \ No newline at end of file diff --git a/0.13.6/structfranka_1_1CommandException__coll__graph.png b/0.13.6/structfranka_1_1CommandException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2cc73356ecef88a639aaeae582c90ec75be8c3 GIT binary patch literal 6766 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1CommandException__inherit__graph.map b/0.13.6/structfranka_1_1CommandException__inherit__graph.map new file mode 100644 index 00000000..73c58e3f --- /dev/null +++ b/0.13.6/structfranka_1_1CommandException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1CommandException__inherit__graph.md5 b/0.13.6/structfranka_1_1CommandException__inherit__graph.md5 new file mode 100644 index 00000000..d76a1d46 --- /dev/null +++ b/0.13.6/structfranka_1_1CommandException__inherit__graph.md5 @@ -0,0 +1 @@ +8f554c30479b664936d4c1cfc452d7af \ No newline at end of file diff --git a/0.13.6/structfranka_1_1CommandException__inherit__graph.png b/0.13.6/structfranka_1_1CommandException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2cc73356ecef88a639aaeae582c90ec75be8c3 GIT binary patch literal 6766 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1ControlException-members.html b/0.13.6/structfranka_1_1ControlException-members.html new file mode 100644 index 00000000..1609a473 --- /dev/null +++ b/0.13.6/structfranka_1_1ControlException-members.html @@ -0,0 +1,93 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::ControlException Member List
    +
    +
    + +

    This is the complete list of members for franka::ControlException, including all inherited members.

    + + + +
    ControlException(const std::string &what, std::vector< franka::Record > log={}) noexceptfranka::ControlExceptionexplicit
    logfranka::ControlException
    + + + + diff --git a/0.13.6/structfranka_1_1ControlException.html b/0.13.6/structfranka_1_1ControlException.html new file mode 100644 index 00000000..177ccee1 --- /dev/null +++ b/0.13.6/structfranka_1_1ControlException.html @@ -0,0 +1,185 @@ + + + + + + + +libfranka: franka::ControlException Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::ControlException Struct Reference
    +
    +
    + +

    ControlException is thrown if an error occurs during motion generation or torque control. + More...

    + +

    #include <exception.h>

    +
    +Inheritance diagram for franka::ControlException:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::ControlException:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + +

    +Public Member Functions

     ControlException (const std::string &what, std::vector< franka::Record > log={}) noexcept
     Creates the exception with an explanatory string and a Log object. More...
     
    + + + + +

    +Public Attributes

    +const std::vector< franka::Recordlog
     Vector of states and commands logged just before the exception occurred.
     
    +

    Detailed Description

    +

    ControlException is thrown if an error occurs during motion generation or torque control.

    +

    The exception holds a vector with the last received robot states. The number of recorded states can be configured in the Robot constructor.

    +
    Examples
    generate_consecutive_motions.cpp, motion_with_control.cpp, and motion_with_control_external_control_loop.cpp.
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ ControlException()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    franka::ControlException::ControlException (const std::string & what,
    std::vector< franka::Recordlog = {} 
    )
    +
    +explicitnoexcept
    +
    + +

    Creates the exception with an explanatory string and a Log object.

    +
    Parameters
    + + + +
    [in]whatExplanatory string.
    [in]logVector of last received states and commands.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1ControlException__coll__graph.map b/0.13.6/structfranka_1_1ControlException__coll__graph.map new file mode 100644 index 00000000..76e25ff0 --- /dev/null +++ b/0.13.6/structfranka_1_1ControlException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1ControlException__coll__graph.md5 b/0.13.6/structfranka_1_1ControlException__coll__graph.md5 new file mode 100644 index 00000000..fe9c0ccd --- /dev/null +++ b/0.13.6/structfranka_1_1ControlException__coll__graph.md5 @@ -0,0 +1 @@ +4e553ffed42befde0592aa1e7f95bbac \ No newline at end of file diff --git a/0.13.6/structfranka_1_1ControlException__coll__graph.png b/0.13.6/structfranka_1_1ControlException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..59b599d035b719e14c4db2d4bc95c13c6cce62b2 GIT binary patch literal 6413 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1ControlException__inherit__graph.map b/0.13.6/structfranka_1_1ControlException__inherit__graph.map new file mode 100644 index 00000000..76e25ff0 --- /dev/null +++ b/0.13.6/structfranka_1_1ControlException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1ControlException__inherit__graph.md5 b/0.13.6/structfranka_1_1ControlException__inherit__graph.md5 new file mode 100644 index 00000000..fe9c0ccd --- /dev/null +++ b/0.13.6/structfranka_1_1ControlException__inherit__graph.md5 @@ -0,0 +1 @@ +4e553ffed42befde0592aa1e7f95bbac \ No newline at end of file diff --git a/0.13.6/structfranka_1_1ControlException__inherit__graph.png b/0.13.6/structfranka_1_1ControlException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..59b599d035b719e14c4db2d4bc95c13c6cce62b2 GIT binary patch literal 6413 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1Errors-members.html b/0.13.6/structfranka_1_1Errors-members.html new file mode 100644 index 00000000..e72d7535 --- /dev/null +++ b/0.13.6/structfranka_1_1Errors-members.html @@ -0,0 +1,138 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::Errors Member List
    +
    +
    + +

    This is the complete list of members for franka::Errors, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    base_acceleration_initialization_timeoutfranka::Errors
    base_acceleration_invalid_readingfranka::Errors
    cartesian_motion_generator_acceleration_discontinuityfranka::Errors
    cartesian_motion_generator_elbow_limit_violationfranka::Errors
    cartesian_motion_generator_elbow_sign_inconsistentfranka::Errors
    cartesian_motion_generator_joint_acceleration_discontinuityfranka::Errors
    cartesian_motion_generator_joint_position_limits_violationfranka::Errors
    cartesian_motion_generator_joint_velocity_discontinuityfranka::Errors
    cartesian_motion_generator_joint_velocity_limits_violationfranka::Errors
    cartesian_motion_generator_start_elbow_invalidfranka::Errors
    cartesian_motion_generator_velocity_discontinuityfranka::Errors
    cartesian_motion_generator_velocity_limits_violationfranka::Errors
    cartesian_position_limits_violationfranka::Errors
    cartesian_position_motion_generator_invalid_framefranka::Errors
    cartesian_position_motion_generator_start_pose_invalidfranka::Errors
    cartesian_reflexfranka::Errors
    cartesian_spline_motion_generator_violationfranka::Errors
    cartesian_velocity_profile_safety_violationfranka::Errors
    cartesian_velocity_violationfranka::Errors
    communication_constraints_violationfranka::Errors
    controller_torque_discontinuityfranka::Errors
    Errors()franka::Errors
    Errors(const Errors &other)franka::Errors
    Errors(const std::array< bool, 41 > &errors)franka::Errors
    force_control_safety_violationfranka::Errors
    force_controller_desired_force_tolerance_violationfranka::Errors
    instability_detectedfranka::Errors
    joint_motion_generator_acceleration_discontinuityfranka::Errors
    joint_motion_generator_position_limits_violationfranka::Errors
    joint_motion_generator_velocity_discontinuityfranka::Errors
    joint_motion_generator_velocity_limits_violationfranka::Errors
    joint_move_in_wrong_directionfranka::Errors
    joint_p2p_insufficient_torque_for_planningfranka::Errors
    joint_position_limits_violationfranka::Errors
    joint_position_motion_generator_start_pose_invalidfranka::Errors
    joint_reflexfranka::Errors
    joint_velocity_violationfranka::Errors
    joint_via_motion_generator_planning_joint_limit_violationfranka::Errors
    max_goal_pose_deviation_violationfranka::Errors
    max_path_pose_deviation_violationfranka::Errors
    operator bool() const noexceptfranka::Errorsexplicit
    operator std::string() constfranka::Errorsexplicit
    operator=(Errors other)franka::Errors
    power_limit_violationfranka::Errors
    self_collision_avoidance_violationfranka::Errors
    start_elbow_sign_inconsistentfranka::Errors
    tau_j_range_violationfranka::Errors
    + + + + diff --git a/0.13.6/structfranka_1_1Errors.html b/0.13.6/structfranka_1_1Errors.html new file mode 100644 index 00000000..505129a6 --- /dev/null +++ b/0.13.6/structfranka_1_1Errors.html @@ -0,0 +1,462 @@ + + + + + + + +libfranka: franka::Errors Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::Errors Struct Reference
    +
    +
    + +

    Enumerates errors that can occur while controlling a franka::Robot. + More...

    + +

    #include <errors.h>

    + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    Errors ()
     Creates an empty Errors instance.
     
     Errors (const Errors &other)
     Copy constructs a new Errors instance. More...
     
    Errorsoperator= (Errors other)
     Assigns this Errors instance from another Errors value. More...
     
     Errors (const std::array< bool, 41 > &errors)
     Creates a new Errors instance from the given array. More...
     
     operator bool () const noexcept
     Check if any error flag is set to true. More...
     
     operator std::string () const
     Creates a string with names of active errors: "[active_error_name2, active_error_name_2, ... active_error_name_n]" If no errors are active, the string contains empty brackets: "[]". More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +const bool & joint_position_limits_violation
     True if the robot moved past the joint limits.
     
    +const bool & cartesian_position_limits_violation
     True if the robot moved past any of the virtual walls.
     
    +const bool & self_collision_avoidance_violation
     True if the robot would have collided with itself.
     
    +const bool & joint_velocity_violation
     True if the robot exceeded joint velocity limits.
     
    +const bool & cartesian_velocity_violation
     True if the robot exceeded Cartesian velocity limits.
     
    +const bool & force_control_safety_violation
     True if the robot exceeded safety threshold during force control.
     
    +const bool & joint_reflex
     True if a collision was detected, i.e. the robot exceeded a torque threshold in a joint motion.
     
    +const bool & cartesian_reflex
     True if a collision was detected, i.e. the robot exceeded a torque threshold in a Cartesian motion.
     
    +const bool & max_goal_pose_deviation_violation
     True if internal motion generator did not reach the goal pose.
     
    +const bool & max_path_pose_deviation_violation
     True if internal motion generator deviated from the path.
     
    +const bool & cartesian_velocity_profile_safety_violation
     True if Cartesian velocity profile for internal motions was exceeded.
     
    +const bool & joint_position_motion_generator_start_pose_invalid
     True if an external joint position motion generator was started with a pose too far from the current pose.
     
    +const bool & joint_motion_generator_position_limits_violation
     True if an external joint motion generator would move into a joint limit.
     
    +const bool & joint_motion_generator_velocity_limits_violation
     True if an external joint motion generator exceeded velocity limits.
     
    +const bool & joint_motion_generator_velocity_discontinuity
     True if commanded velocity in joint motion generators is discontinuous (target values are too far apart).
     
    +const bool & joint_motion_generator_acceleration_discontinuity
     True if commanded acceleration in joint motion generators is discontinuous (target values are too far apart).
     
    +const bool & cartesian_position_motion_generator_start_pose_invalid
     True if an external Cartesian position motion generator was started with a pose too far from the current pose.
     
    +const bool & cartesian_motion_generator_elbow_limit_violation
     True if an external Cartesian motion generator would move into an elbow limit.
     
    +const bool & cartesian_motion_generator_velocity_limits_violation
     True if an external Cartesian motion generator would move with too high velocity.
     
    +const bool & cartesian_motion_generator_velocity_discontinuity
     True if commanded velocity in Cartesian motion generators is discontinuous (target values are too far apart).
     
    +const bool & cartesian_motion_generator_acceleration_discontinuity
     True if commanded acceleration in Cartesian motion generators is discontinuous (target values are too far apart).
     
    +const bool & cartesian_motion_generator_elbow_sign_inconsistent
     True if commanded elbow values in Cartesian motion generators are inconsistent.
     
    +const bool & cartesian_motion_generator_start_elbow_invalid
     True if the first elbow value in Cartesian motion generators is too far from initial one.
     
    +const bool & cartesian_motion_generator_joint_position_limits_violation
     True if the joint position limits would be exceeded after IK calculation.
     
    +const bool & cartesian_motion_generator_joint_velocity_limits_violation
     True if the joint velocity limits would be exceeded after IK calculation.
     
    +const bool & cartesian_motion_generator_joint_velocity_discontinuity
     True if the joint velocity in Cartesian motion generators is discontinuous after IK calculation.
     
    +const bool & cartesian_motion_generator_joint_acceleration_discontinuity
     True if the joint acceleration in Cartesian motion generators is discontinuous after IK calculation.
     
    +const bool & cartesian_position_motion_generator_invalid_frame
     True if the Cartesian pose is not a valid transformation matrix.
     
    +const bool & force_controller_desired_force_tolerance_violation
     True if desired force exceeds the safety thresholds.
     
    +const bool & controller_torque_discontinuity
     True if the torque set by the external controller is discontinuous.
     
    const bool & start_elbow_sign_inconsistent
     True if the start elbow sign was inconsistent. More...
     
    +const bool & communication_constraints_violation
     True if minimum network communication quality could not be held during a motion.
     
    +const bool & power_limit_violation
     True if commanded values would result in exceeding the power limit.
     
    const bool & joint_p2p_insufficient_torque_for_planning
     True if the robot is overloaded for the required motion. More...
     
    +const bool & tau_j_range_violation
     True if the measured torque signal is out of the safe range.
     
    +const bool & instability_detected
     True if an instability is detected.
     
    +const bool & joint_move_in_wrong_direction
     True if the robot is in joint position limits violation error and the user guides the robot further towards the limit.
     
    +const bool & cartesian_spline_motion_generator_violation
     True if the generated motion violates a joint limit.
     
    +const bool & joint_via_motion_generator_planning_joint_limit_violation
     True if the generated motion violates a joint limit.
     
    +const bool & base_acceleration_initialization_timeout
     True if the gravity vector could not be initialized by measureing the base acceleration.
     
    +const bool & base_acceleration_invalid_reading
     True if the base acceleration O_ddP_O cannot be determined.
     
    +

    Detailed Description

    +

    Enumerates errors that can occur while controlling a franka::Robot.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Errors() [1/2]

    + +
    +
    + + + + + + + + +
    franka::Errors::Errors (const Errorsother)
    +
    + +

    Copy constructs a new Errors instance.

    +
    Parameters
    + + +
    [in]otherOther Errors instance.
    +
    +
    + +
    +
    + +

    ◆ Errors() [2/2]

    + +
    +
    + + + + + + + + +
    franka::Errors::Errors (const std::array< bool, 41 > & errors)
    +
    + +

    Creates a new Errors instance from the given array.

    +
    Parameters
    + + +
    errorsArray of error flags.
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator bool()

    + +
    +
    + + + + + +
    + + + + + + + +
    franka::Errors::operator bool () const
    +
    +explicitnoexcept
    +
    + +

    Check if any error flag is set to true.

    +
    Returns
    True if any errors are set.
    + +
    +
    + +

    ◆ operator std::string()

    + +
    +
    + + + + + +
    + + + + + + + +
    franka::Errors::operator std::string () const
    +
    +explicit
    +
    + +

    Creates a string with names of active errors: "[active_error_name2, active_error_name_2, ... active_error_name_n]" If no errors are active, the string contains empty brackets: "[]".

    +
    Returns
    string with names of active errors
    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + + + + +
    Errors& franka::Errors::operator= (Errors other)
    +
    + +

    Assigns this Errors instance from another Errors value.

    +
    Parameters
    + + +
    [in]otherOther Errors instance.
    +
    +
    +
    Returns
    Errors instance.
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ joint_p2p_insufficient_torque_for_planning

    + +
    +
    + + + + +
    const bool& franka::Errors::joint_p2p_insufficient_torque_for_planning
    +
    + +

    True if the robot is overloaded for the required motion.

    +

    Applies only to motions started from Desk.

    + +
    +
    + +

    ◆ start_elbow_sign_inconsistent

    + +
    +
    + + + + +
    const bool& franka::Errors::start_elbow_sign_inconsistent
    +
    + +

    True if the start elbow sign was inconsistent.

    +

    Applies only to motions started from Desk.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1Exception.html b/0.13.6/structfranka_1_1Exception.html new file mode 100644 index 00000000..d49abe64 --- /dev/null +++ b/0.13.6/structfranka_1_1Exception.html @@ -0,0 +1,126 @@ + + + + + + + +libfranka: franka::Exception Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::Exception Struct Reference
    +
    + + + + + diff --git a/0.13.6/structfranka_1_1Exception__coll__graph.map b/0.13.6/structfranka_1_1Exception__coll__graph.map new file mode 100644 index 00000000..a3586d81 --- /dev/null +++ b/0.13.6/structfranka_1_1Exception__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/structfranka_1_1Exception__coll__graph.md5 b/0.13.6/structfranka_1_1Exception__coll__graph.md5 new file mode 100644 index 00000000..9c424121 --- /dev/null +++ b/0.13.6/structfranka_1_1Exception__coll__graph.md5 @@ -0,0 +1 @@ +35ab8e8c51542517bb4903c73914631e \ No newline at end of file diff --git a/0.13.6/structfranka_1_1Exception__coll__graph.png b/0.13.6/structfranka_1_1Exception__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3eaf33bd3ecf57b50dfef42f7b7dffb0f7b0553 GIT binary patch literal 3508 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 + + + + + + + + + + + diff --git a/0.13.6/structfranka_1_1Exception__inherit__graph.md5 b/0.13.6/structfranka_1_1Exception__inherit__graph.md5 new file mode 100644 index 00000000..697f6d12 --- /dev/null +++ b/0.13.6/structfranka_1_1Exception__inherit__graph.md5 @@ -0,0 +1 @@ +6faf038d3e55c6494cd13b5fbac07b70 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1Exception__inherit__graph.png b/0.13.6/structfranka_1_1Exception__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7707c6e3ee0e184ea79b3a76b99225198ada5857 GIT binary patch literal 40258 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1Finishable-members.html b/0.13.6/structfranka_1_1Finishable-members.html new file mode 100644 index 00000000..1fea6bc8 --- /dev/null +++ b/0.13.6/structfranka_1_1Finishable-members.html @@ -0,0 +1,92 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + + +
    +
    +
    franka::Finishable Member List
    +
    +
    + +

    This is the complete list of members for franka::Finishable, including all inherited members.

    + + +
    motion_finishedfranka::Finishable
    + + + + diff --git a/0.13.6/structfranka_1_1Finishable.html b/0.13.6/structfranka_1_1Finishable.html new file mode 100644 index 00000000..e5586f31 --- /dev/null +++ b/0.13.6/structfranka_1_1Finishable.html @@ -0,0 +1,124 @@ + + + + + + + +libfranka: franka::Finishable Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::Finishable Struct Reference
    +
    +
    + +

    Helper type for control and motion generation loops. + More...

    + +

    #include <control_types.h>

    +
    +Inheritance diagram for franka::Finishable:
    +
    +
    Inheritance graph
    + + + + + + + + +
    [legend]
    + + + + + +

    +Public Attributes

    +bool motion_finished = false
     Determines whether to finish a currently running motion.
     
    +

    Detailed Description

    +

    Helper type for control and motion generation loops.

    +

    Used to determine whether to terminate a loop after the control callback has returned.

    +
    See also
    Documentation on callbacks
    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1Finishable__inherit__graph.map b/0.13.6/structfranka_1_1Finishable__inherit__graph.map new file mode 100644 index 00000000..b06c5d07 --- /dev/null +++ b/0.13.6/structfranka_1_1Finishable__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/0.13.6/structfranka_1_1Finishable__inherit__graph.md5 b/0.13.6/structfranka_1_1Finishable__inherit__graph.md5 new file mode 100644 index 00000000..7b080573 --- /dev/null +++ b/0.13.6/structfranka_1_1Finishable__inherit__graph.md5 @@ -0,0 +1 @@ +761d61ee040c65aed80333cad3d1f1dc \ No newline at end of file diff --git a/0.13.6/structfranka_1_1Finishable__inherit__graph.png b/0.13.6/structfranka_1_1Finishable__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..60e1e0dcca90e69777baac46cf9c6537ba6b2dc0 GIT binary patch literal 15399 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 A&;S4c literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1GripperState-members.html b/0.13.6/structfranka_1_1GripperState-members.html new file mode 100644 index 00000000..174a9131 --- /dev/null +++ b/0.13.6/structfranka_1_1GripperState-members.html @@ -0,0 +1,96 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::GripperState Member List
    +
    + + + + + diff --git a/0.13.6/structfranka_1_1GripperState.html b/0.13.6/structfranka_1_1GripperState.html new file mode 100644 index 00000000..6a81516b --- /dev/null +++ b/0.13.6/structfranka_1_1GripperState.html @@ -0,0 +1,188 @@ + + + + + + + +libfranka: franka::GripperState Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::GripperState Struct Reference
    +
    +
    + +

    Describes the gripper state. + More...

    + +

    #include <gripper_state.h>

    +
    +Collaboration diagram for franka::GripperState:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    double width {}
     Current gripper opening width. More...
     
    double max_width {}
     Maximum gripper opening width. More...
     
    +bool is_grasped {}
     Indicates whether an object is currently grasped.
     
    uint16_t temperature {}
     Current gripper temperature. More...
     
    +Duration time {}
     Strictly monotonically increasing timestamp since robot start.
     
    +

    Detailed Description

    +

    Describes the gripper state.

    +
    Examples
    grasp_object.cpp.
    +
    +

    Member Data Documentation

    + +

    ◆ max_width

    + +
    +
    + + + + +
    double franka::GripperState::max_width {}
    +
    + +

    Maximum gripper opening width.

    +

    This parameter is estimated by homing the gripper. After changing the gripper fingers, a homing needs to be done. Unit: \([m]\).

    +
    See also
    Gripper::homing.
    +
    Examples
    grasp_object.cpp.
    +
    + +
    +
    + +

    ◆ temperature

    + +
    +
    + + + + +
    uint16_t franka::GripperState::temperature {}
    +
    + +

    Current gripper temperature.

    +

    Unit: \([°C]\).

    + +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    double franka::GripperState::width {}
    +
    + +

    Current gripper opening width.

    +

    Unit: \([m]\).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1GripperState__coll__graph.map b/0.13.6/structfranka_1_1GripperState__coll__graph.map new file mode 100644 index 00000000..9cd39f67 --- /dev/null +++ b/0.13.6/structfranka_1_1GripperState__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/structfranka_1_1GripperState__coll__graph.md5 b/0.13.6/structfranka_1_1GripperState__coll__graph.md5 new file mode 100644 index 00000000..efc0d3cf --- /dev/null +++ b/0.13.6/structfranka_1_1GripperState__coll__graph.md5 @@ -0,0 +1 @@ +44936ba81b40a2d95800ad5ee62e8de6 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1GripperState__coll__graph.png b/0.13.6/structfranka_1_1GripperState__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..afc6689e10592b569a1b4a1b61acfda904d1c414 GIT binary patch literal 4233 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 Nt=oEP + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::IncompatibleVersionException Member List
    +
    +
    + +

    This is the complete list of members for franka::IncompatibleVersionException, including all inherited members.

    + + + + +
    IncompatibleVersionException(uint16_t server_version, uint16_t library_version) noexceptfranka::IncompatibleVersionException
    library_versionfranka::IncompatibleVersionException
    server_versionfranka::IncompatibleVersionException
    + + + + diff --git a/0.13.6/structfranka_1_1IncompatibleVersionException.html b/0.13.6/structfranka_1_1IncompatibleVersionException.html new file mode 100644 index 00000000..9d0561d2 --- /dev/null +++ b/0.13.6/structfranka_1_1IncompatibleVersionException.html @@ -0,0 +1,186 @@ + + + + + + + +libfranka: franka::IncompatibleVersionException Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::IncompatibleVersionException Struct Reference
    +
    +
    + +

    IncompatibleVersionException is thrown if the robot does not support this version of libfranka. + More...

    + +

    #include <exception.h>

    +
    +Inheritance diagram for franka::IncompatibleVersionException:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::IncompatibleVersionException:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + +

    +Public Member Functions

     IncompatibleVersionException (uint16_t server_version, uint16_t library_version) noexcept
     Creates the exception using the two different protocol versions. More...
     
    + + + + + + + +

    +Public Attributes

    +const uint16_t server_version
     Control's protocol version.
     
    +const uint16_t library_version
     libfranka protocol version.
     
    +

    Detailed Description

    +

    IncompatibleVersionException is thrown if the robot does not support this version of libfranka.

    +

    Constructor & Destructor Documentation

    + +

    ◆ IncompatibleVersionException()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    franka::IncompatibleVersionException::IncompatibleVersionException (uint16_t server_version,
    uint16_t library_version 
    )
    +
    +noexcept
    +
    + +

    Creates the exception using the two different protocol versions.

    +
    Parameters
    + + + +
    [in]server_versionProtocol version on the Control side.
    [in]library_versionProtocol version of libfranka.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.map b/0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.map new file mode 100644 index 00000000..2461bd9d --- /dev/null +++ b/0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.md5 b/0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.md5 new file mode 100644 index 00000000..e2854f08 --- /dev/null +++ b/0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.md5 @@ -0,0 +1 @@ +d8405e8f399f826091a2d7b535b2ec56 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.png b/0.13.6/structfranka_1_1IncompatibleVersionException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2932e20b524d86359f9c030f3b750508f5d17734 GIT binary patch literal 7209 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 UdD$Zjp8Y`{s_Cf0m94}73ji3at^fc4 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.map b/0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.map new file mode 100644 index 00000000..2461bd9d --- /dev/null +++ b/0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.md5 b/0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.md5 new file mode 100644 index 00000000..e2854f08 --- /dev/null +++ b/0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.md5 @@ -0,0 +1 @@ +d8405e8f399f826091a2d7b535b2ec56 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.png b/0.13.6/structfranka_1_1IncompatibleVersionException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2932e20b524d86359f9c030f3b750508f5d17734 GIT binary patch literal 7209 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 UdD$Zjp8Y`{s_Cf0m94}73ji3at^fc4 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1InvalidOperationException.html b/0.13.6/structfranka_1_1InvalidOperationException.html new file mode 100644 index 00000000..3ffece1e --- /dev/null +++ b/0.13.6/structfranka_1_1InvalidOperationException.html @@ -0,0 +1,118 @@ + + + + + + + +libfranka: franka::InvalidOperationException Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::InvalidOperationException Struct Reference
    +
    +
    + +

    InvalidOperationException is thrown if an operation cannot be performed. + More...

    + +

    #include <exception.h>

    +
    +Inheritance diagram for franka::InvalidOperationException:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::InvalidOperationException:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    +

    Detailed Description

    +

    InvalidOperationException is thrown if an operation cannot be performed.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1InvalidOperationException__coll__graph.map b/0.13.6/structfranka_1_1InvalidOperationException__coll__graph.map new file mode 100644 index 00000000..e95ed993 --- /dev/null +++ b/0.13.6/structfranka_1_1InvalidOperationException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1InvalidOperationException__coll__graph.md5 b/0.13.6/structfranka_1_1InvalidOperationException__coll__graph.md5 new file mode 100644 index 00000000..498ce916 --- /dev/null +++ b/0.13.6/structfranka_1_1InvalidOperationException__coll__graph.md5 @@ -0,0 +1 @@ +378a4924d439a7e9d695dd50ea34922d \ No newline at end of file diff --git a/0.13.6/structfranka_1_1InvalidOperationException__coll__graph.png b/0.13.6/structfranka_1_1InvalidOperationException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8cac2e286e716ea01aed3ffc408591b90d4fb172 GIT binary patch literal 6477 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 + + + + diff --git a/0.13.6/structfranka_1_1InvalidOperationException__inherit__graph.md5 b/0.13.6/structfranka_1_1InvalidOperationException__inherit__graph.md5 new file mode 100644 index 00000000..498ce916 --- /dev/null +++ b/0.13.6/structfranka_1_1InvalidOperationException__inherit__graph.md5 @@ -0,0 +1 @@ +378a4924d439a7e9d695dd50ea34922d \ No newline at end of file diff --git a/0.13.6/structfranka_1_1InvalidOperationException__inherit__graph.png b/0.13.6/structfranka_1_1InvalidOperationException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8cac2e286e716ea01aed3ffc408591b90d4fb172 GIT binary patch literal 6477 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 + + + + + + +libfranka: franka::ModelException Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::ModelException Struct Reference
    +
    +
    + +

    ModelException is thrown if an error occurs when loading the model library. + More...

    + +

    #include <exception.h>

    +
    +Inheritance diagram for franka::ModelException:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::ModelException:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    +

    Detailed Description

    +

    ModelException is thrown if an error occurs when loading the model library.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1ModelException__coll__graph.map b/0.13.6/structfranka_1_1ModelException__coll__graph.map new file mode 100644 index 00000000..eefb28fa --- /dev/null +++ b/0.13.6/structfranka_1_1ModelException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1ModelException__coll__graph.md5 b/0.13.6/structfranka_1_1ModelException__coll__graph.md5 new file mode 100644 index 00000000..6d7532b4 --- /dev/null +++ b/0.13.6/structfranka_1_1ModelException__coll__graph.md5 @@ -0,0 +1 @@ +aef07e73e3e9ceee16637698387a0402 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1ModelException__coll__graph.png b/0.13.6/structfranka_1_1ModelException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0ffed1a52d16279b11ee8b7cdb2ade4de0d4e0f8 GIT binary patch literal 6511 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1ModelException__inherit__graph.map b/0.13.6/structfranka_1_1ModelException__inherit__graph.map new file mode 100644 index 00000000..eefb28fa --- /dev/null +++ b/0.13.6/structfranka_1_1ModelException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1ModelException__inherit__graph.md5 b/0.13.6/structfranka_1_1ModelException__inherit__graph.md5 new file mode 100644 index 00000000..6d7532b4 --- /dev/null +++ b/0.13.6/structfranka_1_1ModelException__inherit__graph.md5 @@ -0,0 +1 @@ +aef07e73e3e9ceee16637698387a0402 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1ModelException__inherit__graph.png b/0.13.6/structfranka_1_1ModelException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0ffed1a52d16279b11ee8b7cdb2ade4de0d4e0f8 GIT binary patch literal 6511 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1NetworkException.html b/0.13.6/structfranka_1_1NetworkException.html new file mode 100644 index 00000000..5a467804 --- /dev/null +++ b/0.13.6/structfranka_1_1NetworkException.html @@ -0,0 +1,118 @@ + + + + + + + +libfranka: franka::NetworkException Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::NetworkException Struct Reference
    +
    +
    + +

    NetworkException is thrown if a connection to the robot cannot be established, or when a timeout occurs. + More...

    + +

    #include <exception.h>

    +
    +Inheritance diagram for franka::NetworkException:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::NetworkException:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    +

    Detailed Description

    +

    NetworkException is thrown if a connection to the robot cannot be established, or when a timeout occurs.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1NetworkException__coll__graph.map b/0.13.6/structfranka_1_1NetworkException__coll__graph.map new file mode 100644 index 00000000..1d2a3fb1 --- /dev/null +++ b/0.13.6/structfranka_1_1NetworkException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1NetworkException__coll__graph.md5 b/0.13.6/structfranka_1_1NetworkException__coll__graph.md5 new file mode 100644 index 00000000..075dd123 --- /dev/null +++ b/0.13.6/structfranka_1_1NetworkException__coll__graph.md5 @@ -0,0 +1 @@ +d8561e044d91fa5f3077a8f6d620401b \ No newline at end of file diff --git a/0.13.6/structfranka_1_1NetworkException__coll__graph.png b/0.13.6/structfranka_1_1NetworkException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a96102f433d63ed8518e8e982a1de2d5de3d4402 GIT binary patch literal 6621 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1NetworkException__inherit__graph.map b/0.13.6/structfranka_1_1NetworkException__inherit__graph.map new file mode 100644 index 00000000..1d2a3fb1 --- /dev/null +++ b/0.13.6/structfranka_1_1NetworkException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1NetworkException__inherit__graph.md5 b/0.13.6/structfranka_1_1NetworkException__inherit__graph.md5 new file mode 100644 index 00000000..075dd123 --- /dev/null +++ b/0.13.6/structfranka_1_1NetworkException__inherit__graph.md5 @@ -0,0 +1 @@ +d8561e044d91fa5f3077a8f6d620401b \ No newline at end of file diff --git a/0.13.6/structfranka_1_1NetworkException__inherit__graph.png b/0.13.6/structfranka_1_1NetworkException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a96102f433d63ed8518e8e982a1de2d5de3d4402 GIT binary patch literal 6621 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1ProtocolException.html b/0.13.6/structfranka_1_1ProtocolException.html new file mode 100644 index 00000000..4e59b5ab --- /dev/null +++ b/0.13.6/structfranka_1_1ProtocolException.html @@ -0,0 +1,118 @@ + + + + + + + +libfranka: franka::ProtocolException Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::ProtocolException Struct Reference
    +
    +
    + +

    ProtocolException is thrown if the robot returns an incorrect message. + More...

    + +

    #include <exception.h>

    +
    +Inheritance diagram for franka::ProtocolException:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::ProtocolException:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    +

    Detailed Description

    +

    ProtocolException is thrown if the robot returns an incorrect message.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1ProtocolException__coll__graph.map b/0.13.6/structfranka_1_1ProtocolException__coll__graph.map new file mode 100644 index 00000000..a05191a0 --- /dev/null +++ b/0.13.6/structfranka_1_1ProtocolException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1ProtocolException__coll__graph.md5 b/0.13.6/structfranka_1_1ProtocolException__coll__graph.md5 new file mode 100644 index 00000000..f7972396 --- /dev/null +++ b/0.13.6/structfranka_1_1ProtocolException__coll__graph.md5 @@ -0,0 +1 @@ +f4dff3c8ff5693e8c7a038439d383191 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1ProtocolException__coll__graph.png b/0.13.6/structfranka_1_1ProtocolException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9200c81b7f015fa48ab0ae4cefb6bbe0be9fbd GIT binary patch literal 6380 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1ProtocolException__inherit__graph.map b/0.13.6/structfranka_1_1ProtocolException__inherit__graph.map new file mode 100644 index 00000000..a05191a0 --- /dev/null +++ b/0.13.6/structfranka_1_1ProtocolException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1ProtocolException__inherit__graph.md5 b/0.13.6/structfranka_1_1ProtocolException__inherit__graph.md5 new file mode 100644 index 00000000..f7972396 --- /dev/null +++ b/0.13.6/structfranka_1_1ProtocolException__inherit__graph.md5 @@ -0,0 +1 @@ +f4dff3c8ff5693e8c7a038439d383191 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1ProtocolException__inherit__graph.png b/0.13.6/structfranka_1_1ProtocolException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9200c81b7f015fa48ab0ae4cefb6bbe0be9fbd GIT binary patch literal 6380 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1RealtimeException.html b/0.13.6/structfranka_1_1RealtimeException.html new file mode 100644 index 00000000..32f8b0df --- /dev/null +++ b/0.13.6/structfranka_1_1RealtimeException.html @@ -0,0 +1,118 @@ + + + + + + + +libfranka: franka::RealtimeException Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::RealtimeException Struct Reference
    +
    +
    + +

    RealtimeException is thrown if realtime priority cannot be set. + More...

    + +

    #include <exception.h>

    +
    +Inheritance diagram for franka::RealtimeException:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for franka::RealtimeException:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    +

    Detailed Description

    +

    RealtimeException is thrown if realtime priority cannot be set.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1RealtimeException__coll__graph.map b/0.13.6/structfranka_1_1RealtimeException__coll__graph.map new file mode 100644 index 00000000..570fa5e2 --- /dev/null +++ b/0.13.6/structfranka_1_1RealtimeException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1RealtimeException__coll__graph.md5 b/0.13.6/structfranka_1_1RealtimeException__coll__graph.md5 new file mode 100644 index 00000000..47b203b1 --- /dev/null +++ b/0.13.6/structfranka_1_1RealtimeException__coll__graph.md5 @@ -0,0 +1 @@ +c25253c62c5844c462e123c0cc70a84a \ No newline at end of file diff --git a/0.13.6/structfranka_1_1RealtimeException__coll__graph.png b/0.13.6/structfranka_1_1RealtimeException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..26a4e6643588055584645770e50818664a64a650 GIT binary patch literal 6578 zcmc(kWmJ@JyY_FwK@bUPL@5aYX_0g&Nku@qOX=?JZk6r^X%L3)6k$L?kVaBEC53&> zexAMee}C8?-}NrmFl!Cm_kG2A9p~>jCR|ZL`YsM74g^7WWo0Cl!TT_HHQ$DT-+ld* zb>IzVBrh!q-JpK5TZ=wG5QV9%q?n3Z`p%rY3bFb$Y`>_9c7VmgOq5hJN?V73pRljE z<58Z0d_bpClys2EM#GM- z8Kj$@JH71A5wCT5tP$MS?syT@r0Tp?p5{|rP#SL>#YG@~%t+J>i8tNHxl4<#WOkb{ zOk5&N6lO%GsH+>@)g@j%L^Br@9DIw4ib}Fv?3jMII}~3@O^wloBL9AIMTL~JbKTV2 zFyDOh!hAf{8+3kCf%%Y5hjH^Trtt1WV)~z3N&QB)wJMF1<=bD*Z9_Qcp zcq~D$s;8$H78yy@jQh=>jGZ?#Gjj@In>F>;skly%hnt&#l9EM1OwyJ^$L#iRi#cvy zaPP&Y;0n{WV+|)ADWJ&FC{%@VL|V=FD@%vnbfR( zclYY*%D~Xj-yZ|(SDI~`Ibvk3$P{&PlhfnAC<+W79v)l@ZcH+EosJ*n+J?5av6&*C zM!U0(qZV~nf={154GRksZTInyxraWqRy z%dhDIM60W-JAb~HbH*nmCf0oZ%-fpOZodrU;pH_kMP|M|IXT(BIzM9L=6;{Gx3tvx zXLqi&b|jh0c*=9HwO>wNUQI*W5LU#CyelGUtdT; zQ4vp_)-bv8*O8H!g2KYXA!1TeZm29bH$cCCY%E^4!Onl;$B&wg4YNW;=47=}>)H{e zJgMrrX4fsN$-%*J-4?fa5x0H6;Y^XVl(e*3_{}+T`}*%C8xvFL @Z{QO5g8QIx1 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 KvO?S-;6DJi?s_u- literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1RealtimeException__inherit__graph.map b/0.13.6/structfranka_1_1RealtimeException__inherit__graph.map new file mode 100644 index 00000000..570fa5e2 --- /dev/null +++ b/0.13.6/structfranka_1_1RealtimeException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1RealtimeException__inherit__graph.md5 b/0.13.6/structfranka_1_1RealtimeException__inherit__graph.md5 new file mode 100644 index 00000000..47b203b1 --- /dev/null +++ b/0.13.6/structfranka_1_1RealtimeException__inherit__graph.md5 @@ -0,0 +1 @@ +c25253c62c5844c462e123c0cc70a84a \ No newline at end of file diff --git a/0.13.6/structfranka_1_1RealtimeException__inherit__graph.png b/0.13.6/structfranka_1_1RealtimeException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..26a4e6643588055584645770e50818664a64a650 GIT binary patch literal 6578 zcmc(kWmJ@JyY_FwK@bUPL@5aYX_0g&Nku@qOX=?JZk6r^X%L3)6k$L?kVaBEC53&> zexAMee}C8?-}NrmFl!Cm_kG2A9p~>jCR|ZL`YsM74g^7WWo0Cl!TT_HHQ$DT-+ld* zb>IzVBrh!q-JpK5TZ=wG5QV9%q?n3Z`p%rY3bFb$Y`>_9c7VmgOq5hJN?V73pRljE z<58Z0d_bpClys2EM#GM- z8Kj$@JH71A5wCT5tP$MS?syT@r0Tp?p5{|rP#SL>#YG@~%t+J>i8tNHxl4<#WOkb{ zOk5&N6lO%GsH+>@)g@j%L^Br@9DIw4ib}Fv?3jMII}~3@O^wloBL9AIMTL~JbKTV2 zFyDOh!hAf{8+3kCf%%Y5hjH^Trtt1WV)~z3N&QB)wJMF1<=bD*Z9_Qcp zcq~D$s;8$H78yy@jQh=>jGZ?#Gjj@In>F>;skly%hnt&#l9EM1OwyJ^$L#iRi#cvy zaPP&Y;0n{WV+|)ADWJ&FC{%@VL|V=FD@%vnbfR( zclYY*%D~Xj-yZ|(SDI~`Ibvk3$P{&PlhfnAC<+W79v)l@ZcH+EosJ*n+J?5av6&*C zM!U0(qZV~nf={154GRksZTInyxraWqRy z%dhDIM60W-JAb~HbH*nmCf0oZ%-fpOZodrU;pH_kMP|M|IXT(BIzM9L=6;{Gx3tvx zXLqi&b|jh0c*=9HwO>wNUQI*W5LU#CyelGUtdT; zQ4vp_)-bv8*O8H!g2KYXA!1TeZm29bH$cCCY%E^4!Onl;$B&wg4YNW;=47=}>)H{e zJgMrrX4fsN$-%*J-4?fa5x0H6;Y^XVl(e*3_{}+T`}*%C8xvFL @Z{QO5g8QIx1 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 KvO?S-;6DJi?s_u- literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1Record-members.html b/0.13.6/structfranka_1_1Record-members.html new file mode 100644 index 00000000..48250fd4 --- /dev/null +++ b/0.13.6/structfranka_1_1Record-members.html @@ -0,0 +1,93 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::Record Member List
    +
    +
    + +

    This is the complete list of members for franka::Record, including all inherited members.

    + + + +
    commandfranka::Record
    statefranka::Record
    + + + + diff --git a/0.13.6/structfranka_1_1Record.html b/0.13.6/structfranka_1_1Record.html new file mode 100644 index 00000000..c424b129 --- /dev/null +++ b/0.13.6/structfranka_1_1Record.html @@ -0,0 +1,132 @@ + + + + + + + +libfranka: franka::Record Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::Record Struct Reference
    +
    +
    + +

    One row of the log contains a robot command of timestamp n and a corresponding robot state of timestamp n+1. + More...

    + +

    #include <log.h>

    +
    +Collaboration diagram for franka::Record:
    +
    +
    Collaboration graph
    + + + + + + + + + + + + + +
    [legend]
    + + + + + + + + +

    +Public Attributes

    +RobotState state
     Robot state of timestamp n+1.
     
    +RobotCommand command
     Robot command of timestamp n, after rate limiting (if activated).
     
    +

    Detailed Description

    +

    One row of the log contains a robot command of timestamp n and a corresponding robot state of timestamp n+1.

    +

    Provided by the ControlException.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1Record__coll__graph.map b/0.13.6/structfranka_1_1Record__coll__graph.map new file mode 100644 index 00000000..347dfd9a --- /dev/null +++ b/0.13.6/structfranka_1_1Record__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/0.13.6/structfranka_1_1Record__coll__graph.md5 b/0.13.6/structfranka_1_1Record__coll__graph.md5 new file mode 100644 index 00000000..1cc4d372 --- /dev/null +++ b/0.13.6/structfranka_1_1Record__coll__graph.md5 @@ -0,0 +1 @@ +8ba0cd54bd97ddfaaafb627adcb3ed04 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1Record__coll__graph.png b/0.13.6/structfranka_1_1Record__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ed91de2a7cffc0c7777a5f1604bff71068766e77 GIT binary patch literal 47102 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 Lpk|(ix&QwFsyJ`Y literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1RobotCommand-members.html b/0.13.6/structfranka_1_1RobotCommand-members.html new file mode 100644 index 00000000..95bfb8bf --- /dev/null +++ b/0.13.6/structfranka_1_1RobotCommand-members.html @@ -0,0 +1,96 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::RobotCommand Member List
    +
    + + + + + diff --git a/0.13.6/structfranka_1_1RobotCommand.html b/0.13.6/structfranka_1_1RobotCommand.html new file mode 100644 index 00000000..9c79fd57 --- /dev/null +++ b/0.13.6/structfranka_1_1RobotCommand.html @@ -0,0 +1,140 @@ + + + + + + + +libfranka: franka::RobotCommand Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::RobotCommand Struct Reference
    +
    +
    + +

    Command sent to the robot. + More...

    + +

    #include <log.h>

    +
    +Collaboration diagram for franka::RobotCommand:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +JointPositions joint_positions {0, 0, 0, 0, 0, 0, 0}
     \(q_d\) sent to the robot.
     
    +JointVelocities joint_velocities {0, 0, 0, 0, 0, 0, 0}
     \(\dot{q}_d\) sent to the robot.
     
    +CartesianPose cartesian_pose {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}
     \(^O{\mathbf{T}_{EE}}_{d}\) sent to the robot.
     
    +CartesianVelocities cartesian_velocities {0, 0, 0, 0, 0, 0}
     \(^O\dot{P}_{EE}\) sent to the robot.
     
    +Torques torques {0, 0, 0, 0, 0, 0, 0}
     \({\tau_J}_d\) sent to the robot.
     
    +

    Detailed Description

    +

    Command sent to the robot.

    +

    Structure used only for logging purposes.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1RobotCommand__coll__graph.map b/0.13.6/structfranka_1_1RobotCommand__coll__graph.map new file mode 100644 index 00000000..619a4dd1 --- /dev/null +++ b/0.13.6/structfranka_1_1RobotCommand__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/0.13.6/structfranka_1_1RobotCommand__coll__graph.md5 b/0.13.6/structfranka_1_1RobotCommand__coll__graph.md5 new file mode 100644 index 00000000..dd237dcb --- /dev/null +++ b/0.13.6/structfranka_1_1RobotCommand__coll__graph.md5 @@ -0,0 +1 @@ +741793d1fa663b96ac22d465c4c7e858 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1RobotCommand__coll__graph.png b/0.13.6/structfranka_1_1RobotCommand__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bd078d0f0b5d9b0e0e63d87a7a500397c1cfaa0c GIT binary patch literal 26922 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 literal 0 HcmV?d00001 diff --git a/0.13.6/structfranka_1_1RobotState-members.html b/0.13.6/structfranka_1_1RobotState-members.html new file mode 100644 index 00000000..13731d76 --- /dev/null +++ b/0.13.6/structfranka_1_1RobotState-members.html @@ -0,0 +1,138 @@ + + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::RobotState Member List
    +
    + + + + + diff --git a/0.13.6/structfranka_1_1RobotState.html b/0.13.6/structfranka_1_1RobotState.html new file mode 100644 index 00000000..686b1fb1 --- /dev/null +++ b/0.13.6/structfranka_1_1RobotState.html @@ -0,0 +1,942 @@ + + + + + + + +libfranka: franka::RobotState Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::RobotState Struct Reference
    +
    +
    + +

    Describes the robot state. + More...

    + +

    #include <robot_state.h>

    +
    +Collaboration diagram for franka::RobotState:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    std::array< double, 16 > O_T_EE {}
     \(^{O}T_{EE}\) Measured end effector pose in base frame. More...
     
    std::array< double, 16 > O_T_EE_d {}
     \({^OT_{EE}}_{d}\) Last desired end effector pose of motion generation in base frame. More...
     
    std::array< double, 16 > F_T_EE {}
     \(^{F}T_{EE}\) End effector frame pose in flange frame. More...
     
    std::array< double, 16 > F_T_NE {}
     \(^{F}T_{NE}\) Nominal end effector frame pose in flange frame. More...
     
    std::array< double, 16 > NE_T_EE {}
     \(^{NE}T_{EE}\) End effector frame pose in nominal end effector frame. More...
     
    std::array< double, 16 > EE_T_K {}
     \(^{EE}T_{K}\) Stiffness frame pose in end effector frame. More...
     
    +double m_ee {}
     \(m_{EE}\) Configured mass of the end effector.
     
    +std::array< double, 9 > I_ee {}
     \(I_{EE}\) Configured rotational inertia matrix of the end effector load with respect to center of mass.
     
    +std::array< double, 3 > F_x_Cee {}
     \(^{F}x_{C_{EE}}\) Configured center of mass of the end effector load with respect to flange frame.
     
    +double m_load {}
     \(m_{load}\) Configured mass of the external load.
     
    +std::array< double, 9 > I_load {}
     \(I_{load}\) Configured rotational inertia matrix of the external load with respect to center of mass.
     
    +std::array< double, 3 > F_x_Cload {}
     \(^{F}x_{C_{load}}\) Configured center of mass of the external load with respect to flange frame.
     
    +double m_total {}
     \(m_{total}\) Sum of the mass of the end effector and the external load.
     
    +std::array< double, 9 > I_total {}
     \(I_{total}\) Combined rotational inertia matrix of the end effector load and the external load with respect to the center of mass.
     
    +std::array< double, 3 > F_x_Ctotal {}
     \(^{F}x_{C_{total}}\) Combined center of mass of the end effector load and the external load with respect to flange frame.
     
    std::array< double, 2 > elbow {}
     Elbow configuration. More...
     
    std::array< double, 2 > elbow_d {}
     Desired elbow configuration. More...
     
    std::array< double, 2 > elbow_c {}
     Commanded elbow configuration. More...
     
    std::array< double, 2 > delbow_c {}
     Commanded elbow velocity. More...
     
    std::array< double, 2 > ddelbow_c {}
     Commanded elbow acceleration. More...
     
    std::array< double, 7 > tau_J {}
     \(\tau_{J}\) Measured link-side joint torque sensor signals. More...
     
    std::array< double, 7 > tau_J_d {}
     \({\tau_J}_d\) Desired link-side joint torque sensor signals without gravity. More...
     
    std::array< double, 7 > dtau_J {}
     \(\dot{\tau_{J}}\) Derivative of measured link-side joint torque sensor signals. More...
     
    std::array< double, 7 > q {}
     \(q\) Measured joint position. More...
     
    std::array< double, 7 > q_d {}
     \(q_d\) Desired joint position. More...
     
    std::array< double, 7 > dq {}
     \(\dot{q}\) Measured joint velocity. More...
     
    std::array< double, 7 > dq_d {}
     \(\dot{q}_d\) Desired joint velocity. More...
     
    std::array< double, 7 > ddq_d {}
     \(\ddot{q}_d\) Desired joint acceleration. More...
     
    std::array< double, 7 > joint_contact {}
     Indicates which contact level is activated in which joint. More...
     
    std::array< double, 6 > cartesian_contact {}
     Indicates which contact level is activated in which Cartesian dimension \((x,y,z,R,P,Y)\). More...
     
    std::array< double, 7 > joint_collision {}
     Indicates which contact level is activated in which joint. More...
     
    std::array< double, 6 > cartesian_collision {}
     Indicates which contact level is activated in which Cartesian dimension \((x,y,z,R,P,Y)\). More...
     
    std::array< double, 7 > tau_ext_hat_filtered {}
     \(\hat{\tau}_{\text{ext}}\) Low-pass filtered torques generated by external forces on the joints. More...
     
    std::array< double, 6 > O_F_ext_hat_K {}
     \(^OF_{K,\text{ext}}\) Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the base frame. More...
     
    std::array< double, 6 > K_F_ext_hat_K {}
     \(^{K}F_{K,\text{ext}}\) Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the stiffness frame. More...
     
    std::array< double, 6 > O_dP_EE_d {}
     \({^OdP_{EE}}_{d}\) Desired end effector twist in base frame. More...
     
    std::array< double, 3 > O_ddP_O {}
     \({^OddP}_O\) Linear component of the acceleration of the robot's base, expressed in frame parallel to the base frame, i.e. More...
     
    std::array< double, 16 > O_T_EE_c {}
     \({^OT_{EE}}_{c}\) Last commanded end effector pose of motion generation in base frame. More...
     
    std::array< double, 6 > O_dP_EE_c {}
     \({^OdP_{EE}}_{c}\) Last commanded end effector twist in base frame. More...
     
    std::array< double, 6 > O_ddP_EE_c {}
     \({^OddP_{EE}}_{c}\) Last commanded end effector acceleration in base frame. More...
     
    std::array< double, 7 > theta {}
     \(\theta\) Motor position. More...
     
    std::array< double, 7 > dtheta {}
     \(\dot{\theta}\) Motor velocity. More...
     
    +Errors current_errors {}
     Current error state.
     
    +Errors last_motion_errors {}
     Contains the errors that aborted the previous motion.
     
    double control_command_success_rate {}
     Percentage of the last 100 control commands that were successfully received by the robot. More...
     
    +RobotMode robot_mode = RobotMode::kUserStopped
     Current robot mode.
     
    Duration time {}
     Strictly monotonically increasing timestamp since robot start. More...
     
    +

    Detailed Description

    +

    Member Data Documentation

    + +

    ◆ cartesian_collision

    + +
    +
    + + + + +
    std::array<double, 6> franka::RobotState::cartesian_collision {}
    +
    + +

    Indicates which contact level is activated in which Cartesian dimension \((x,y,z,R,P,Y)\).

    +

    After contact disappears, the value stays the same until a reset command is sent.

    +
    See also
    Robot::setCollisionBehavior for setting sensitivity values.
    +
    +Robot::automaticErrorRecovery for performing a reset after a collision.
    + +
    +
    + +

    ◆ cartesian_contact

    + +
    +
    + + + + +
    std::array<double, 6> franka::RobotState::cartesian_contact {}
    +
    + +

    Indicates which contact level is activated in which Cartesian dimension \((x,y,z,R,P,Y)\).

    +

    After contact disappears, the value turns to zero.

    +
    See also
    Robot::setCollisionBehavior for setting sensitivity values.
    + +
    +
    + +

    ◆ control_command_success_rate

    + +
    +
    + + + + +
    double franka::RobotState::control_command_success_rate {}
    +
    + +

    Percentage of the last 100 control commands that were successfully received by the robot.

    +

    Shows a value of zero if no control or motion generator loop is currently running.

    +

    Range: \([0, 1]\).

    +
    Examples
    communication_test.cpp.
    +
    + +
    +
    + +

    ◆ ddelbow_c

    + +
    +
    + + + + +
    std::array<double, 2> franka::RobotState::ddelbow_c {}
    +
    + +

    Commanded elbow acceleration.

    +

    The values of the array are:

      +
    • ddelbow_c[0] Acceleration of the 3rd joint in \(\frac{rad}{s^2}\)
    • +
    • ddelbow_c[1] is always 0.
    • +
    + +
    +
    + +

    ◆ ddq_d

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::ddq_d {}
    +
    + +

    \(\ddot{q}_d\) Desired joint acceleration.

    +

    Unit: \([\frac{rad}{s^2}]\)

    + +
    +
    + +

    ◆ delbow_c

    + +
    +
    + + + + +
    std::array<double, 2> franka::RobotState::delbow_c {}
    +
    + +

    Commanded elbow velocity.

    +

    The values of the array are:

      +
    • delbow_c[0] Velocity of the 3rd joint in \(\frac{rad}{s}\)
    • +
    • delbow_c[1] is always 0.
    • +
    + +
    +
    + +

    ◆ dq

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::dq {}
    +
    + +

    \(\dot{q}\) Measured joint velocity.

    +

    Unit: \([\frac{rad}{s}]\)

    +
    Examples
    cartesian_impedance_control.cpp, motion_with_control.cpp, and motion_with_control_external_control_loop.cpp.
    +
    + +
    +
    + +

    ◆ dq_d

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::dq_d {}
    +
    + +

    \(\dot{q}_d\) Desired joint velocity.

    +

    Unit: \([\frac{rad}{s}]\)

    + +
    +
    + +

    ◆ dtau_J

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::dtau_J {}
    +
    + +

    \(\dot{\tau_{J}}\) Derivative of measured link-side joint torque sensor signals.

    +

    Unit: \([\frac{Nm}{s}]\)

    + +
    +
    + +

    ◆ dtheta

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::dtheta {}
    +
    + +

    \(\dot{\theta}\) Motor velocity.

    +

    Unit: \([\frac{rad}{s}]\)

    + +
    +
    + +

    ◆ EE_T_K

    + +
    +
    + + + + +
    std::array<double, 16> franka::RobotState::EE_T_K {}
    +
    + +

    \(^{EE}T_{K}\) Stiffness frame pose in end effector frame.

    +

    Pose is represented as a 4x4 matrix in column-major format.

    +

    See also K frame.

    + +
    +
    + +

    ◆ elbow

    + +
    +
    + + + + +
    std::array<double, 2> franka::RobotState::elbow {}
    +
    + +

    Elbow configuration.

    +

    The values of the array are:

      +
    • elbow[0]: Position of the 3rd joint in \([rad]\).
    • +
    • elbow[1]: Flip direction of the elbow (4th joint):
        +
      • +1 if \(q_4 > q_{elbow-flip}\)
      • +
      • 0 if \(q_4 == q_{elbow-flip} \)
      • +
      • -1 if \(q_4 < q_{elbow-flip} \)
      • +
      +
    • +
    +

    with \(q_{elbow-flip}\) as specified in the robot interface specification page in the FCI Documentation.

    + +
    +
    + +

    ◆ elbow_c

    + +
    +
    + + + + +
    std::array<double, 2> franka::RobotState::elbow_c {}
    +
    + +

    Commanded elbow configuration.

    +

    The values of the array are:

      +
    • elbow_c[0]: Position of the 3rd joint in \([rad]\).
    • +
    • elbow_c[1]: Flip direction of the elbow (4th joint):
        +
      • +1 if \(q_4 > q_{elbow-flip}\)
      • +
      • 0 if \(q_4 == q_{elbow-flip} \)
      • +
      • -1 if \(q_4 < q_{elbow-flip} \)
      • +
      +
    • +
    +

    with \(q_{elbow-flip}\) as specified in the robot interface specification page in the FCI Documentation.

    +
    Examples
    generate_elbow_motion.cpp.
    +
    + +
    +
    + +

    ◆ elbow_d

    + +
    +
    + + + + +
    std::array<double, 2> franka::RobotState::elbow_d {}
    +
    + +

    Desired elbow configuration.

    +

    The values of the array are:

      +
    • elbow_d[0]: Position of the 3rd joint in \([rad]\).
    • +
    • elbow_d[1]: Flip direction of the elbow (4th joint):
        +
      • +1 if \(q_4 > q_{elbow-flip}\)
      • +
      • 0 if \(q_4 == q_{elbow-flip} \)
      • +
      • -1 if \(q_4 < q_{elbow-flip} \)
      • +
      +
    • +
    +

    with \(q_{elbow-flip}\) as specified in the robot interface specification page in the FCI Documentation.

    + +
    +
    + +

    ◆ F_T_EE

    + +
    +
    + + + + +
    std::array<double, 16> franka::RobotState::F_T_EE {}
    +
    + +

    \(^{F}T_{EE}\) End effector frame pose in flange frame.

    +

    Pose is represented as a 4x4 matrix in column-major format.

    +
    See also
    F_T_NE
    +
    +NE_T_EE
    +
    +Robot for an explanation of the F, NE and EE frames.
    + +
    +
    + +

    ◆ F_T_NE

    + +
    +
    + + + + +
    std::array<double, 16> franka::RobotState::F_T_NE {}
    +
    + +

    \(^{F}T_{NE}\) Nominal end effector frame pose in flange frame.

    +

    Pose is represented as a 4x4 matrix in column-major format.

    +
    See also
    F_T_EE
    +
    +NE_T_EE
    +
    +Robot for an explanation of the F, NE and EE frames.
    + +
    +
    + +

    ◆ joint_collision

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::joint_collision {}
    +
    + +

    Indicates which contact level is activated in which joint.

    +

    After contact disappears, the value stays the same until a reset command is sent.

    +
    See also
    Robot::setCollisionBehavior for setting sensitivity values.
    +
    +Robot::automaticErrorRecovery for performing a reset after a collision.
    + +
    +
    + +

    ◆ joint_contact

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::joint_contact {}
    +
    + +

    Indicates which contact level is activated in which joint.

    +

    After contact disappears, value turns to zero.

    +
    See also
    Robot::setCollisionBehavior for setting sensitivity values.
    + +
    +
    + +

    ◆ K_F_ext_hat_K

    + +
    +
    + + + + +
    std::array<double, 6> franka::RobotState::K_F_ext_hat_K {}
    +
    + +

    \(^{K}F_{K,\text{ext}}\) Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the stiffness frame.

    +

    Forces applied by the robot to the environment are positive, while forces applied by the environment on the robot are negative. Becomes \([0,0,0,0,0,0]\) when near or in a singularity. See also Stiffness frame K. Unit: \([N,N,N,Nm,Nm,Nm]\).

    + +
    +
    + +

    ◆ NE_T_EE

    + +
    +
    + + + + +
    std::array<double, 16> franka::RobotState::NE_T_EE {}
    +
    + +

    \(^{NE}T_{EE}\) End effector frame pose in nominal end effector frame.

    +

    Pose is represented as a 4x4 matrix in column-major format.

    +
    See also
    Robot::setEE to change this frame.
    +
    +F_T_EE
    +
    +F_T_NE
    +
    +Robot for an explanation of the F, NE and EE frames.
    + +
    +
    + +

    ◆ O_ddP_EE_c

    + +
    +
    + + + + +
    std::array<double, 6> franka::RobotState::O_ddP_EE_c {}
    +
    + +

    \({^OddP_{EE}}_{c}\) Last commanded end effector acceleration in base frame.

    +

    Unit: \([\frac{m}{s^2},\frac{m}{s^2},\frac{m}{s^2},\frac{rad}{s^2},\frac{rad}{s^2},\frac{rad}{s^2}]\).

    + +
    +
    + +

    ◆ O_ddP_O

    + +
    +
    + + + + +
    std::array<double, 3> franka::RobotState::O_ddP_O {}
    +
    + +

    \({^OddP}_O\) Linear component of the acceleration of the robot's base, expressed in frame parallel to the base frame, i.e.

    +

    the base's translational acceleration. If the base is resting this shows the direction of the gravity vector. It is harcoded for now to {0, 0, -9.81}.

    + +
    +
    + +

    ◆ O_dP_EE_c

    + +
    +
    + + + + +
    std::array<double, 6> franka::RobotState::O_dP_EE_c {}
    +
    + +

    \({^OdP_{EE}}_{c}\) Last commanded end effector twist in base frame.

    +

    Unit: \([\frac{m}{s},\frac{m}{s},\frac{m}{s},\frac{rad}{s},\frac{rad}{s},\frac{rad}{s}]\).

    + +
    +
    + +

    ◆ O_dP_EE_d

    + +
    +
    + + + + +
    std::array<double, 6> franka::RobotState::O_dP_EE_d {}
    +
    + +

    \({^OdP_{EE}}_{d}\) Desired end effector twist in base frame.

    +

    Unit: \([\frac{m}{s},\frac{m}{s},\frac{m}{s},\frac{rad}{s},\frac{rad}{s},\frac{rad}{s}]\).

    + +
    +
    + +

    ◆ O_F_ext_hat_K

    + +
    +
    + + + + +
    std::array<double, 6> franka::RobotState::O_F_ext_hat_K {}
    +
    + +

    \(^OF_{K,\text{ext}}\) Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the base frame.

    +

    Forces applied by the robot to the environment are positive, while forces applied by the environment on the robot are negative. Becomes \([0,0,0,0,0,0]\) when near or in a singularity. See also Stiffness frame K. Unit: \([N,N,N,Nm,Nm,Nm]\).

    + +
    +
    + +

    ◆ O_T_EE

    + +
    +
    + + + + +
    std::array<double, 16> franka::RobotState::O_T_EE {}
    +
    + +

    \(^{O}T_{EE}\) Measured end effector pose in base frame.

    +

    Pose is represented as a 4x4 matrix in column-major format.

    +
    Examples
    cartesian_impedance_control.cpp.
    +
    + +
    +
    + +

    ◆ O_T_EE_c

    + +
    +
    + + + + +
    std::array<double, 16> franka::RobotState::O_T_EE_c {}
    +
    + +

    \({^OT_{EE}}_{c}\) Last commanded end effector pose of motion generation in base frame.

    +

    Pose is represented as a 4x4 matrix in column-major format.

    +
    Examples
    generate_cartesian_pose_motion.cpp, and generate_elbow_motion.cpp.
    +
    + +
    +
    + +

    ◆ O_T_EE_d

    + +
    +
    + + + + +
    std::array<double, 16> franka::RobotState::O_T_EE_d {}
    +
    + +

    \({^OT_{EE}}_{d}\) Last desired end effector pose of motion generation in base frame.

    +

    Pose is represented as a 4x4 matrix in column-major format.

    + +
    +
    + +

    ◆ q

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::q {}
    +
    + +

    \(q\) Measured joint position.

    +

    Unit: \([rad]\)

    +
    Examples
    cartesian_impedance_control.cpp, motion_with_control.cpp, and motion_with_control_external_control_loop.cpp.
    +
    + +
    +
    + +

    ◆ q_d

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::q_d {}
    +
    + +

    \(q_d\) Desired joint position.

    +

    Unit: \([rad]\)

    +
    Examples
    generate_joint_position_motion.cpp, motion_with_control.cpp, and motion_with_control_external_control_loop.cpp.
    +
    + +
    +
    + +

    ◆ tau_ext_hat_filtered

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::tau_ext_hat_filtered {}
    +
    + +

    \(\hat{\tau}_{\text{ext}}\) Low-pass filtered torques generated by external forces on the joints.

    +

    It does not include configured end-effector and load nor the mass and dynamics of the robot. tau_ext_hat_filtered is the error between tau_J and the expected torques given by the robot model. Unit: \([Nm]\).

    + +
    +
    + +

    ◆ tau_J

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::tau_J {}
    +
    + +

    \(\tau_{J}\) Measured link-side joint torque sensor signals.

    +

    Unit: \([Nm]\)

    +
    Examples
    force_control.cpp.
    +
    + +
    +
    + +

    ◆ tau_J_d

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::tau_J_d {}
    +
    + +

    \({\tau_J}_d\) Desired link-side joint torque sensor signals without gravity.

    +

    Unit: \([Nm]\)

    + +
    +
    + +

    ◆ theta

    + +
    +
    + + + + +
    std::array<double, 7> franka::RobotState::theta {}
    +
    + +

    \(\theta\) Motor position.

    +

    Unit: \([rad]\)

    + +
    +
    + +

    ◆ time

    + +
    +
    + + + + +
    Duration franka::RobotState::time {}
    +
    + +

    Strictly monotonically increasing timestamp since robot start.

    +

    Inside of control loops time_step parameter of Robot::control can be used instead.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1RobotState__coll__graph.map b/0.13.6/structfranka_1_1RobotState__coll__graph.map new file mode 100644 index 00000000..8f9d0c51 --- /dev/null +++ b/0.13.6/structfranka_1_1RobotState__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/0.13.6/structfranka_1_1RobotState__coll__graph.md5 b/0.13.6/structfranka_1_1RobotState__coll__graph.md5 new file mode 100644 index 00000000..974a4cf7 --- /dev/null +++ b/0.13.6/structfranka_1_1RobotState__coll__graph.md5 @@ -0,0 +1 @@ +559ffee771d54faefa00178ada80a094 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1RobotState__coll__graph.png b/0.13.6/structfranka_1_1RobotState__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3ef3547c687529983502c22ed476c93f068a24 GIT binary patch literal 7168 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 + + + + + + +libfranka: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    franka::VacuumGripperState Member List
    +
    + + + + + diff --git a/0.13.6/structfranka_1_1VacuumGripperState.html b/0.13.6/structfranka_1_1VacuumGripperState.html new file mode 100644 index 00000000..43de8d8f --- /dev/null +++ b/0.13.6/structfranka_1_1VacuumGripperState.html @@ -0,0 +1,194 @@ + + + + + + + +libfranka: franka::VacuumGripperState Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    franka::VacuumGripperState Struct Reference
    +
    +
    + +

    Describes the vacuum gripper state. + More...

    + +

    #include <vacuum_gripper_state.h>

    +
    +Collaboration diagram for franka::VacuumGripperState:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +bool in_control_range {}
     Vacuum value within in setpoint area.
     
    +bool part_detached {}
     The part has been detached after a suction cycle.
     
    bool part_present {}
     Vacuum is over H2 and not yet under H2-h2. More...
     
    +VacuumGripperDeviceStatus device_status {}
     Current vacuum gripper device status.
     
    uint16_t actual_power {}
     Current vacuum gripper actual power. More...
     
    uint16_t vacuum {}
     Current system vacuum. More...
     
    +Duration time {}
     Strictly monotonically increasing timestamp since robot start.
     
    +

    Detailed Description

    +

    Describes the vacuum gripper state.

    +

    For more information check the cobot-pump manual.

    +
    Examples
    vacuum_object.cpp.
    +
    +

    Member Data Documentation

    + +

    ◆ actual_power

    + +
    +
    + + + + +
    uint16_t franka::VacuumGripperState::actual_power {}
    +
    + +

    Current vacuum gripper actual power.

    +

    Unit: \([%]\).

    + +
    +
    + +

    ◆ part_present

    + +
    +
    + + + + +
    bool franka::VacuumGripperState::part_present {}
    +
    + +

    Vacuum is over H2 and not yet under H2-h2.

    +

    For more information check the cobot-pump manual.

    + +
    +
    + +

    ◆ vacuum

    + +
    +
    + + + + +
    uint16_t franka::VacuumGripperState::vacuum {}
    +
    + +

    Current system vacuum.

    +

    Unit: \([mbar]\).

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/0.13.6/structfranka_1_1VacuumGripperState__coll__graph.map b/0.13.6/structfranka_1_1VacuumGripperState__coll__graph.map new file mode 100644 index 00000000..9dba4cc0 --- /dev/null +++ b/0.13.6/structfranka_1_1VacuumGripperState__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/structfranka_1_1VacuumGripperState__coll__graph.md5 b/0.13.6/structfranka_1_1VacuumGripperState__coll__graph.md5 new file mode 100644 index 00000000..9d8aff1c --- /dev/null +++ b/0.13.6/structfranka_1_1VacuumGripperState__coll__graph.md5 @@ -0,0 +1 @@ +7a1edd2fcd8c4eb577e9fd99d5db2f07 \ No newline at end of file diff --git a/0.13.6/structfranka_1_1VacuumGripperState__coll__graph.png b/0.13.6/structfranka_1_1VacuumGripperState__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..819f8dcc2d3e3ec9387d5883e8bdae469e8356fb GIT binary patch literal 4946 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 Pk`X8?sVNr88^8M(3)Sa9 literal 0 HcmV?d00001 diff --git a/0.13.6/sync_off.png b/0.13.6/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/0.13.6/sync_on.png b/0.13.6/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/0.13.6/tab_a.png b/0.13.6/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/0.13.6/tab_b.png b/0.13.6/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/0.13.6/tabs.css b/0.13.6/tabs.css new file mode 100644 index 00000000..7d45d36c --- /dev/null +++ b/0.13.6/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/0.13.6/vacuum__gripper_8h.html b/0.13.6/vacuum__gripper_8h.html new file mode 100644 index 00000000..8652a1a0 --- /dev/null +++ b/0.13.6/vacuum__gripper_8h.html @@ -0,0 +1,125 @@ + + + + + + + +libfranka: include/franka/vacuum_gripper.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    vacuum_gripper.h File Reference
    +
    +
    + +

    Contains the franka::VacuumGripper type. +More...

    +
    #include <chrono>
    +#include <cstdint>
    +#include <memory>
    +#include <string>
    +#include <franka/vacuum_gripper_state.h>
    +
    +Include dependency graph for vacuum_gripper.h:
    +
    +
    + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  franka::VacuumGripper
     Maintains a network connection to the vacuum gripper, provides the current vacuum gripper state, and allows the execution of commands. More...
     
    +

    Detailed Description

    +

    Contains the franka::VacuumGripper type.

    +
    + + + + diff --git a/0.13.6/vacuum__gripper_8h__incl.map b/0.13.6/vacuum__gripper_8h__incl.map new file mode 100644 index 00000000..75515a93 --- /dev/null +++ b/0.13.6/vacuum__gripper_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/0.13.6/vacuum__gripper_8h__incl.md5 b/0.13.6/vacuum__gripper_8h__incl.md5 new file mode 100644 index 00000000..f650075e --- /dev/null +++ b/0.13.6/vacuum__gripper_8h__incl.md5 @@ -0,0 +1 @@ +16de7b04545bf404fbfa68245069dcca \ No newline at end of file diff --git a/0.13.6/vacuum__gripper_8h__incl.png b/0.13.6/vacuum__gripper_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..467c2c706b592c999bec4e19ef05117e563c27a0 GIT binary patch literal 30772 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 + + + + + + +libfranka: include/franka/vacuum_gripper.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    vacuum_gripper.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <chrono>
    +
    6 #include <cstdint>
    +
    7 #include <memory>
    +
    8 #include <string>
    +
    9 
    + +
    11 
    +
    17 namespace franka {
    +
    18 
    +
    19 class Network;
    +
    20 
    + +
    29  public:
    +
    33  using ServerVersion = uint16_t;
    +
    34 
    +
    38  enum class ProductionSetupProfile { kP0, kP1, kP2, kP3 };
    +
    39 
    +
    48  explicit VacuumGripper(const std::string& franka_address);
    +
    49 
    +
    55  VacuumGripper(VacuumGripper&& vacuum_gripper) noexcept;
    +
    56 
    +
    64  VacuumGripper& operator=(VacuumGripper&& vacuum_gripper) noexcept;
    +
    65 
    +
    69  ~VacuumGripper() noexcept;
    +
    70 
    +
    83  bool vacuum(uint8_t vacuum,
    +
    84  std::chrono::milliseconds timeout,
    +
    85  ProductionSetupProfile profile = ProductionSetupProfile::kP0) const;
    +
    86 
    +
    97  bool dropOff(std::chrono::milliseconds timeout) const;
    +
    98 
    +
    107  bool stop() const;
    +
    108 
    + +
    118 
    +
    124  ServerVersion serverVersion() const noexcept;
    +
    125 
    +
    127  VacuumGripper(const VacuumGripper&) = delete;
    +
    128  VacuumGripper& operator=(const VacuumGripper&) = delete;
    +
    130 
    +
    131  private:
    +
    132  std::unique_ptr<Network> network_;
    +
    133 
    +
    134  uint16_t ri_version_;
    +
    135 };
    +
    136 
    +
    137 } // namespace franka
    +
    Maintains a network connection to the vacuum gripper, provides the current vacuum gripper state,...
    Definition: vacuum_gripper.h:28
    +
    bool dropOff(std::chrono::milliseconds timeout) const
    Drops the grasped object off.
    +
    ProductionSetupProfile
    Vacuum production setup profile.
    Definition: vacuum_gripper.h:38
    +
    ServerVersion serverVersion() const noexcept
    Returns the software version reported by the connected server.
    +
    VacuumGripper & operator=(VacuumGripper &&vacuum_gripper) noexcept
    Move-assigns this VacuumGripper from another VacuumGripper instance.
    +
    bool stop() const
    Stops a currently running vacuum gripper vacuum or drop off operation.
    +
    bool vacuum(uint8_t vacuum, std::chrono::milliseconds timeout, ProductionSetupProfile profile=ProductionSetupProfile::kP0) const
    Vacuums an object.
    +
    uint16_t ServerVersion
    Version of the vacuum gripper server.
    Definition: vacuum_gripper.h:33
    +
    VacuumGripperState readOnce() const
    Waits for a vacuum gripper state update and returns it.
    +
    VacuumGripper(const std::string &franka_address)
    Establishes a connection with a vacuum gripper connected to a robot.
    +
    VacuumGripper(VacuumGripper &&vacuum_gripper) noexcept
    Move-constructs a new VacuumGripper instance.
    +
    ~VacuumGripper() noexcept
    Closes the connection.
    +
    Describes the vacuum gripper state.
    Definition: vacuum_gripper_state.h:31
    +
    Contains the franka::VacuumGripperState type.
    +
    + + + + diff --git a/0.13.6/vacuum__gripper__state_8h.html b/0.13.6/vacuum__gripper__state_8h.html new file mode 100644 index 00000000..60db9448 --- /dev/null +++ b/0.13.6/vacuum__gripper__state_8h.html @@ -0,0 +1,223 @@ + + + + + + + +libfranka: include/franka/vacuum_gripper_state.h File Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    vacuum_gripper_state.h File Reference
    +
    +
    + +

    Contains the franka::VacuumGripperState type. +More...

    +
    #include <cstdint>
    +#include <ostream>
    +#include <string>
    +#include <franka/duration.h>
    +
    +Include dependency graph for vacuum_gripper_state.h:
    +
    +
    + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    struct  franka::VacuumGripperState
     Describes the vacuum gripper state. More...
     
    + + + + +

    +Enumerations

    enum class  franka::VacuumGripperDeviceStatus : uint8_t { kGreen +, kYellow +, kOrange +, kRed + }
     Vacuum gripper device status. More...
     
    + + + + +

    +Functions

    std::ostream & franka::operator<< (std::ostream &ostream, const franka::VacuumGripperState &vacuum_gripper_state)
     Streams the vacuum gripper state as JSON object: {"field_name_1": value, "field_name_2": value, ...}. More...
     
    +

    Detailed Description

    +

    Contains the franka::VacuumGripperState type.

    +

    Enumeration Type Documentation

    + +

    ◆ VacuumGripperDeviceStatus

    + +
    +
    + + + + + +
    + + + + +
    enum franka::VacuumGripperDeviceStatus : uint8_t
    +
    +strong
    +
    + +

    Vacuum gripper device status.

    + + + + + +
    Enumerator
    kGreen 

    Device is working optimally.

    +
    kYellow 

    Device is working but there are warnings.

    +
    kOrange 

    Device is working but there are severe warnings.

    +
    kRed 

    Device is not working properly.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ operator<<()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& franka::operator<< (std::ostream & ostream,
    const franka::VacuumGripperStatevacuum_gripper_state 
    )
    +
    + +

    Streams the vacuum gripper state as JSON object: {"field_name_1": value, "field_name_2": value, ...}.

    +
    Parameters
    + + + +
    [in]ostreamOstream instance
    [in]vacuum_gripper_stateVacuumGripperState struct instance to stream
    +
    +
    +
    Returns
    Ostream instance
    + +
    +
    +
    + + + + diff --git a/0.13.6/vacuum__gripper__state_8h__dep__incl.map b/0.13.6/vacuum__gripper__state_8h__dep__incl.map new file mode 100644 index 00000000..6b7154e2 --- /dev/null +++ b/0.13.6/vacuum__gripper__state_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/0.13.6/vacuum__gripper__state_8h__dep__incl.md5 b/0.13.6/vacuum__gripper__state_8h__dep__incl.md5 new file mode 100644 index 00000000..a4becc4b --- /dev/null +++ b/0.13.6/vacuum__gripper__state_8h__dep__incl.md5 @@ -0,0 +1 @@ +8e5086ecd9bfe0cb2bec5c8975cb5d3d \ No newline at end of file diff --git a/0.13.6/vacuum__gripper__state_8h__dep__incl.png b/0.13.6/vacuum__gripper__state_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1472cf20099cdc29153a314c0271f5a829a864ee GIT binary patch literal 5306 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 + + + + + + + + diff --git a/0.13.6/vacuum__gripper__state_8h__incl.md5 b/0.13.6/vacuum__gripper__state_8h__incl.md5 new file mode 100644 index 00000000..1c9c2b6d --- /dev/null +++ b/0.13.6/vacuum__gripper__state_8h__incl.md5 @@ -0,0 +1 @@ +3fe9235157066f1570010a22f2cda39e \ No newline at end of file diff --git a/0.13.6/vacuum__gripper__state_8h__incl.png b/0.13.6/vacuum__gripper__state_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..314f1efa479d59c66a4ebfd77d3c8d4b2887f7b0 GIT binary patch literal 16523 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 + + + + + + +libfranka: include/franka/vacuum_gripper_state.h Source File + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    vacuum_gripper_state.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright (c) 2023 Franka Robotics GmbH
    +
    2 // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    3 #pragma once
    +
    4 
    +
    5 #include <cstdint>
    +
    6 #include <ostream>
    +
    7 #include <string>
    +
    8 
    +
    9 #include <franka/duration.h>
    +
    10 
    +
    16 namespace franka {
    +
    17 
    +
    21 enum class VacuumGripperDeviceStatus : uint8_t {
    +
    22  kGreen,
    +
    23  kYellow,
    +
    24  kOrange,
    +
    25  kRed
    +
    26 };
    +
    27 
    + + +
    36 
    +
    40  bool part_detached{};
    +
    41 
    +
    45  bool part_present{};
    +
    46 
    + +
    51 
    +
    55  uint16_t actual_power{};
    +
    56 
    +
    60  uint16_t vacuum{};
    +
    61 
    + +
    66 };
    +
    67 
    +
    77 std::ostream& operator<<(std::ostream& ostream,
    +
    78  const franka::VacuumGripperState& vacuum_gripper_state);
    +
    79 
    +
    80 } // namespace franka
    +
    Represents a duration with millisecond resolution.
    Definition: duration.h:19
    +
    Contains the franka::Duration type.
    +
    std::ostream & operator<<(std::ostream &ostream, const Errors &errors)
    Streams the errors as JSON array.
    +
    Describes the vacuum gripper state.
    Definition: vacuum_gripper_state.h:31
    +
    uint16_t actual_power
    Current vacuum gripper actual power.
    Definition: vacuum_gripper_state.h:55
    +
    bool in_control_range
    Vacuum value within in setpoint area.
    Definition: vacuum_gripper_state.h:35
    +
    bool part_detached
    The part has been detached after a suction cycle.
    Definition: vacuum_gripper_state.h:40
    +
    Duration time
    Strictly monotonically increasing timestamp since robot start.
    Definition: vacuum_gripper_state.h:65
    +
    VacuumGripperDeviceStatus device_status
    Current vacuum gripper device status.
    Definition: vacuum_gripper_state.h:50
    +
    uint16_t vacuum
    Current system vacuum.
    Definition: vacuum_gripper_state.h:60
    +
    bool part_present
    Vacuum is over H2 and not yet under H2-h2.
    Definition: vacuum_gripper_state.h:45
    +
    VacuumGripperDeviceStatus
    Vacuum gripper device status.
    Definition: vacuum_gripper_state.h:21
    +
    @ kOrange
    Device is working but there are severe warnings.
    +
    @ kGreen
    Device is working optimally.
    +
    @ kYellow
    Device is working but there are warnings.
    +
    @ kRed
    Device is not working properly.
    +
    + + + + diff --git a/0.13.6/vacuum_object_8cpp-example.html b/0.13.6/vacuum_object_8cpp-example.html new file mode 100644 index 00000000..a8b7cb64 --- /dev/null +++ b/0.13.6/vacuum_object_8cpp-example.html @@ -0,0 +1,144 @@ + + + + + + + +libfranka: vacuum_object.cpp + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libfranka +  0.13.6 +
    +
    FCI C++ API
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    vacuum_object.cpp
    +
    +
    +

    An example showing how to control FRANKA's vacuum gripper.

    +
    // Copyright (c) 2019 Franka Robotics GmbH
    +
    // Use of this source code is governed by the Apache-2.0 license, see LICENSE
    +
    #include <iostream>
    +
    #include <thread>
    +
    + + +
    +
    int main(int argc, char** argv) {
    +
    if (argc != 2) {
    +
    std::cerr << "Usage: ./vacuum_object <vacuum-gripper-hostname>" << std::endl;
    +
    return -1;
    +
    }
    +
    +
    franka::VacuumGripper vacuum_gripper(argv[1]);
    +
    try {
    +
    // Print a vacuum gripper state.
    +
    franka::VacuumGripperState vacuum_gripper_state = vacuum_gripper.readOnce();
    +
    std::cout << "Initial vacuum gripper state: " << vacuum_gripper_state << std::endl;
    +
    +
    // Vacuum the object.
    +
    if (!vacuum_gripper.vacuum(100, std::chrono::milliseconds(1000))) {
    +
    std::cout << "Failed to vacuum the object." << std::endl;
    +
    return -1;
    +
    }
    +
    +
    vacuum_gripper_state = vacuum_gripper.readOnce();
    +
    std::cout << "Vacuum gripper state after applying vacuum: " << vacuum_gripper_state
    +
    << std::endl;
    +
    +
    // Wait 3s and check afterwards, if the object is still grasped.
    +
    std::this_thread::sleep_for(std::chrono::duration<double, std::milli>(3000));
    +
    +
    vacuum_gripper_state = vacuum_gripper.readOnce();
    +
    if (!vacuum_gripper_state.in_control_range) {
    +
    std::cout << "Object lost." << std::endl;
    +
    return -1;
    +
    }
    +
    +
    std::cout << "Vacuumed object, will release it now." << std::endl;
    +
    vacuum_gripper.dropOff(std::chrono::milliseconds(1000));
    +
    } catch (franka::Exception const& e) {
    +
    vacuum_gripper.stop();
    +
    std::cout << e.what() << std::endl;
    +
    return -1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    Maintains a network connection to the vacuum gripper, provides the current vacuum gripper state,...
    Definition: vacuum_gripper.h:28
    +
    bool dropOff(std::chrono::milliseconds timeout) const
    Drops the grasped object off.
    +
    bool stop() const
    Stops a currently running vacuum gripper vacuum or drop off operation.
    +
    bool vacuum(uint8_t vacuum, std::chrono::milliseconds timeout, ProductionSetupProfile profile=ProductionSetupProfile::kP0) const
    Vacuums an object.
    +
    VacuumGripperState readOnce() const
    Waits for a vacuum gripper state update and returns it.
    +
    Contains exception definitions.
    +
    Base class for all exceptions used by libfranka.
    Definition: exception.h:20
    +
    Describes the vacuum gripper state.
    Definition: vacuum_gripper_state.h:31
    +
    bool in_control_range
    Vacuum value within in setpoint area.
    Definition: vacuum_gripper_state.h:35
    +
    Contains the franka::VacuumGripper type.
    +
    + + + + diff --git a/index.html b/index.html index 3b22bebd..fe6887d0 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ - +