placo 0.9.11__tar.gz → 0.9.13__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.11 → placo-0.9.13}/PKG-INFO +1 -1
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-footsteps.cpp +3 -1
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-parameters.cpp +6 -2
- {placo-0.9.11 → placo-0.9.13}/pyproject.toml +1 -1
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/footsteps_planner.cpp +8 -1
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/footsteps_planner.h +2 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/humanoid_parameters.cpp +58 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/humanoid_parameters.h +23 -1
- {placo-0.9.11 → placo-0.9.13}/.clang-format +0 -0
- {placo-0.9.11 → placo-0.9.13}/.gitattributes +0 -0
- {placo-0.9.11 → placo-0.9.13}/.github/workflows/wheels.yml +0 -0
- {placo-0.9.11 → placo-0.9.13}/.gitignore +0 -0
- {placo-0.9.11 → placo-0.9.13}/.readthedocs.yaml +0 -0
- {placo-0.9.11 → placo-0.9.13}/CMakeLists.txt +0 -0
- {placo-0.9.11 → placo-0.9.13}/Doxyfile +0 -0
- {placo-0.9.11 → placo-0.9.13}/LICENSE +0 -0
- {placo-0.9.11 → placo-0.9.13}/README.md +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/doxystub.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-dynamics.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-eigen.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-kinematics.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-problem.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-robot-wrapper.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-tools.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-utils.hpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/expose-walk-pattern-generator.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/module.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/bindings/module.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/python/.vscode/settings.json +0 -0
- {placo-0.9.11 → placo-0.9.13}/python/Makefile +0 -0
- {placo-0.9.11 → placo-0.9.13}/python/placo_utils/__init__.py +0 -0
- {placo-0.9.11 → placo-0.9.13}/python/placo_utils/tf.py +0 -0
- {placo-0.9.11 → placo-0.9.13}/python/placo_utils/view.py +0 -0
- {placo-0.9.11 → placo-0.9.13}/python/placo_utils/visualization.py +0 -0
- {placo-0.9.11 → placo-0.9.13}/python/run_tests.sh +0 -0
- {placo-0.9.11 → placo-0.9.13}/scripts/requirements.sh +0 -0
- {placo-0.9.11 → placo-0.9.13}/scripts/robotpkg.sh +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/com_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/com_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/contacts.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/contacts.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/dynamics_solver.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/dynamics_solver.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/frame_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/frame_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/gear_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/gear_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/joints_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/joints_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/orientation_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/orientation_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/position_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/position_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/relative_frame_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/relative_frame_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/relative_orientation_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/relative_orientation_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/relative_position_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/relative_position_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/torque_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/dynamics/torque_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/dummy_walk.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/dummy_walk.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/foot_trajectory.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/foot_trajectory.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/footsteps_planner_naive.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/footsteps_planner_naive.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/footsteps_planner_repetitive.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/footsteps_planner_repetitive.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/humanoid_robot.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/humanoid_robot.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/kick.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/kick.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/lipm.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/lipm.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/swing_foot.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/swing_foot.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/swing_foot_cubic.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/swing_foot_cubic.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/swing_foot_quintic.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/swing_foot_quintic.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/walk_pattern_generator.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/walk_pattern_generator.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/walk_tasks.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/humanoid/walk_tasks.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/axis_align_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/axis_align_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/com_polygon_constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/com_polygon_constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/com_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/com_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/cone_constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/cone_constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/distance_constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/distance_constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/distance_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/distance_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/frame_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/frame_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/gear_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/gear_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/joint_space_half_spaces_constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/joint_space_half_spaces_constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/joints_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/joints_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/kinematics_solver.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/kinematics_solver.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/kinetic_energy_regularization_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/kinetic_energy_regularization_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/manipulability_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/manipulability_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/orientation_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/orientation_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/position_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/position_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/regularization_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/regularization_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/relative_frame_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/relative_frame_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/relative_orientation_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/relative_orientation_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/relative_position_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/relative_position_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/wheel_task.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/wheel_task.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/yaw_constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/kinematics/yaw_constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/model/robot_wrapper.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/model/robot_wrapper.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/expression.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/expression.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/integrator.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/integrator.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/polygon_constraint.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/polygon_constraint.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/problem.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/problem.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/problem_polynom.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/problem_polynom.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/qp_error.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/qp_error.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/sparsity.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/sparsity.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/variable.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/problem/variable.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/axises_mask.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/axises_mask.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/cubic_spline.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/cubic_spline.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/cubic_spline_3d.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/cubic_spline_3d.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/directions.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/directions.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/polynom.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/polynom.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/prioritized.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/prioritized.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/segment.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/segment.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/utils.cpp +0 -0
- {placo-0.9.11 → placo-0.9.13}/src/placo/tools/utils.h +0 -0
- {placo-0.9.11 → placo-0.9.13}/wks.yml +0 -0
|
@@ -24,7 +24,9 @@ void exposeFootsteps()
|
|
|
24
24
|
.add_property("side", &FootstepsPlanner::Footstep::side, &FootstepsPlanner::Footstep::side)
|
|
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
|
-
.add_property(
|
|
27
|
+
.add_property(
|
|
28
|
+
"frame", +[](FootstepsPlanner::Footstep& footstep) { return footstep.frame; },
|
|
29
|
+
&FootstepsPlanner::Footstep::frame)
|
|
28
30
|
.def(
|
|
29
31
|
"set_frame_xy",
|
|
30
32
|
+[](FootstepsPlanner::Footstep& footstep, double x, double y) {
|
|
@@ -49,12 +49,16 @@ void exposeParameters()
|
|
|
49
49
|
.add_property("walk_dtheta_spacing", &HumanoidParameters::walk_dtheta_spacing,
|
|
50
50
|
&HumanoidParameters::walk_dtheta_spacing)
|
|
51
51
|
.add_property("op_space_polygon", &HumanoidParameters::op_space_polygon, &HumanoidParameters::op_space_polygon)
|
|
52
|
-
.add_property("dcm_offset_polygon", &HumanoidParameters::dcm_offset_polygon,
|
|
52
|
+
.add_property("dcm_offset_polygon", &HumanoidParameters::dcm_offset_polygon,
|
|
53
|
+
&HumanoidParameters::dcm_offset_polygon)
|
|
53
54
|
.def("dt", &HumanoidParameters::dt)
|
|
54
55
|
.def("double_support_timesteps", &HumanoidParameters::double_support_timesteps)
|
|
55
56
|
.def("startend_double_support_timesteps", &HumanoidParameters::startend_double_support_timesteps)
|
|
56
57
|
.def("double_support_duration", &HumanoidParameters::double_support_duration)
|
|
57
58
|
.def("startend_double_support_duration", &HumanoidParameters::startend_double_support_duration)
|
|
58
59
|
.def("has_double_support", &HumanoidParameters::has_double_support)
|
|
59
|
-
.def("ellipsoid_clip", &HumanoidParameters::ellipsoid_clip)
|
|
60
|
+
.def("ellipsoid_clip", &HumanoidParameters::ellipsoid_clip)
|
|
61
|
+
.def("box_clip", &HumanoidParameters::box_clip)
|
|
62
|
+
.def("ellipsoid_overlap_clip", &HumanoidParameters::ellipsoid_overlap_clip)
|
|
63
|
+
.def("box_overlap_clip", &HumanoidParameters::box_overlap_clip);
|
|
60
64
|
}
|
|
@@ -319,7 +319,14 @@ FootstepsPlanner::Footstep FootstepsPlanner::clipped_opposite_footstep(Footstep
|
|
|
319
319
|
step.y() += parameters.walk_dtheta_spacing * fabs(step.z());
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
-
|
|
322
|
+
if (use_ellipsoid_clipping)
|
|
323
|
+
{
|
|
324
|
+
step = parameters.ellipsoid_clip(step);
|
|
325
|
+
}
|
|
326
|
+
else
|
|
327
|
+
{
|
|
328
|
+
step = parameters.box_clip(step);
|
|
329
|
+
}
|
|
323
330
|
|
|
324
331
|
for (int k = 0; k < 32; k++)
|
|
325
332
|
{
|
|
@@ -149,6 +149,8 @@ public:
|
|
|
149
149
|
// Humanoid parameters for planning and control
|
|
150
150
|
HumanoidParameters& parameters;
|
|
151
151
|
|
|
152
|
+
bool use_ellipsoid_clipping = false;
|
|
153
|
+
|
|
152
154
|
protected:
|
|
153
155
|
virtual void plan_impl(std::vector<Footstep>&, HumanoidRobot::Side flying_side, Eigen::Affine3d T_world_left,
|
|
154
156
|
Eigen::Affine3d T_world_right) = 0;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#include <cmath>
|
|
2
2
|
#include "placo/humanoid/humanoid_parameters.h"
|
|
3
|
+
#include "placo/humanoid/footsteps_planner_repetitive.h"
|
|
4
|
+
#include "placo/tools/utils.h"
|
|
3
5
|
|
|
4
6
|
namespace placo::humanoid
|
|
5
7
|
{
|
|
@@ -53,6 +55,62 @@ Eigen::Vector3d HumanoidParameters::ellipsoid_clip(Eigen::Vector3d step)
|
|
|
53
55
|
return step;
|
|
54
56
|
}
|
|
55
57
|
|
|
58
|
+
Eigen::Vector3d HumanoidParameters::box_clip(Eigen::Vector3d step)
|
|
59
|
+
{
|
|
60
|
+
Eigen::Vector3d factor((step.x() >= 0) ? walk_max_dx_forward : walk_max_dx_backward, walk_max_dy, walk_max_dtheta);
|
|
61
|
+
step.x() /= factor.x();
|
|
62
|
+
step.y() /= factor.y();
|
|
63
|
+
step.z() /= factor.z();
|
|
64
|
+
|
|
65
|
+
double norm = fabs(step.x()) + fabs(step.y()) + fabs(step.z());
|
|
66
|
+
if (norm > 1)
|
|
67
|
+
{
|
|
68
|
+
step /= norm;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
step.x() *= factor.x();
|
|
72
|
+
step.y() *= factor.y();
|
|
73
|
+
step.z() *= factor.z();
|
|
74
|
+
|
|
75
|
+
return step;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Eigen::Vector3d HumanoidParameters::ellipsoid_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step)
|
|
79
|
+
{
|
|
80
|
+
return overlap_clip(support_side, step, true);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
Eigen::Vector3d HumanoidParameters::box_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step)
|
|
84
|
+
{
|
|
85
|
+
return overlap_clip(support_side, step, false);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
Eigen::Vector3d HumanoidParameters::overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step, bool ellipsoid)
|
|
89
|
+
{
|
|
90
|
+
FootstepsPlannerRepetitive planner(*this);
|
|
91
|
+
planner.configure(step.x(), step.y(), step.z(), 3);
|
|
92
|
+
planner.use_ellipsoid_clipping = ellipsoid;
|
|
93
|
+
|
|
94
|
+
// Creatting footsteps
|
|
95
|
+
Eigen::Affine3d T_world_left = Eigen::Affine3d::Identity();
|
|
96
|
+
T_world_left.translate(Eigen::Vector3d(0, feet_spacing / 2., 0));
|
|
97
|
+
Eigen::Affine3d T_world_right = Eigen::Affine3d::Identity();
|
|
98
|
+
T_world_right.translate(Eigen::Vector3d(0, -feet_spacing / 2, 0));
|
|
99
|
+
|
|
100
|
+
auto footsteps =
|
|
101
|
+
planner.plan(support_side == HumanoidRobot::Side::Left ? HumanoidRobot::Side::Right : HumanoidRobot::Side::Left,
|
|
102
|
+
T_world_left, T_world_right);
|
|
103
|
+
|
|
104
|
+
Eigen::Affine3d T_world_support = footsteps[1].frame;
|
|
105
|
+
Eigen::Affine3d T_world_target = footsteps[2].frame;
|
|
106
|
+
Eigen::Affine3d T_support_target = T_world_support.inverse() * T_world_target;
|
|
107
|
+
|
|
108
|
+
double offset = (support_side == HumanoidRobot::Side::Left) ? -feet_spacing : feet_spacing;
|
|
109
|
+
|
|
110
|
+
return Eigen::Vector3d(T_support_target.translation().x(), T_support_target.translation().y() - offset,
|
|
111
|
+
tools::frame_yaw(T_support_target.rotation()));
|
|
112
|
+
}
|
|
113
|
+
|
|
56
114
|
Eigen::Affine3d HumanoidParameters::opposite_frame(HumanoidRobot::Side side, Eigen::Affine3d T_world_foot, double d_x,
|
|
57
115
|
double d_y, double d_theta)
|
|
58
116
|
{
|
|
@@ -162,10 +162,25 @@ public:
|
|
|
162
162
|
std::vector<Eigen::Vector2d> dcm_offset_polygon;
|
|
163
163
|
|
|
164
164
|
/**
|
|
165
|
-
* @brief Applies the ellipsoid clipping to a given step size (dx, dy, dtheta)
|
|
165
|
+
* @brief Applies the ellipsoid (L2) clipping to a given step size (dx, dy, dtheta)
|
|
166
166
|
*/
|
|
167
167
|
Eigen::Vector3d ellipsoid_clip(Eigen::Vector3d step);
|
|
168
168
|
|
|
169
|
+
/**
|
|
170
|
+
* @brief Applies the box clipping (L1) to a given step size (dx, dy, dtheta)
|
|
171
|
+
*/
|
|
172
|
+
Eigen::Vector3d box_clip(Eigen::Vector3d step);
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* @brief Clips a step using ellipsoid and overlap avoidance
|
|
176
|
+
*/
|
|
177
|
+
Eigen::Vector3d ellipsoid_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step);
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @brief Clips a step using ellipsoid and overlap avoidance
|
|
181
|
+
*/
|
|
182
|
+
Eigen::Vector3d box_overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step);
|
|
183
|
+
|
|
169
184
|
/**
|
|
170
185
|
* @brief Frames for opposite and neutral positions
|
|
171
186
|
*/
|
|
@@ -173,5 +188,12 @@ public:
|
|
|
173
188
|
double d_y = 0., double d_theta = 0.);
|
|
174
189
|
Eigen::Affine3d neutral_frame(HumanoidRobot::Side side, Eigen::Affine3d T_world_foot, double d_x = 0.,
|
|
175
190
|
double d_y = 0., double d_theta = 0.);
|
|
191
|
+
|
|
192
|
+
protected:
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @brief Clips a step using ellipsoid and overlap avoidance
|
|
196
|
+
*/
|
|
197
|
+
Eigen::Vector3d overlap_clip(HumanoidRobot::Side support_side, Eigen::Vector3d step, bool ellipsoid = false);
|
|
176
198
|
};
|
|
177
199
|
} // namespace placo::humanoid
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|