placo 0.4.9__tar.gz → 0.5.0__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.4.9 → placo-0.5.0}/PKG-INFO +1 -1
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-kinematics.cpp +2 -2
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-problem.cpp +2 -1
- {placo-0.4.9 → placo-0.5.0}/placo.pyi +11 -4
- {placo-0.4.9 → placo-0.5.0}/pyproject.toml +1 -1
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/walk_tasks.cpp +8 -10
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/com_polygon_constraint.cpp +0 -1
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/gear_task.cpp +0 -1
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/kinematics_solver.cpp +20 -24
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/kinematics_solver.h +6 -5
- {placo-0.4.9 → placo-0.5.0}/.clang-format +0 -0
- {placo-0.4.9 → placo-0.5.0}/.gitattributes +0 -0
- {placo-0.4.9 → placo-0.5.0}/.gitignore +0 -0
- {placo-0.4.9 → placo-0.5.0}/.readthedocs.yaml +0 -0
- {placo-0.4.9 → placo-0.5.0}/CMakeLists.txt +0 -0
- {placo-0.4.9 → placo-0.5.0}/Doxyfile +0 -0
- {placo-0.4.9 → placo-0.5.0}/LICENSE +0 -0
- {placo-0.4.9 → placo-0.5.0}/Makefile +0 -0
- {placo-0.4.9 → placo-0.5.0}/README.md +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-dynamics.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-eigen.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-footsteps.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-parameters.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-robot-wrapper.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-tools.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-utils.hpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/expose-walk-pattern-generator.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/module.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/module.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/registry.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/bindings/registry.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/doxygen_parse.py +0 -0
- {placo-0.4.9 → placo-0.5.0}/python/.vscode/settings.json +0 -0
- {placo-0.4.9 → placo-0.5.0}/python/Makefile +0 -0
- {placo-0.4.9 → placo-0.5.0}/python/placo_utils/__init__.py +0 -0
- {placo-0.4.9 → placo-0.5.0}/python/placo_utils/tf.py +0 -0
- {placo-0.4.9 → placo-0.5.0}/python/placo_utils/visualization.py +0 -0
- {placo-0.4.9 → placo-0.5.0}/python/run_tests.sh +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/avoid_self_collisions_constraint.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/avoid_self_collisions_constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/com_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/com_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/constraint.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/contacts.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/contacts.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/dynamics_solver.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/dynamics_solver.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/frame_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/frame_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/gear_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/gear_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/joints_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/joints_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/orientation_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/orientation_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/position_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/position_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/reaction_ratio_constraint.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/reaction_ratio_constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/relative_frame_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/relative_frame_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/relative_orientation_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/relative_orientation_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/relative_position_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/relative_position_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/torque_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/dynamics/torque_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/foot_trajectory.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/foot_trajectory.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/footsteps_planner.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/footsteps_planner.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/footsteps_planner_naive.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/footsteps_planner_naive.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/footsteps_planner_repetitive.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/footsteps_planner_repetitive.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/humanoid_parameters.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/humanoid_parameters.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/humanoid_robot.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/humanoid_robot.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/kick.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/kick.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/lipm.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/lipm.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/swing_foot.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/swing_foot.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/swing_foot_cubic.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/swing_foot_cubic.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/swing_foot_quintic.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/swing_foot_quintic.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/walk_pattern_generator.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/walk_pattern_generator.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/humanoid/walk_tasks.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/avoid_self_collisions_constraint.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/avoid_self_collisions_constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/axis_align_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/axis_align_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/centroidal_momentum_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/centroidal_momentum_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/com_polygon_constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/com_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/com_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/cone_constraint.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/cone_constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/constraint.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/distance_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/distance_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/frame_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/frame_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/gear_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/joints_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/joints_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/kinetic_energy_regularization_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/kinetic_energy_regularization_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/orientation_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/orientation_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/position_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/position_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/regularization_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/regularization_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/relative_frame_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/relative_frame_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/relative_orientation_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/relative_orientation_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/relative_position_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/relative_position_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/wheel_task.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/kinematics/wheel_task.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/model/robot_wrapper.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/model/robot_wrapper.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/constraint.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/expression.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/expression.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/integrator.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/integrator.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/polygon_constraint.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/polygon_constraint.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/problem.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/problem.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/qp_error.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/qp_error.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/sparsity.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/sparsity.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/variable.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/problem/variable.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/axises_mask.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/axises_mask.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/cubic_spline.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/cubic_spline.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/cubic_spline_3d.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/cubic_spline_3d.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/prioritized.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/prioritized.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/utils.cpp +0 -0
- {placo-0.4.9 → placo-0.5.0}/src/placo/tools/utils.h +0 -0
- {placo-0.4.9 → placo-0.5.0}/stubs.py +0 -0
- {placo-0.4.9 → placo-0.5.0}/tweak_sdist.sh +0 -0
- {placo-0.4.9 → placo-0.5.0}/wks.yml +0 -0
|
@@ -20,7 +20,6 @@ void exposeKinematics()
|
|
|
20
20
|
class_<KinematicsSolver> solver_class =
|
|
21
21
|
class__<KinematicsSolver>("KinematicsSolver", init<RobotWrapper&>())
|
|
22
22
|
.add_property("problem", &KinematicsSolver::problem)
|
|
23
|
-
.add_property("noise", &KinematicsSolver::noise, &KinematicsSolver::noise)
|
|
24
23
|
.add_property("dt", &KinematicsSolver::dt, &KinematicsSolver::dt)
|
|
25
24
|
.add_property("N", &KinematicsSolver::N)
|
|
26
25
|
.add_property("scale", &KinematicsSolver::scale)
|
|
@@ -111,7 +110,8 @@ void exposeKinematics()
|
|
|
111
110
|
.def<void (KinematicsSolver::*)(Task&)>("remove_task", &KinematicsSolver::remove_task)
|
|
112
111
|
.def<void (KinematicsSolver::*)(FrameTask&)>("remove_task", &KinematicsSolver::remove_task)
|
|
113
112
|
.def("remove_constraint", &KinematicsSolver::remove_constraint)
|
|
114
|
-
.def("solve", &KinematicsSolver::solve)
|
|
113
|
+
.def("solve", &KinematicsSolver::solve)
|
|
114
|
+
.def("add_q_noise", &KinematicsSolver::add_q_noise);
|
|
115
115
|
|
|
116
116
|
class__<Task, bases<tools::Prioritized>, boost::noncopyable>("Task", no_init)
|
|
117
117
|
.add_property(
|
|
@@ -22,6 +22,7 @@ using namespace placo;
|
|
|
22
22
|
using namespace placo::problem;
|
|
23
23
|
|
|
24
24
|
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(expr_overloads, expr, 0, 2);
|
|
25
|
+
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(integrator_expr_overloads, expr, 1, 2);
|
|
25
26
|
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(configure_overloads, configure, 1, 2);
|
|
26
27
|
|
|
27
28
|
void exposeProblem()
|
|
@@ -91,7 +92,7 @@ void exposeProblem()
|
|
|
91
92
|
"B", +[](const Integrator& i) { return i.B; })
|
|
92
93
|
.add_property(
|
|
93
94
|
"final_transition_matrix", +[](const Integrator& i) { return i.final_transition_matrix; })
|
|
94
|
-
.def("expr", &Integrator::expr)
|
|
95
|
+
.def("expr", &Integrator::expr, integrator_expr_overloads())
|
|
95
96
|
.def("expr_t", &Integrator::expr_t)
|
|
96
97
|
.def("value", &Integrator::value)
|
|
97
98
|
.def("get_trajectory", &Integrator::get_trajectory);
|
|
@@ -4383,6 +4383,17 @@ class KinematicsSolver:
|
|
|
4383
4383
|
:return: position task"""
|
|
4384
4384
|
...
|
|
4385
4385
|
|
|
4386
|
+
def add_q_noise(
|
|
4387
|
+
self: KinematicsSolver,
|
|
4388
|
+
noise: float = 1e-5, # double
|
|
4389
|
+
|
|
4390
|
+
) -> None:
|
|
4391
|
+
"""Adds some noise on the configuration of the robot (q)
|
|
4392
|
+
|
|
4393
|
+
|
|
4394
|
+
:param noise: noise level, expressed in ratio of the joint limits"""
|
|
4395
|
+
...
|
|
4396
|
+
|
|
4386
4397
|
def add_regularization_task(
|
|
4387
4398
|
self: KinematicsSolver,
|
|
4388
4399
|
magnitude: float = 1e-6, # double
|
|
@@ -4532,10 +4543,6 @@ class KinematicsSolver:
|
|
|
4532
4543
|
"""Decides if the floating base should be masked."""
|
|
4533
4544
|
...
|
|
4534
4545
|
|
|
4535
|
-
noise: float # double
|
|
4536
|
-
"""Some configuration noise added before solving.
|
|
4537
|
-
"""
|
|
4538
|
-
|
|
4539
4546
|
problem: Problem # placo::problem::Problem
|
|
4540
4547
|
"""The underlying QP problem.
|
|
4541
4548
|
"""
|
|
@@ -6,20 +6,19 @@ namespace placo::humanoid
|
|
|
6
6
|
using namespace placo::kinematics;
|
|
7
7
|
using namespace placo::tools;
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
void WalkTasks::initialize_tasks(KinematicsSolver* solver_, HumanoidRobot* robot_)
|
|
11
10
|
{
|
|
12
11
|
robot = robot_;
|
|
13
12
|
solver = solver_;
|
|
14
13
|
|
|
15
14
|
left_foot_task = solver->add_frame_task("left_foot", robot->get_T_world_left());
|
|
16
|
-
left_foot_task.configure("left_foot", scaled?"scaled":"soft", 1., 1.);
|
|
15
|
+
left_foot_task.configure("left_foot", scaled ? "scaled" : "soft", 1., 1.);
|
|
17
16
|
|
|
18
17
|
right_foot_task = solver->add_frame_task("right_foot", robot->get_T_world_right());
|
|
19
|
-
right_foot_task.configure("right_foot", scaled?"scaled":"soft", 1., 1.);
|
|
18
|
+
right_foot_task.configure("right_foot", scaled ? "scaled" : "soft", 1., 1.);
|
|
20
19
|
|
|
21
20
|
trunk_orientation_task = &solver->add_orientation_task("trunk", robot->get_T_world_trunk().rotation());
|
|
22
|
-
trunk_orientation_task->configure("trunk", scaled?"scaled":"soft", 1.);
|
|
21
|
+
trunk_orientation_task->configure("trunk", scaled ? "scaled" : "soft", 1.);
|
|
23
22
|
|
|
24
23
|
update_com_task();
|
|
25
24
|
}
|
|
@@ -36,7 +35,7 @@ void WalkTasks::update_com_task()
|
|
|
36
35
|
if (trunk_task == nullptr)
|
|
37
36
|
{
|
|
38
37
|
trunk_task = &solver->add_position_task("trunk", robot->get_T_world_frame("trunk").translation());
|
|
39
|
-
trunk_task->configure("trunk", scaled?"scaled":"soft", 1.);
|
|
38
|
+
trunk_task->configure("trunk", scaled ? "scaled" : "soft", 1.);
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
else
|
|
@@ -49,7 +48,7 @@ void WalkTasks::update_com_task()
|
|
|
49
48
|
if (com_task == nullptr)
|
|
50
49
|
{
|
|
51
50
|
com_task = &solver->add_com_task(robot->com_world());
|
|
52
|
-
com_task->configure("com", scaled?"scaled":"soft", 1.);
|
|
51
|
+
com_task->configure("com", scaled ? "scaled" : "soft", 1.);
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
54
|
}
|
|
@@ -69,13 +68,12 @@ void WalkTasks::reach_initial_pose(Eigen::Affine3d T_world_left, double feet_spa
|
|
|
69
68
|
|
|
70
69
|
update_tasks(T_world_left, T_world_right, com_world, R_world_trunk);
|
|
71
70
|
|
|
72
|
-
// Adding strong noise to avoid singularities
|
|
73
|
-
solver->noise = 0.1;
|
|
74
71
|
for (int i = 0; i < 100; i++)
|
|
75
72
|
{
|
|
76
|
-
if (i
|
|
73
|
+
if (i <= 10)
|
|
77
74
|
{
|
|
78
|
-
|
|
75
|
+
// Adding strong noise to avoid singularities
|
|
76
|
+
solver->add_q_noise(0.1);
|
|
79
77
|
}
|
|
80
78
|
|
|
81
79
|
robot->update_kinematics();
|
|
@@ -28,7 +28,6 @@ void CoMPolygonConstraint::add_constraint(placo::problem::Problem& problem)
|
|
|
28
28
|
// Future DCM is c + J dq + J dq / (dt * w)
|
|
29
29
|
// = c + J dq (1 + 1 / (dt * w))
|
|
30
30
|
com_xy.A *= (1. + 1. / (solver->dt * omega));
|
|
31
|
-
std::cout << "Coef: " << (1. + 1. / (solver->dt * omega)) << std::endl;
|
|
32
31
|
}
|
|
33
32
|
com_xy.b = com;
|
|
34
33
|
|
|
@@ -244,6 +244,23 @@ void KinematicsSolver::compute_limits_inequalities()
|
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
+
void KinematicsSolver::add_q_noise(double noise)
|
|
248
|
+
{
|
|
249
|
+
auto q_random = pinocchio::randomConfiguration(robot.model);
|
|
250
|
+
|
|
251
|
+
// Adding some noise in direction of a random configuration (except floating base)
|
|
252
|
+
for (int k = 7; k < robot.model.nq; k++)
|
|
253
|
+
{
|
|
254
|
+
if (robot.model.lowerPositionLimit(k) == std::numeric_limits<double>::lowest() ||
|
|
255
|
+
robot.model.upperPositionLimit(k) == std::numeric_limits<double>::max())
|
|
256
|
+
{
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
robot.state.q(k) += (q_random(k) - robot.state.q(k)) * noise;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
247
264
|
Eigen::VectorXd KinematicsSolver::solve(bool apply)
|
|
248
265
|
{
|
|
249
266
|
// Ensure variable is created
|
|
@@ -255,26 +272,6 @@ Eigen::VectorXd KinematicsSolver::solve(bool apply)
|
|
|
255
272
|
// Clear previously created constraints
|
|
256
273
|
problem.clear_constraints();
|
|
257
274
|
|
|
258
|
-
// Adding some random noise
|
|
259
|
-
auto q_save = robot.state.q;
|
|
260
|
-
|
|
261
|
-
if (noise > 0)
|
|
262
|
-
{
|
|
263
|
-
auto q_random = pinocchio::randomConfiguration(robot.model);
|
|
264
|
-
|
|
265
|
-
// Adding some noise in direction of a random configuration (except floating base)
|
|
266
|
-
for (int k = 7; k < robot.model.nq; k++)
|
|
267
|
-
{
|
|
268
|
-
if (robot.model.lowerPositionLimit(k) == std::numeric_limits<double>::lowest() ||
|
|
269
|
-
robot.model.upperPositionLimit(k) == std::numeric_limits<double>::max())
|
|
270
|
-
{
|
|
271
|
-
continue;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
robot.state.q(k) += (q_random(k) - robot.state.q(k)) * noise;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
275
|
has_scaling = false;
|
|
279
276
|
|
|
280
277
|
// Updating all the task matrices
|
|
@@ -359,6 +356,9 @@ Eigen::VectorXd KinematicsSolver::solve(bool apply)
|
|
|
359
356
|
|
|
360
357
|
if (apply)
|
|
361
358
|
{
|
|
359
|
+
// Initial robot configuration
|
|
360
|
+
auto q_save = robot.state.q;
|
|
361
|
+
|
|
362
362
|
robot.state.q = pinocchio::integrate(robot.model, robot.state.q, qd_sol);
|
|
363
363
|
if (dt > 0)
|
|
364
364
|
{
|
|
@@ -367,10 +367,6 @@ Eigen::VectorXd KinematicsSolver::solve(bool apply)
|
|
|
367
367
|
robot.state.qdd = (robot.state.qd - qd_save) / dt;
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
|
-
else
|
|
371
|
-
{
|
|
372
|
-
robot.state.q = q_save;
|
|
373
|
-
}
|
|
374
370
|
|
|
375
371
|
return qd_sol;
|
|
376
372
|
}
|
|
@@ -299,6 +299,12 @@ public:
|
|
|
299
299
|
*/
|
|
300
300
|
Eigen::VectorXd solve(bool apply = false);
|
|
301
301
|
|
|
302
|
+
/**
|
|
303
|
+
* @brief Adds some noise on the configuration of the robot (q)
|
|
304
|
+
* @param noise noise level, expressed in ratio of the joint limits
|
|
305
|
+
*/
|
|
306
|
+
void add_q_noise(double noise = 1e-5);
|
|
307
|
+
|
|
302
308
|
/**
|
|
303
309
|
* @brief Masks (disables a DoF) from being used by the QP solver (it can't provide speed)
|
|
304
310
|
* @param dof the dof name
|
|
@@ -379,11 +385,6 @@ public:
|
|
|
379
385
|
*/
|
|
380
386
|
int N;
|
|
381
387
|
|
|
382
|
-
/**
|
|
383
|
-
* @brief Some configuration noise added before solving
|
|
384
|
-
*/
|
|
385
|
-
double noise = 1e-5;
|
|
386
|
-
|
|
387
388
|
/**
|
|
388
389
|
* @brief solver dt (for speeds limiting)
|
|
389
390
|
*/
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|