placo 0.6.2__tar.gz → 0.6.4__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.6.2 → placo-0.6.4}/CMakeLists.txt +5 -0
  2. {placo-0.6.2 → placo-0.6.4}/PKG-INFO +2 -2
  3. {placo-0.6.2 → placo-0.6.4}/bindings/expose-footsteps.cpp +11 -7
  4. {placo-0.6.2 → placo-0.6.4}/bindings/expose-kinematics.cpp +9 -0
  5. {placo-0.6.2 → placo-0.6.4}/bindings/expose-parameters.cpp +6 -14
  6. {placo-0.6.2 → placo-0.6.4}/bindings/expose-problem.cpp +8 -1
  7. {placo-0.6.2 → placo-0.6.4}/bindings/expose-tools.cpp +24 -0
  8. {placo-0.6.2 → placo-0.6.4}/bindings/expose-walk-pattern-generator.cpp +28 -9
  9. {placo-0.6.2 → placo-0.6.4}/doxygen_parse.py +2 -1
  10. {placo-0.6.2 → placo-0.6.4}/placo.pyi +557 -226
  11. {placo-0.6.2 → placo-0.6.4}/pyproject.toml +1 -1
  12. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/footsteps_planner.cpp +60 -66
  13. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/footsteps_planner.h +24 -11
  14. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/footsteps_planner_naive.cpp +2 -92
  15. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/humanoid_parameters.cpp +7 -52
  16. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/humanoid_parameters.h +16 -50
  17. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/humanoid_robot.cpp +2 -2
  18. placo-0.6.4/src/placo/humanoid/kick.cpp +44 -0
  19. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/lipm.cpp +36 -8
  20. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/lipm.h +27 -12
  21. placo-0.6.4/src/placo/humanoid/swing_foot_cubic.cpp +56 -0
  22. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/swing_foot_cubic.h +4 -3
  23. placo-0.6.4/src/placo/humanoid/walk_pattern_generator.cpp +642 -0
  24. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/walk_pattern_generator.h +65 -49
  25. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/walk_tasks.cpp +14 -0
  26. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/walk_tasks.h +11 -0
  27. placo-0.6.4/src/placo/kinematics/joint_space_half_spaces_constraint.cpp +43 -0
  28. placo-0.6.4/src/placo/kinematics/joint_space_half_spaces_constraint.h +32 -0
  29. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/kinematics_solver.cpp +6 -0
  30. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/kinematics_solver.h +9 -0
  31. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/integrator.cpp +5 -0
  32. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/integrator.h +1 -1
  33. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/polygon_constraint.cpp +1 -1
  34. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/problem.cpp +0 -1
  35. placo-0.6.4/src/placo/problem/problem_polynom.cpp +30 -0
  36. placo-0.6.4/src/placo/problem/problem_polynom.h +37 -0
  37. placo-0.6.4/src/placo/tools/directions.cpp +42 -0
  38. placo-0.6.4/src/placo/tools/directions.h +22 -0
  39. placo-0.6.4/src/placo/tools/polynom.cpp +41 -0
  40. placo-0.6.4/src/placo/tools/polynom.h +27 -0
  41. placo-0.6.4/src/placo/tools/segment.cpp +86 -0
  42. placo-0.6.4/src/placo/tools/segment.h +72 -0
  43. placo-0.6.2/src/placo/humanoid/kick.cpp +0 -44
  44. placo-0.6.2/src/placo/humanoid/swing_foot_cubic.cpp +0 -45
  45. placo-0.6.2/src/placo/humanoid/walk_pattern_generator.cpp +0 -685
  46. {placo-0.6.2 → placo-0.6.4}/.clang-format +0 -0
  47. {placo-0.6.2 → placo-0.6.4}/.gitattributes +0 -0
  48. {placo-0.6.2 → placo-0.6.4}/.gitignore +0 -0
  49. {placo-0.6.2 → placo-0.6.4}/.readthedocs.yaml +0 -0
  50. {placo-0.6.2 → placo-0.6.4}/Doxyfile +0 -0
  51. {placo-0.6.2 → placo-0.6.4}/LICENSE +0 -0
  52. {placo-0.6.2 → placo-0.6.4}/Makefile +0 -0
  53. {placo-0.6.2 → placo-0.6.4}/README.md +0 -0
  54. {placo-0.6.2 → placo-0.6.4}/bindings/expose-dynamics.cpp +0 -0
  55. {placo-0.6.2 → placo-0.6.4}/bindings/expose-eigen.cpp +0 -0
  56. {placo-0.6.2 → placo-0.6.4}/bindings/expose-robot-wrapper.cpp +0 -0
  57. {placo-0.6.2 → placo-0.6.4}/bindings/expose-utils.hpp +0 -0
  58. {placo-0.6.2 → placo-0.6.4}/bindings/module.cpp +0 -0
  59. {placo-0.6.2 → placo-0.6.4}/bindings/module.h +0 -0
  60. {placo-0.6.2 → placo-0.6.4}/bindings/registry.cpp +0 -0
  61. {placo-0.6.2 → placo-0.6.4}/bindings/registry.h +0 -0
  62. {placo-0.6.2 → placo-0.6.4}/python/.vscode/settings.json +0 -0
  63. {placo-0.6.2 → placo-0.6.4}/python/Makefile +0 -0
  64. {placo-0.6.2 → placo-0.6.4}/python/placo_utils/__init__.py +0 -0
  65. {placo-0.6.2 → placo-0.6.4}/python/placo_utils/tf.py +0 -0
  66. {placo-0.6.2 → placo-0.6.4}/python/placo_utils/view.py +0 -0
  67. {placo-0.6.2 → placo-0.6.4}/python/placo_utils/visualization.py +0 -0
  68. {placo-0.6.2 → placo-0.6.4}/python/run_tests.sh +0 -0
  69. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
  70. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
  71. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/com_task.cpp +0 -0
  72. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/com_task.h +0 -0
  73. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/constraint.cpp +0 -0
  74. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/constraint.h +0 -0
  75. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/contacts.cpp +0 -0
  76. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/contacts.h +0 -0
  77. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/dynamics_solver.cpp +0 -0
  78. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/dynamics_solver.h +0 -0
  79. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/frame_task.cpp +0 -0
  80. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/frame_task.h +0 -0
  81. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/gear_task.cpp +0 -0
  82. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/gear_task.h +0 -0
  83. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/joints_task.cpp +0 -0
  84. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/joints_task.h +0 -0
  85. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/orientation_task.cpp +0 -0
  86. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/orientation_task.h +0 -0
  87. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/position_task.cpp +0 -0
  88. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/position_task.h +0 -0
  89. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/relative_frame_task.cpp +0 -0
  90. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/relative_frame_task.h +0 -0
  91. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/relative_orientation_task.cpp +0 -0
  92. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/relative_orientation_task.h +0 -0
  93. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/relative_position_task.cpp +0 -0
  94. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/relative_position_task.h +0 -0
  95. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/task.cpp +0 -0
  96. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/task.h +0 -0
  97. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/torque_task.cpp +0 -0
  98. {placo-0.6.2 → placo-0.6.4}/src/placo/dynamics/torque_task.h +0 -0
  99. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/foot_trajectory.cpp +0 -0
  100. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/foot_trajectory.h +0 -0
  101. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/footsteps_planner_naive.h +0 -0
  102. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/footsteps_planner_repetitive.cpp +0 -0
  103. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/footsteps_planner_repetitive.h +0 -0
  104. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/humanoid_robot.h +0 -0
  105. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/kick.h +0 -0
  106. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/swing_foot.cpp +0 -0
  107. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/swing_foot.h +0 -0
  108. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/swing_foot_quintic.cpp +0 -0
  109. {placo-0.6.2 → placo-0.6.4}/src/placo/humanoid/swing_foot_quintic.h +0 -0
  110. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
  111. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
  112. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/axis_align_task.cpp +0 -0
  113. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/axis_align_task.h +0 -0
  114. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
  115. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
  116. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/com_polygon_constraint.cpp +0 -0
  117. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/com_polygon_constraint.h +0 -0
  118. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/com_task.cpp +0 -0
  119. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/com_task.h +0 -0
  120. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/cone_constraint.cpp +0 -0
  121. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/cone_constraint.h +0 -0
  122. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/constraint.cpp +0 -0
  123. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/constraint.h +0 -0
  124. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/distance_task.cpp +0 -0
  125. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/distance_task.h +0 -0
  126. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/frame_task.cpp +0 -0
  127. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/frame_task.h +0 -0
  128. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/gear_task.cpp +0 -0
  129. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/gear_task.h +0 -0
  130. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/joints_task.cpp +0 -0
  131. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/joints_task.h +0 -0
  132. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/kinetic_energy_regularization_task.cpp +0 -0
  133. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/kinetic_energy_regularization_task.h +0 -0
  134. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/manipulability_task.cpp +0 -0
  135. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/manipulability_task.h +0 -0
  136. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/orientation_task.cpp +0 -0
  137. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/orientation_task.h +0 -0
  138. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/position_task.cpp +0 -0
  139. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/position_task.h +0 -0
  140. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/regularization_task.cpp +0 -0
  141. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/regularization_task.h +0 -0
  142. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/relative_frame_task.cpp +0 -0
  143. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/relative_frame_task.h +0 -0
  144. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/relative_orientation_task.cpp +0 -0
  145. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/relative_orientation_task.h +0 -0
  146. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/relative_position_task.cpp +0 -0
  147. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/relative_position_task.h +0 -0
  148. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/task.cpp +0 -0
  149. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/task.h +0 -0
  150. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/wheel_task.cpp +0 -0
  151. {placo-0.6.2 → placo-0.6.4}/src/placo/kinematics/wheel_task.h +0 -0
  152. {placo-0.6.2 → placo-0.6.4}/src/placo/model/robot_wrapper.cpp +0 -0
  153. {placo-0.6.2 → placo-0.6.4}/src/placo/model/robot_wrapper.h +0 -0
  154. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/constraint.cpp +0 -0
  155. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/constraint.h +0 -0
  156. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/expression.cpp +0 -0
  157. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/expression.h +0 -0
  158. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/polygon_constraint.h +0 -0
  159. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/problem.h +0 -0
  160. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/qp_error.cpp +0 -0
  161. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/qp_error.h +0 -0
  162. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/sparsity.cpp +0 -0
  163. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/sparsity.h +0 -0
  164. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/variable.cpp +0 -0
  165. {placo-0.6.2 → placo-0.6.4}/src/placo/problem/variable.h +0 -0
  166. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/axises_mask.cpp +0 -0
  167. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/axises_mask.h +0 -0
  168. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/cubic_spline.cpp +0 -0
  169. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/cubic_spline.h +0 -0
  170. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/cubic_spline_3d.cpp +0 -0
  171. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/cubic_spline_3d.h +0 -0
  172. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/prioritized.cpp +0 -0
  173. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/prioritized.h +0 -0
  174. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/utils.cpp +0 -0
  175. {placo-0.6.2 → placo-0.6.4}/src/placo/tools/utils.h +0 -0
  176. {placo-0.6.2 → placo-0.6.4}/stubs.py +0 -0
  177. {placo-0.6.2 → placo-0.6.4}/tweak_sdist.sh +0 -0
  178. {placo-0.6.2 → placo-0.6.4}/wks.yml +0 -0
@@ -51,6 +51,9 @@ add_library(libplaco SHARED
51
51
  src/placo/tools/prioritized.cpp
52
52
  src/placo/tools/cubic_spline.cpp
53
53
  src/placo/tools/cubic_spline_3d.cpp
54
+ src/placo/tools/directions.cpp
55
+ src/placo/tools/polynom.cpp
56
+ src/placo/tools/segment.cpp
54
57
 
55
58
  # Problem formulation
56
59
  src/placo/problem/problem.cpp
@@ -58,6 +61,7 @@ add_library(libplaco SHARED
58
61
  src/placo/problem/variable.cpp
59
62
  src/placo/problem/expression.cpp
60
63
  src/placo/problem/integrator.cpp
64
+ src/placo/problem/problem_polynom.cpp
61
65
  src/placo/problem/constraint.cpp
62
66
  src/placo/problem/polygon_constraint.cpp
63
67
  src/placo/problem/sparsity.cpp
@@ -83,6 +87,7 @@ add_library(libplaco SHARED
83
87
  src/placo/kinematics/constraint.cpp
84
88
  src/placo/kinematics/avoid_self_collisions_constraint.cpp
85
89
  src/placo/kinematics/com_polygon_constraint.cpp
90
+ src/placo/kinematics/joint_space_half_spaces_constraint.cpp
86
91
  src/placo/kinematics/cone_constraint.cpp
87
92
  src/placo/kinematics/axis_align_task.cpp
88
93
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: placo
3
- Version: 0.6.2
3
+ Version: 0.6.4
4
4
  Summary: PlaCo: Rhoban Planning and Control
5
5
  Requires-Python: >= 3.8
6
6
  License-Expression: MIT
@@ -23,16 +23,18 @@ void exposeFootsteps()
23
23
  class__<FootstepsPlanner::Footstep>("Footstep", init<double, double>())
24
24
  .def("support_polygon", &FootstepsPlanner::Footstep::support_polygon)
25
25
  .add_property("side", &FootstepsPlanner::Footstep::side, &FootstepsPlanner::Footstep::side)
26
- .def_readwrite("frame", &FootstepsPlanner::Footstep::frame)
26
+ .def_readwrite("raw_frame", &FootstepsPlanner::Footstep::raw_frame)
27
+ .add_property("dx", &FootstepsPlanner::Footstep::dx, &FootstepsPlanner::Footstep::dx)
28
+ .add_property("dy", &FootstepsPlanner::Footstep::dy, &FootstepsPlanner::Footstep::dy)
27
29
  .add_property("foot_length", &FootstepsPlanner::Footstep::foot_length, &FootstepsPlanner::Footstep::foot_length)
28
30
  .add_property("foot_width", &FootstepsPlanner::Footstep::foot_width, &FootstepsPlanner::Footstep::foot_width)
29
31
  .def("support_polygon", &FootstepsPlanner::Footstep::support_polygon)
30
32
  .def("overlap", &FootstepsPlanner::Footstep::overlap)
31
33
  .def("polygon_contains", &FootstepsPlanner::Footstep::polygon_contains)
32
- .staticmethod("polygon_contains")
33
- .add_property("kick", &FootstepsPlanner::Footstep::kick, &FootstepsPlanner::Footstep::kick);
34
+ .def("frame", &FootstepsPlanner::Footstep::frame)
35
+ .staticmethod("polygon_contains");
34
36
 
35
- class__<FootstepsPlanner::Support>("Support")
37
+ class__<FootstepsPlanner::Support>("Support", init<>())
36
38
  .def("support_polygon", &FootstepsPlanner::Support::support_polygon)
37
39
  .def("frame", &FootstepsPlanner::Support::frame)
38
40
  .def("footstep_frame", &FootstepsPlanner::Support::footstep_frame)
@@ -42,14 +44,16 @@ void exposeFootsteps()
42
44
  "set_start", +[](FootstepsPlanner::Support& support, bool b) { support.start = b; })
43
45
  .def(
44
46
  "set_end", +[](FootstepsPlanner::Support& support, bool b) { support.end = b; })
45
- .def("kick", &FootstepsPlanner::Support::kick)
46
47
  .add_property("footsteps", &FootstepsPlanner::Support::footsteps)
48
+ .add_property("t_start", &FootstepsPlanner::Support::t_start, &FootstepsPlanner::Support::t_start)
49
+ .add_property("elapsed_ratio", &FootstepsPlanner::Support::elapsed_ratio, &FootstepsPlanner::Support::elapsed_ratio)
50
+ .add_property("time_ratio", &FootstepsPlanner::Support::time_ratio, &FootstepsPlanner::Support::time_ratio)
47
51
  .add_property("start", &FootstepsPlanner::Support::start, &FootstepsPlanner::Support::start)
48
- .add_property("end", &FootstepsPlanner::Support::end, &FootstepsPlanner::Support::end);
52
+ .add_property("end", &FootstepsPlanner::Support::end, &FootstepsPlanner::Support::end)
53
+ .add_property("replanned", &FootstepsPlanner::Support::replanned, &FootstepsPlanner::Support::replanned);
49
54
 
50
55
  class__<FootstepsPlanner, boost::noncopyable>("FootstepsPlanner", no_init)
51
56
  .def("make_supports", &FootstepsPlanner::make_supports)
52
- .def("add_first_support", &FootstepsPlanner::add_first_support)
53
57
  .def("opposite_footstep", &FootstepsPlanner::opposite_footstep);
54
58
 
55
59
  class__<FootstepsPlannerNaive, bases<FootstepsPlanner>>("FootstepsPlannerNaive", init<HumanoidParameters&>())
@@ -93,6 +93,10 @@ void exposeKinematics()
93
93
  .def("add_com_polygon_constraint", &KinematicsSolver::add_com_polygon_constraint,
94
94
  return_internal_reference<>())
95
95
 
96
+ // Joint-space half-spaces
97
+ .def("add_joint_space_half_spaces_constraint", &KinematicsSolver::add_joint_space_half_spaces_constraint,
98
+ return_internal_reference<>())
99
+
96
100
  // Cone constraint
97
101
  .def<ConeConstraint& (KinematicsSolver::*)(std::string, std::string, double)>(
98
102
  "add_cone_constraint", &KinematicsSolver::add_cone_constraint, return_internal_reference<>())
@@ -232,6 +236,11 @@ void exposeKinematics()
232
236
  .def_readwrite("omega", &CoMPolygonConstraint::omega)
233
237
  .def_readwrite("margin", &CoMPolygonConstraint::margin);
234
238
 
239
+ class__<JointSpaceHalfSpacesConstraint, bases<Constraint>>("JointSpaceHalfSpacesConstraint",
240
+ init<Eigen::MatrixXd, Eigen::VectorXd>())
241
+ .def_readwrite("A", &JointSpaceHalfSpacesConstraint::A)
242
+ .def_readwrite("b", &JointSpaceHalfSpacesConstraint::b);
243
+
235
244
  class__<ConeConstraint, bases<Constraint>>(
236
245
  "ConeConstraint", init<model::RobotWrapper::FrameIndex, model::RobotWrapper::FrameIndex, double>())
237
246
  .def_readwrite("angle_max", &ConeConstraint::angle_max)
@@ -18,16 +18,10 @@ using namespace placo::humanoid;
18
18
  void exposeParameters()
19
19
  {
20
20
  class__<HumanoidParameters>("HumanoidParameters")
21
- .add_property("single_support_duration", &HumanoidParameters::single_support_duration,
22
- &HumanoidParameters::single_support_duration)
23
- .add_property("single_support_timesteps", &HumanoidParameters::single_support_timesteps,
24
- &HumanoidParameters::single_support_timesteps)
25
- .add_property("double_support_ratio", &HumanoidParameters::double_support_ratio,
26
- &HumanoidParameters::double_support_ratio)
27
- .add_property("startend_double_support_ratio", &HumanoidParameters::startend_double_support_ratio,
28
- &HumanoidParameters::startend_double_support_ratio)
29
- .add_property("kick_support_ratio", &HumanoidParameters::kick_support_ratio,
30
- &HumanoidParameters::kick_support_ratio)
21
+ .add_property("single_support_duration", &HumanoidParameters::single_support_duration, &HumanoidParameters::single_support_duration)
22
+ .add_property("single_support_timesteps", &HumanoidParameters::single_support_timesteps, &HumanoidParameters::single_support_timesteps)
23
+ .add_property("double_support_ratio", &HumanoidParameters::double_support_ratio, &HumanoidParameters::double_support_ratio)
24
+ .add_property("startend_double_support_ratio", &HumanoidParameters::startend_double_support_ratio, &HumanoidParameters::startend_double_support_ratio)
31
25
  .add_property("planned_timesteps", &HumanoidParameters::planned_timesteps, &HumanoidParameters::planned_timesteps)
32
26
  .add_property("replan_timesteps", &HumanoidParameters::replan_timesteps, &HumanoidParameters::replan_timesteps)
33
27
  .add_property("zmp_margin", &HumanoidParameters::zmp_margin, &HumanoidParameters::zmp_margin)
@@ -52,12 +46,10 @@ void exposeParameters()
52
46
  .add_property("walk_dtheta_spacing", &HumanoidParameters::walk_dtheta_spacing,
53
47
  &HumanoidParameters::walk_dtheta_spacing)
54
48
  .def("dt", &HumanoidParameters::dt)
55
- .def("double_support_duration", &HumanoidParameters::double_support_duration)
56
- .def("startend_double_support_duration", &HumanoidParameters::startend_double_support_duration)
57
- .def("kick_support_duration", &HumanoidParameters::kick_support_duration)
58
49
  .def("double_support_timesteps", &HumanoidParameters::double_support_timesteps)
59
50
  .def("startend_double_support_timesteps", &HumanoidParameters::startend_double_support_timesteps)
60
- .def("kick_support_timesteps", &HumanoidParameters::kick_support_timesteps)
51
+ .def("double_support_duration", &HumanoidParameters::double_support_duration)
52
+ .def("startend_double_support_duration", &HumanoidParameters::startend_double_support_duration)
61
53
  .def("has_double_support", &HumanoidParameters::has_double_support)
62
54
  .def("ellipsoid_clip", &HumanoidParameters::ellipsoid_clip);
63
55
  }
@@ -12,6 +12,7 @@
12
12
  #include "placo/problem/constraint.h"
13
13
  #include "placo/problem/polygon_constraint.h"
14
14
  #include "placo/problem/integrator.h"
15
+ #include "placo/problem/problem_polynom.h"
15
16
  #include "placo/problem/sparsity.h"
16
17
  #include "placo/problem/qp_error.h"
17
18
  #include <Eigen/Dense>
@@ -24,6 +25,8 @@ using namespace placo::problem;
24
25
 
25
26
  BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(expr_overloads, expr, 0, 2);
26
27
  BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(integrator_expr_overloads, expr, 1, 2);
28
+ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(integrator_expr_t_overloads, expr_t, 1, 2);
29
+ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(problem_polynom_expr_overloads, expr, 1, 2);
27
30
  BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(configure_overloads, configure, 1, 2);
28
31
 
29
32
  void exposeProblem()
@@ -90,10 +93,14 @@ void exposeProblem()
90
93
  .def_readonly("B", &Integrator::B)
91
94
  .def_readonly("final_transition_matrix", &Integrator::final_transition_matrix)
92
95
  .def("expr", &Integrator::expr, integrator_expr_overloads())
93
- .def("expr_t", &Integrator::expr_t)
96
+ .def("expr_t", &Integrator::expr_t, integrator_expr_t_overloads())
94
97
  .def("value", &Integrator::value)
95
98
  .def("get_trajectory", &Integrator::get_trajectory);
96
99
 
100
+ class__<ProblemPolynom>("ProblemPolynom", init<Variable&>())
101
+ .def("expr", &ProblemPolynom::expr, problem_polynom_expr_overloads())
102
+ .def("get_polynom", &ProblemPolynom::get_polynom);
103
+
97
104
  class__<Integrator::Trajectory>("IntegratorTrajectory")
98
105
  .def("value", &Integrator::Trajectory::value)
99
106
  .def("duration", &Integrator::Trajectory::duration);
@@ -9,6 +9,9 @@
9
9
  #include "placo/tools/cubic_spline_3d.h"
10
10
  #include "placo/tools/axises_mask.h"
11
11
  #include "placo/tools/prioritized.h"
12
+ #include "placo/tools/directions.h"
13
+ #include "placo/tools/polynom.h"
14
+ #include "placo/tools/segment.h"
12
15
  #include "expose-utils.hpp"
13
16
  #ifdef HAVE_RHOBAN_UTILS
14
17
  #include "rhoban_utils/history/history.h"
@@ -24,6 +27,8 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(loadReplays_overloads, loadReplays, 1, 2)
24
27
 
25
28
  BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(set_axises_overloads, set_axises, 1, 2);
26
29
  BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(configure_overloads, configure, 2, 3);
30
+ BOOST_PYTHON_FUNCTION_OVERLOADS(directions_3d_overloads, directions_3d, 1, 2);
31
+ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(value_overloads, value, 1, 2);
27
32
 
28
33
  void exposeTools()
29
34
  {
@@ -33,6 +38,8 @@ void exposeTools()
33
38
  def("frame_yaw", &frame_yaw);
34
39
  def("flatten_on_floor", &flatten_on_floor);
35
40
  def("optimal_transformation", &optimal_transformation);
41
+ def("directions_2d", &directions_2d);
42
+ def("directions_3d", &directions_3d, directions_3d_overloads());
36
43
 
37
44
  exposeStdVector<int>("vector_int");
38
45
  exposeStdVector<double>("vector_double");
@@ -73,6 +80,23 @@ void exposeTools()
73
80
  .def("clear", &CubicSpline3D::clear)
74
81
  .def("duration", &CubicSpline3D::duration);
75
82
 
83
+ class__<Polynom>("Polynom", init<Eigen::VectorXd>())
84
+ .def("value", &Polynom::value, value_overloads())
85
+ .def("derivative_coefficient", &Polynom::derivative_coefficient)
86
+ .staticmethod("derivative_coefficient")
87
+ .def_readwrite("coefficients", &Polynom::coefficients);
88
+
89
+ class__<Segment>("Segment", init<Eigen::Vector2d, Eigen::Vector2d>())
90
+ .add_property("start", &Segment::start, &Segment::start)
91
+ .add_property("end", &Segment::end, &Segment::start)
92
+ .def("is_parallel", +[](Segment& s1, const Segment& s2) { return s1.is_parallel(s2); })
93
+ .def("is_point_aligned", +[](Segment& s, const Eigen::Vector2d& point) { return s.is_point_aligned(point); })
94
+ .def("is_collinear", +[](Segment& s1, const Segment& s2) { return s1.is_collinear(s2); })
95
+ .def("is_point_in_segment", +[](Segment& s, const Eigen::Vector2d& point) { return s.is_point_in_segment(point); })
96
+ .def("intersects", &Segment::intersects)
97
+ .def("line_pass_through", &Segment::line_pass_through)
98
+ .def("lines_intersection", &Segment::lines_intersection);
99
+
76
100
  #ifdef HAVE_RHOBAN_UTILS
77
101
  using namespace rhoban_utils;
78
102
 
@@ -22,13 +22,22 @@ using namespace placo::humanoid;
22
22
 
23
23
  void exposeWalkPatternGenerator()
24
24
  {
25
- class__<WalkPatternGenerator::Trajectory>("WalkTrajectory")
25
+ class__<WalkPatternGenerator::TrajectoryPart>("WPGTrajectoryPart", init<FootstepsPlanner::Support, double>())
26
+ .add_property("t_start", &WalkPatternGenerator::TrajectoryPart::t_start)
27
+ .add_property("t_end", &WalkPatternGenerator::TrajectoryPart::t_end, &WalkPatternGenerator::TrajectoryPart::t_end)
28
+ .add_property("support", &WalkPatternGenerator::TrajectoryPart::support);
29
+
30
+ class__<WalkPatternGenerator::Trajectory>("WPGTrajectory", init<double, double, double>())
26
31
  .add_property("t_start", &WalkPatternGenerator::Trajectory::t_start)
27
32
  .add_property("t_end", &WalkPatternGenerator::Trajectory::t_end)
28
- .add_property("jerk_planner_timesteps", &WalkPatternGenerator::Trajectory::jerk_planner_timesteps)
33
+ .add_property("com_target_z", &WalkPatternGenerator::Trajectory::com_target_z)
34
+ .add_property("trunk_pitch", &WalkPatternGenerator::Trajectory::trunk_pitch)
35
+ .add_property("trunk_roll", &WalkPatternGenerator::Trajectory::trunk_roll)
36
+ .add_property("kept_ts", &WalkPatternGenerator::Trajectory::kept_ts)
29
37
  .def("get_T_world_left", &WalkPatternGenerator::Trajectory::get_T_world_left)
30
- .def("get_supports", &WalkPatternGenerator::Trajectory::get_supports)
31
38
  .def("get_T_world_right", &WalkPatternGenerator::Trajectory::get_T_world_right)
39
+ .def("get_v_world_right", &WalkPatternGenerator::Trajectory::get_v_world_right)
40
+ .def("get_v_world_foot", &WalkPatternGenerator::Trajectory::get_v_world_foot)
32
41
  .def("get_p_world_CoM", &WalkPatternGenerator::Trajectory::get_p_world_CoM)
33
42
  .def("get_v_world_CoM", &WalkPatternGenerator::Trajectory::get_v_world_CoM)
34
43
  .def("get_a_world_CoM", &WalkPatternGenerator::Trajectory::get_a_world_CoM)
@@ -38,11 +47,13 @@ void exposeWalkPatternGenerator()
38
47
  .def("get_R_world_trunk", &WalkPatternGenerator::Trajectory::get_R_world_trunk)
39
48
  .def("support_side", &WalkPatternGenerator::Trajectory::support_side)
40
49
  .def("support_is_both", &WalkPatternGenerator::Trajectory::support_is_both)
50
+ .def("get_supports", &WalkPatternGenerator::Trajectory::get_supports)
41
51
  .def("get_support", &WalkPatternGenerator::Trajectory::get_support)
42
52
  .def("get_next_support", &WalkPatternGenerator::Trajectory::get_next_support)
43
53
  .def("get_prev_support", &WalkPatternGenerator::Trajectory::get_prev_support)
44
54
  .def("get_part_t_start", &WalkPatternGenerator::Trajectory::get_part_t_start)
45
- .def("apply_transform", &WalkPatternGenerator::Trajectory::apply_transform);
55
+ .def("apply_transform", &WalkPatternGenerator::Trajectory::apply_transform)
56
+ .def("print_parts_timings", &WalkPatternGenerator::Trajectory::print_parts_timings);
46
57
 
47
58
  class__<WalkPatternGenerator>("WalkPatternGenerator", init<HumanoidRobot&, HumanoidParameters&>())
48
59
  .def("plan", &WalkPatternGenerator::plan)
@@ -125,16 +136,24 @@ void exposeWalkPatternGenerator()
125
136
  .def("dzmp", &LIPM::Trajectory::dzmp)
126
137
  .def("dcm", &LIPM::Trajectory::dcm);
127
138
 
128
- class__<LIPM>("LIPM", init<problem::Problem&, int, double, Eigen::Vector2d, Eigen::Vector2d, Eigen::Vector2d>())
139
+ class__<LIPM>("LIPM", init<problem::Problem&, double, int, double, Eigen::Vector2d, Eigen::Vector2d, Eigen::Vector2d>())
140
+ .def("compute_omega", &LIPM::compute_omega)
141
+ .def("get_trajectory", &LIPM::get_trajectory)
129
142
  .def("pos", &LIPM::pos)
130
143
  .def("vel", &LIPM::vel)
131
144
  .def("acc", &LIPM::acc)
132
145
  .def("jerk", &LIPM::jerk)
146
+ .def("dcm", &LIPM::dcm)
133
147
  .def("zmp", &LIPM::zmp)
134
148
  .def("dzmp", &LIPM::dzmp)
135
- .def("dcm", &LIPM::dcm)
136
- .def("compute_omega", &LIPM::compute_omega)
149
+ .def("build_LIPM_from_previous", &LIPM::build_LIPM_from_previous)
137
150
  .def("get_trajectory", &LIPM::get_trajectory)
138
- .add_property("x", &LIPM::x)
139
- .add_property("y", &LIPM::y);
151
+ .add_property("dt", &LIPM::dt, &LIPM::dt)
152
+ .add_property("timesteps", &LIPM::timesteps, &LIPM::timesteps)
153
+ .add_property("t_start", &LIPM::t_start, &LIPM::t_start)
154
+ .add_property("t_end", &LIPM::t_end, &LIPM::t_end)
155
+ .add_property("x_var", &LIPM::x_var, &LIPM::x_var)
156
+ .add_property("y_var", &LIPM::y_var, &LIPM::y_var)
157
+ .add_property("x", &LIPM::x, &LIPM::x)
158
+ .add_property("y", &LIPM::y, &LIPM::y);
140
159
  }
@@ -1,5 +1,6 @@
1
1
  import glob
2
2
  import re
3
+ from typing import Union
3
4
  import xml.etree.ElementTree as ET
4
5
 
5
6
  # Mapping member definitions (id) to all informations
@@ -148,7 +149,7 @@ def parse_xml(xml_file: str):
148
149
  parse_compound(compounddef_node)
149
150
 
150
151
 
151
- def resolve_doxygen_id(id: list|str):
152
+ def resolve_doxygen_id(id: Union[list,str]):
152
153
  if type(id) == list:
153
154
  tpl = resolve_doxygen_id(id[0])
154
155
  typ = resolve_doxygen_id(id[1])