placo 0.9.12__tar.gz → 0.9.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of placo might be problematic. Click here for more details.

Files changed (178) hide show
  1. {placo-0.9.12 → placo-0.9.14}/PKG-INFO +1 -1
  2. {placo-0.9.12 → placo-0.9.14}/bindings/expose-parameters.cpp +5 -1
  3. {placo-0.9.12 → placo-0.9.14}/pyproject.toml +1 -1
  4. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/footsteps_planner.cpp +12 -1
  5. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/footsteps_planner.h +2 -0
  6. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/humanoid_parameters.cpp +57 -0
  7. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/humanoid_parameters.h +35 -1
  8. {placo-0.9.12 → placo-0.9.14}/.clang-format +0 -0
  9. {placo-0.9.12 → placo-0.9.14}/.gitattributes +0 -0
  10. {placo-0.9.12 → placo-0.9.14}/.github/workflows/wheels.yml +0 -0
  11. {placo-0.9.12 → placo-0.9.14}/.gitignore +0 -0
  12. {placo-0.9.12 → placo-0.9.14}/.readthedocs.yaml +0 -0
  13. {placo-0.9.12 → placo-0.9.14}/CMakeLists.txt +0 -0
  14. {placo-0.9.12 → placo-0.9.14}/Doxyfile +0 -0
  15. {placo-0.9.12 → placo-0.9.14}/LICENSE +0 -0
  16. {placo-0.9.12 → placo-0.9.14}/README.md +0 -0
  17. {placo-0.9.12 → placo-0.9.14}/bindings/doxystub.h +0 -0
  18. {placo-0.9.12 → placo-0.9.14}/bindings/expose-dynamics.cpp +0 -0
  19. {placo-0.9.12 → placo-0.9.14}/bindings/expose-eigen.cpp +0 -0
  20. {placo-0.9.12 → placo-0.9.14}/bindings/expose-footsteps.cpp +0 -0
  21. {placo-0.9.12 → placo-0.9.14}/bindings/expose-kinematics.cpp +0 -0
  22. {placo-0.9.12 → placo-0.9.14}/bindings/expose-problem.cpp +0 -0
  23. {placo-0.9.12 → placo-0.9.14}/bindings/expose-robot-wrapper.cpp +0 -0
  24. {placo-0.9.12 → placo-0.9.14}/bindings/expose-tools.cpp +0 -0
  25. {placo-0.9.12 → placo-0.9.14}/bindings/expose-utils.hpp +0 -0
  26. {placo-0.9.12 → placo-0.9.14}/bindings/expose-walk-pattern-generator.cpp +0 -0
  27. {placo-0.9.12 → placo-0.9.14}/bindings/module.cpp +0 -0
  28. {placo-0.9.12 → placo-0.9.14}/bindings/module.h +0 -0
  29. {placo-0.9.12 → placo-0.9.14}/python/.vscode/settings.json +0 -0
  30. {placo-0.9.12 → placo-0.9.14}/python/Makefile +0 -0
  31. {placo-0.9.12 → placo-0.9.14}/python/placo_utils/__init__.py +0 -0
  32. {placo-0.9.12 → placo-0.9.14}/python/placo_utils/tf.py +0 -0
  33. {placo-0.9.12 → placo-0.9.14}/python/placo_utils/view.py +0 -0
  34. {placo-0.9.12 → placo-0.9.14}/python/placo_utils/visualization.py +0 -0
  35. {placo-0.9.12 → placo-0.9.14}/python/run_tests.sh +0 -0
  36. {placo-0.9.12 → placo-0.9.14}/scripts/requirements.sh +0 -0
  37. {placo-0.9.12 → placo-0.9.14}/scripts/robotpkg.sh +0 -0
  38. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
  39. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
  40. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/com_task.cpp +0 -0
  41. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/com_task.h +0 -0
  42. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/constraint.cpp +0 -0
  43. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/constraint.h +0 -0
  44. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/contacts.cpp +0 -0
  45. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/contacts.h +0 -0
  46. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/dynamics_solver.cpp +0 -0
  47. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/dynamics_solver.h +0 -0
  48. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/frame_task.cpp +0 -0
  49. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/frame_task.h +0 -0
  50. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/gear_task.cpp +0 -0
  51. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/gear_task.h +0 -0
  52. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/joints_task.cpp +0 -0
  53. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/joints_task.h +0 -0
  54. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/orientation_task.cpp +0 -0
  55. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/orientation_task.h +0 -0
  56. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/position_task.cpp +0 -0
  57. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/position_task.h +0 -0
  58. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/relative_frame_task.cpp +0 -0
  59. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/relative_frame_task.h +0 -0
  60. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/relative_orientation_task.cpp +0 -0
  61. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/relative_orientation_task.h +0 -0
  62. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/relative_position_task.cpp +0 -0
  63. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/relative_position_task.h +0 -0
  64. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/task.cpp +0 -0
  65. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/task.h +0 -0
  66. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/torque_task.cpp +0 -0
  67. {placo-0.9.12 → placo-0.9.14}/src/placo/dynamics/torque_task.h +0 -0
  68. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/dummy_walk.cpp +0 -0
  69. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/dummy_walk.h +0 -0
  70. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/foot_trajectory.cpp +0 -0
  71. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/foot_trajectory.h +0 -0
  72. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/footsteps_planner_naive.cpp +0 -0
  73. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/footsteps_planner_naive.h +0 -0
  74. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/footsteps_planner_repetitive.cpp +0 -0
  75. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/footsteps_planner_repetitive.h +0 -0
  76. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/humanoid_robot.cpp +0 -0
  77. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/humanoid_robot.h +0 -0
  78. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/kick.cpp +0 -0
  79. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/kick.h +0 -0
  80. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/lipm.cpp +0 -0
  81. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/lipm.h +0 -0
  82. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/swing_foot.cpp +0 -0
  83. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/swing_foot.h +0 -0
  84. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/swing_foot_cubic.cpp +0 -0
  85. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/swing_foot_cubic.h +0 -0
  86. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/swing_foot_quintic.cpp +0 -0
  87. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/swing_foot_quintic.h +0 -0
  88. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/walk_pattern_generator.cpp +0 -0
  89. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/walk_pattern_generator.h +0 -0
  90. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/walk_tasks.cpp +0 -0
  91. {placo-0.9.12 → placo-0.9.14}/src/placo/humanoid/walk_tasks.h +0 -0
  92. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
  93. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
  94. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/axis_align_task.cpp +0 -0
  95. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/axis_align_task.h +0 -0
  96. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
  97. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
  98. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/com_polygon_constraint.cpp +0 -0
  99. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/com_polygon_constraint.h +0 -0
  100. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/com_task.cpp +0 -0
  101. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/com_task.h +0 -0
  102. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/cone_constraint.cpp +0 -0
  103. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/cone_constraint.h +0 -0
  104. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/constraint.cpp +0 -0
  105. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/constraint.h +0 -0
  106. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/distance_constraint.cpp +0 -0
  107. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/distance_constraint.h +0 -0
  108. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/distance_task.cpp +0 -0
  109. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/distance_task.h +0 -0
  110. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/frame_task.cpp +0 -0
  111. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/frame_task.h +0 -0
  112. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/gear_task.cpp +0 -0
  113. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/gear_task.h +0 -0
  114. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/joint_space_half_spaces_constraint.cpp +0 -0
  115. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/joint_space_half_spaces_constraint.h +0 -0
  116. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/joints_task.cpp +0 -0
  117. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/joints_task.h +0 -0
  118. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/kinematics_solver.cpp +0 -0
  119. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/kinematics_solver.h +0 -0
  120. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/kinetic_energy_regularization_task.cpp +0 -0
  121. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/kinetic_energy_regularization_task.h +0 -0
  122. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/manipulability_task.cpp +0 -0
  123. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/manipulability_task.h +0 -0
  124. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/orientation_task.cpp +0 -0
  125. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/orientation_task.h +0 -0
  126. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/position_task.cpp +0 -0
  127. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/position_task.h +0 -0
  128. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/regularization_task.cpp +0 -0
  129. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/regularization_task.h +0 -0
  130. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/relative_frame_task.cpp +0 -0
  131. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/relative_frame_task.h +0 -0
  132. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/relative_orientation_task.cpp +0 -0
  133. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/relative_orientation_task.h +0 -0
  134. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/relative_position_task.cpp +0 -0
  135. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/relative_position_task.h +0 -0
  136. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/task.cpp +0 -0
  137. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/task.h +0 -0
  138. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/wheel_task.cpp +0 -0
  139. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/wheel_task.h +0 -0
  140. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/yaw_constraint.cpp +0 -0
  141. {placo-0.9.12 → placo-0.9.14}/src/placo/kinematics/yaw_constraint.h +0 -0
  142. {placo-0.9.12 → placo-0.9.14}/src/placo/model/robot_wrapper.cpp +0 -0
  143. {placo-0.9.12 → placo-0.9.14}/src/placo/model/robot_wrapper.h +0 -0
  144. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/constraint.cpp +0 -0
  145. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/constraint.h +0 -0
  146. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/expression.cpp +0 -0
  147. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/expression.h +0 -0
  148. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/integrator.cpp +0 -0
  149. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/integrator.h +0 -0
  150. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/polygon_constraint.cpp +0 -0
  151. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/polygon_constraint.h +0 -0
  152. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/problem.cpp +0 -0
  153. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/problem.h +0 -0
  154. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/problem_polynom.cpp +0 -0
  155. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/problem_polynom.h +0 -0
  156. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/qp_error.cpp +0 -0
  157. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/qp_error.h +0 -0
  158. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/sparsity.cpp +0 -0
  159. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/sparsity.h +0 -0
  160. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/variable.cpp +0 -0
  161. {placo-0.9.12 → placo-0.9.14}/src/placo/problem/variable.h +0 -0
  162. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/axises_mask.cpp +0 -0
  163. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/axises_mask.h +0 -0
  164. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/cubic_spline.cpp +0 -0
  165. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/cubic_spline.h +0 -0
  166. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/cubic_spline_3d.cpp +0 -0
  167. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/cubic_spline_3d.h +0 -0
  168. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/directions.cpp +0 -0
  169. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/directions.h +0 -0
  170. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/polynom.cpp +0 -0
  171. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/polynom.h +0 -0
  172. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/prioritized.cpp +0 -0
  173. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/prioritized.h +0 -0
  174. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/segment.cpp +0 -0
  175. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/segment.h +0 -0
  176. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/utils.cpp +0 -0
  177. {placo-0.9.12 → placo-0.9.14}/src/placo/tools/utils.h +0 -0
  178. {placo-0.9.12 → placo-0.9.14}/wks.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: placo
3
- Version: 0.9.12
3
+ Version: 0.9.14
4
4
  Summary: PlaCo: Rhoban Planning and Control
5
5
  Requires-Python: >= 3.8
6
6
  License-Expression: MIT
@@ -58,5 +58,9 @@ void exposeParameters()
58
58
  .def("startend_double_support_duration", &HumanoidParameters::startend_double_support_duration)
59
59
  .def("has_double_support", &HumanoidParameters::has_double_support)
60
60
  .def("ellipsoid_clip", &HumanoidParameters::ellipsoid_clip)
61
- .def("ellipsoid_overlap_clip", &HumanoidParameters::ellipsoid_overlap_clip);
61
+ .def("box_clip", &HumanoidParameters::box_clip)
62
+ .def("conic_clip", &HumanoidParameters::conic_clip)
63
+ .def("ellipsoid_overlap_clip", &HumanoidParameters::ellipsoid_overlap_clip)
64
+ .def("box_overlap_clip", &HumanoidParameters::box_overlap_clip)
65
+ .def("conic_overlap_clip", &HumanoidParameters::conic_overlap_clip);
62
66
  }
@@ -23,7 +23,7 @@ description = "PlaCo: Rhoban Planning and Control"
23
23
  license = "MIT"
24
24
  name = "placo"
25
25
  requires-python = ">= 3.8"
26
- version = "0.9.12"
26
+ version = "0.9.14"
27
27
 
28
28
  [project.urls]
29
29
  changelog = "https://github.com/rhoban/placo/blob/main/CHANGELOG.md"
@@ -319,7 +319,18 @@ FootstepsPlanner::Footstep FootstepsPlanner::clipped_opposite_footstep(Footstep
319
319
  step.y() += parameters.walk_dtheta_spacing * fabs(step.z());
320
320
  }
321
321
 
322
- step = parameters.ellipsoid_clip(step);
322
+ if (footstep_clipping == HumanoidParameters::FootstepClipping::Conic)
323
+ {
324
+ step = parameters.conic_clip(step);
325
+ }
326
+ else if (footstep_clipping == HumanoidParameters::FootstepClipping::Ellipsoid)
327
+ {
328
+ step = parameters.ellipsoid_clip(step);
329
+ }
330
+ else if (footstep_clipping == HumanoidParameters::FootstepClipping::Box)
331
+ {
332
+ step = parameters.box_clip(step);
333
+ }
323
334
 
324
335
  for (int k = 0; k < 32; k++)
325
336
  {
@@ -149,6 +149,8 @@ public:
149
149
  // Humanoid parameters for planning and control
150
150
  HumanoidParameters& parameters;
151
151
 
152
+ HumanoidParameters::FootstepClipping footstep_clipping = HumanoidParameters::FootstepClipping::Conic;
153
+
152
154
  protected:
153
155
  virtual void plan_impl(std::vector<Footstep>&, HumanoidRobot::Side flying_side, Eigen::Affine3d T_world_left,
154
156
  Eigen::Affine3d T_world_right) = 0;
@@ -55,10 +55,67 @@ Eigen::Vector3d HumanoidParameters::ellipsoid_clip(Eigen::Vector3d step)
55
55
  return step;
56
56
  }
57
57
 
58
+ Eigen::Vector3d HumanoidParameters::box_clip(Eigen::Vector3d step)
59
+ {
60
+ Eigen::Vector3d factor((step.x() >= 0) ? walk_max_dx_forward : walk_max_dx_backward, walk_max_dy, walk_max_dtheta);
61
+ step.x() /= factor.x();
62
+ step.y() /= factor.y();
63
+ step.z() /= factor.z();
64
+
65
+ double norm = fabs(step.x()) + fabs(step.y()) + fabs(step.z());
66
+ if (norm > 1)
67
+ {
68
+ step /= norm;
69
+ }
70
+
71
+ step.x() *= factor.x();
72
+ step.y() *= factor.y();
73
+ step.z() *= factor.z();
74
+
75
+ return step;
76
+ }
77
+
78
+ Eigen::Vector3d HumanoidParameters::conic_clip(Eigen::Vector3d step)
79
+ {
80
+ Eigen::Vector3d factor((step.x() >= 0) ? walk_max_dx_forward : walk_max_dx_backward, walk_max_dy, walk_max_dtheta);
81
+ step.x() /= factor.x();
82
+ step.y() /= factor.y();
83
+ step.z() /= factor.z();
84
+
85
+ double norm = sqrt(step.x() * step.x() + step.y() * step.y()) + fabs(step.z());
86
+ if (norm > 1)
87
+ {
88
+ step /= norm;
89
+ }
90
+
91
+ step.x() *= factor.x();
92
+ step.y() *= factor.y();
93
+ step.z() *= factor.z();
94
+
95
+ return step;
96
+ }
97
+
58
98
  Eigen::Vector3d HumanoidParameters::ellipsoid_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step)
99
+ {
100
+ return overlap_clip(support_side, step, FootstepClipping::Ellipsoid);
101
+ }
102
+
103
+ Eigen::Vector3d HumanoidParameters::box_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step)
104
+ {
105
+ return overlap_clip(support_side, step, FootstepClipping::Box);
106
+ }
107
+
108
+ Eigen::Vector3d HumanoidParameters::conic_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step)
109
+ {
110
+ return overlap_clip(support_side, step, FootstepClipping::Conic);
111
+ }
112
+
113
+ Eigen::Vector3d HumanoidParameters::overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step,
114
+ HumanoidParameters::FootstepClipping clipping)
59
115
  {
60
116
  FootstepsPlannerRepetitive planner(*this);
61
117
  planner.configure(step.x(), step.y(), step.z(), 3);
118
+ planner.footstep_clipping = clipping;
62
119
 
63
120
  // Creatting footsteps
64
121
  Eigen::Affine3d T_world_left = Eigen::Affine3d::Identity();
@@ -161,16 +161,43 @@ public:
161
161
  // DCM offset bounds (polygon)
162
162
  std::vector<Eigen::Vector2d> dcm_offset_polygon;
163
163
 
164
+ enum FootstepClipping
165
+ {
166
+ Ellipsoid = 0,
167
+ Box = 1,
168
+ Conic = 2
169
+ };
170
+
164
171
  /**
165
- * @brief Applies the ellipsoid clipping to a given step size (dx, dy, dtheta)
172
+ * @brief Applies the ellipsoid (L2) clipping to a given step size (dx, dy, dtheta)
166
173
  */
167
174
  Eigen::Vector3d ellipsoid_clip(Eigen::Vector3d step);
168
175
 
176
+ /**
177
+ * @brief Applies the box clipping (L1) to a given step size (dx, dy, dtheta)
178
+ */
179
+ Eigen::Vector3d box_clip(Eigen::Vector3d step);
180
+
181
+ /**
182
+ * @brief Applies the conic clipping to a given step size (dx, dy, dtheta)
183
+ */
184
+ Eigen::Vector3d conic_clip(Eigen::Vector3d step);
185
+
169
186
  /**
170
187
  * @brief Clips a step using ellipsoid and overlap avoidance
171
188
  */
172
189
  Eigen::Vector3d ellipsoid_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step);
173
190
 
191
+ /**
192
+ * @brief Clips a step using ellipsoid and overlap avoidance
193
+ */
194
+ Eigen::Vector3d box_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step);
195
+
196
+ /**
197
+ * @brief Clips a step using ellipsoid and overlap avoidance
198
+ */
199
+ Eigen::Vector3d conic_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step);
200
+
174
201
  /**
175
202
  * @brief Frames for opposite and neutral positions
176
203
  */
@@ -178,5 +205,12 @@ public:
178
205
  double d_y = 0., double d_theta = 0.);
179
206
  Eigen::Affine3d neutral_frame(HumanoidRobot::Side side, Eigen::Affine3d T_world_foot, double d_x = 0.,
180
207
  double d_y = 0., double d_theta = 0.);
208
+
209
+ protected:
210
+
211
+ /**
212
+ * @brief Clips a step using ellipsoid and overlap avoidance
213
+ */
214
+ Eigen::Vector3d overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step, FootstepClipping clipping);
181
215
  };
182
216
  } // namespace placo::humanoid
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes