placo 0.6.1__tar.gz → 0.7.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 (183) hide show
  1. {placo-0.6.1 → placo-0.7.4}/CMakeLists.txt +15 -6
  2. {placo-0.6.1 → placo-0.7.4}/Makefile +1 -1
  3. placo-0.7.4/PKG-INFO +60 -0
  4. placo-0.7.4/README.md +39 -0
  5. placo-0.7.4/bindings/doxystub.h +15 -0
  6. {placo-0.6.1 → placo-0.7.4}/bindings/expose-dynamics.cpp +26 -52
  7. {placo-0.6.1 → placo-0.7.4}/bindings/expose-footsteps.cpp +13 -12
  8. {placo-0.6.1 → placo-0.7.4}/bindings/expose-kinematics.cpp +18 -17
  9. {placo-0.6.1 → placo-0.7.4}/bindings/expose-parameters.cpp +6 -7
  10. {placo-0.6.1 → placo-0.7.4}/bindings/expose-problem.cpp +16 -14
  11. {placo-0.6.1 → placo-0.7.4}/bindings/expose-robot-wrapper.cpp +10 -19
  12. {placo-0.6.1 → placo-0.7.4}/bindings/expose-tools.cpp +36 -9
  13. {placo-0.6.1 → placo-0.7.4}/bindings/expose-utils.hpp +9 -0
  14. {placo-0.6.1 → placo-0.7.4}/bindings/expose-walk-pattern-generator.cpp +36 -11
  15. {placo-0.6.1 → placo-0.7.4}/bindings/module.cpp +0 -1
  16. {placo-0.6.1 → placo-0.7.4}/bindings/module.h +1 -2
  17. placo-0.7.4/build_wheel.sh +9 -0
  18. placo-0.7.4/placo.pyi +9582 -0
  19. {placo-0.6.1 → placo-0.7.4}/pyproject.toml +6 -7
  20. {placo-0.6.1 → placo-0.7.4}/python/placo_utils/visualization.py +7 -6
  21. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_orientation_task.cpp +1 -1
  22. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner.cpp +51 -54
  23. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner.h +21 -10
  24. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner_naive.cpp +0 -90
  25. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/humanoid_parameters.cpp +7 -52
  26. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/humanoid_parameters.h +17 -49
  27. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/humanoid_robot.cpp +2 -2
  28. placo-0.7.4/src/placo/humanoid/kick.cpp +44 -0
  29. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/lipm.cpp +36 -8
  30. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/lipm.h +27 -12
  31. placo-0.7.4/src/placo/humanoid/swing_foot_cubic.cpp +56 -0
  32. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot_cubic.h +4 -3
  33. placo-0.7.4/src/placo/humanoid/walk_pattern_generator.cpp +695 -0
  34. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/walk_pattern_generator.h +78 -50
  35. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/walk_tasks.cpp +14 -0
  36. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/walk_tasks.h +11 -0
  37. placo-0.7.4/src/placo/kinematics/joint_space_half_spaces_constraint.cpp +43 -0
  38. placo-0.7.4/src/placo/kinematics/joint_space_half_spaces_constraint.h +32 -0
  39. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/kinematics_solver.cpp +6 -0
  40. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/kinematics_solver.h +9 -0
  41. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_orientation_task.cpp +5 -5
  42. {placo-0.6.1 → placo-0.7.4}/src/placo/model/robot_wrapper.cpp +4 -5
  43. {placo-0.6.1 → placo-0.7.4}/src/placo/model/robot_wrapper.h +9 -0
  44. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/integrator.cpp +5 -0
  45. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/integrator.h +1 -1
  46. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/polygon_constraint.cpp +1 -1
  47. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/problem.cpp +0 -1
  48. placo-0.7.4/src/placo/problem/problem_polynom.cpp +30 -0
  49. placo-0.7.4/src/placo/problem/problem_polynom.h +37 -0
  50. placo-0.7.4/src/placo/tools/directions.cpp +42 -0
  51. placo-0.7.4/src/placo/tools/directions.h +22 -0
  52. placo-0.7.4/src/placo/tools/polynom.cpp +41 -0
  53. placo-0.7.4/src/placo/tools/polynom.h +33 -0
  54. placo-0.7.4/src/placo/tools/segment.cpp +103 -0
  55. placo-0.7.4/src/placo/tools/segment.h +80 -0
  56. placo-0.6.1/PKG-INFO +0 -56
  57. placo-0.6.1/README.md +0 -34
  58. placo-0.6.1/bindings/registry.cpp +0 -23
  59. placo-0.6.1/bindings/registry.h +0 -95
  60. placo-0.6.1/doxygen_parse.py +0 -199
  61. placo-0.6.1/placo.pyi +0 -7541
  62. placo-0.6.1/src/placo/humanoid/kick.cpp +0 -44
  63. placo-0.6.1/src/placo/humanoid/swing_foot_cubic.cpp +0 -45
  64. placo-0.6.1/src/placo/humanoid/walk_pattern_generator.cpp +0 -685
  65. placo-0.6.1/stubs.py +0 -262
  66. {placo-0.6.1 → placo-0.7.4}/.clang-format +0 -0
  67. {placo-0.6.1 → placo-0.7.4}/.gitattributes +0 -0
  68. {placo-0.6.1 → placo-0.7.4}/.gitignore +0 -0
  69. {placo-0.6.1 → placo-0.7.4}/.readthedocs.yaml +0 -0
  70. {placo-0.6.1 → placo-0.7.4}/Doxyfile +0 -0
  71. {placo-0.6.1 → placo-0.7.4}/LICENSE +0 -0
  72. {placo-0.6.1 → placo-0.7.4}/bindings/expose-eigen.cpp +0 -0
  73. {placo-0.6.1 → placo-0.7.4}/python/.vscode/settings.json +0 -0
  74. {placo-0.6.1 → placo-0.7.4}/python/Makefile +0 -0
  75. {placo-0.6.1 → placo-0.7.4}/python/placo_utils/__init__.py +0 -0
  76. {placo-0.6.1 → placo-0.7.4}/python/placo_utils/tf.py +0 -0
  77. {placo-0.6.1 → placo-0.7.4}/python/placo_utils/view.py +0 -0
  78. {placo-0.6.1 → placo-0.7.4}/python/run_tests.sh +0 -0
  79. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
  80. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
  81. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/com_task.cpp +0 -0
  82. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/com_task.h +0 -0
  83. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/constraint.cpp +0 -0
  84. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/constraint.h +0 -0
  85. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/contacts.cpp +0 -0
  86. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/contacts.h +0 -0
  87. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/dynamics_solver.cpp +0 -0
  88. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/dynamics_solver.h +0 -0
  89. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/frame_task.cpp +0 -0
  90. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/frame_task.h +0 -0
  91. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/gear_task.cpp +0 -0
  92. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/gear_task.h +0 -0
  93. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/joints_task.cpp +0 -0
  94. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/joints_task.h +0 -0
  95. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/orientation_task.cpp +0 -0
  96. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/orientation_task.h +0 -0
  97. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/position_task.cpp +0 -0
  98. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/position_task.h +0 -0
  99. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_frame_task.cpp +0 -0
  100. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_frame_task.h +0 -0
  101. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_orientation_task.h +0 -0
  102. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_position_task.cpp +0 -0
  103. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_position_task.h +0 -0
  104. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/task.cpp +0 -0
  105. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/task.h +0 -0
  106. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/torque_task.cpp +0 -0
  107. {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/torque_task.h +0 -0
  108. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/foot_trajectory.cpp +0 -0
  109. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/foot_trajectory.h +0 -0
  110. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner_naive.h +0 -0
  111. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner_repetitive.cpp +0 -0
  112. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner_repetitive.h +0 -0
  113. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/humanoid_robot.h +0 -0
  114. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/kick.h +0 -0
  115. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot.cpp +0 -0
  116. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot.h +0 -0
  117. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot_quintic.cpp +0 -0
  118. {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot_quintic.h +0 -0
  119. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
  120. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
  121. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/axis_align_task.cpp +0 -0
  122. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/axis_align_task.h +0 -0
  123. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
  124. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
  125. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/com_polygon_constraint.cpp +0 -0
  126. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/com_polygon_constraint.h +0 -0
  127. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/com_task.cpp +0 -0
  128. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/com_task.h +0 -0
  129. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/cone_constraint.cpp +0 -0
  130. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/cone_constraint.h +0 -0
  131. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/constraint.cpp +0 -0
  132. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/constraint.h +0 -0
  133. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/distance_task.cpp +0 -0
  134. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/distance_task.h +0 -0
  135. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/frame_task.cpp +0 -0
  136. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/frame_task.h +0 -0
  137. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/gear_task.cpp +0 -0
  138. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/gear_task.h +0 -0
  139. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/joints_task.cpp +0 -0
  140. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/joints_task.h +0 -0
  141. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/kinetic_energy_regularization_task.cpp +0 -0
  142. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/kinetic_energy_regularization_task.h +0 -0
  143. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/manipulability_task.cpp +0 -0
  144. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/manipulability_task.h +0 -0
  145. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/orientation_task.cpp +0 -0
  146. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/orientation_task.h +0 -0
  147. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/position_task.cpp +0 -0
  148. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/position_task.h +0 -0
  149. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/regularization_task.cpp +0 -0
  150. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/regularization_task.h +0 -0
  151. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_frame_task.cpp +0 -0
  152. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_frame_task.h +0 -0
  153. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_orientation_task.h +0 -0
  154. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_position_task.cpp +0 -0
  155. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_position_task.h +0 -0
  156. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/task.cpp +0 -0
  157. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/task.h +0 -0
  158. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/wheel_task.cpp +0 -0
  159. {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/wheel_task.h +0 -0
  160. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/constraint.cpp +0 -0
  161. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/constraint.h +0 -0
  162. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/expression.cpp +0 -0
  163. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/expression.h +0 -0
  164. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/polygon_constraint.h +0 -0
  165. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/problem.h +0 -0
  166. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/qp_error.cpp +0 -0
  167. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/qp_error.h +0 -0
  168. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/sparsity.cpp +0 -0
  169. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/sparsity.h +0 -0
  170. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/variable.cpp +0 -0
  171. {placo-0.6.1 → placo-0.7.4}/src/placo/problem/variable.h +0 -0
  172. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/axises_mask.cpp +0 -0
  173. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/axises_mask.h +0 -0
  174. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/cubic_spline.cpp +0 -0
  175. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/cubic_spline.h +0 -0
  176. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/cubic_spline_3d.cpp +0 -0
  177. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/cubic_spline_3d.h +0 -0
  178. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/prioritized.cpp +0 -0
  179. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/prioritized.h +0 -0
  180. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/utils.cpp +0 -0
  181. {placo-0.6.1 → placo-0.7.4}/src/placo/tools/utils.h +0 -0
  182. {placo-0.6.1 → placo-0.7.4}/tweak_sdist.sh +0 -0
  183. {placo-0.6.1 → placo-0.7.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
 
@@ -122,7 +127,7 @@ target_link_libraries(libplaco PUBLIC
122
127
  ${PROTOBUF_LIBRARIES}
123
128
  ${PROTOBUF_LIBRARIES}
124
129
  )
125
- target_compile_definitions(libplaco PUBLIC -DPINOCCHIO_WITH_HPP_FCL)
130
+ target_compile_definitions(libplaco PUBLIC)
126
131
 
127
132
  if(TARGET rhoban_utils)
128
133
  message("Placo: Rhoban utils is present, enabling it")
@@ -134,6 +139,7 @@ set(CMAKE_SHARED_MODULE_PREFIX "")
134
139
 
135
140
  find_package(Python3 REQUIRED)
136
141
  find_package(Boost COMPONENTS python REQUIRED)
142
+ find_package(Python REQUIRED COMPONENTS Interpreter)
137
143
 
138
144
  add_library(placo MODULE
139
145
  bindings/expose-eigen.cpp
@@ -146,16 +152,19 @@ add_library(placo MODULE
146
152
  bindings/expose-walk-pattern-generator.cpp
147
153
  bindings/expose-dynamics.cpp
148
154
  bindings/module.cpp
149
- bindings/registry.cpp
150
155
  )
151
156
  set_target_properties(placo PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PYTHON_SITELIB})
152
157
 
153
158
  target_link_libraries(placo ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} libplaco)
154
159
  target_include_directories(placo PRIVATE ${PYTHON_INCLUDE_DIRS})
155
160
 
156
- add_custom_command(TARGET placo POST_BUILD
157
- COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/stubs.py > placo.pyi
158
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${PYTHON_SITELIB}
161
+ add_custom_command(
162
+ TARGET placo POST_BUILD
163
+ COMMAND doxystub
164
+ --module placo
165
+ --doxygen_directory "${CMAKE_CURRENT_SOURCE_DIR}"
166
+ --output "${CMAKE_BINARY_DIR}/${PYTHON_SITELIB}/placo.pyi"
167
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/${PYTHON_SITELIB}"
159
168
  COMMENT "Generating stubs..."
160
169
  )
161
170
 
@@ -170,4 +179,4 @@ set_target_properties(libplaco PROPERTIES INSTALL_RPATH "\$ORIGIN")
170
179
  install(TARGETS libplaco DESTINATION lib)
171
180
  install(TARGETS placo DESTINATION ${PYTHON_SITELIB})
172
181
  install(FILES ${CMAKE_BINARY_DIR}/${PYTHON_SITELIB}/placo.pyi DESTINATION ${PYTHON_SITELIB})
173
- install(DIRECTORY ${CMAKE_BINARY_DIR}/${PYTHON_SITELIB}/placo_utils DESTINATION ${PYTHON_SITELIB})
182
+ install(DIRECTORY ${CMAKE_BINARY_DIR}/${PYTHON_SITELIB}/placo_utils DESTINATION ${PYTHON_SITELIB})
@@ -2,7 +2,7 @@
2
2
  # Building Python wheel
3
3
  all:
4
4
  @rm -rf dist/*
5
- python -m build --sdist --wheel
5
+ bash build_wheel.sh
6
6
  bash tweak_sdist.sh
7
7
 
8
8
  upload:
placo-0.7.4/PKG-INFO ADDED
@@ -0,0 +1,60 @@
1
+ Metadata-Version: 2.4
2
+ Name: placo
3
+ Version: 0.7.4
4
+ Summary: PlaCo: Rhoban Planning and Control
5
+ Requires-Python: >= 3.9
6
+ License-Expression: MIT
7
+ Author-email: Rhoban team <team@rhoban.com>
8
+ Project-URL: Changelog, https://github.com/rhoban/placo/blob/main/CHANGELOG.md
9
+ Home-page: https://placo.readthedocs.io/en/latest/
10
+ Project-URL: Repository, https://github.com/rhoban/placo.git
11
+ Requires-Dist: cmeel
12
+ Requires-Dist: eiquadprog >= 1.2.6, < 2
13
+ Requires-Dist: pin >= 3
14
+ Requires-Dist: rhoban-cmeel-jsoncpp
15
+ Requires-Dist: meshcat
16
+ Requires-Dist: ischedule
17
+ Provides-Extra: build
18
+ Requires-Dist: pin[build] >= 3 ; extra == "build"
19
+ Requires-Dist: doxystub ; extra == "build"
20
+ Description-Content-Type: text/markdown
21
+
22
+ <img width="400" src="https://placo.readthedocs.io/en/latest/_static/placo.png" />
23
+
24
+ ## Planning & Control
25
+
26
+ PlaCo is Rhoban's planning and control library. It is built on the top of [pinocchio](https://github.com/stack-of-tasks/pinocchio), [eiquadprog](https://github.com/stack-of-tasks/eiquadprog) QP solver, and fully written in C++ with Python bindings, allowing fast prototyping with good runtime performances. It features task-space inverse kinematics and dynamics (see below) high-level API for whole-body control tasks.
27
+
28
+ ### Task-Space Inverse Kinematics
29
+
30
+ [![Quadruoped demo](https://github.com/Rhoban/placo-examples/blob/master/kinematics/videos/quadruped_targets.gif?raw=true)](https://github.com/Rhoban/placo-examples/blob/master/kinematics/videos/quadruped_targets.mp4?raw=true)
31
+
32
+ High-level API to specify tasks for constrained inverse kinematics (IK).
33
+
34
+ - [See documentation](https://placo.readthedocs.io/en/latest/kinematics/getting_started.html)
35
+ - [Examples](https://placo.readthedocs.io/en/latest/kinematics/examples_gallery.html)
36
+
37
+ ### Task-Space Inverse Dynamics
38
+
39
+ [![Megabot demo](https://github.com/Rhoban/placo-examples/blob/master/dynamics/videos/megabot.gif?raw=true)](https://github.com/Rhoban/placo-examples/blob/master/dynamics/videos/megabot.mp4?raw=true)
40
+
41
+ High-level API to specify tasks for constrained inverse dynamics (ID).
42
+
43
+ - [See documentation](https://placo.readthedocs.io/en/latest/dynamics/getting_started.html)
44
+ - [Examples](https://placo.readthedocs.io/en/latest/dynamics/examples_gallery.html)
45
+
46
+
47
+ ## Installing
48
+
49
+ PlaCo can be installed from ``pip``
50
+
51
+ ```
52
+ pip install placo
53
+ ```
54
+
55
+ Or [built from sources](https://placo.readthedocs.io/en/latest/basics/installation_source.html)
56
+
57
+ ## Resources
58
+
59
+ * [Documentation](https://placo.readthedocs.io/en/latest/)
60
+ * [Examples](https://github.com/rhoban/placo-examples) repository
placo-0.7.4/README.md ADDED
@@ -0,0 +1,39 @@
1
+ <img width="400" src="https://placo.readthedocs.io/en/latest/_static/placo.png" />
2
+
3
+ ## Planning & Control
4
+
5
+ PlaCo is Rhoban's planning and control library. It is built on the top of [pinocchio](https://github.com/stack-of-tasks/pinocchio), [eiquadprog](https://github.com/stack-of-tasks/eiquadprog) QP solver, and fully written in C++ with Python bindings, allowing fast prototyping with good runtime performances. It features task-space inverse kinematics and dynamics (see below) high-level API for whole-body control tasks.
6
+
7
+ ### Task-Space Inverse Kinematics
8
+
9
+ [![Quadruoped demo](https://github.com/Rhoban/placo-examples/blob/master/kinematics/videos/quadruped_targets.gif?raw=true)](https://github.com/Rhoban/placo-examples/blob/master/kinematics/videos/quadruped_targets.mp4?raw=true)
10
+
11
+ High-level API to specify tasks for constrained inverse kinematics (IK).
12
+
13
+ - [See documentation](https://placo.readthedocs.io/en/latest/kinematics/getting_started.html)
14
+ - [Examples](https://placo.readthedocs.io/en/latest/kinematics/examples_gallery.html)
15
+
16
+ ### Task-Space Inverse Dynamics
17
+
18
+ [![Megabot demo](https://github.com/Rhoban/placo-examples/blob/master/dynamics/videos/megabot.gif?raw=true)](https://github.com/Rhoban/placo-examples/blob/master/dynamics/videos/megabot.mp4?raw=true)
19
+
20
+ High-level API to specify tasks for constrained inverse dynamics (ID).
21
+
22
+ - [See documentation](https://placo.readthedocs.io/en/latest/dynamics/getting_started.html)
23
+ - [Examples](https://placo.readthedocs.io/en/latest/dynamics/examples_gallery.html)
24
+
25
+
26
+ ## Installing
27
+
28
+ PlaCo can be installed from ``pip``
29
+
30
+ ```
31
+ pip install placo
32
+ ```
33
+
34
+ Or [built from sources](https://placo.readthedocs.io/en/latest/basics/installation_source.html)
35
+
36
+ ## Resources
37
+
38
+ * [Documentation](https://placo.readthedocs.io/en/latest/)
39
+ * [Examples](https://github.com/rhoban/placo-examples) repository
@@ -0,0 +1,15 @@
1
+ #pragma once
2
+
3
+ #include <boost/python.hpp>
4
+
5
+ /**
6
+ * This wrapper adds a __cxx_class__ method on the exposed class, allowing to retrieve the original
7
+ * C++ type of the object from Python.
8
+ */
9
+ template <class W, class X1 = boost::python::detail::not_specified, class X2 = boost::python::detail::not_specified,
10
+ class X3 = boost::python::detail::not_specified, typename... Args>
11
+ boost::python::class_<W, X1, X2, X3> class__(Args... args)
12
+ {
13
+ return boost::python::class_<W, X1, X2>(args...).def(
14
+ "__cxx_class__", +[]() { return boost::core::demangle(typeid(W).name()); });
15
+ }
@@ -2,11 +2,13 @@
2
2
 
3
3
  #include "expose-utils.hpp"
4
4
  #include "module.h"
5
- #include "registry.h"
5
+
6
+ #include "doxystub.h"
6
7
  #include "placo/model/robot_wrapper.h"
7
8
  #include "placo/dynamics/dynamics_solver.h"
8
9
  #include <Eigen/Dense>
9
10
  #include <boost/python.hpp>
11
+ #include <eigenpy/eigen-to-python.hpp>
10
12
 
11
13
  using namespace placo;
12
14
  using namespace placo::dynamics;
@@ -22,12 +24,9 @@ void exposeDynamics()
22
24
  {
23
25
  class__<DynamicsSolver::Result>("DynamicsSolverResult")
24
26
  .add_property("success", &DynamicsSolver::Result::success)
25
- .add_property(
26
- "tau", +[](const DynamicsSolver::Result& result) { return result.tau; })
27
- .add_property(
28
- "qdd", +[](const DynamicsSolver::Result& result) { return result.qdd; })
29
- .add_property(
30
- "tau_contacts", +[](const DynamicsSolver::Result& result) { return result.tau_contacts; })
27
+ .def_readwrite("tau", &DynamicsSolver::Result::tau)
28
+ .def_readwrite("qdd", &DynamicsSolver::Result::qdd)
29
+ .def_readwrite("tau_contacts", &DynamicsSolver::Result::tau_contacts)
31
30
  .def(
32
31
  "tau_dict", +[](const DynamicsSolver::Result& result, RobotWrapper& robot) {
33
32
  boost::python::dict dict;
@@ -46,17 +45,14 @@ void exposeDynamics()
46
45
  .def_readwrite("weight_forces", &Contact::weight_forces)
47
46
  .def_readwrite("weight_tangentials", &Contact::weight_tangentials)
48
47
  .def_readwrite("weight_moments", &Contact::weight_moments)
49
- .add_property(
50
- "wrench", +[](Contact& contact) { return contact.wrench; });
48
+ .def_readonly("wrench", &Contact::wrench);
51
49
 
52
50
  class__<PointContact, bases<Contact>>("PointContact", init<PositionTask&, bool>())
53
51
  .def(
54
52
  "position_task", +[](PointContact& contact) -> PositionTask& { return *contact.position_task; },
55
53
  return_internal_reference<>())
56
54
  .def_readwrite("unilateral", &PointContact::unilateral)
57
- .add_property(
58
- "R_world_surface", +[](PointContact& contact) { return contact.R_world_surface; },
59
- +[](PointContact& contact, Eigen::Matrix3d R) { contact.R_world_surface = R; });
55
+ .def_readwrite("R_world_surface", &PointContact::R_world_surface);
60
56
 
61
57
  class__<Contact6D, bases<Contact>>("Contact6D", init<FrameTask&, bool>())
62
58
  .def(
@@ -86,8 +82,7 @@ void exposeDynamics()
86
82
 
87
83
  class__<ExternalWrenchContact, bases<Contact>>("ExternalWrenchContact", init<RobotWrapper::FrameIndex>())
88
84
  .add_property("frame_index", &ExternalWrenchContact::frame_index)
89
- .add_property(
90
- "w_ext", +[](ExternalWrenchContact& contact) { return contact.w_ext; }, &ExternalWrenchContact::w_ext);
85
+ .def_readwrite("w_ext", &ExternalWrenchContact::w_ext);
91
86
 
92
87
  class__<PuppetContact, bases<Contact>>("PuppetContact", init<>());
93
88
 
@@ -164,10 +159,8 @@ void exposeDynamics()
164
159
  &DynamicsSolver::add_frame_task);
165
160
 
166
161
  class__<Task, bases<tools::Prioritized>, boost::noncopyable>("DynamicsTask", no_init)
167
- .add_property(
168
- "A", +[](const Task& task) { return task.A; })
169
- .add_property(
170
- "b", +[](const Task& task) { return task.b; })
162
+ .def_readwrite("A", &Task::A)
163
+ .def_readwrite("b", &Task::b)
171
164
  .add_property("kp", &Task::kp, &Task::kp)
172
165
  .add_property("kd", &Task::kd, &Task::kd)
173
166
  .add_property("error", &Task::error)
@@ -175,54 +168,35 @@ void exposeDynamics()
175
168
 
176
169
  class__<PositionTask, bases<Task>>("DynamicsPositionTask", init<RobotWrapper::FrameIndex, Eigen::Vector3d>())
177
170
  .add_property("frame_index", &PositionTask::frame_index)
178
- .add_property(
179
- "target_world", +[](const PositionTask& task) { return task.target_world; }, &PositionTask::target_world)
180
- .add_property(
181
- "dtarget_world", +[](const PositionTask& task) { return task.dtarget_world; }, &PositionTask::dtarget_world)
182
- .add_property(
183
- "ddtarget_world", +[](const PositionTask& task) { return task.dtarget_world; }, &PositionTask::ddtarget_world)
171
+ .def_readwrite("target_world", &PositionTask::target_world)
172
+ .def_readwrite("dtarget_world", &PositionTask::dtarget_world)
173
+ .def_readwrite("ddtarget_world", &PositionTask::ddtarget_world)
184
174
  .add_property("mask", &PositionTask::mask, &PositionTask::mask);
185
175
 
186
176
  class__<CoMTask, bases<Task>>("DynamicsCoMTask", init<Eigen::Vector3d>())
187
- .add_property(
188
- "target_world", +[](const CoMTask& task) { return task.target_world; }, &CoMTask::target_world)
189
- .add_property(
190
- "dtarget_world", +[](const CoMTask& task) { return task.dtarget_world; }, &CoMTask::dtarget_world)
191
- .add_property(
192
- "ddtarget_world", +[](const CoMTask& task) { return task.dtarget_world; }, &CoMTask::ddtarget_world)
177
+ .def_readwrite("target_world", &CoMTask::target_world)
178
+ .def_readwrite("dtarget_world", &CoMTask::dtarget_world)
179
+ .def_readwrite("ddtarget_world", &CoMTask::ddtarget_world)
193
180
  .add_property("mask", &CoMTask::mask, &CoMTask::mask);
194
181
 
195
182
  class__<RelativePositionTask, bases<Task>>(
196
183
  "DynamicsRelativePositionTask", init<RobotWrapper::FrameIndex, RobotWrapper::FrameIndex, Eigen::Vector3d>())
197
- .add_property(
198
- "target", +[](const RelativePositionTask& task) { return task.target; }, &RelativePositionTask::target)
199
- .add_property(
200
- "dtarget", +[](const RelativePositionTask& task) { return task.dtarget; }, &RelativePositionTask::dtarget)
201
- .add_property(
202
- "ddtarget", +[](const RelativePositionTask& task) { return task.ddtarget; }, &RelativePositionTask::ddtarget)
184
+ .def_readwrite("target", &RelativePositionTask::target)
185
+ .def_readwrite("dtarget", &RelativePositionTask::dtarget)
186
+ .def_readwrite("ddtarget", &RelativePositionTask::ddtarget)
203
187
  .add_property("mask", &RelativePositionTask::mask, &RelativePositionTask::mask);
204
188
 
205
189
  class__<RelativeOrientationTask, bases<Task>>(
206
190
  "DynamicsRelativeOrientationTask", init<RobotWrapper::FrameIndex, RobotWrapper::FrameIndex, Eigen::Matrix3d>())
207
- .add_property(
208
- "R_a_b", +[](const RelativeOrientationTask& task) { return task.R_a_b; }, &RelativeOrientationTask::R_a_b)
209
- .add_property(
210
- "omega_a_b", +[](const RelativeOrientationTask& task) { return task.omega_a_b; },
211
- &RelativeOrientationTask::omega_a_b)
212
- .add_property(
213
- "domega_a_b", +[](const RelativeOrientationTask& task) { return task.domega_a_b; },
214
- &RelativeOrientationTask::domega_a_b)
191
+ .def_readwrite("R_a_b", &RelativeOrientationTask::R_a_b)
192
+ .def_readwrite("omega_a_b", &RelativeOrientationTask::omega_a_b)
193
+ .def_readwrite("domega_a_b", &RelativeOrientationTask::domega_a_b)
215
194
  .add_property("mask", &RelativeOrientationTask::mask, &RelativeOrientationTask::mask);
216
195
 
217
196
  class__<OrientationTask, bases<Task>>("DynamicsOrientationTask", init<RobotWrapper::FrameIndex, Eigen::Matrix3d>())
218
- .add_property(
219
- "R_world_frame", +[](const OrientationTask& task) { return task.R_world_frame; },
220
- &OrientationTask::R_world_frame)
221
- .add_property(
222
- "omega_world", +[](const OrientationTask& task) { return task.omega_world; }, &OrientationTask::omega_world)
223
- .add_property(
224
- "domega_world", +[](const OrientationTask& task) { return task.domega_world; },
225
- &OrientationTask::domega_world)
197
+ .def_readwrite("R_world_frame", &OrientationTask::R_world_frame)
198
+ .def_readwrite("omega_world", &OrientationTask::omega_world)
199
+ .def_readwrite("domega_world", &OrientationTask::domega_world)
226
200
  .add_property("mask", &OrientationTask::mask, &OrientationTask::mask);
227
201
 
228
202
  class__<FrameTask>("DynamicsFrameTask", init<>())
@@ -2,12 +2,13 @@
2
2
 
3
3
  #include "expose-utils.hpp"
4
4
  #include "module.h"
5
- #include "registry.h"
5
+ #include "doxystub.h"
6
6
  #include "placo/humanoid/footsteps_planner.h"
7
7
  #include "placo/humanoid/footsteps_planner_naive.h"
8
8
  #include "placo/humanoid/footsteps_planner_repetitive.h"
9
9
  #include <Eigen/Dense>
10
10
  #include <boost/python.hpp>
11
+ #include <eigenpy/eigen-to-python.hpp>
11
12
 
12
13
  using namespace boost::python;
13
14
  using namespace placo::humanoid;
@@ -20,37 +21,37 @@ void exposeFootsteps()
20
21
  .value("right", HumanoidRobot::Side::Right);
21
22
 
22
23
  class__<FootstepsPlanner::Footstep>("Footstep", init<double, double>())
23
- .def("support_polygon", &FootstepsPlanner::Footstep::support_polygon)
24
24
  .add_property("side", &FootstepsPlanner::Footstep::side, &FootstepsPlanner::Footstep::side)
25
- .add_property(
26
- "frame", +[](const FootstepsPlanner::Footstep& footstep) { return footstep.frame; },
27
- &FootstepsPlanner::Footstep::frame)
28
25
  .add_property("foot_length", &FootstepsPlanner::Footstep::foot_length, &FootstepsPlanner::Footstep::foot_length)
29
26
  .add_property("foot_width", &FootstepsPlanner::Footstep::foot_width, &FootstepsPlanner::Footstep::foot_width)
27
+ .add_property("frame", &FootstepsPlanner::Footstep::frame, &FootstepsPlanner::Footstep::frame)
30
28
  .def("support_polygon", &FootstepsPlanner::Footstep::support_polygon)
31
29
  .def("overlap", &FootstepsPlanner::Footstep::overlap)
32
30
  .def("polygon_contains", &FootstepsPlanner::Footstep::polygon_contains)
33
- .staticmethod("polygon_contains")
34
- .add_property("kick", &FootstepsPlanner::Footstep::kick, &FootstepsPlanner::Footstep::kick);
31
+ .staticmethod("polygon_contains");
35
32
 
36
- class__<FootstepsPlanner::Support>("Support")
33
+ class__<FootstepsPlanner::Support>("Support", init<>())
37
34
  .def("support_polygon", &FootstepsPlanner::Support::support_polygon)
38
35
  .def("frame", &FootstepsPlanner::Support::frame)
39
36
  .def("footstep_frame", &FootstepsPlanner::Support::footstep_frame)
37
+ .def("apply_offset", &FootstepsPlanner::Support::apply_offset)
40
38
  .def("side", &FootstepsPlanner::Support::side)
41
39
  .def("is_both", &FootstepsPlanner::Support::is_both)
42
40
  .def(
43
41
  "set_start", +[](FootstepsPlanner::Support& support, bool b) { support.start = b; })
44
42
  .def(
45
43
  "set_end", +[](FootstepsPlanner::Support& support, bool b) { support.end = b; })
46
- .def("kick", &FootstepsPlanner::Support::kick)
47
- .add_property("footsteps", &FootstepsPlanner::Support::footsteps)
44
+ .add_property("footsteps", &FootstepsPlanner::Support::footsteps, &FootstepsPlanner::Support::footsteps)
45
+ .add_property("t_start", &FootstepsPlanner::Support::t_start, &FootstepsPlanner::Support::t_start)
46
+ .add_property("elapsed_ratio", &FootstepsPlanner::Support::elapsed_ratio,
47
+ &FootstepsPlanner::Support::elapsed_ratio)
48
+ .add_property("time_ratio", &FootstepsPlanner::Support::time_ratio, &FootstepsPlanner::Support::time_ratio)
48
49
  .add_property("start", &FootstepsPlanner::Support::start, &FootstepsPlanner::Support::start)
49
- .add_property("end", &FootstepsPlanner::Support::end, &FootstepsPlanner::Support::end);
50
+ .add_property("end", &FootstepsPlanner::Support::end, &FootstepsPlanner::Support::end)
51
+ .add_property("replanned", &FootstepsPlanner::Support::replanned, &FootstepsPlanner::Support::replanned);
50
52
 
51
53
  class__<FootstepsPlanner, boost::noncopyable>("FootstepsPlanner", no_init)
52
54
  .def("make_supports", &FootstepsPlanner::make_supports)
53
- .def("add_first_support", &FootstepsPlanner::add_first_support)
54
55
  .def("opposite_footstep", &FootstepsPlanner::opposite_footstep);
55
56
 
56
57
  class__<FootstepsPlannerNaive, bases<FootstepsPlanner>>("FootstepsPlannerNaive", init<HumanoidParameters&>())
@@ -2,11 +2,12 @@
2
2
 
3
3
  #include "expose-utils.hpp"
4
4
  #include "module.h"
5
- #include "registry.h"
5
+ #include "doxystub.h"
6
6
  #include "placo/kinematics/kinematics_solver.h"
7
7
  #include <boost/python/return_internal_reference.hpp>
8
8
  #include <Eigen/Dense>
9
9
  #include <boost/python.hpp>
10
+ #include <eigenpy/eigen-to-python.hpp>
10
11
 
11
12
  using namespace boost::python;
12
13
  using namespace placo;
@@ -92,6 +93,10 @@ void exposeKinematics()
92
93
  .def("add_com_polygon_constraint", &KinematicsSolver::add_com_polygon_constraint,
93
94
  return_internal_reference<>())
94
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
+
95
100
  // Cone constraint
96
101
  .def<ConeConstraint& (KinematicsSolver::*)(std::string, std::string, double)>(
97
102
  "add_cone_constraint", &KinematicsSolver::add_cone_constraint, return_internal_reference<>())
@@ -117,10 +122,8 @@ void exposeKinematics()
117
122
  .def("solve", &KinematicsSolver::solve);
118
123
 
119
124
  class__<Task, bases<tools::Prioritized>, boost::noncopyable>("Task", no_init)
120
- .add_property(
121
- "A", +[](const Task& task) { return task.A; })
122
- .add_property(
123
- "b", +[](const Task& task) { return task.b; })
125
+ .def_readonly("A", &Task::A)
126
+ .def_readonly("b", &Task::b)
124
127
  .def("error", &Task::error)
125
128
  .def("error_norm", &Task::error_norm)
126
129
  .def("update", &Task::update);
@@ -135,8 +138,7 @@ void exposeKinematics()
135
138
  "RelativePositionTask", init<RobotWrapper::FrameIndex, RobotWrapper::FrameIndex, Eigen::Vector3d>())
136
139
  .add_property("frame_a", &RelativePositionTask::frame_a)
137
140
  .add_property("frame_b", &RelativePositionTask::frame_b)
138
- .add_property(
139
- "target", +[](const RelativePositionTask& task) { return task.target; }, &RelativePositionTask::target)
141
+ .def_readwrite("target", &RelativePositionTask::target)
140
142
  .add_property("mask", &RelativePositionTask::mask, &RelativePositionTask::mask);
141
143
 
142
144
  class__<CoMTask, bases<Task>>("CoMTask", init<Eigen::Vector3d>())
@@ -146,17 +148,14 @@ void exposeKinematics()
146
148
 
147
149
  class__<OrientationTask, bases<Task>>("OrientationTask", init<RobotWrapper::FrameIndex, Eigen::Matrix3d>())
148
150
  .add_property("frame_index", &OrientationTask::frame_index)
149
- .add_property(
150
- "R_world_frame", +[](const OrientationTask& task) { return task.R_world_frame; },
151
- &OrientationTask::R_world_frame)
151
+ .def_readwrite("R_world_frame", &OrientationTask::R_world_frame)
152
152
  .add_property("mask", &OrientationTask::mask, &OrientationTask::mask);
153
153
 
154
154
  class__<RelativeOrientationTask, bases<Task>>(
155
155
  "RelativeOrientationTask", init<RobotWrapper::FrameIndex, RobotWrapper::FrameIndex, Eigen::Matrix3d>())
156
156
  .add_property("frame_a", &RelativeOrientationTask::frame_a)
157
157
  .add_property("frame_b", &RelativeOrientationTask::frame_b)
158
- .add_property(
159
- "R_a_b", +[](const RelativeOrientationTask& task) { return task.R_a_b; }, &RelativeOrientationTask::R_a_b)
158
+ .def_readwrite("R_a_b", &RelativeOrientationTask::R_a_b)
160
159
  .add_property("mask", &RelativeOrientationTask::mask, &RelativeOrientationTask::mask);
161
160
 
162
161
  class__<FrameTask>("FrameTask", init<>())
@@ -186,9 +185,7 @@ void exposeKinematics()
186
185
  .add_property("frame_index", &AxisAlignTask::frame_index)
187
186
  .add_property(
188
187
  "axis_frame", +[](const AxisAlignTask& task) { return task.axis_frame; }, &AxisAlignTask::axis_frame)
189
- .add_property(
190
- "targetAxis_world", +[](const AxisAlignTask& task) { return task.targetAxis_world; },
191
- &AxisAlignTask::targetAxis_world);
188
+ .def_readwrite("targetAxis_world", &AxisAlignTask::targetAxis_world);
192
189
 
193
190
  class__<JointsTask, bases<Task>>("JointsTask", init<>())
194
191
  .def("set_joint", &JointsTask::set_joint)
@@ -206,8 +203,7 @@ void exposeKinematics()
206
203
  .add_property("joint", &WheelTask::joint)
207
204
  .add_property("radius", &WheelTask::radius)
208
205
  .add_property("omniwheel", &WheelTask::omniwheel)
209
- .add_property(
210
- "T_world_surface", +[](const WheelTask& task) { return task.T_world_surface; }, &WheelTask::T_world_surface);
206
+ .def_readwrite("T_world_surface", &WheelTask::T_world_surface);
211
207
 
212
208
  class__<DistanceTask, bases<Task>>("DistanceTask", init<RobotWrapper::FrameIndex, RobotWrapper::FrameIndex, double>())
213
209
  .add_property("frame_a", &DistanceTask::frame_a)
@@ -240,6 +236,11 @@ void exposeKinematics()
240
236
  .def_readwrite("omega", &CoMPolygonConstraint::omega)
241
237
  .def_readwrite("margin", &CoMPolygonConstraint::margin);
242
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
+
243
244
  class__<ConeConstraint, bases<Constraint>>(
244
245
  "ConeConstraint", init<model::RobotWrapper::FrameIndex, model::RobotWrapper::FrameIndex, double>())
245
246
  .def_readwrite("angle_max", &ConeConstraint::angle_max)
@@ -2,12 +2,13 @@
2
2
 
3
3
  #include "expose-utils.hpp"
4
4
  #include "module.h"
5
- #include "registry.h"
5
+ #include "doxystub.h"
6
6
  #include "placo/model/robot_wrapper.h"
7
7
  #include "placo/humanoid/humanoid_robot.h"
8
8
  #include "placo/humanoid/humanoid_parameters.h"
9
9
  #include <Eigen/Dense>
10
10
  #include <boost/python.hpp>
11
+ #include <eigenpy/eigen-to-python.hpp>
11
12
 
12
13
  using namespace boost::python;
13
14
  using namespace placo;
@@ -25,8 +26,6 @@ void exposeParameters()
25
26
  &HumanoidParameters::double_support_ratio)
26
27
  .add_property("startend_double_support_ratio", &HumanoidParameters::startend_double_support_ratio,
27
28
  &HumanoidParameters::startend_double_support_ratio)
28
- .add_property("kick_support_ratio", &HumanoidParameters::kick_support_ratio,
29
- &HumanoidParameters::kick_support_ratio)
30
29
  .add_property("planned_timesteps", &HumanoidParameters::planned_timesteps, &HumanoidParameters::planned_timesteps)
31
30
  .add_property("replan_timesteps", &HumanoidParameters::replan_timesteps, &HumanoidParameters::replan_timesteps)
32
31
  .add_property("zmp_margin", &HumanoidParameters::zmp_margin, &HumanoidParameters::zmp_margin)
@@ -50,13 +49,13 @@ void exposeParameters()
50
49
  .add_property("walk_max_dtheta", &HumanoidParameters::walk_max_dtheta, &HumanoidParameters::walk_max_dtheta)
51
50
  .add_property("walk_dtheta_spacing", &HumanoidParameters::walk_dtheta_spacing,
52
51
  &HumanoidParameters::walk_dtheta_spacing)
52
+ .add_property("op_space_polygon", &HumanoidParameters::op_space_polygon, &HumanoidParameters::op_space_polygon)
53
+ .add_property("dcm_offset_polygon", &HumanoidParameters::dcm_offset_polygon, &HumanoidParameters::dcm_offset_polygon)
53
54
  .def("dt", &HumanoidParameters::dt)
54
- .def("double_support_duration", &HumanoidParameters::double_support_duration)
55
- .def("startend_double_support_duration", &HumanoidParameters::startend_double_support_duration)
56
- .def("kick_support_duration", &HumanoidParameters::kick_support_duration)
57
55
  .def("double_support_timesteps", &HumanoidParameters::double_support_timesteps)
58
56
  .def("startend_double_support_timesteps", &HumanoidParameters::startend_double_support_timesteps)
59
- .def("kick_support_timesteps", &HumanoidParameters::kick_support_timesteps)
57
+ .def("double_support_duration", &HumanoidParameters::double_support_duration)
58
+ .def("startend_double_support_duration", &HumanoidParameters::startend_double_support_duration)
60
59
  .def("has_double_support", &HumanoidParameters::has_double_support)
61
60
  .def("ellipsoid_clip", &HumanoidParameters::ellipsoid_clip);
62
61
  }
@@ -5,17 +5,19 @@
5
5
 
6
6
  #include "expose-utils.hpp"
7
7
  #include "module.h"
8
- #include "registry.h"
8
+ #include "doxystub.h"
9
9
  #include "placo/problem/problem.h"
10
10
  #include "placo/problem/variable.h"
11
11
  #include "placo/problem/expression.h"
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>
18
19
  #include <boost/python.hpp>
20
+ #include <eigenpy/eigen-to-python.hpp>
19
21
 
20
22
  using namespace boost::python;
21
23
  using namespace placo;
@@ -23,6 +25,8 @@ using namespace placo::problem;
23
25
 
24
26
  BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(expr_overloads, expr, 0, 2);
25
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);
26
30
  BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(configure_overloads, configure, 1, 2);
27
31
 
28
32
  void exposeProblem()
@@ -84,19 +88,19 @@ void exposeProblem()
84
88
  .def("upper_shift_matrix", &Integrator::upper_shift_matrix)
85
89
  .staticmethod("upper_shift_matrix")
86
90
  .add_property("t_start", &Integrator::t_start, &Integrator::t_start)
87
- .add_property(
88
- "M", +[](const Integrator& i) { return i.M; })
89
- .add_property(
90
- "A", +[](const Integrator& i) { return i.A; })
91
- .add_property(
92
- "B", +[](const Integrator& i) { return i.B; })
93
- .add_property(
94
- "final_transition_matrix", +[](const Integrator& i) { return i.final_transition_matrix; })
91
+ .def_readonly("M", &Integrator::M)
92
+ .def_readonly("A", &Integrator::A)
93
+ .def_readonly("B", &Integrator::B)
94
+ .def_readonly("final_transition_matrix", &Integrator::final_transition_matrix)
95
95
  .def("expr", &Integrator::expr, integrator_expr_overloads())
96
- .def("expr_t", &Integrator::expr_t)
96
+ .def("expr_t", &Integrator::expr_t, integrator_expr_t_overloads())
97
97
  .def("value", &Integrator::value)
98
98
  .def("get_trajectory", &Integrator::get_trajectory);
99
99
 
100
+ class__<ProblemPolynom>("ProblemPolynom", init<Variable&>())
101
+ .def("expr", &ProblemPolynom::expr, problem_polynom_expr_overloads())
102
+ .def("get_polynom", &ProblemPolynom::get_polynom);
103
+
100
104
  class__<Integrator::Trajectory>("IntegratorTrajectory")
101
105
  .def("value", &Integrator::Trajectory::value)
102
106
  .def("duration", &Integrator::Trajectory::duration);
@@ -129,10 +133,8 @@ void exposeProblem()
129
133
  .def("expr", &Variable::expr, expr_overloads());
130
134
 
131
135
  class__<Expression>("Expression")
132
- .add_property(
133
- "A", +[](Expression& e) { return e.A; })
134
- .add_property(
135
- "b", +[](Expression& e) { return e.b; })
136
+ .def_readwrite("A", &Expression::A)
137
+ .def_readwrite("b", &Expression::b)
136
138
  .def("__len__", &Expression::rows)
137
139
  .def("is_scalar", &Expression::is_scalar)
138
140
  .def("is_constant", &Expression::is_constant)