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