placo 0.9.2__tar.gz → 0.9.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.9.2 → placo-0.9.4}/PKG-INFO +3 -3
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-footsteps.cpp +40 -6
- {placo-0.9.2 → placo-0.9.4}/pyproject.toml +3 -3
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/footsteps_planner.h +1 -1
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/footsteps_planner_naive.cpp +9 -2
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/swing_foot_cubic.cpp +3 -1
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/walk_pattern_generator.cpp +2 -4
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/walk_tasks.cpp +6 -4
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/walk_tasks.h +2 -1
- {placo-0.9.2 → placo-0.9.4}/.clang-format +0 -0
- {placo-0.9.2 → placo-0.9.4}/.gitattributes +0 -0
- {placo-0.9.2 → placo-0.9.4}/.github/workflows/wheels.yml +0 -0
- {placo-0.9.2 → placo-0.9.4}/.gitignore +0 -0
- {placo-0.9.2 → placo-0.9.4}/.readthedocs.yaml +0 -0
- {placo-0.9.2 → placo-0.9.4}/CMakeLists.txt +0 -0
- {placo-0.9.2 → placo-0.9.4}/Doxyfile +0 -0
- {placo-0.9.2 → placo-0.9.4}/LICENSE +0 -0
- {placo-0.9.2 → placo-0.9.4}/README.md +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/doxystub.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-dynamics.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-eigen.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-kinematics.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-parameters.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-problem.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-robot-wrapper.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-tools.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-utils.hpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/expose-walk-pattern-generator.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/module.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/bindings/module.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/python/.vscode/settings.json +0 -0
- {placo-0.9.2 → placo-0.9.4}/python/Makefile +0 -0
- {placo-0.9.2 → placo-0.9.4}/python/placo_utils/__init__.py +0 -0
- {placo-0.9.2 → placo-0.9.4}/python/placo_utils/tf.py +0 -0
- {placo-0.9.2 → placo-0.9.4}/python/placo_utils/view.py +0 -0
- {placo-0.9.2 → placo-0.9.4}/python/placo_utils/visualization.py +0 -0
- {placo-0.9.2 → placo-0.9.4}/python/run_tests.sh +0 -0
- {placo-0.9.2 → placo-0.9.4}/scripts/requirements.sh +0 -0
- {placo-0.9.2 → placo-0.9.4}/scripts/robotpkg.sh +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/com_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/com_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/contacts.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/contacts.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/dynamics_solver.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/dynamics_solver.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/frame_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/frame_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/gear_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/gear_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/joints_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/joints_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/orientation_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/orientation_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/position_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/position_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/relative_frame_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/relative_frame_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/relative_orientation_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/relative_orientation_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/relative_position_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/relative_position_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/torque_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/dynamics/torque_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/foot_trajectory.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/foot_trajectory.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/footsteps_planner.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/footsteps_planner_naive.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/footsteps_planner_repetitive.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/footsteps_planner_repetitive.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/humanoid_parameters.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/humanoid_parameters.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/humanoid_robot.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/humanoid_robot.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/kick.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/kick.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/lipm.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/lipm.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/swing_foot.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/swing_foot.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/swing_foot_cubic.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/swing_foot_quintic.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/swing_foot_quintic.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/humanoid/walk_pattern_generator.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/axis_align_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/axis_align_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/com_polygon_constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/com_polygon_constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/com_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/com_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/cone_constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/cone_constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/distance_constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/distance_constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/distance_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/distance_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/frame_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/frame_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/gear_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/gear_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/joint_space_half_spaces_constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/joint_space_half_spaces_constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/joints_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/joints_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/kinematics_solver.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/kinematics_solver.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/kinetic_energy_regularization_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/kinetic_energy_regularization_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/manipulability_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/manipulability_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/orientation_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/orientation_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/position_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/position_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/regularization_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/regularization_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/relative_frame_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/relative_frame_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/relative_orientation_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/relative_orientation_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/relative_position_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/relative_position_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/wheel_task.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/wheel_task.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/yaw_constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/kinematics/yaw_constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/model/robot_wrapper.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/model/robot_wrapper.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/expression.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/expression.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/integrator.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/integrator.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/polygon_constraint.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/polygon_constraint.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/problem.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/problem.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/problem_polynom.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/problem_polynom.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/qp_error.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/qp_error.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/sparsity.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/sparsity.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/variable.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/problem/variable.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/axises_mask.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/axises_mask.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/cubic_spline.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/cubic_spline.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/cubic_spline_3d.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/cubic_spline_3d.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/directions.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/directions.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/polynom.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/polynom.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/prioritized.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/prioritized.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/segment.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/segment.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/utils.cpp +0 -0
- {placo-0.9.2 → placo-0.9.4}/src/placo/tools/utils.h +0 -0
- {placo-0.9.2 → placo-0.9.4}/wks.yml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: placo
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.4
|
|
4
4
|
Summary: PlaCo: Rhoban Planning and Control
|
|
5
5
|
Requires-Python: >= 3.9
|
|
6
6
|
License-Expression: MIT
|
|
@@ -10,12 +10,12 @@ Home-page: https://placo.readthedocs.io/en/latest/
|
|
|
10
10
|
Project-URL: Repository, https://github.com/rhoban/placo.git
|
|
11
11
|
Requires-Dist: cmeel
|
|
12
12
|
Requires-Dist: eiquadprog >= 1.2.6, < 2
|
|
13
|
-
Requires-Dist: pin
|
|
13
|
+
Requires-Dist: pin == 3.7.0
|
|
14
14
|
Requires-Dist: rhoban-cmeel-jsoncpp
|
|
15
15
|
Requires-Dist: meshcat
|
|
16
16
|
Requires-Dist: ischedule
|
|
17
17
|
Provides-Extra: build
|
|
18
|
-
Requires-Dist: pin[build]
|
|
18
|
+
Requires-Dist: pin[build] == 3.7.0 ; extra == "build"
|
|
19
19
|
Requires-Dist: doxystub >= 0.0.13 ; extra == "build"
|
|
20
20
|
Requires-Dist: cmake<4 ; extra == "build"
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
@@ -25,10 +25,12 @@ void exposeFootsteps()
|
|
|
25
25
|
.add_property("foot_length", &FootstepsPlanner::Footstep::foot_length, &FootstepsPlanner::Footstep::foot_length)
|
|
26
26
|
.add_property("foot_width", &FootstepsPlanner::Footstep::foot_width, &FootstepsPlanner::Footstep::foot_width)
|
|
27
27
|
.add_property("frame", &FootstepsPlanner::Footstep::frame, &FootstepsPlanner::Footstep::frame)
|
|
28
|
-
.def(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
.def(
|
|
29
|
+
"set_frame_xy",
|
|
30
|
+
+[](FootstepsPlanner::Footstep& footstep, double x, double y) {
|
|
31
|
+
footstep.frame.translation().x() = x;
|
|
32
|
+
footstep.frame.translation().y() = y;
|
|
33
|
+
})
|
|
32
34
|
.def("support_polygon", &FootstepsPlanner::Footstep::support_polygon)
|
|
33
35
|
.def("overlap", &FootstepsPlanner::Footstep::overlap)
|
|
34
36
|
.def("polygon_contains", &FootstepsPlanner::Footstep::polygon_contains)
|
|
@@ -52,12 +54,44 @@ void exposeFootsteps()
|
|
|
52
54
|
.add_property("time_ratio", &FootstepsPlanner::Support::time_ratio, &FootstepsPlanner::Support::time_ratio)
|
|
53
55
|
.add_property("start", &FootstepsPlanner::Support::start, &FootstepsPlanner::Support::start)
|
|
54
56
|
.add_property("end", &FootstepsPlanner::Support::end, &FootstepsPlanner::Support::end)
|
|
55
|
-
.add_property("target_world_dcm", &FootstepsPlanner::Support::target_world_dcm,
|
|
57
|
+
.add_property("target_world_dcm", &FootstepsPlanner::Support::target_world_dcm,
|
|
56
58
|
&FootstepsPlanner::Support::target_world_dcm);
|
|
57
59
|
|
|
58
60
|
class__<FootstepsPlanner, boost::noncopyable>("FootstepsPlanner", no_init)
|
|
59
61
|
.def("make_supports", &FootstepsPlanner::make_supports)
|
|
60
|
-
.def("opposite_footstep", &FootstepsPlanner::opposite_footstep)
|
|
62
|
+
.def("opposite_footstep", &FootstepsPlanner::opposite_footstep)
|
|
63
|
+
.def(
|
|
64
|
+
"truncate_supports", +[](const std::vector<FootstepsPlanner::Support>& supports, int index, bool add_end) {
|
|
65
|
+
if (index > (int)supports.size())
|
|
66
|
+
{
|
|
67
|
+
throw std::out_of_range("Index out of range for supports");
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
std::vector<FootstepsPlanner::Support> head;
|
|
71
|
+
for (int i = 0; i < index; ++i)
|
|
72
|
+
{
|
|
73
|
+
head.push_back(supports[i]);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (add_end && !head.back().end)
|
|
77
|
+
{
|
|
78
|
+
FootstepsPlanner::Support end_support({ head.back().footsteps[0] });
|
|
79
|
+
end_support.end = true;
|
|
80
|
+
if (end_support.footsteps.size() == 1)
|
|
81
|
+
{
|
|
82
|
+
if (HumanoidRobot::other_side(supports[index].footsteps[0].side) == end_support.footsteps[0].side)
|
|
83
|
+
{
|
|
84
|
+
end_support.footsteps.push_back(supports[index].footsteps[0]);
|
|
85
|
+
}
|
|
86
|
+
else
|
|
87
|
+
{
|
|
88
|
+
end_support.footsteps.push_back(supports[index].footsteps[1]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
head.push_back(end_support);
|
|
92
|
+
}
|
|
93
|
+
return head;
|
|
94
|
+
});
|
|
61
95
|
|
|
62
96
|
class__<FootstepsPlannerNaive, bases<FootstepsPlanner>>("FootstepsPlannerNaive", init<HumanoidParameters&>())
|
|
63
97
|
.def("plan", &FootstepsPlannerNaive::plan)
|
|
@@ -3,7 +3,7 @@ build-backend = "cmeel"
|
|
|
3
3
|
requires = [
|
|
4
4
|
"cmeel[build]",
|
|
5
5
|
"eiquadprog >= 1.2.6, < 2",
|
|
6
|
-
"pin[build]
|
|
6
|
+
"pin[build] == 3.7.0",
|
|
7
7
|
"rhoban-cmeel-jsoncpp",
|
|
8
8
|
"doxystub >= 0.0.13",
|
|
9
9
|
"cmake<4"
|
|
@@ -14,7 +14,7 @@ authors = [{ email = "team@rhoban.com", name = "Rhoban team" }]
|
|
|
14
14
|
classifiers = []
|
|
15
15
|
dependencies = [
|
|
16
16
|
"eiquadprog >= 1.2.6, < 2",
|
|
17
|
-
"pin
|
|
17
|
+
"pin == 3.7.0",
|
|
18
18
|
"rhoban-cmeel-jsoncpp",
|
|
19
19
|
"meshcat",
|
|
20
20
|
"ischedule"
|
|
@@ -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.9.
|
|
26
|
+
version = "0.9.4"
|
|
27
27
|
|
|
28
28
|
[project.urls]
|
|
29
29
|
changelog = "https://github.com/rhoban/placo/blob/main/CHANGELOG.md"
|
|
@@ -18,6 +18,9 @@ namespace placo::humanoid
|
|
|
18
18
|
{
|
|
19
19
|
FootstepsPlannerNaive::FootstepsPlannerNaive(HumanoidParameters& parameters) : FootstepsPlanner(parameters)
|
|
20
20
|
{
|
|
21
|
+
accessibility_length = parameters.walk_max_dx_forward;
|
|
22
|
+
accessibility_width = parameters.walk_max_dy;
|
|
23
|
+
accessibility_yaw = parameters.walk_max_dtheta;
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
std::string FootstepsPlannerNaive::name()
|
|
@@ -125,10 +128,14 @@ void FootstepsPlannerNaive::plan_impl(std::vector<FootstepsPlanner::Footstep>& f
|
|
|
125
128
|
error_yaw = accessibility_yaw;
|
|
126
129
|
}
|
|
127
130
|
|
|
131
|
+
// Ellipsoid clipping
|
|
132
|
+
Eigen::Vector3d step(error.x(), error.y(), error_yaw);
|
|
133
|
+
step = parameters.ellipsoid_clip(step);
|
|
134
|
+
|
|
128
135
|
// Computing new frame
|
|
129
136
|
Eigen::Affine3d new_step;
|
|
130
|
-
new_step.translation() = T_support_floatingIdle.translation() +
|
|
131
|
-
new_step.linear() = Eigen::AngleAxisd(
|
|
137
|
+
new_step.translation() = T_support_floatingIdle.translation() + Eigen::Vector3d(step.x(), step.y(), 0.);
|
|
138
|
+
new_step.linear() = Eigen::AngleAxisd(step[2], Eigen::Vector3d::UnitZ()).toRotationMatrix();
|
|
132
139
|
|
|
133
140
|
// Going to next step
|
|
134
141
|
Footstep footstep = create_footstep(HumanoidRobot::other_side(current_support_side), T_world_support * new_step);
|
|
@@ -15,7 +15,9 @@ Eigen::Vector3d SwingFootCubic::Trajectory::vel(double t)
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
SwingFootCubic::Trajectory SwingFootCubic::make_trajectory(double t_start, double virt_duration, double height,
|
|
18
|
-
|
|
18
|
+
double rise_ratio, Eigen::Vector3d start,
|
|
19
|
+
Eigen::Vector3d target, double elapsed_ratio,
|
|
20
|
+
Eigen::Vector3d start_vel)
|
|
19
21
|
{
|
|
20
22
|
SwingFootCubic::Trajectory trajectory;
|
|
21
23
|
|
|
@@ -346,7 +346,6 @@ void WalkPatternGenerator::plan_sgl_support(Trajectory& trajectory, int part_ind
|
|
|
346
346
|
Eigen::Affine3d T_world_end = trajectory.parts[part_index + 1].support.footstep_frame(flying_side);
|
|
347
347
|
|
|
348
348
|
double virt_duration = support_default_duration(part.support) * part.support.time_ratio;
|
|
349
|
-
|
|
350
349
|
if (part_index == 0 && old_trajectory != nullptr)
|
|
351
350
|
{
|
|
352
351
|
Eigen::Vector3d start = old_trajectory->get_T_world_foot(flying_side, trajectory.t_start).translation();
|
|
@@ -756,7 +755,7 @@ std::vector<FootstepsPlanner::Support> WalkPatternGenerator::update_supports(
|
|
|
756
755
|
}
|
|
757
756
|
|
|
758
757
|
// LIPM Dynamics (expressed in the world frame)
|
|
759
|
-
double duration = std::max(
|
|
758
|
+
double duration = std::max(1e-5, T - elapsed_time);
|
|
760
759
|
Eigen::Vector2d world_virtual_zmp =
|
|
761
760
|
get_optimal_zmp(world_measured_dcm, current_support.target_world_dcm, duration, current_support);
|
|
762
761
|
// Eigen::Vector2d world_virtual_zmp = flatten_on_floor(current_support.frame()).translation().head(2);
|
|
@@ -769,13 +768,12 @@ std::vector<FootstepsPlanner::Support> WalkPatternGenerator::update_supports(
|
|
|
769
768
|
problem.solve();
|
|
770
769
|
|
|
771
770
|
// Updating next support position
|
|
772
|
-
// XXX: Problème de transform T qui s'applique ?
|
|
773
771
|
Eigen::Vector2d world_next_zmp_val = p_world_support + R_world_support * support_next_zmp->value;
|
|
774
772
|
supports[1].footsteps[0].frame.translation().x() = world_next_zmp_val(0);
|
|
775
773
|
supports[1].footsteps[0].frame.translation().y() = world_next_zmp_val(1);
|
|
776
774
|
|
|
777
775
|
// Updating current support remaining duration
|
|
778
|
-
double support_remaining_time = log(tau->value(0)) / omega - elapsed_time;
|
|
776
|
+
double support_remaining_time = std::max(1e-3, log(tau->value(0)) / omega - elapsed_time);
|
|
779
777
|
supports[0].time_ratio =
|
|
780
778
|
support_remaining_time / (support_default_duration(current_support) * (1 - current_support.elapsed_ratio));
|
|
781
779
|
|
|
@@ -58,7 +58,8 @@ void WalkTasks::reach_initial_pose(Eigen::Affine3d T_world_left, double feet_spa
|
|
|
58
58
|
double trunk_pitch)
|
|
59
59
|
{
|
|
60
60
|
Eigen::Affine3d T_world_right = T_world_left;
|
|
61
|
-
T_world_right.translation() =
|
|
61
|
+
T_world_right.translation() =
|
|
62
|
+
T_world_left.translation() + T_world_left.rotation() * Eigen::Vector3d(0, -feet_spacing, 0);
|
|
62
63
|
|
|
63
64
|
Eigen::Vector3d com_world = interpolate_frames(T_world_left, T_world_right, .5).translation();
|
|
64
65
|
com_world.z() = com_height;
|
|
@@ -68,7 +69,7 @@ void WalkTasks::reach_initial_pose(Eigen::Affine3d T_world_left, double feet_spa
|
|
|
68
69
|
trunk_orientation_task->R_world_frame = R_world_trunk;
|
|
69
70
|
|
|
70
71
|
update_tasks(T_world_left, T_world_right, com_world, R_world_trunk);
|
|
71
|
-
|
|
72
|
+
|
|
72
73
|
for (int i = 0; i < 100; i++)
|
|
73
74
|
{
|
|
74
75
|
if (i <= 10)
|
|
@@ -129,7 +130,8 @@ void WalkTasks::remove_tasks()
|
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
|
|
132
|
-
void WalkTasks::update_tasks_and_pid(WalkPatternGenerator::Trajectory& trajectory, double t, Eigen::Vector2d dcm,
|
|
133
|
+
void WalkTasks::update_tasks_and_pid(WalkPatternGenerator::Trajectory& trajectory, double t, Eigen::Vector2d dcm,
|
|
134
|
+
double omega, double elapsed)
|
|
133
135
|
{
|
|
134
136
|
Eigen::Vector2d error = dcm - trajectory.get_p_world_DCM(t + com_delay, omega);
|
|
135
137
|
integral = (1.0 - lambda) * integral + error * elapsed;
|
|
@@ -139,7 +141,7 @@ void WalkTasks::update_tasks_and_pid(WalkPatternGenerator::Trajectory& trajector
|
|
|
139
141
|
Eigen::Vector2d com_offset = K_p * error + K_i * integral + K_d * derivative;
|
|
140
142
|
|
|
141
143
|
update_tasks(trajectory.get_T_world_left(t), trajectory.get_T_world_right(t),
|
|
142
|
-
trajectory.get_p_world_CoM(t + com_delay) + Eigen::Vector3d(com_offset[0], com_offset[1], 0.),
|
|
144
|
+
trajectory.get_p_world_CoM(t + com_delay) + Eigen::Vector3d(com_offset[0], com_offset[1], 0.),
|
|
143
145
|
trajectory.get_R_world_trunk(t));
|
|
144
146
|
}
|
|
145
147
|
|
|
@@ -40,7 +40,8 @@ public:
|
|
|
40
40
|
double com_y = 0.;
|
|
41
41
|
|
|
42
42
|
// DCM error PID
|
|
43
|
-
void update_tasks_and_pid(WalkPatternGenerator::Trajectory& trajectory, double t, Eigen::Vector2d dcm, double omega,
|
|
43
|
+
void update_tasks_and_pid(WalkPatternGenerator::Trajectory& trajectory, double t, Eigen::Vector2d dcm, double omega,
|
|
44
|
+
double elapsed);
|
|
44
45
|
|
|
45
46
|
double K_p = 0.;
|
|
46
47
|
double K_i = 0.;
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|