placo 0.8.8__tar.gz → 0.8.10__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 (172) hide show
  1. {placo-0.8.8 → placo-0.8.10}/.github/workflows/wheels.yml +3 -1
  2. {placo-0.8.8 → placo-0.8.10}/PKG-INFO +1 -1
  3. {placo-0.8.8 → placo-0.8.10}/bindings/expose-tools.cpp +2 -2
  4. {placo-0.8.8 → placo-0.8.10}/pyproject.toml +2 -2
  5. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/footsteps_planner.cpp +13 -14
  6. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/walk_pattern_generator.cpp +36 -12
  7. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/walk_pattern_generator.h +20 -11
  8. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/manipulability_task.cpp +1 -1
  9. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/integrator.cpp +1 -6
  10. {placo-0.8.8 → placo-0.8.10}/.clang-format +0 -0
  11. {placo-0.8.8 → placo-0.8.10}/.gitattributes +0 -0
  12. {placo-0.8.8 → placo-0.8.10}/.gitignore +0 -0
  13. {placo-0.8.8 → placo-0.8.10}/.readthedocs.yaml +0 -0
  14. {placo-0.8.8 → placo-0.8.10}/CMakeLists.txt +0 -0
  15. {placo-0.8.8 → placo-0.8.10}/Doxyfile +0 -0
  16. {placo-0.8.8 → placo-0.8.10}/LICENSE +0 -0
  17. {placo-0.8.8 → placo-0.8.10}/README.md +0 -0
  18. {placo-0.8.8 → placo-0.8.10}/bindings/doxystub.h +0 -0
  19. {placo-0.8.8 → placo-0.8.10}/bindings/expose-dynamics.cpp +0 -0
  20. {placo-0.8.8 → placo-0.8.10}/bindings/expose-eigen.cpp +0 -0
  21. {placo-0.8.8 → placo-0.8.10}/bindings/expose-footsteps.cpp +0 -0
  22. {placo-0.8.8 → placo-0.8.10}/bindings/expose-kinematics.cpp +0 -0
  23. {placo-0.8.8 → placo-0.8.10}/bindings/expose-parameters.cpp +0 -0
  24. {placo-0.8.8 → placo-0.8.10}/bindings/expose-problem.cpp +0 -0
  25. {placo-0.8.8 → placo-0.8.10}/bindings/expose-robot-wrapper.cpp +0 -0
  26. {placo-0.8.8 → placo-0.8.10}/bindings/expose-utils.hpp +0 -0
  27. {placo-0.8.8 → placo-0.8.10}/bindings/expose-walk-pattern-generator.cpp +0 -0
  28. {placo-0.8.8 → placo-0.8.10}/bindings/module.cpp +0 -0
  29. {placo-0.8.8 → placo-0.8.10}/bindings/module.h +0 -0
  30. {placo-0.8.8 → placo-0.8.10}/python/.vscode/settings.json +0 -0
  31. {placo-0.8.8 → placo-0.8.10}/python/Makefile +0 -0
  32. {placo-0.8.8 → placo-0.8.10}/python/placo_utils/__init__.py +0 -0
  33. {placo-0.8.8 → placo-0.8.10}/python/placo_utils/tf.py +0 -0
  34. {placo-0.8.8 → placo-0.8.10}/python/placo_utils/view.py +0 -0
  35. {placo-0.8.8 → placo-0.8.10}/python/placo_utils/visualization.py +0 -0
  36. {placo-0.8.8 → placo-0.8.10}/python/run_tests.sh +0 -0
  37. {placo-0.8.8 → placo-0.8.10}/scripts/requirements.sh +0 -0
  38. {placo-0.8.8 → placo-0.8.10}/scripts/robotpkg.sh +0 -0
  39. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
  40. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
  41. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/com_task.cpp +0 -0
  42. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/com_task.h +0 -0
  43. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/constraint.cpp +0 -0
  44. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/constraint.h +0 -0
  45. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/contacts.cpp +0 -0
  46. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/contacts.h +0 -0
  47. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/dynamics_solver.cpp +0 -0
  48. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/dynamics_solver.h +0 -0
  49. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/frame_task.cpp +0 -0
  50. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/frame_task.h +0 -0
  51. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/gear_task.cpp +0 -0
  52. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/gear_task.h +0 -0
  53. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/joints_task.cpp +0 -0
  54. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/joints_task.h +0 -0
  55. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/orientation_task.cpp +0 -0
  56. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/orientation_task.h +0 -0
  57. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/position_task.cpp +0 -0
  58. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/position_task.h +0 -0
  59. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/relative_frame_task.cpp +0 -0
  60. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/relative_frame_task.h +0 -0
  61. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/relative_orientation_task.cpp +0 -0
  62. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/relative_orientation_task.h +0 -0
  63. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/relative_position_task.cpp +0 -0
  64. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/relative_position_task.h +0 -0
  65. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/task.cpp +0 -0
  66. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/task.h +0 -0
  67. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/torque_task.cpp +0 -0
  68. {placo-0.8.8 → placo-0.8.10}/src/placo/dynamics/torque_task.h +0 -0
  69. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/foot_trajectory.cpp +0 -0
  70. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/foot_trajectory.h +0 -0
  71. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/footsteps_planner.h +0 -0
  72. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/footsteps_planner_naive.cpp +0 -0
  73. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/footsteps_planner_naive.h +0 -0
  74. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/footsteps_planner_repetitive.cpp +0 -0
  75. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/footsteps_planner_repetitive.h +0 -0
  76. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/humanoid_parameters.cpp +0 -0
  77. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/humanoid_parameters.h +0 -0
  78. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/humanoid_robot.cpp +0 -0
  79. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/humanoid_robot.h +0 -0
  80. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/kick.cpp +0 -0
  81. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/kick.h +0 -0
  82. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/lipm.cpp +0 -0
  83. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/lipm.h +0 -0
  84. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/swing_foot.cpp +0 -0
  85. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/swing_foot.h +0 -0
  86. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/swing_foot_cubic.cpp +0 -0
  87. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/swing_foot_cubic.h +0 -0
  88. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/swing_foot_quintic.cpp +0 -0
  89. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/swing_foot_quintic.h +0 -0
  90. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/walk_tasks.cpp +0 -0
  91. {placo-0.8.8 → placo-0.8.10}/src/placo/humanoid/walk_tasks.h +0 -0
  92. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
  93. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
  94. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/axis_align_task.cpp +0 -0
  95. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/axis_align_task.h +0 -0
  96. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
  97. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
  98. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/com_polygon_constraint.cpp +0 -0
  99. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/com_polygon_constraint.h +0 -0
  100. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/com_task.cpp +0 -0
  101. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/com_task.h +0 -0
  102. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/cone_constraint.cpp +0 -0
  103. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/cone_constraint.h +0 -0
  104. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/constraint.cpp +0 -0
  105. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/constraint.h +0 -0
  106. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/distance_task.cpp +0 -0
  107. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/distance_task.h +0 -0
  108. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/frame_task.cpp +0 -0
  109. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/frame_task.h +0 -0
  110. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/gear_task.cpp +0 -0
  111. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/gear_task.h +0 -0
  112. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/joint_space_half_spaces_constraint.cpp +0 -0
  113. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/joint_space_half_spaces_constraint.h +0 -0
  114. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/joints_task.cpp +0 -0
  115. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/joints_task.h +0 -0
  116. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/kinematics_solver.cpp +0 -0
  117. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/kinematics_solver.h +0 -0
  118. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/kinetic_energy_regularization_task.cpp +0 -0
  119. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/kinetic_energy_regularization_task.h +0 -0
  120. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/manipulability_task.h +0 -0
  121. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/orientation_task.cpp +0 -0
  122. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/orientation_task.h +0 -0
  123. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/position_task.cpp +0 -0
  124. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/position_task.h +0 -0
  125. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/regularization_task.cpp +0 -0
  126. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/regularization_task.h +0 -0
  127. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/relative_frame_task.cpp +0 -0
  128. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/relative_frame_task.h +0 -0
  129. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/relative_orientation_task.cpp +0 -0
  130. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/relative_orientation_task.h +0 -0
  131. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/relative_position_task.cpp +0 -0
  132. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/relative_position_task.h +0 -0
  133. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/task.cpp +0 -0
  134. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/task.h +0 -0
  135. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/wheel_task.cpp +0 -0
  136. {placo-0.8.8 → placo-0.8.10}/src/placo/kinematics/wheel_task.h +0 -0
  137. {placo-0.8.8 → placo-0.8.10}/src/placo/model/robot_wrapper.cpp +0 -0
  138. {placo-0.8.8 → placo-0.8.10}/src/placo/model/robot_wrapper.h +0 -0
  139. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/constraint.cpp +0 -0
  140. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/constraint.h +0 -0
  141. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/expression.cpp +0 -0
  142. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/expression.h +0 -0
  143. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/integrator.h +0 -0
  144. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/polygon_constraint.cpp +0 -0
  145. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/polygon_constraint.h +0 -0
  146. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/problem.cpp +0 -0
  147. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/problem.h +0 -0
  148. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/problem_polynom.cpp +0 -0
  149. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/problem_polynom.h +0 -0
  150. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/qp_error.cpp +0 -0
  151. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/qp_error.h +0 -0
  152. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/sparsity.cpp +0 -0
  153. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/sparsity.h +0 -0
  154. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/variable.cpp +0 -0
  155. {placo-0.8.8 → placo-0.8.10}/src/placo/problem/variable.h +0 -0
  156. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/axises_mask.cpp +0 -0
  157. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/axises_mask.h +0 -0
  158. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/cubic_spline.cpp +0 -0
  159. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/cubic_spline.h +0 -0
  160. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/cubic_spline_3d.cpp +0 -0
  161. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/cubic_spline_3d.h +0 -0
  162. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/directions.cpp +0 -0
  163. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/directions.h +0 -0
  164. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/polynom.cpp +0 -0
  165. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/polynom.h +0 -0
  166. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/prioritized.cpp +0 -0
  167. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/prioritized.h +0 -0
  168. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/segment.cpp +0 -0
  169. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/segment.h +0 -0
  170. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/utils.cpp +0 -0
  171. {placo-0.8.8 → placo-0.8.10}/src/placo/tools/utils.h +0 -0
  172. {placo-0.8.8 → placo-0.8.10}/wks.yml +0 -0
@@ -6,7 +6,7 @@ on:
6
6
  - published
7
7
  push:
8
8
  branches:
9
- - '**' # Sur tout push, toutes branches
9
+ - 'master' # Sur tout push, toutes branches
10
10
 
11
11
  env:
12
12
  CIBW_SKIP: "*i686 *musl* *armv7* *ppc64* *s390*"
@@ -28,6 +28,8 @@ jobs:
28
28
 
29
29
  # Used to host cibuildwheel
30
30
  - uses: actions/setup-python@v5
31
+ with:
32
+ python-version: "3.12"
31
33
 
32
34
  - name: Install cibuildwheel
33
35
  run: python -m pip install cibuildwheel==3.0.0b1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: placo
3
- Version: 0.8.8
3
+ Version: 0.8.10
4
4
  Summary: PlaCo: Rhoban Planning and Control
5
5
  Requires-Python: >= 3.9
6
6
  License-Expression: MIT
@@ -55,7 +55,7 @@ void exposeTools()
55
55
  set_axises_overloads())
56
56
  .def_readwrite("R_local_world", &AxisesMask::R_local_world)
57
57
  .def_readwrite("R_custom_world", &AxisesMask::R_custom_world)
58
- .def("apply", &AxisesMask::apply);
58
+ .def("apply", &AxisesMask::apply);
59
59
 
60
60
  class__<Prioritized, boost::noncopyable>("Prioritized", no_init)
61
61
  .add_property("name", &Prioritized::name)
@@ -140,7 +140,7 @@ void exposeTools()
140
140
  +[](HistoryCollection& collection, std::vector<std::string> entries, double start_t, double dt, int length) {
141
141
  Eigen::MatrixXd result(length, entries.size());
142
142
 
143
- for (unsigned int i = 0; i < length; i++)
143
+ for (int i = 0; i < length; i++)
144
144
  {
145
145
  double t = start_t + i * dt;
146
146
  for (unsigned int j = 0; j < entries.size(); j++)
@@ -23,7 +23,7 @@ description = "PlaCo: Rhoban Planning and Control"
23
23
  license = "MIT"
24
24
  name = "placo"
25
25
  requires-python = ">= 3.9"
26
- version = "0.8.8"
26
+ version = "0.8.10"
27
27
 
28
28
  [project.urls]
29
29
  changelog = "https://github.com/rhoban/placo/blob/main/CHANGELOG.md"
@@ -44,7 +44,7 @@ run-tests = false
44
44
 
45
45
 
46
46
  [tool.cibuildwheel.macos]
47
- before-all = "brew install doxygen"
47
+ before-all = "brew install --formula doxygen"
48
48
 
49
49
  [tool.cibuildwheel.linux]
50
50
  before-all = "yum install -y doxygen"
@@ -98,12 +98,11 @@ bool FootstepsPlanner::Footstep::operator==(const Footstep& other)
98
98
  return side == other.side && frame.isApprox(other.frame);
99
99
  }
100
100
 
101
- FootstepsPlanner::Support::Support()
101
+ FootstepsPlanner::Support::Support()
102
102
  {
103
103
  }
104
104
 
105
- FootstepsPlanner::Support::Support(std::vector<Footstep> footsteps)
106
- : footsteps(footsteps)
105
+ FootstepsPlanner::Support::Support(std::vector<Footstep> footsteps) : footsteps(footsteps)
107
106
  {
108
107
  }
109
108
 
@@ -216,7 +215,7 @@ bool FootstepsPlanner::Support::operator==(const Support& other)
216
215
  {
217
216
  return false;
218
217
  }
219
- for (int k = 0; k < footsteps.size(); k++)
218
+ for (int k = 0; k < (int)footsteps.size(); k++)
220
219
  {
221
220
  if (!(footsteps[k] == other.footsteps[k]))
222
221
  {
@@ -231,8 +230,8 @@ FootstepsPlanner::FootstepsPlanner(HumanoidParameters& parameters) : parameters(
231
230
  {
232
231
  }
233
232
 
234
- std::vector<FootstepsPlanner::Support>
235
- FootstepsPlanner::make_supports(std::vector<FootstepsPlanner::Footstep> footsteps, double t_start, bool start, bool middle, bool end)
233
+ std::vector<FootstepsPlanner::Support> FootstepsPlanner::make_supports(
234
+ std::vector<FootstepsPlanner::Footstep> footsteps, double t_start, bool start, bool middle, bool end)
236
235
  {
237
236
  std::vector<Support> supports;
238
237
 
@@ -241,36 +240,36 @@ FootstepsPlanner::make_supports(std::vector<FootstepsPlanner::Footstep> footstep
241
240
  if (start)
242
241
  {
243
242
  // Creating the first (double-support) initial state
244
- Support support({footsteps[0], footsteps[1]});
243
+ Support support({ footsteps[0], footsteps[1] });
245
244
  support.start = true;
246
245
  support.t_start = t_start;
247
246
  supports.push_back(support);
248
247
  }
249
248
  else
250
249
  {
251
- Support support({footsteps[0]});
250
+ Support support({ footsteps[0] });
252
251
  support.t_start = t_start;
253
252
  supports.push_back(support);
254
253
 
255
254
  if (middle)
256
255
  {
257
- Support double_support({footsteps[0], footsteps[1]});
256
+ Support double_support({ footsteps[0], footsteps[1] });
258
257
  double_support.t_start = t_start;
259
258
  supports.push_back(double_support);
260
259
  }
261
260
  }
262
261
 
263
262
  // Adding single/double support phases
264
- for (int step = 1; step < footsteps.size() - 1; step++)
263
+ for (int step = 1; step < (int)footsteps.size() - 1; step++)
265
264
  {
266
- Support single_support({footsteps[step]});
265
+ Support single_support({ footsteps[step] });
267
266
  supports.push_back(single_support);
268
267
 
269
- bool is_end = (step == footsteps.size() - 2);
268
+ bool is_end = (step == (int)footsteps.size() - 2);
270
269
 
271
270
  if ((!is_end && middle))
272
271
  {
273
- Support double_support({footsteps[step], footsteps[step + 1]});
272
+ Support double_support({ footsteps[step], footsteps[step + 1] });
274
273
  supports.push_back(double_support);
275
274
  }
276
275
  }
@@ -279,7 +278,7 @@ FootstepsPlanner::make_supports(std::vector<FootstepsPlanner::Footstep> footstep
279
278
  if (end)
280
279
  {
281
280
  // Creating the first (double-support) initial state
282
- Support support({footsteps[footsteps.size() - 2], footsteps[footsteps.size() - 1]});
281
+ Support support({ footsteps[footsteps.size() - 2], footsteps[footsteps.size() - 1] });
283
282
  support.end = true;
284
283
  supports.push_back(support);
285
284
  }
@@ -10,7 +10,7 @@ using namespace placo::problem;
10
10
  using namespace placo::tools;
11
11
 
12
12
  WalkPatternGenerator::TrajectoryPart::TrajectoryPart(FootstepsPlanner::Support support, double t_start)
13
- : support(support), t_start(t_start)
13
+ : t_start(t_start), support(support)
14
14
  {
15
15
  }
16
16
 
@@ -20,13 +20,13 @@ WalkPatternGenerator::Trajectory::Trajectory() : left_foot_yaw(true), right_foot
20
20
  }
21
21
 
22
22
  WalkPatternGenerator::Trajectory::Trajectory(double com_target_z, double t_start, double trunk_pitch, double trunk_roll)
23
- : left_foot_yaw(true)
24
- , right_foot_yaw(true)
25
- , trunk_yaw(true)
23
+ : t_start(t_start)
26
24
  , com_target_z(com_target_z)
27
- , t_start(t_start)
28
25
  , trunk_pitch(trunk_pitch)
29
26
  , trunk_roll(trunk_roll)
27
+ , left_foot_yaw(true)
28
+ , right_foot_yaw(true)
29
+ , trunk_yaw(true)
30
30
  {
31
31
  T.setIdentity();
32
32
  }
@@ -146,6 +146,26 @@ Eigen::Vector3d WalkPatternGenerator::Trajectory::get_v_world_foot(HumanoidRobot
146
146
  return (side == HumanoidRobot::Left) ? get_v_world_left(t) : get_v_world_right(t);
147
147
  }
148
148
 
149
+ double WalkPatternGenerator::Trajectory::get_yaw_world_left(double t)
150
+ {
151
+ return frame_yaw(T.rotation()) + left_foot_yaw.pos(t);
152
+ }
153
+
154
+ double WalkPatternGenerator::Trajectory::get_yaw_world_right(double t)
155
+ {
156
+ return frame_yaw(T.rotation()) + right_foot_yaw.pos(t);
157
+ }
158
+
159
+ double WalkPatternGenerator::Trajectory::get_yaw_world_foot(HumanoidRobot::Side side, double t)
160
+ {
161
+ return (side == HumanoidRobot::Left) ? get_yaw_world_left(t) : get_yaw_world_right(t);
162
+ }
163
+
164
+ double WalkPatternGenerator::Trajectory::get_yaw_world_trunk(double t)
165
+ {
166
+ return frame_yaw(T.rotation()) + trunk_yaw.pos(t);
167
+ }
168
+
149
169
  Eigen::Vector3d WalkPatternGenerator::Trajectory::get_p_world_CoM(double t)
150
170
  {
151
171
  TrajectoryPart& part = _findPart(parts, t);
@@ -232,7 +252,7 @@ FootstepsPlanner::Support WalkPatternGenerator::Trajectory::get_next_support(dou
232
252
  {
233
253
  int index;
234
254
  _findPart(parts, t, &index);
235
- if (index + n >= parts.size())
255
+ if (index + n >= (int)parts.size())
236
256
  {
237
257
  return T * parts.back().support;
238
258
  }
@@ -316,8 +336,10 @@ void WalkPatternGenerator::plan_sgl_support(Trajectory& trajectory, int part_ind
316
336
  part.t_start, virt_duration, parameters.walk_foot_height, parameters.walk_foot_rise_ratio, start,
317
337
  T_world_end.translation(), part.support.elapsed_ratio, start_vel);
318
338
 
319
- double replan_yaw = old_trajectory->foot_yaw(flying_side).pos(trajectory.t_start);
320
- trajectory.foot_yaw(flying_side).add_point(trajectory.t_start, replan_yaw, 0);
339
+ // Initiate the flying foot yaw spline with the old trajectory foot yaw position and velocity
340
+ trajectory.foot_yaw(flying_side)
341
+ .add_point(trajectory.t_start, old_trajectory->get_yaw_world_foot(flying_side, trajectory.t_start),
342
+ old_trajectory->foot_yaw(flying_side).vel(trajectory.t_start));
321
343
  }
322
344
  else
323
345
  {
@@ -345,15 +367,17 @@ void WalkPatternGenerator::plan_feet_trajectories(Trajectory& trajectory, Trajec
345
367
  trajectory.add_supports(trajectory.t_start, trajectory.parts[0].support);
346
368
  if (old_trajectory == nullptr)
347
369
  {
370
+ // Starting the walk in double support, we set the trunk yaw aligned with the first support
348
371
  trajectory.trunk_yaw.add_point(trajectory.t_start, frame_yaw(trajectory.parts[0].support.frame().rotation()), 0);
349
372
  }
350
373
  else
351
374
  {
352
- trajectory.trunk_yaw.add_point(trajectory.t_start, old_trajectory->trunk_yaw.pos(trajectory.t_start),
375
+ // Initiate the trunk_yaw spline with the old trajectory trunk_yaw position and velocity
376
+ trajectory.trunk_yaw.add_point(trajectory.t_start, old_trajectory->get_yaw_world_trunk(trajectory.t_start),
353
377
  old_trajectory->trunk_yaw.vel(trajectory.t_start));
354
378
  }
355
379
 
356
- for (int i; i < trajectory.parts.size(); i++)
380
+ for (int i = 0; i < (int)trajectory.parts.size(); i++)
357
381
  {
358
382
  // Single support
359
383
  if (trajectory.parts[i].support.footsteps.size() == 1)
@@ -454,7 +478,7 @@ void WalkPatternGenerator::plan_com(Trajectory& trajectory, std::vector<Footstep
454
478
  // Solving the problem
455
479
  problem.solve();
456
480
 
457
- for (int i = 0; i < trajectory.parts.size(); i++)
481
+ for (int i = 0; i < (int)trajectory.parts.size(); i++)
458
482
  {
459
483
  auto& part = trajectory.parts[i];
460
484
  part.com_trajectory = lipms[i].get_trajectory();
@@ -621,7 +645,7 @@ double WalkPatternGenerator::support_default_duration(FootstepsPlanner::Support&
621
645
 
622
646
  void WalkPatternGenerator::Trajectory::print_parts_timings()
623
647
  {
624
- for (int i = 0; i < parts.size(); i++)
648
+ for (int i = 0; i < (int)parts.size(); i++)
625
649
  {
626
650
  std::cout << "Part " << i << " : start at " << parts[i].t_start << ", end at " << parts[i].t_end << std::endl;
627
651
  }
@@ -63,6 +63,11 @@ public:
63
63
  Eigen::Vector3d get_v_world_right(double t);
64
64
  Eigen::Vector3d get_v_world_foot(HumanoidRobot::Side side, double t);
65
65
 
66
+ double get_yaw_world_left(double t);
67
+ double get_yaw_world_right(double t);
68
+ double get_yaw_world_foot(HumanoidRobot::Side side, double t);
69
+ double get_yaw_world_trunk(double t);
70
+
66
71
  Eigen::Vector3d get_p_world_CoM(double t);
67
72
  Eigen::Vector3d get_v_world_CoM(double t);
68
73
  Eigen::Vector3d get_a_world_CoM(double t);
@@ -172,36 +177,38 @@ public:
172
177
  /**
173
178
  * @brief Replans the supports for a given trajectory given a footsteps planner.
174
179
  */
175
- std::vector<FootstepsPlanner::Support> replan_supports(FootstepsPlanner& planner, Trajectory& trajectory, double t_replan, double t_last_replan);
180
+ std::vector<FootstepsPlanner::Support> replan_supports(FootstepsPlanner& planner, Trajectory& trajectory,
181
+ double t_replan, double t_last_replan);
176
182
 
177
183
  double last_com_planning_duration = 0.;
178
184
  double last_feet_planning_duration = 0.;
179
185
 
180
186
  /**
181
- * @brief Updates the supports to ensure DCM viability by adjusting the
187
+ * @brief Updates the supports to ensure DCM viability by adjusting the
182
188
  * duration and the target of the current swing trajectory.
183
189
  * @param t Current time
184
190
  * @param supports Planned supports
185
191
  * @param world_target_zmp Target ZMP for the flying foot in world frame
186
192
  * @param world_measured_dcm Measured DCM in world frame
187
193
  */
188
- std::vector<FootstepsPlanner::Support> update_supports(double t, std::vector<FootstepsPlanner::Support> supports,
189
- Eigen::Vector2d world_target_zmp, Eigen::Vector2d world_measured_dcm);
194
+ std::vector<FootstepsPlanner::Support> update_supports(double t, std::vector<FootstepsPlanner::Support> supports,
195
+ Eigen::Vector2d world_target_zmp,
196
+ Eigen::Vector2d world_measured_dcm);
190
197
 
191
198
  /**
192
- * @brief Computes the best ZMP in the support polygon to move de DCM from
199
+ * @brief Computes the best ZMP in the support polygon to move de DCM from
193
200
  * world_dcm_start to world_dcm_end in duration.
194
201
  * @param world_dcm_start Initial DCM position in world frame
195
202
  * @param world_dcm_end Desired final DCM position in world frame
196
203
  * @param duration Duration
197
204
  * @param support Support
198
205
  */
199
- Eigen::Vector2d get_optimal_zmp(Eigen::Vector2d world_dcm_start, Eigen::Vector2d world_dcm_end,
200
- double duration, FootstepsPlanner::Support& support);
206
+ Eigen::Vector2d get_optimal_zmp(Eigen::Vector2d world_dcm_start, Eigen::Vector2d world_dcm_end, double duration,
207
+ FootstepsPlanner::Support& support);
201
208
 
202
209
  int support_default_timesteps(FootstepsPlanner::Support& support);
203
210
  double support_default_duration(FootstepsPlanner::Support& support);
204
-
211
+
205
212
  bool soft = false;
206
213
 
207
214
  protected:
@@ -214,10 +221,12 @@ protected:
214
221
  double omega;
215
222
  double omega_2;
216
223
 
217
- void constrain_lipm(problem::Problem& problem, LIPM& lipm, FootstepsPlanner::Support& support, double omega_2, HumanoidParameters& parameters);
224
+ void constrain_lipm(problem::Problem& problem, LIPM& lipm, FootstepsPlanner::Support& support, double omega_2,
225
+ HumanoidParameters& parameters);
218
226
 
219
- void plan_com(Trajectory& trajectory, std::vector<FootstepsPlanner::Support>& supports, Eigen::Vector2d initial_pos,
220
- Eigen::Vector2d initial_vel = Eigen::Vector2d::Zero(), Eigen::Vector2d initial_acc = Eigen::Vector2d::Zero());
227
+ void plan_com(Trajectory& trajectory, std::vector<FootstepsPlanner::Support>& supports, Eigen::Vector2d initial_pos,
228
+ Eigen::Vector2d initial_vel = Eigen::Vector2d::Zero(),
229
+ Eigen::Vector2d initial_acc = Eigen::Vector2d::Zero());
221
230
 
222
231
  void plan_dbl_support(Trajectory& trajectory, int part_index);
223
232
  void plan_sgl_support(Trajectory& trajectory, int part_index, Trajectory* old_trajectory);
@@ -4,7 +4,7 @@
4
4
  namespace placo::kinematics
5
5
  {
6
6
  ManipulabilityTask::ManipulabilityTask(model::RobotWrapper::FrameIndex frame_index, Type type, double lambda)
7
- : frame_index(frame_index), type(type), lambda(lambda)
7
+ : frame_index(frame_index), lambda(lambda), type(type)
8
8
  {
9
9
  }
10
10
 
@@ -171,11 +171,6 @@ Expression Integrator::expr_t(double t, int diff)
171
171
  {
172
172
  t -= t_start;
173
173
 
174
- if (t < 0 || t > variable->size() * dt)
175
- {
176
- throw std::runtime_error("expr_t called with a t out of the scope of the integrator");
177
- }
178
-
179
174
  int step = std::max<int>(std::min<int>(variable->size() - 1, t / dt), 0);
180
175
 
181
176
  if (diff == order)
@@ -190,7 +185,7 @@ Expression Integrator::expr_t(double t, int diff)
190
185
  Eigen::MatrixXd Ar = AB.first;
191
186
  Eigen::MatrixXd Br = AB.second;
192
187
 
193
- Expression e = (Ar * expr(step)) + Br * variable->expr(step);
188
+ Expression e = (Ar * expr(step)) + Br * variable->expr(step, 1);
194
189
 
195
190
  if (diff > -1)
196
191
  {
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