placo 0.6.2__0-cp310-cp310-manylinux_2_35_x86_64.whl → 0.6.4__0-cp310-cp310-manylinux_2_35_x86_64.whl
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.
- cmeel.prefix/lib/liblibplaco.so +0 -0
- cmeel.prefix/lib/python3.10/site-packages/placo.pyi +557 -226
- cmeel.prefix/lib/python3.10/site-packages/placo.so +0 -0
- {placo-0.6.2.dist-info → placo-0.6.4.dist-info}/METADATA +2 -2
- {placo-0.6.2.dist-info → placo-0.6.4.dist-info}/RECORD +8 -8
- {placo-0.6.2.dist-info → placo-0.6.4.dist-info}/WHEEL +1 -1
- {placo-0.6.2.dist-info/license → placo-0.6.4.dist-info/licenses}/LICENSE +0 -0
- {placo-0.6.2.dist-info → placo-0.6.4.dist-info}/top_level.txt +0 -0
cmeel.prefix/lib/liblibplaco.so
CHANGED
|
Binary file
|
|
@@ -45,6 +45,7 @@ HumanoidRobot = typing.NewType("HumanoidRobot", None)
|
|
|
45
45
|
HumanoidRobot_Side = typing.NewType("HumanoidRobot_Side", None)
|
|
46
46
|
Integrator = typing.NewType("Integrator", None)
|
|
47
47
|
IntegratorTrajectory = typing.NewType("IntegratorTrajectory", None)
|
|
48
|
+
JointSpaceHalfSpacesConstraint = typing.NewType("JointSpaceHalfSpacesConstraint", None)
|
|
48
49
|
JointsTask = typing.NewType("JointsTask", None)
|
|
49
50
|
KinematicsConstraint = typing.NewType("KinematicsConstraint", None)
|
|
50
51
|
KinematicsSolver = typing.NewType("KinematicsSolver", None)
|
|
@@ -56,10 +57,12 @@ ManipulabilityTask = typing.NewType("ManipulabilityTask", None)
|
|
|
56
57
|
OrientationTask = typing.NewType("OrientationTask", None)
|
|
57
58
|
PointContact = typing.NewType("PointContact", None)
|
|
58
59
|
PolygonConstraint = typing.NewType("PolygonConstraint", None)
|
|
60
|
+
Polynom = typing.NewType("Polynom", None)
|
|
59
61
|
PositionTask = typing.NewType("PositionTask", None)
|
|
60
62
|
Prioritized = typing.NewType("Prioritized", None)
|
|
61
63
|
Problem = typing.NewType("Problem", None)
|
|
62
64
|
ProblemConstraint = typing.NewType("ProblemConstraint", None)
|
|
65
|
+
ProblemPolynom = typing.NewType("ProblemPolynom", None)
|
|
63
66
|
PuppetContact = typing.NewType("PuppetContact", None)
|
|
64
67
|
QPError = typing.NewType("QPError", None)
|
|
65
68
|
RegularizationTask = typing.NewType("RegularizationTask", None)
|
|
@@ -68,6 +71,7 @@ RelativeOrientationTask = typing.NewType("RelativeOrientationTask", None)
|
|
|
68
71
|
RelativePositionTask = typing.NewType("RelativePositionTask", None)
|
|
69
72
|
RobotWrapper = typing.NewType("RobotWrapper", None)
|
|
70
73
|
RobotWrapper_State = typing.NewType("RobotWrapper_State", None)
|
|
74
|
+
Segment = typing.NewType("Segment", None)
|
|
71
75
|
Sparsity = typing.NewType("Sparsity", None)
|
|
72
76
|
SparsityInterval = typing.NewType("SparsityInterval", None)
|
|
73
77
|
Support = typing.NewType("Support", None)
|
|
@@ -81,9 +85,10 @@ SwingFootTrajectory = typing.NewType("SwingFootTrajectory", None)
|
|
|
81
85
|
Task = typing.NewType("Task", None)
|
|
82
86
|
TaskContact = typing.NewType("TaskContact", None)
|
|
83
87
|
Variable = typing.NewType("Variable", None)
|
|
88
|
+
WPGTrajectory = typing.NewType("WPGTrajectory", None)
|
|
89
|
+
WPGTrajectoryPart = typing.NewType("WPGTrajectoryPart", None)
|
|
84
90
|
WalkPatternGenerator = typing.NewType("WalkPatternGenerator", None)
|
|
85
91
|
WalkTasks = typing.NewType("WalkTasks", None)
|
|
86
|
-
WalkTrajectory = typing.NewType("WalkTrajectory", None)
|
|
87
92
|
WheelTask = typing.NewType("WheelTask", None)
|
|
88
93
|
map_indexing_suite_map_string_double_entry = typing.NewType("map_indexing_suite_map_string_double_entry", None)
|
|
89
94
|
map_string_double = typing.NewType("map_string_double", None)
|
|
@@ -2630,13 +2635,19 @@ class Footstep:
|
|
|
2630
2635
|
) -> any:
|
|
2631
2636
|
...
|
|
2632
2637
|
|
|
2638
|
+
dx: float # double
|
|
2639
|
+
|
|
2640
|
+
dy: float # double
|
|
2641
|
+
|
|
2633
2642
|
foot_length: float # double
|
|
2634
2643
|
|
|
2635
2644
|
foot_width: float # double
|
|
2636
2645
|
|
|
2637
|
-
frame
|
|
2646
|
+
def frame(
|
|
2647
|
+
self: Footstep,
|
|
2638
2648
|
|
|
2639
|
-
|
|
2649
|
+
) -> numpy.ndarray:
|
|
2650
|
+
...
|
|
2640
2651
|
|
|
2641
2652
|
def overlap(
|
|
2642
2653
|
self: Footstep,
|
|
@@ -2654,6 +2665,8 @@ class Footstep:
|
|
|
2654
2665
|
) -> bool:
|
|
2655
2666
|
...
|
|
2656
2667
|
|
|
2668
|
+
raw_frame: numpy.ndarray # Eigen::Affine3d
|
|
2669
|
+
|
|
2657
2670
|
side: any # placo::humanoid::HumanoidRobot::Side
|
|
2658
2671
|
|
|
2659
2672
|
def support_polygon(
|
|
@@ -2697,17 +2710,10 @@ class FootstepsPlanner:
|
|
|
2697
2710
|
:param parameters: Parameters of the walk"""
|
|
2698
2711
|
...
|
|
2699
2712
|
|
|
2700
|
-
@staticmethod
|
|
2701
|
-
def add_first_support(
|
|
2702
|
-
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
2703
|
-
support: Support, # placo::humanoid::FootstepsPlanner::Support
|
|
2704
|
-
|
|
2705
|
-
) -> None:
|
|
2706
|
-
...
|
|
2707
|
-
|
|
2708
2713
|
@staticmethod
|
|
2709
2714
|
def make_supports(
|
|
2710
2715
|
footsteps: list[Footstep], # std::vector<placo::humanoid::FootstepsPlanner::Footstep>
|
|
2716
|
+
t_start: float, # double
|
|
2711
2717
|
start: bool = True, # bool
|
|
2712
2718
|
middle: bool = False, # bool
|
|
2713
2719
|
end: bool = True, # bool
|
|
@@ -2745,14 +2751,6 @@ class FootstepsPlannerNaive:
|
|
|
2745
2751
|
) -> any:
|
|
2746
2752
|
...
|
|
2747
2753
|
|
|
2748
|
-
@staticmethod
|
|
2749
|
-
def add_first_support(
|
|
2750
|
-
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
2751
|
-
support: Support, # placo::humanoid::FootstepsPlanner::Support
|
|
2752
|
-
|
|
2753
|
-
) -> None:
|
|
2754
|
-
...
|
|
2755
|
-
|
|
2756
2754
|
def configure(
|
|
2757
2755
|
self: FootstepsPlannerNaive,
|
|
2758
2756
|
T_world_left_target: numpy.ndarray, # Eigen::Affine3d
|
|
@@ -2770,6 +2768,7 @@ class FootstepsPlannerNaive:
|
|
|
2770
2768
|
@staticmethod
|
|
2771
2769
|
def make_supports(
|
|
2772
2770
|
footsteps: list[Footstep], # std::vector<placo::humanoid::FootstepsPlanner::Footstep>
|
|
2771
|
+
t_start: float, # double
|
|
2773
2772
|
start: bool = True, # bool
|
|
2774
2773
|
middle: bool = False, # bool
|
|
2775
2774
|
end: bool = True, # bool
|
|
@@ -2824,14 +2823,6 @@ class FootstepsPlannerRepetitive:
|
|
|
2824
2823
|
) -> any:
|
|
2825
2824
|
...
|
|
2826
2825
|
|
|
2827
|
-
@staticmethod
|
|
2828
|
-
def add_first_support(
|
|
2829
|
-
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
2830
|
-
support: Support, # placo::humanoid::FootstepsPlanner::Support
|
|
2831
|
-
|
|
2832
|
-
) -> None:
|
|
2833
|
-
...
|
|
2834
|
-
|
|
2835
2826
|
def configure(
|
|
2836
2827
|
self: FootstepsPlannerRepetitive,
|
|
2837
2828
|
x: float, # double
|
|
@@ -2855,6 +2846,7 @@ class FootstepsPlannerRepetitive:
|
|
|
2855
2846
|
@staticmethod
|
|
2856
2847
|
def make_supports(
|
|
2857
2848
|
footsteps: list[Footstep], # std::vector<placo::humanoid::FootstepsPlanner::Footstep>
|
|
2849
|
+
t_start: float, # double
|
|
2858
2850
|
start: bool = True, # bool
|
|
2859
2851
|
middle: bool = False, # bool
|
|
2860
2852
|
end: bool = True, # bool
|
|
@@ -3064,7 +3056,7 @@ class HumanoidParameters:
|
|
|
3064
3056
|
self: HumanoidParameters,
|
|
3065
3057
|
|
|
3066
3058
|
) -> float:
|
|
3067
|
-
"""
|
|
3059
|
+
"""Default duration [s]of a double support."""
|
|
3068
3060
|
...
|
|
3069
3061
|
|
|
3070
3062
|
double_support_ratio: float # double
|
|
@@ -3075,14 +3067,14 @@ class HumanoidParameters:
|
|
|
3075
3067
|
self: HumanoidParameters,
|
|
3076
3068
|
|
|
3077
3069
|
) -> int:
|
|
3078
|
-
"""
|
|
3070
|
+
"""Default number of timesteps for one double support."""
|
|
3079
3071
|
...
|
|
3080
3072
|
|
|
3081
3073
|
def dt(
|
|
3082
3074
|
self: HumanoidParameters,
|
|
3083
3075
|
|
|
3084
3076
|
) -> float:
|
|
3085
|
-
"""
|
|
3077
|
+
"""Timestep duration for planning [s]."""
|
|
3086
3078
|
...
|
|
3087
3079
|
|
|
3088
3080
|
def ellipsoid_clip(
|
|
@@ -3120,34 +3112,16 @@ class HumanoidParameters:
|
|
|
3120
3112
|
"""Checks if the walk resulting from those parameters will have double supports."""
|
|
3121
3113
|
...
|
|
3122
3114
|
|
|
3123
|
-
def kick_support_duration(
|
|
3124
|
-
self: HumanoidParameters,
|
|
3125
|
-
|
|
3126
|
-
) -> float:
|
|
3127
|
-
"""Duration [s] of a kick support."""
|
|
3128
|
-
...
|
|
3129
|
-
|
|
3130
|
-
kick_support_ratio: float # double
|
|
3131
|
-
"""Duration ratio between single support and kick support.
|
|
3132
|
-
"""
|
|
3133
|
-
|
|
3134
|
-
def kick_support_timesteps(
|
|
3135
|
-
self: HumanoidParameters,
|
|
3136
|
-
|
|
3137
|
-
) -> int:
|
|
3138
|
-
"""Duration [timesteps]of a kick support."""
|
|
3139
|
-
...
|
|
3140
|
-
|
|
3141
3115
|
planned_timesteps: int # int
|
|
3142
3116
|
"""Planning horizon for the CoM trajectory.
|
|
3143
3117
|
"""
|
|
3144
3118
|
|
|
3145
3119
|
replan_timesteps: int # int
|
|
3146
|
-
"""Number of timesteps between each replan
|
|
3120
|
+
"""Number of timesteps between each replan for the CoM trajectory.
|
|
3147
3121
|
"""
|
|
3148
3122
|
|
|
3149
3123
|
single_support_duration: float # double
|
|
3150
|
-
"""
|
|
3124
|
+
"""Single support duration [s].
|
|
3151
3125
|
"""
|
|
3152
3126
|
|
|
3153
3127
|
single_support_timesteps: int # int
|
|
@@ -3158,18 +3132,18 @@ class HumanoidParameters:
|
|
|
3158
3132
|
self: HumanoidParameters,
|
|
3159
3133
|
|
|
3160
3134
|
) -> float:
|
|
3161
|
-
"""
|
|
3135
|
+
"""Default duration [s] of a start/end double support."""
|
|
3162
3136
|
...
|
|
3163
3137
|
|
|
3164
3138
|
startend_double_support_ratio: float # double
|
|
3165
|
-
"""Duration ratio between single support and double support.
|
|
3139
|
+
"""Duration ratio between single support and start/end double support.
|
|
3166
3140
|
"""
|
|
3167
3141
|
|
|
3168
3142
|
def startend_double_support_timesteps(
|
|
3169
3143
|
self: HumanoidParameters,
|
|
3170
3144
|
|
|
3171
3145
|
) -> int:
|
|
3172
|
-
"""
|
|
3146
|
+
"""Default number of timesteps for one start/end double support."""
|
|
3173
3147
|
...
|
|
3174
3148
|
|
|
3175
3149
|
walk_com_height: float # double
|
|
@@ -4001,7 +3975,7 @@ class Integrator:
|
|
|
4001
3975
|
"""Builds an expression for the given step and differentiation.
|
|
4002
3976
|
|
|
4003
3977
|
|
|
4004
|
-
:param step: the step
|
|
3978
|
+
:param step: the step, (if -1 the last step will be used)
|
|
4005
3979
|
|
|
4006
3980
|
:param diff: differentiation (if -1, the expression will be a vector of size order with all orders)
|
|
4007
3981
|
|
|
@@ -4106,6 +4080,50 @@ class IntegratorTrajectory:
|
|
|
4106
4080
|
...
|
|
4107
4081
|
|
|
4108
4082
|
|
|
4083
|
+
class JointSpaceHalfSpacesConstraint:
|
|
4084
|
+
A: numpy.ndarray # Eigen::MatrixXd
|
|
4085
|
+
"""Matrix A in Aq <= b.
|
|
4086
|
+
"""
|
|
4087
|
+
|
|
4088
|
+
def __init__(
|
|
4089
|
+
self: JointSpaceHalfSpacesConstraint,
|
|
4090
|
+
A: numpy.ndarray, # const Eigen::MatrixXd
|
|
4091
|
+
b: numpy.ndarray, # Eigen::VectorXd
|
|
4092
|
+
|
|
4093
|
+
) -> any:
|
|
4094
|
+
"""Ensures that, in joint-space we have Aq <= b Note that the floating base terms will be ignored in A. However, A should still be of dimension n_constraints x n_q."""
|
|
4095
|
+
...
|
|
4096
|
+
|
|
4097
|
+
b: numpy.ndarray # Eigen::VectorXd
|
|
4098
|
+
"""Vector b in Aq <= b.
|
|
4099
|
+
"""
|
|
4100
|
+
|
|
4101
|
+
def configure(
|
|
4102
|
+
self: JointSpaceHalfSpacesConstraint,
|
|
4103
|
+
name: str, # std::string
|
|
4104
|
+
priority: any, # placo::kinematics::ConeConstraint::Priority
|
|
4105
|
+
weight: float = 1.0, # double
|
|
4106
|
+
|
|
4107
|
+
) -> None:
|
|
4108
|
+
"""Configures the object.
|
|
4109
|
+
|
|
4110
|
+
|
|
4111
|
+
:param name: task name
|
|
4112
|
+
|
|
4113
|
+
:param priority: task priority (hard, soft or scaled)
|
|
4114
|
+
|
|
4115
|
+
:param weight: task weight"""
|
|
4116
|
+
...
|
|
4117
|
+
|
|
4118
|
+
name: str # std::string
|
|
4119
|
+
"""Object name.
|
|
4120
|
+
"""
|
|
4121
|
+
|
|
4122
|
+
priority: any # placo::kinematics::ConeConstraint::Priority
|
|
4123
|
+
"""Object priority.
|
|
4124
|
+
"""
|
|
4125
|
+
|
|
4126
|
+
|
|
4109
4127
|
class JointsTask:
|
|
4110
4128
|
A: numpy.ndarray # Eigen::MatrixXd
|
|
4111
4129
|
"""Matrix A in the task Ax = b, where x are the joint delta positions.
|
|
@@ -4399,6 +4417,22 @@ class KinematicsSolver:
|
|
|
4399
4417
|
:return: gear task"""
|
|
4400
4418
|
...
|
|
4401
4419
|
|
|
4420
|
+
def add_joint_space_half_spaces_constraint(
|
|
4421
|
+
self: KinematicsSolver,
|
|
4422
|
+
A: numpy.ndarray, # Eigen::MatrixXd
|
|
4423
|
+
b: numpy.ndarray, # Eigen::VectorXd
|
|
4424
|
+
|
|
4425
|
+
) -> JointSpaceHalfSpacesConstraint:
|
|
4426
|
+
"""Adds a joint-space half-spaces constraint, such that Aq <= b.
|
|
4427
|
+
|
|
4428
|
+
|
|
4429
|
+
:param A: matrix A in Aq <= b
|
|
4430
|
+
|
|
4431
|
+
:param b: vector b in Aq <= b
|
|
4432
|
+
|
|
4433
|
+
:return: the constraint"""
|
|
4434
|
+
...
|
|
4435
|
+
|
|
4402
4436
|
def add_joints_task(
|
|
4403
4437
|
self: KinematicsSolver,
|
|
4404
4438
|
|
|
@@ -4760,8 +4794,9 @@ class LIPM:
|
|
|
4760
4794
|
def __init__(
|
|
4761
4795
|
self: LIPM,
|
|
4762
4796
|
problem: Problem, # placo::problem::Problem
|
|
4763
|
-
timesteps: int, # int
|
|
4764
4797
|
dt: float, # double
|
|
4798
|
+
timesteps: int, # int
|
|
4799
|
+
t_start: float, # double
|
|
4765
4800
|
initial_pos: numpy.ndarray, # Eigen::Vector2d
|
|
4766
4801
|
initial_vel: numpy.ndarray, # Eigen::Vector2d
|
|
4767
4802
|
initial_acc: numpy.ndarray, # Eigen::Vector2d
|
|
@@ -4776,6 +4811,17 @@ class LIPM:
|
|
|
4776
4811
|
) -> Expression:
|
|
4777
4812
|
...
|
|
4778
4813
|
|
|
4814
|
+
@staticmethod
|
|
4815
|
+
def build_LIPM_from_previous(
|
|
4816
|
+
problem: Problem, # placo::problem::Problem
|
|
4817
|
+
dt: float, # double
|
|
4818
|
+
timesteps: int, # int
|
|
4819
|
+
t_start: float, # double
|
|
4820
|
+
previous: LIPM, # placo::humanoid::LIPM
|
|
4821
|
+
|
|
4822
|
+
) -> LIPM:
|
|
4823
|
+
...
|
|
4824
|
+
|
|
4779
4825
|
@staticmethod
|
|
4780
4826
|
def compute_omega(
|
|
4781
4827
|
com_height: float, # double
|
|
@@ -4792,6 +4838,8 @@ class LIPM:
|
|
|
4792
4838
|
) -> Expression:
|
|
4793
4839
|
...
|
|
4794
4840
|
|
|
4841
|
+
dt: float # double
|
|
4842
|
+
|
|
4795
4843
|
def dzmp(
|
|
4796
4844
|
self: LIPM,
|
|
4797
4845
|
timestep: int, # int
|
|
@@ -4804,6 +4852,7 @@ class LIPM:
|
|
|
4804
4852
|
self: LIPM,
|
|
4805
4853
|
|
|
4806
4854
|
) -> LIPMTrajectory:
|
|
4855
|
+
"""Get the LIPM trajectory. Should be used after solving the problem."""
|
|
4807
4856
|
...
|
|
4808
4857
|
|
|
4809
4858
|
def jerk(
|
|
@@ -4820,6 +4869,12 @@ class LIPM:
|
|
|
4820
4869
|
) -> Expression:
|
|
4821
4870
|
...
|
|
4822
4871
|
|
|
4872
|
+
t_end: float # double
|
|
4873
|
+
|
|
4874
|
+
t_start: float # double
|
|
4875
|
+
|
|
4876
|
+
timesteps: int # int
|
|
4877
|
+
|
|
4823
4878
|
def vel(
|
|
4824
4879
|
self: LIPM,
|
|
4825
4880
|
timestep: int, # int
|
|
@@ -4829,8 +4884,12 @@ class LIPM:
|
|
|
4829
4884
|
|
|
4830
4885
|
x: Integrator # placo::problem::Integrator
|
|
4831
4886
|
|
|
4887
|
+
x_var: Variable # placo::problem::Variable
|
|
4888
|
+
|
|
4832
4889
|
y: Integrator # placo::problem::Integrator
|
|
4833
4890
|
|
|
4891
|
+
y_var: Variable # placo::problem::Variable
|
|
4892
|
+
|
|
4834
4893
|
def zmp(
|
|
4835
4894
|
self: LIPM,
|
|
4836
4895
|
timestep: int, # int
|
|
@@ -5215,6 +5274,43 @@ class PolygonConstraint:
|
|
|
5215
5274
|
...
|
|
5216
5275
|
|
|
5217
5276
|
|
|
5277
|
+
class Polynom:
|
|
5278
|
+
def __init__(
|
|
5279
|
+
self: Polynom,
|
|
5280
|
+
coefficients: numpy.ndarray, # Eigen::VectorXd
|
|
5281
|
+
|
|
5282
|
+
) -> any:
|
|
5283
|
+
...
|
|
5284
|
+
|
|
5285
|
+
coefficients: numpy.ndarray # Eigen::VectorXd
|
|
5286
|
+
"""coefficients, from highest to lowest
|
|
5287
|
+
"""
|
|
5288
|
+
|
|
5289
|
+
@staticmethod
|
|
5290
|
+
def derivative_coefficient(
|
|
5291
|
+
degree: int, # int
|
|
5292
|
+
derivative: int, # int
|
|
5293
|
+
|
|
5294
|
+
) -> int:
|
|
5295
|
+
...
|
|
5296
|
+
|
|
5297
|
+
def value(
|
|
5298
|
+
self: Polynom,
|
|
5299
|
+
x: float, # double
|
|
5300
|
+
derivative: int = 0, # int
|
|
5301
|
+
|
|
5302
|
+
) -> float:
|
|
5303
|
+
"""Computes the value of polynom.
|
|
5304
|
+
|
|
5305
|
+
|
|
5306
|
+
:param x: abscissa
|
|
5307
|
+
|
|
5308
|
+
:param derivative: differentiation order (0: p, 1: p', 2: p'' etc.)
|
|
5309
|
+
|
|
5310
|
+
:return: value"""
|
|
5311
|
+
...
|
|
5312
|
+
|
|
5313
|
+
|
|
5218
5314
|
class PositionTask:
|
|
5219
5315
|
A: numpy.ndarray # Eigen::MatrixXd
|
|
5220
5316
|
"""Matrix A in the task Ax = b, where x are the joint delta positions.
|
|
@@ -5496,6 +5592,43 @@ class ProblemConstraint:
|
|
|
5496
5592
|
"""
|
|
5497
5593
|
|
|
5498
5594
|
|
|
5595
|
+
class ProblemPolynom:
|
|
5596
|
+
"""Represents a polynom for which decision variables are problem coefficients.
|
|
5597
|
+
"""
|
|
5598
|
+
def __init__(
|
|
5599
|
+
self: ProblemPolynom,
|
|
5600
|
+
variable: Variable, # placo::problem::Variable
|
|
5601
|
+
|
|
5602
|
+
) -> any:
|
|
5603
|
+
...
|
|
5604
|
+
|
|
5605
|
+
def expr(
|
|
5606
|
+
self: ProblemPolynom,
|
|
5607
|
+
x: float, # double
|
|
5608
|
+
derivative: int = 0, # int
|
|
5609
|
+
|
|
5610
|
+
) -> Expression:
|
|
5611
|
+
"""Builds a problem expression for the value of the polynom.
|
|
5612
|
+
|
|
5613
|
+
|
|
5614
|
+
:param x: abscissa
|
|
5615
|
+
|
|
5616
|
+
:param derivative: differentiation order (0: p, 1: p', 2: p'' etc.)
|
|
5617
|
+
|
|
5618
|
+
:return: problem expression"""
|
|
5619
|
+
...
|
|
5620
|
+
|
|
5621
|
+
def get_polynom(
|
|
5622
|
+
self: ProblemPolynom,
|
|
5623
|
+
|
|
5624
|
+
) -> Polynom:
|
|
5625
|
+
"""Obtain resulting polynom (after problem is solved)
|
|
5626
|
+
|
|
5627
|
+
|
|
5628
|
+
:return:"""
|
|
5629
|
+
...
|
|
5630
|
+
|
|
5631
|
+
|
|
5499
5632
|
class PuppetContact:
|
|
5500
5633
|
def __init__(
|
|
5501
5634
|
self: PuppetContact,
|
|
@@ -6425,6 +6558,123 @@ class RobotWrapper_State:
|
|
|
6425
6558
|
"""
|
|
6426
6559
|
|
|
6427
6560
|
|
|
6561
|
+
class Segment:
|
|
6562
|
+
def __init__(
|
|
6563
|
+
self: Segment,
|
|
6564
|
+
start: numpy.ndarray, # const Eigen::Vector2d &
|
|
6565
|
+
end: numpy.ndarray, # const Eigen::Vector2d &
|
|
6566
|
+
|
|
6567
|
+
) -> any:
|
|
6568
|
+
...
|
|
6569
|
+
|
|
6570
|
+
end: numpy.ndarray # Eigen::Vector2d
|
|
6571
|
+
|
|
6572
|
+
def intersects(
|
|
6573
|
+
self: Segment,
|
|
6574
|
+
s: Segment, # placo::tools::Segment
|
|
6575
|
+
|
|
6576
|
+
) -> bool:
|
|
6577
|
+
"""Checks if there is an intersection between this segment and another one, i.e. if the intersection of their guiding lines is a point of both segments.
|
|
6578
|
+
|
|
6579
|
+
|
|
6580
|
+
:param s: The other segment.
|
|
6581
|
+
|
|
6582
|
+
:return: True if there is an intersection."""
|
|
6583
|
+
...
|
|
6584
|
+
|
|
6585
|
+
def is_collinear(
|
|
6586
|
+
self: Segment,
|
|
6587
|
+
s: Segment, # placo::tools::Segment
|
|
6588
|
+
epsilon: float = 1e-6, # double
|
|
6589
|
+
|
|
6590
|
+
) -> bool:
|
|
6591
|
+
"""Checks if this segment is collinear with another one.
|
|
6592
|
+
|
|
6593
|
+
|
|
6594
|
+
:param s: The segment to check collinearity with.
|
|
6595
|
+
|
|
6596
|
+
:param epsilon: To account for floating point errors.
|
|
6597
|
+
|
|
6598
|
+
:return: True if the segments are collinear."""
|
|
6599
|
+
...
|
|
6600
|
+
|
|
6601
|
+
def is_parallel(
|
|
6602
|
+
self: Segment,
|
|
6603
|
+
s: Segment, # placo::tools::Segment
|
|
6604
|
+
epsilon: float = 1e-6, # double
|
|
6605
|
+
|
|
6606
|
+
) -> bool:
|
|
6607
|
+
"""Checks if this segment is parallel to another one.
|
|
6608
|
+
|
|
6609
|
+
|
|
6610
|
+
:param s: The segment to check parallelism with.
|
|
6611
|
+
|
|
6612
|
+
:param epsilon: To account for floating point errors.
|
|
6613
|
+
|
|
6614
|
+
:return: True if the segments are parallel."""
|
|
6615
|
+
...
|
|
6616
|
+
|
|
6617
|
+
def is_point_aligned(
|
|
6618
|
+
self: Segment,
|
|
6619
|
+
point: numpy.ndarray, # const Eigen::Vector2d &
|
|
6620
|
+
epsilon: float = 1e-6, # double
|
|
6621
|
+
|
|
6622
|
+
) -> bool:
|
|
6623
|
+
"""Checks if a point is aligned with this segment.
|
|
6624
|
+
|
|
6625
|
+
|
|
6626
|
+
:param point: The point to check alignment with.
|
|
6627
|
+
|
|
6628
|
+
:param epsilon: To account for floating point errors.
|
|
6629
|
+
|
|
6630
|
+
:return: True if the point is aligned with the segment."""
|
|
6631
|
+
...
|
|
6632
|
+
|
|
6633
|
+
def is_point_in_segment(
|
|
6634
|
+
self: Segment,
|
|
6635
|
+
point: numpy.ndarray, # const Eigen::Vector2d &
|
|
6636
|
+
epsilon: float = 1e-6, # double
|
|
6637
|
+
|
|
6638
|
+
) -> bool:
|
|
6639
|
+
"""Checks if a point is in the segment.
|
|
6640
|
+
|
|
6641
|
+
|
|
6642
|
+
:param point: The point to check.
|
|
6643
|
+
|
|
6644
|
+
:param epsilon: To account for floating point errors.
|
|
6645
|
+
|
|
6646
|
+
:return: True if the point is in the segment."""
|
|
6647
|
+
...
|
|
6648
|
+
|
|
6649
|
+
def line_pass_through(
|
|
6650
|
+
self: Segment,
|
|
6651
|
+
s: Segment, # placo::tools::Segment
|
|
6652
|
+
|
|
6653
|
+
) -> bool:
|
|
6654
|
+
"""Checks if the guiding line of another segment pass through this segment, i.e. if the intersection between the guiding lines of this segment and another one is a point of this segment.
|
|
6655
|
+
|
|
6656
|
+
|
|
6657
|
+
:param s: The other segment.
|
|
6658
|
+
|
|
6659
|
+
:return: True if the intersection is a point of this segment."""
|
|
6660
|
+
...
|
|
6661
|
+
|
|
6662
|
+
def lines_intersection(
|
|
6663
|
+
self: Segment,
|
|
6664
|
+
s: Segment, # placo::tools::Segment
|
|
6665
|
+
|
|
6666
|
+
) -> numpy.ndarray:
|
|
6667
|
+
"""Return the intersection between the guiding lines of this segment and another one.
|
|
6668
|
+
|
|
6669
|
+
|
|
6670
|
+
:param s: The other segment.
|
|
6671
|
+
|
|
6672
|
+
:return: The intersection point."""
|
|
6673
|
+
...
|
|
6674
|
+
|
|
6675
|
+
start: numpy.ndarray # Eigen::Vector2d
|
|
6676
|
+
|
|
6677
|
+
|
|
6428
6678
|
class Sparsity:
|
|
6429
6679
|
"""Internal helper to check the column sparsity of a matrix.
|
|
6430
6680
|
"""
|
|
@@ -6495,11 +6745,14 @@ class Support:
|
|
|
6495
6745
|
"""A support is a set of footsteps (can be one or two foot on the ground)
|
|
6496
6746
|
"""
|
|
6497
6747
|
def __init__(
|
|
6498
|
-
|
|
6748
|
+
self: Support,
|
|
6749
|
+
footsteps: list[Footstep], # std::vector<placo::humanoid::FootstepsPlanner::Footstep>
|
|
6499
6750
|
|
|
6500
|
-
) ->
|
|
6751
|
+
) -> any:
|
|
6501
6752
|
...
|
|
6502
6753
|
|
|
6754
|
+
elapsed_ratio: float # double
|
|
6755
|
+
|
|
6503
6756
|
end: bool # bool
|
|
6504
6757
|
|
|
6505
6758
|
def footstep_frame(
|
|
@@ -6534,11 +6787,7 @@ class Support:
|
|
|
6534
6787
|
"""Checks whether this support is a double support."""
|
|
6535
6788
|
...
|
|
6536
6789
|
|
|
6537
|
-
|
|
6538
|
-
self: Support,
|
|
6539
|
-
|
|
6540
|
-
) -> bool:
|
|
6541
|
-
...
|
|
6790
|
+
replanned: bool # bool
|
|
6542
6791
|
|
|
6543
6792
|
def set_end(
|
|
6544
6793
|
arg1: Support,
|
|
@@ -6569,6 +6818,10 @@ class Support:
|
|
|
6569
6818
|
) -> list[numpy.ndarray]:
|
|
6570
6819
|
...
|
|
6571
6820
|
|
|
6821
|
+
t_start: float # double
|
|
6822
|
+
|
|
6823
|
+
time_ratio: float # double
|
|
6824
|
+
|
|
6572
6825
|
|
|
6573
6826
|
class Supports:
|
|
6574
6827
|
def __init__(
|
|
@@ -6634,11 +6887,13 @@ class SwingFootCubic:
|
|
|
6634
6887
|
@staticmethod
|
|
6635
6888
|
def make_trajectory(
|
|
6636
6889
|
t_start: float, # double
|
|
6637
|
-
|
|
6890
|
+
virt_duration: float, # double
|
|
6638
6891
|
height: float, # double
|
|
6639
6892
|
rise_ratio: float, # double
|
|
6640
6893
|
start: numpy.ndarray, # Eigen::Vector3d
|
|
6641
6894
|
target: numpy.ndarray, # Eigen::Vector3d
|
|
6895
|
+
elapsed_ratio: float = 0., # double
|
|
6896
|
+
start_vel: numpy.ndarray, # Eigen::Vector3d
|
|
6642
6897
|
|
|
6643
6898
|
) -> SwingFootCubicTrajectory:
|
|
6644
6899
|
...
|
|
@@ -6872,193 +7127,63 @@ class Variable:
|
|
|
6872
7127
|
"""
|
|
6873
7128
|
|
|
6874
7129
|
|
|
6875
|
-
class
|
|
7130
|
+
class WPGTrajectory:
|
|
6876
7131
|
def __init__(
|
|
6877
|
-
|
|
6878
|
-
|
|
6879
|
-
|
|
7132
|
+
arg1: object,
|
|
7133
|
+
arg2: float,
|
|
7134
|
+
arg3: float,
|
|
7135
|
+
arg4: float,
|
|
6880
7136
|
|
|
6881
|
-
) ->
|
|
7137
|
+
) -> None:
|
|
6882
7138
|
...
|
|
6883
7139
|
|
|
6884
|
-
def
|
|
6885
|
-
self:
|
|
6886
|
-
|
|
6887
|
-
t_replan: float, # double
|
|
7140
|
+
def apply_transform(
|
|
7141
|
+
self: WPGTrajectory,
|
|
7142
|
+
T: numpy.ndarray, # Eigen::Affine3d
|
|
6888
7143
|
|
|
6889
|
-
) ->
|
|
6890
|
-
"""
|
|
7144
|
+
) -> None:
|
|
7145
|
+
"""Applies a given transformation to the left of all values issued by the trajectory."""
|
|
6891
7146
|
...
|
|
6892
7147
|
|
|
6893
|
-
|
|
6894
|
-
self: WalkPatternGenerator,
|
|
6895
|
-
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
6896
|
-
initial_com_world: numpy.ndarray, # Eigen::Vector3d
|
|
6897
|
-
t_start: float = 0., # double
|
|
6898
|
-
|
|
6899
|
-
) -> WalkTrajectory:
|
|
6900
|
-
"""Plan a walk trajectory following given footsteps based on the parameters of the WPG.
|
|
6901
|
-
|
|
7148
|
+
com_target_z: float # double
|
|
6902
7149
|
|
|
6903
|
-
|
|
7150
|
+
def get_R_world_trunk(
|
|
7151
|
+
self: WPGTrajectory,
|
|
7152
|
+
t: float, # double
|
|
6904
7153
|
|
|
6905
|
-
|
|
6906
|
-
...
|
|
6907
|
-
|
|
6908
|
-
def replan(
|
|
6909
|
-
self: WalkPatternGenerator,
|
|
6910
|
-
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
6911
|
-
old_trajectory: WalkTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
|
|
6912
|
-
t_replan: float, # double
|
|
6913
|
-
|
|
6914
|
-
) -> WalkTrajectory:
|
|
6915
|
-
"""Update the walk trajectory to follow given footsteps based on the parameters of the WPG.
|
|
6916
|
-
|
|
6917
|
-
|
|
6918
|
-
:param supports: Supports generated from the current foosteps or the new ones to follow. Contain the current support
|
|
6919
|
-
|
|
6920
|
-
:param old_trajectory: Current walk trajectory
|
|
6921
|
-
|
|
6922
|
-
:param t_replan: The time (in the original trajectory) where the replan happens
|
|
6923
|
-
|
|
6924
|
-
:return: True if the trajectory have been replanned, false it hasn't"""
|
|
6925
|
-
...
|
|
6926
|
-
|
|
6927
|
-
def replan_supports(
|
|
6928
|
-
self: WalkPatternGenerator,
|
|
6929
|
-
planner: FootstepsPlanner, # placo::humanoid::FootstepsPlanner
|
|
6930
|
-
trajectory: WalkTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
|
|
6931
|
-
t_replan: float, # double
|
|
6932
|
-
|
|
6933
|
-
) -> list[Support]:
|
|
6934
|
-
"""Replan the supports for a given trajectory given a footsteps planner."""
|
|
6935
|
-
...
|
|
6936
|
-
|
|
6937
|
-
|
|
6938
|
-
class WalkTasks:
|
|
6939
|
-
def __init__(
|
|
6940
|
-
arg1: object,
|
|
6941
|
-
|
|
6942
|
-
) -> None:
|
|
6943
|
-
...
|
|
6944
|
-
|
|
6945
|
-
com_x: float # double
|
|
6946
|
-
|
|
6947
|
-
com_y: float # double
|
|
6948
|
-
|
|
6949
|
-
def get_tasks_error(
|
|
6950
|
-
self: WalkTasks,
|
|
6951
|
-
|
|
6952
|
-
) -> any:
|
|
6953
|
-
...
|
|
6954
|
-
|
|
6955
|
-
def initialize_tasks(
|
|
6956
|
-
self: WalkTasks,
|
|
6957
|
-
solver: KinematicsSolver, # placo::kinematics::KinematicsSolver
|
|
6958
|
-
robot: HumanoidRobot, # placo::humanoid::HumanoidRobot
|
|
6959
|
-
|
|
6960
|
-
) -> None:
|
|
6961
|
-
...
|
|
6962
|
-
|
|
6963
|
-
left_foot_task: FrameTask # placo::kinematics::FrameTask
|
|
6964
|
-
|
|
6965
|
-
def reach_initial_pose(
|
|
6966
|
-
self: WalkTasks,
|
|
6967
|
-
T_world_left: numpy.ndarray, # Eigen::Affine3d
|
|
6968
|
-
feet_spacing: float, # double
|
|
6969
|
-
com_height: float, # double
|
|
6970
|
-
trunk_pitch: float, # double
|
|
6971
|
-
|
|
6972
|
-
) -> None:
|
|
6973
|
-
...
|
|
6974
|
-
|
|
6975
|
-
def remove_tasks(
|
|
6976
|
-
self: WalkTasks,
|
|
6977
|
-
|
|
6978
|
-
) -> None:
|
|
6979
|
-
...
|
|
6980
|
-
|
|
6981
|
-
right_foot_task: FrameTask # placo::kinematics::FrameTask
|
|
6982
|
-
|
|
6983
|
-
scaled: bool # bool
|
|
6984
|
-
|
|
6985
|
-
solver: KinematicsSolver # placo::kinematics::KinematicsSolver
|
|
6986
|
-
|
|
6987
|
-
trunk_mode: bool # bool
|
|
6988
|
-
|
|
6989
|
-
trunk_orientation_task: OrientationTask # placo::kinematics::OrientationTask
|
|
6990
|
-
|
|
6991
|
-
def update_tasks(
|
|
6992
|
-
self: WalkTasks,
|
|
6993
|
-
T_world_left: numpy.ndarray, # Eigen::Affine3d
|
|
6994
|
-
T_world_right: numpy.ndarray, # Eigen::Affine3d
|
|
6995
|
-
com_world: numpy.ndarray, # Eigen::Vector3d
|
|
6996
|
-
R_world_trunk: numpy.ndarray, # Eigen::Matrix3d
|
|
6997
|
-
|
|
6998
|
-
) -> None:
|
|
6999
|
-
...
|
|
7000
|
-
|
|
7001
|
-
def update_tasks_from_trajectory(
|
|
7002
|
-
arg1: WalkTasks,
|
|
7003
|
-
arg2: WalkTrajectory,
|
|
7004
|
-
arg3: float,
|
|
7005
|
-
|
|
7006
|
-
) -> None:
|
|
7007
|
-
...
|
|
7008
|
-
|
|
7009
|
-
|
|
7010
|
-
class WalkTrajectory:
|
|
7011
|
-
def __init__(
|
|
7012
|
-
arg1: object,
|
|
7013
|
-
|
|
7014
|
-
) -> None:
|
|
7015
|
-
...
|
|
7016
|
-
|
|
7017
|
-
def apply_transform(
|
|
7018
|
-
self: WalkTrajectory,
|
|
7019
|
-
T: numpy.ndarray, # Eigen::Affine3d
|
|
7020
|
-
|
|
7021
|
-
) -> None:
|
|
7022
|
-
"""Applies a given transformation to the left of all values issued by the trajectory."""
|
|
7023
|
-
...
|
|
7024
|
-
|
|
7025
|
-
def get_R_world_trunk(
|
|
7026
|
-
self: WalkTrajectory,
|
|
7027
|
-
t: float, # double
|
|
7028
|
-
|
|
7029
|
-
) -> numpy.ndarray:
|
|
7154
|
+
) -> numpy.ndarray:
|
|
7030
7155
|
...
|
|
7031
7156
|
|
|
7032
7157
|
def get_T_world_left(
|
|
7033
|
-
self:
|
|
7158
|
+
self: WPGTrajectory,
|
|
7034
7159
|
t: float, # double
|
|
7035
7160
|
|
|
7036
7161
|
) -> numpy.ndarray:
|
|
7037
7162
|
...
|
|
7038
7163
|
|
|
7039
7164
|
def get_T_world_right(
|
|
7040
|
-
self:
|
|
7165
|
+
self: WPGTrajectory,
|
|
7041
7166
|
t: float, # double
|
|
7042
7167
|
|
|
7043
7168
|
) -> numpy.ndarray:
|
|
7044
7169
|
...
|
|
7045
7170
|
|
|
7046
7171
|
def get_a_world_CoM(
|
|
7047
|
-
self:
|
|
7172
|
+
self: WPGTrajectory,
|
|
7048
7173
|
t: float, # double
|
|
7049
7174
|
|
|
7050
7175
|
) -> numpy.ndarray:
|
|
7051
7176
|
...
|
|
7052
7177
|
|
|
7053
7178
|
def get_j_world_CoM(
|
|
7054
|
-
self:
|
|
7179
|
+
self: WPGTrajectory,
|
|
7055
7180
|
t: float, # double
|
|
7056
7181
|
|
|
7057
7182
|
) -> numpy.ndarray:
|
|
7058
7183
|
...
|
|
7059
7184
|
|
|
7060
7185
|
def get_next_support(
|
|
7061
|
-
self:
|
|
7186
|
+
self: WPGTrajectory,
|
|
7062
7187
|
t: float, # double
|
|
7063
7188
|
n: int = 1, # int
|
|
7064
7189
|
|
|
@@ -7067,14 +7192,14 @@ class WalkTrajectory:
|
|
|
7067
7192
|
...
|
|
7068
7193
|
|
|
7069
7194
|
def get_p_world_CoM(
|
|
7070
|
-
self:
|
|
7195
|
+
self: WPGTrajectory,
|
|
7071
7196
|
t: float, # double
|
|
7072
7197
|
|
|
7073
7198
|
) -> numpy.ndarray:
|
|
7074
7199
|
...
|
|
7075
7200
|
|
|
7076
7201
|
def get_p_world_DCM(
|
|
7077
|
-
self:
|
|
7202
|
+
self: WPGTrajectory,
|
|
7078
7203
|
t: float, # double
|
|
7079
7204
|
omega: float, # double
|
|
7080
7205
|
|
|
@@ -7082,7 +7207,7 @@ class WalkTrajectory:
|
|
|
7082
7207
|
...
|
|
7083
7208
|
|
|
7084
7209
|
def get_p_world_ZMP(
|
|
7085
|
-
self:
|
|
7210
|
+
self: WPGTrajectory,
|
|
7086
7211
|
t: float, # double
|
|
7087
7212
|
omega: float, # double
|
|
7088
7213
|
|
|
@@ -7090,7 +7215,7 @@ class WalkTrajectory:
|
|
|
7090
7215
|
...
|
|
7091
7216
|
|
|
7092
7217
|
def get_part_t_start(
|
|
7093
|
-
self:
|
|
7218
|
+
self: WPGTrajectory,
|
|
7094
7219
|
t: float, # double
|
|
7095
7220
|
|
|
7096
7221
|
) -> float:
|
|
@@ -7098,7 +7223,7 @@ class WalkTrajectory:
|
|
|
7098
7223
|
...
|
|
7099
7224
|
|
|
7100
7225
|
def get_prev_support(
|
|
7101
|
-
self:
|
|
7226
|
+
self: WPGTrajectory,
|
|
7102
7227
|
t: float, # double
|
|
7103
7228
|
n: int = 1, # int
|
|
7104
7229
|
|
|
@@ -7107,7 +7232,7 @@ class WalkTrajectory:
|
|
|
7107
7232
|
...
|
|
7108
7233
|
|
|
7109
7234
|
def get_support(
|
|
7110
|
-
self:
|
|
7235
|
+
self: WPGTrajectory,
|
|
7111
7236
|
t: float, # double
|
|
7112
7237
|
|
|
7113
7238
|
) -> Support:
|
|
@@ -7115,29 +7240,50 @@ class WalkTrajectory:
|
|
|
7115
7240
|
...
|
|
7116
7241
|
|
|
7117
7242
|
def get_supports(
|
|
7118
|
-
self:
|
|
7243
|
+
self: WPGTrajectory,
|
|
7119
7244
|
|
|
7120
7245
|
) -> list[Support]:
|
|
7121
7246
|
...
|
|
7122
7247
|
|
|
7123
7248
|
def get_v_world_CoM(
|
|
7124
|
-
self:
|
|
7249
|
+
self: WPGTrajectory,
|
|
7250
|
+
t: float, # double
|
|
7251
|
+
|
|
7252
|
+
) -> numpy.ndarray:
|
|
7253
|
+
...
|
|
7254
|
+
|
|
7255
|
+
def get_v_world_foot(
|
|
7256
|
+
self: WPGTrajectory,
|
|
7257
|
+
side: any, # placo::humanoid::HumanoidRobot::Side
|
|
7125
7258
|
t: float, # double
|
|
7126
7259
|
|
|
7127
7260
|
) -> numpy.ndarray:
|
|
7128
7261
|
...
|
|
7129
7262
|
|
|
7130
|
-
|
|
7263
|
+
def get_v_world_right(
|
|
7264
|
+
self: WPGTrajectory,
|
|
7265
|
+
t: float, # double
|
|
7266
|
+
|
|
7267
|
+
) -> numpy.ndarray:
|
|
7268
|
+
...
|
|
7269
|
+
|
|
7270
|
+
kept_ts: int # int
|
|
7271
|
+
|
|
7272
|
+
def print_parts_timings(
|
|
7273
|
+
self: WPGTrajectory,
|
|
7274
|
+
|
|
7275
|
+
) -> None:
|
|
7276
|
+
...
|
|
7131
7277
|
|
|
7132
7278
|
def support_is_both(
|
|
7133
|
-
self:
|
|
7279
|
+
self: WPGTrajectory,
|
|
7134
7280
|
t: float, # double
|
|
7135
7281
|
|
|
7136
7282
|
) -> bool:
|
|
7137
7283
|
...
|
|
7138
7284
|
|
|
7139
7285
|
def support_side(
|
|
7140
|
-
self:
|
|
7286
|
+
self: WPGTrajectory,
|
|
7141
7287
|
t: float, # double
|
|
7142
7288
|
|
|
7143
7289
|
) -> any:
|
|
@@ -7147,6 +7293,162 @@ class WalkTrajectory:
|
|
|
7147
7293
|
|
|
7148
7294
|
t_start: float # double
|
|
7149
7295
|
|
|
7296
|
+
trunk_pitch: float # double
|
|
7297
|
+
|
|
7298
|
+
trunk_roll: float # double
|
|
7299
|
+
|
|
7300
|
+
|
|
7301
|
+
class WPGTrajectoryPart:
|
|
7302
|
+
def __init__(
|
|
7303
|
+
arg1: object,
|
|
7304
|
+
arg2: Support,
|
|
7305
|
+
arg3: float,
|
|
7306
|
+
|
|
7307
|
+
) -> None:
|
|
7308
|
+
...
|
|
7309
|
+
|
|
7310
|
+
support: Support # placo::humanoid::FootstepsPlanner::Support
|
|
7311
|
+
|
|
7312
|
+
t_end: float # double
|
|
7313
|
+
|
|
7314
|
+
t_start: float # double
|
|
7315
|
+
|
|
7316
|
+
|
|
7317
|
+
class WalkPatternGenerator:
|
|
7318
|
+
def __init__(
|
|
7319
|
+
self: WalkPatternGenerator,
|
|
7320
|
+
robot: HumanoidRobot, # placo::humanoid::HumanoidRobot
|
|
7321
|
+
parameters: HumanoidParameters, # placo::humanoid::HumanoidParameters
|
|
7322
|
+
|
|
7323
|
+
) -> any:
|
|
7324
|
+
...
|
|
7325
|
+
|
|
7326
|
+
def can_replan_supports(
|
|
7327
|
+
self: WalkPatternGenerator,
|
|
7328
|
+
trajectory: WPGTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
|
|
7329
|
+
t_replan: float, # double
|
|
7330
|
+
|
|
7331
|
+
) -> bool:
|
|
7332
|
+
"""Checks if a trajectory can be replanned for supports."""
|
|
7333
|
+
...
|
|
7334
|
+
|
|
7335
|
+
def plan(
|
|
7336
|
+
self: WalkPatternGenerator,
|
|
7337
|
+
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
7338
|
+
initial_com_world: numpy.ndarray, # Eigen::Vector3d
|
|
7339
|
+
t_start: float = 0., # double
|
|
7340
|
+
|
|
7341
|
+
) -> WPGTrajectory:
|
|
7342
|
+
"""Plans a walk trajectory following given footsteps based on the parameters of the WPG.
|
|
7343
|
+
|
|
7344
|
+
|
|
7345
|
+
:param supports: Supports generated from the foosteps to follow
|
|
7346
|
+
|
|
7347
|
+
:return: Planned trajectory"""
|
|
7348
|
+
...
|
|
7349
|
+
|
|
7350
|
+
def replan(
|
|
7351
|
+
self: WalkPatternGenerator,
|
|
7352
|
+
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
7353
|
+
old_trajectory: WPGTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
|
|
7354
|
+
t_replan: float, # double
|
|
7355
|
+
|
|
7356
|
+
) -> WPGTrajectory:
|
|
7357
|
+
"""Updates the walk trajectory to follow given footsteps based on the parameters of the WPG.
|
|
7358
|
+
|
|
7359
|
+
|
|
7360
|
+
:param supports: Supports generated from the current foosteps or the new ones to follow. Contain the current support
|
|
7361
|
+
|
|
7362
|
+
:param old_trajectory: Current walk trajectory
|
|
7363
|
+
|
|
7364
|
+
:param t_replan: The time (in the original trajectory) where the replan happens
|
|
7365
|
+
|
|
7366
|
+
:return: Updated trajectory"""
|
|
7367
|
+
...
|
|
7368
|
+
|
|
7369
|
+
def replan_supports(
|
|
7370
|
+
self: WalkPatternGenerator,
|
|
7371
|
+
planner: FootstepsPlanner, # placo::humanoid::FootstepsPlanner
|
|
7372
|
+
trajectory: WPGTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
|
|
7373
|
+
t_replan: float, # double
|
|
7374
|
+
t_last_replan: float, # double
|
|
7375
|
+
|
|
7376
|
+
) -> list[Support]:
|
|
7377
|
+
"""Replans the supports for a given trajectory given a footsteps planner."""
|
|
7378
|
+
...
|
|
7379
|
+
|
|
7380
|
+
|
|
7381
|
+
class WalkTasks:
|
|
7382
|
+
def __init__(
|
|
7383
|
+
arg1: object,
|
|
7384
|
+
|
|
7385
|
+
) -> None:
|
|
7386
|
+
...
|
|
7387
|
+
|
|
7388
|
+
com_x: float # double
|
|
7389
|
+
|
|
7390
|
+
com_y: float # double
|
|
7391
|
+
|
|
7392
|
+
def get_tasks_error(
|
|
7393
|
+
self: WalkTasks,
|
|
7394
|
+
|
|
7395
|
+
) -> any:
|
|
7396
|
+
...
|
|
7397
|
+
|
|
7398
|
+
def initialize_tasks(
|
|
7399
|
+
self: WalkTasks,
|
|
7400
|
+
solver: KinematicsSolver, # placo::kinematics::KinematicsSolver
|
|
7401
|
+
robot: HumanoidRobot, # placo::humanoid::HumanoidRobot
|
|
7402
|
+
|
|
7403
|
+
) -> None:
|
|
7404
|
+
...
|
|
7405
|
+
|
|
7406
|
+
left_foot_task: FrameTask # placo::kinematics::FrameTask
|
|
7407
|
+
|
|
7408
|
+
def reach_initial_pose(
|
|
7409
|
+
self: WalkTasks,
|
|
7410
|
+
T_world_left: numpy.ndarray, # Eigen::Affine3d
|
|
7411
|
+
feet_spacing: float, # double
|
|
7412
|
+
com_height: float, # double
|
|
7413
|
+
trunk_pitch: float, # double
|
|
7414
|
+
|
|
7415
|
+
) -> None:
|
|
7416
|
+
...
|
|
7417
|
+
|
|
7418
|
+
def remove_tasks(
|
|
7419
|
+
self: WalkTasks,
|
|
7420
|
+
|
|
7421
|
+
) -> None:
|
|
7422
|
+
...
|
|
7423
|
+
|
|
7424
|
+
right_foot_task: FrameTask # placo::kinematics::FrameTask
|
|
7425
|
+
|
|
7426
|
+
scaled: bool # bool
|
|
7427
|
+
|
|
7428
|
+
solver: KinematicsSolver # placo::kinematics::KinematicsSolver
|
|
7429
|
+
|
|
7430
|
+
trunk_mode: bool # bool
|
|
7431
|
+
|
|
7432
|
+
trunk_orientation_task: OrientationTask # placo::kinematics::OrientationTask
|
|
7433
|
+
|
|
7434
|
+
def update_tasks(
|
|
7435
|
+
self: WalkTasks,
|
|
7436
|
+
T_world_left: numpy.ndarray, # Eigen::Affine3d
|
|
7437
|
+
T_world_right: numpy.ndarray, # Eigen::Affine3d
|
|
7438
|
+
com_world: numpy.ndarray, # Eigen::Vector3d
|
|
7439
|
+
R_world_trunk: numpy.ndarray, # Eigen::Matrix3d
|
|
7440
|
+
|
|
7441
|
+
) -> None:
|
|
7442
|
+
...
|
|
7443
|
+
|
|
7444
|
+
def update_tasks_from_trajectory(
|
|
7445
|
+
arg1: WalkTasks,
|
|
7446
|
+
arg2: WPGTrajectory,
|
|
7447
|
+
arg3: float,
|
|
7448
|
+
|
|
7449
|
+
) -> None:
|
|
7450
|
+
...
|
|
7451
|
+
|
|
7150
7452
|
|
|
7151
7453
|
class WheelTask:
|
|
7152
7454
|
A: numpy.ndarray # Eigen::MatrixXd
|
|
@@ -7236,6 +7538,35 @@ class WheelTask:
|
|
|
7236
7538
|
...
|
|
7237
7539
|
|
|
7238
7540
|
|
|
7541
|
+
def directions_2d(
|
|
7542
|
+
n: int, # int
|
|
7543
|
+
|
|
7544
|
+
) -> numpy.ndarray:
|
|
7545
|
+
"""Generates a set of directions in 2D.
|
|
7546
|
+
|
|
7547
|
+
|
|
7548
|
+
:param n: the number of directions
|
|
7549
|
+
|
|
7550
|
+
:return: matrix of size n x 2"""
|
|
7551
|
+
...
|
|
7552
|
+
|
|
7553
|
+
|
|
7554
|
+
def directions_3d(
|
|
7555
|
+
n: int, # int
|
|
7556
|
+
epsilon: float = 0.5, # double
|
|
7557
|
+
|
|
7558
|
+
) -> numpy.ndarray:
|
|
7559
|
+
"""Generates a set of directions in 3D, using Fibonacci lattice.
|
|
7560
|
+
|
|
7561
|
+
|
|
7562
|
+
:param n: the number of directions
|
|
7563
|
+
|
|
7564
|
+
:param epsilon: the epsilon parameter for the Fibonacci lattice
|
|
7565
|
+
|
|
7566
|
+
:return: matrix of size n x 3"""
|
|
7567
|
+
...
|
|
7568
|
+
|
|
7569
|
+
|
|
7239
7570
|
def flatten_on_floor(
|
|
7240
7571
|
transformation: numpy.ndarray, # const Eigen::Affine3d &
|
|
7241
7572
|
|
|
@@ -7538,4 +7869,4 @@ def wrap_angle(
|
|
|
7538
7869
|
...
|
|
7539
7870
|
|
|
7540
7871
|
|
|
7541
|
-
__groups__ = {'placo::dynamics': ['AvoidSelfCollisionsDynamicsConstraint', 'Contact', 'Contact6D', 'DynamicsCoMTask', 'DynamicsConstraint', 'DynamicsFrameTask', 'DynamicsGearTask', 'DynamicsJointsTask', 'DynamicsOrientationTask', 'DynamicsPositionTask', 'DynamicsRelativeFrameTask', 'DynamicsRelativeOrientationTask', 'DynamicsRelativePositionTask', 'DynamicsSolver', 'DynamicsSolverResult', 'DynamicsTask', 'DynamicsTorqueTask', 'ExternalWrenchContact', 'LineContact', 'PointContact', 'PuppetContact', 'TaskContact'], 'placo::kinematics': ['AvoidSelfCollisionsKinematicsConstraint', 'AxisAlignTask', 'CentroidalMomentumTask', 'CoMPolygonConstraint', 'CoMTask', 'ConeConstraint', 'DistanceTask', 'FrameTask', 'GearTask', 'JointsTask', 'KinematicsConstraint', 'KinematicsSolver', 'KineticEnergyRegularizationTask', 'ManipulabilityTask', 'OrientationTask', 'PositionTask', 'RegularizationTask', 'RelativeFrameTask', 'RelativeOrientationTask', 'RelativePositionTask', 'Task', 'WheelTask'], 'placo::tools': ['AxisesMask', 'CubicSpline', 'CubicSpline3D', 'Prioritized'], 'placo::model': ['Collision', 'Distance', 'RobotWrapper', 'RobotWrapper_State'], 'placo::problem': ['Expression', 'Integrator', 'IntegratorTrajectory', 'PolygonConstraint', 'Problem', 'ProblemConstraint', 'QPError', 'Sparsity', 'SparsityInterval', 'Variable'], 'placo::humanoid': ['Footstep', 'FootstepsPlanner', 'FootstepsPlannerNaive', 'FootstepsPlannerRepetitive', 'HumanoidParameters', 'HumanoidRobot', 'LIPM', 'LIPMTrajectory', 'Support', 'SwingFoot', 'SwingFootCubic', 'SwingFootCubicTrajectory', 'SwingFootQuintic', 'SwingFootQuinticTrajectory', 'SwingFootTrajectory', '
|
|
7872
|
+
__groups__ = {'placo::dynamics': ['AvoidSelfCollisionsDynamicsConstraint', 'Contact', 'Contact6D', 'DynamicsCoMTask', 'DynamicsConstraint', 'DynamicsFrameTask', 'DynamicsGearTask', 'DynamicsJointsTask', 'DynamicsOrientationTask', 'DynamicsPositionTask', 'DynamicsRelativeFrameTask', 'DynamicsRelativeOrientationTask', 'DynamicsRelativePositionTask', 'DynamicsSolver', 'DynamicsSolverResult', 'DynamicsTask', 'DynamicsTorqueTask', 'ExternalWrenchContact', 'LineContact', 'PointContact', 'PuppetContact', 'TaskContact'], 'placo::kinematics': ['AvoidSelfCollisionsKinematicsConstraint', 'AxisAlignTask', 'CentroidalMomentumTask', 'CoMPolygonConstraint', 'CoMTask', 'ConeConstraint', 'DistanceTask', 'FrameTask', 'GearTask', 'JointSpaceHalfSpacesConstraint', 'JointsTask', 'KinematicsConstraint', 'KinematicsSolver', 'KineticEnergyRegularizationTask', 'ManipulabilityTask', 'OrientationTask', 'PositionTask', 'RegularizationTask', 'RelativeFrameTask', 'RelativeOrientationTask', 'RelativePositionTask', 'Task', 'WheelTask'], 'placo::tools': ['AxisesMask', 'CubicSpline', 'CubicSpline3D', 'Polynom', 'Prioritized', 'Segment'], 'placo::model': ['Collision', 'Distance', 'RobotWrapper', 'RobotWrapper_State'], 'placo::problem': ['Expression', 'Integrator', 'IntegratorTrajectory', 'PolygonConstraint', 'Problem', 'ProblemConstraint', 'ProblemPolynom', 'QPError', 'Sparsity', 'SparsityInterval', 'Variable'], 'placo::humanoid': ['Footstep', 'FootstepsPlanner', 'FootstepsPlannerNaive', 'FootstepsPlannerRepetitive', 'HumanoidParameters', 'HumanoidRobot', 'LIPM', 'LIPMTrajectory', 'Support', 'SwingFoot', 'SwingFootCubic', 'SwingFootCubicTrajectory', 'SwingFootQuintic', 'SwingFootQuinticTrajectory', 'SwingFootTrajectory', 'WPGTrajectory', 'WPGTrajectoryPart', 'WalkPatternGenerator', 'WalkTasks']}
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
cmeel.prefix/lib/liblibplaco.so,sha256=
|
|
2
|
-
cmeel.prefix/lib/python3.10/site-packages/placo.pyi,sha256=
|
|
3
|
-
cmeel.prefix/lib/python3.10/site-packages/placo.so,sha256=
|
|
1
|
+
cmeel.prefix/lib/liblibplaco.so,sha256=ExDBSBAkcmvcamAK9RhVt0_h9RFfX8PC65hr8rDh_aU,2619744
|
|
2
|
+
cmeel.prefix/lib/python3.10/site-packages/placo.pyi,sha256=Re4nQC6mrMjDOgdVzIpy3JZF-UdVRRkHGPM9pcEyo24,164323
|
|
3
|
+
cmeel.prefix/lib/python3.10/site-packages/placo.so,sha256=NdgBCpd2AWzqMmP1qSPwpjRCE6gcKr69DjJJTeWLre8,8192072
|
|
4
4
|
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__init__.py,sha256=UN-fc5KfBWQ-_qkm0Ajouh-T9tBGm5aUtuzBiH1tRtk,80
|
|
5
5
|
cmeel.prefix/lib/python3.10/site-packages/placo_utils/tf.py,sha256=fFRXNbeLlXzn5VOqYl7hcSuvOOtTDTiLi_Lpd9_l6wA,36
|
|
6
6
|
cmeel.prefix/lib/python3.10/site-packages/placo_utils/view.py,sha256=7KiLYGpTKaPJtFHZ6kjERdOzJiPSDUtkIKHbziHpkYk,928
|
|
@@ -8,8 +8,8 @@ cmeel.prefix/lib/python3.10/site-packages/placo_utils/visualization.py,sha256=6E
|
|
|
8
8
|
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/__init__.cpython-310.pyc,sha256=tJrTajdA7hNO9tZkE1oN49rU-61lCNUED-mQXdAvzAs,261
|
|
9
9
|
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/tf.cpython-310.pyc,sha256=APWQ5-zKgbEcMnkv6Hxgj_Q46jpnuOyL9YbSrj6Z5Vw,204
|
|
10
10
|
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/visualization.cpython-310.pyc,sha256=kMdmKY2LZKM4rkKm4j0y-TOMBQ3PeVIpbfB_YJxNz5c,6781
|
|
11
|
-
placo-0.6.
|
|
12
|
-
placo-0.6.
|
|
13
|
-
placo-0.6.
|
|
14
|
-
placo-0.6.
|
|
15
|
-
placo-0.6.
|
|
11
|
+
placo-0.6.4.dist-info/licenses/LICENSE,sha256=q2bBXvk4Eh7TmP11LoIOIGSUuJbR30JBI6ZZ37g52T4,1061
|
|
12
|
+
placo-0.6.4.dist-info/METADATA,sha256=cPKmAjHW_OMFoFUT2xpaGIP-CLPOx7eA9na4JNTMkFw,2569
|
|
13
|
+
placo-0.6.4.dist-info/WHEEL,sha256=lhhHTnYbOJzqsg4pPctu5MqgY8RxNHlH5gszBU8FPYs,115
|
|
14
|
+
placo-0.6.4.dist-info/top_level.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
placo-0.6.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|