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.
- {placo-0.6.1 → placo-0.7.4}/CMakeLists.txt +15 -6
- {placo-0.6.1 → placo-0.7.4}/Makefile +1 -1
- placo-0.7.4/PKG-INFO +60 -0
- placo-0.7.4/README.md +39 -0
- placo-0.7.4/bindings/doxystub.h +15 -0
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-dynamics.cpp +26 -52
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-footsteps.cpp +13 -12
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-kinematics.cpp +18 -17
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-parameters.cpp +6 -7
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-problem.cpp +16 -14
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-robot-wrapper.cpp +10 -19
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-tools.cpp +36 -9
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-utils.hpp +9 -0
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-walk-pattern-generator.cpp +36 -11
- {placo-0.6.1 → placo-0.7.4}/bindings/module.cpp +0 -1
- {placo-0.6.1 → placo-0.7.4}/bindings/module.h +1 -2
- placo-0.7.4/build_wheel.sh +9 -0
- placo-0.7.4/placo.pyi +9582 -0
- {placo-0.6.1 → placo-0.7.4}/pyproject.toml +6 -7
- {placo-0.6.1 → placo-0.7.4}/python/placo_utils/visualization.py +7 -6
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_orientation_task.cpp +1 -1
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner.cpp +51 -54
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner.h +21 -10
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner_naive.cpp +0 -90
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/humanoid_parameters.cpp +7 -52
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/humanoid_parameters.h +17 -49
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/humanoid_robot.cpp +2 -2
- placo-0.7.4/src/placo/humanoid/kick.cpp +44 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/lipm.cpp +36 -8
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/lipm.h +27 -12
- placo-0.7.4/src/placo/humanoid/swing_foot_cubic.cpp +56 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot_cubic.h +4 -3
- placo-0.7.4/src/placo/humanoid/walk_pattern_generator.cpp +695 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/walk_pattern_generator.h +78 -50
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/walk_tasks.cpp +14 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/walk_tasks.h +11 -0
- placo-0.7.4/src/placo/kinematics/joint_space_half_spaces_constraint.cpp +43 -0
- placo-0.7.4/src/placo/kinematics/joint_space_half_spaces_constraint.h +32 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/kinematics_solver.cpp +6 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/kinematics_solver.h +9 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_orientation_task.cpp +5 -5
- {placo-0.6.1 → placo-0.7.4}/src/placo/model/robot_wrapper.cpp +4 -5
- {placo-0.6.1 → placo-0.7.4}/src/placo/model/robot_wrapper.h +9 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/integrator.cpp +5 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/integrator.h +1 -1
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/polygon_constraint.cpp +1 -1
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/problem.cpp +0 -1
- placo-0.7.4/src/placo/problem/problem_polynom.cpp +30 -0
- placo-0.7.4/src/placo/problem/problem_polynom.h +37 -0
- placo-0.7.4/src/placo/tools/directions.cpp +42 -0
- placo-0.7.4/src/placo/tools/directions.h +22 -0
- placo-0.7.4/src/placo/tools/polynom.cpp +41 -0
- placo-0.7.4/src/placo/tools/polynom.h +33 -0
- placo-0.7.4/src/placo/tools/segment.cpp +103 -0
- placo-0.7.4/src/placo/tools/segment.h +80 -0
- placo-0.6.1/PKG-INFO +0 -56
- placo-0.6.1/README.md +0 -34
- placo-0.6.1/bindings/registry.cpp +0 -23
- placo-0.6.1/bindings/registry.h +0 -95
- placo-0.6.1/doxygen_parse.py +0 -199
- placo-0.6.1/placo.pyi +0 -7541
- placo-0.6.1/src/placo/humanoid/kick.cpp +0 -44
- placo-0.6.1/src/placo/humanoid/swing_foot_cubic.cpp +0 -45
- placo-0.6.1/src/placo/humanoid/walk_pattern_generator.cpp +0 -685
- placo-0.6.1/stubs.py +0 -262
- {placo-0.6.1 → placo-0.7.4}/.clang-format +0 -0
- {placo-0.6.1 → placo-0.7.4}/.gitattributes +0 -0
- {placo-0.6.1 → placo-0.7.4}/.gitignore +0 -0
- {placo-0.6.1 → placo-0.7.4}/.readthedocs.yaml +0 -0
- {placo-0.6.1 → placo-0.7.4}/Doxyfile +0 -0
- {placo-0.6.1 → placo-0.7.4}/LICENSE +0 -0
- {placo-0.6.1 → placo-0.7.4}/bindings/expose-eigen.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/python/.vscode/settings.json +0 -0
- {placo-0.6.1 → placo-0.7.4}/python/Makefile +0 -0
- {placo-0.6.1 → placo-0.7.4}/python/placo_utils/__init__.py +0 -0
- {placo-0.6.1 → placo-0.7.4}/python/placo_utils/tf.py +0 -0
- {placo-0.6.1 → placo-0.7.4}/python/placo_utils/view.py +0 -0
- {placo-0.6.1 → placo-0.7.4}/python/run_tests.sh +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/com_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/com_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/constraint.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/constraint.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/contacts.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/contacts.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/dynamics_solver.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/dynamics_solver.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/frame_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/frame_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/gear_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/gear_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/joints_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/joints_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/orientation_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/orientation_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/position_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/position_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_frame_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_frame_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_orientation_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_position_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/relative_position_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/torque_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/dynamics/torque_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/foot_trajectory.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/foot_trajectory.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner_naive.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner_repetitive.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/footsteps_planner_repetitive.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/humanoid_robot.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/kick.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot_quintic.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/humanoid/swing_foot_quintic.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/axis_align_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/axis_align_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/com_polygon_constraint.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/com_polygon_constraint.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/com_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/com_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/cone_constraint.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/cone_constraint.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/constraint.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/constraint.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/distance_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/distance_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/frame_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/frame_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/gear_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/gear_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/joints_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/joints_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/kinetic_energy_regularization_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/kinetic_energy_regularization_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/manipulability_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/manipulability_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/orientation_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/orientation_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/position_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/position_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/regularization_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/regularization_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_frame_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_frame_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_orientation_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_position_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/relative_position_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/wheel_task.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/kinematics/wheel_task.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/constraint.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/constraint.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/expression.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/expression.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/polygon_constraint.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/problem.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/qp_error.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/qp_error.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/sparsity.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/sparsity.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/variable.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/problem/variable.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/axises_mask.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/axises_mask.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/cubic_spline.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/cubic_spline.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/cubic_spline_3d.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/cubic_spline_3d.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/prioritized.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/prioritized.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/utils.cpp +0 -0
- {placo-0.6.1 → placo-0.7.4}/src/placo/tools/utils.h +0 -0
- {placo-0.6.1 → placo-0.7.4}/tweak_sdist.sh +0 -0
- {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
|
|
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(
|
|
157
|
-
|
|
158
|
-
|
|
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})
|
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
|
+
[](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
|
+
[](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
|
+
[](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
|
+
[](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
|
-
|
|
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
|
-
.
|
|
26
|
-
|
|
27
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
168
|
-
|
|
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
|
-
.
|
|
179
|
-
|
|
180
|
-
.
|
|
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
|
-
.
|
|
188
|
-
|
|
189
|
-
.
|
|
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
|
-
.
|
|
198
|
-
|
|
199
|
-
.
|
|
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
|
-
.
|
|
208
|
-
|
|
209
|
-
.
|
|
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
|
-
.
|
|
219
|
-
|
|
220
|
-
|
|
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 "
|
|
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
|
-
.
|
|
47
|
-
.add_property("
|
|
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 "
|
|
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
|
-
.
|
|
121
|
-
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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 "
|
|
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("
|
|
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 "
|
|
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
|
-
.
|
|
88
|
-
|
|
89
|
-
.
|
|
90
|
-
|
|
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
|
-
.
|
|
133
|
-
|
|
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)
|