placo 0.6.3__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 +517 -215
- cmeel.prefix/lib/python3.10/site-packages/placo.so +0 -0
- {placo-0.6.3.dist-info → placo-0.6.4.dist-info}/METADATA +2 -2
- {placo-0.6.3.dist-info → placo-0.6.4.dist-info}/RECORD +8 -8
- {placo-0.6.3.dist-info → placo-0.6.4.dist-info}/WHEEL +1 -1
- {placo-0.6.3.dist-info/license → placo-0.6.4.dist-info/licenses}/LICENSE +0 -0
- {placo-0.6.3.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,6 +7127,193 @@ class Variable:
|
|
|
6872
7127
|
"""
|
|
6873
7128
|
|
|
6874
7129
|
|
|
7130
|
+
class WPGTrajectory:
|
|
7131
|
+
def __init__(
|
|
7132
|
+
arg1: object,
|
|
7133
|
+
arg2: float,
|
|
7134
|
+
arg3: float,
|
|
7135
|
+
arg4: float,
|
|
7136
|
+
|
|
7137
|
+
) -> None:
|
|
7138
|
+
...
|
|
7139
|
+
|
|
7140
|
+
def apply_transform(
|
|
7141
|
+
self: WPGTrajectory,
|
|
7142
|
+
T: numpy.ndarray, # Eigen::Affine3d
|
|
7143
|
+
|
|
7144
|
+
) -> None:
|
|
7145
|
+
"""Applies a given transformation to the left of all values issued by the trajectory."""
|
|
7146
|
+
...
|
|
7147
|
+
|
|
7148
|
+
com_target_z: float # double
|
|
7149
|
+
|
|
7150
|
+
def get_R_world_trunk(
|
|
7151
|
+
self: WPGTrajectory,
|
|
7152
|
+
t: float, # double
|
|
7153
|
+
|
|
7154
|
+
) -> numpy.ndarray:
|
|
7155
|
+
...
|
|
7156
|
+
|
|
7157
|
+
def get_T_world_left(
|
|
7158
|
+
self: WPGTrajectory,
|
|
7159
|
+
t: float, # double
|
|
7160
|
+
|
|
7161
|
+
) -> numpy.ndarray:
|
|
7162
|
+
...
|
|
7163
|
+
|
|
7164
|
+
def get_T_world_right(
|
|
7165
|
+
self: WPGTrajectory,
|
|
7166
|
+
t: float, # double
|
|
7167
|
+
|
|
7168
|
+
) -> numpy.ndarray:
|
|
7169
|
+
...
|
|
7170
|
+
|
|
7171
|
+
def get_a_world_CoM(
|
|
7172
|
+
self: WPGTrajectory,
|
|
7173
|
+
t: float, # double
|
|
7174
|
+
|
|
7175
|
+
) -> numpy.ndarray:
|
|
7176
|
+
...
|
|
7177
|
+
|
|
7178
|
+
def get_j_world_CoM(
|
|
7179
|
+
self: WPGTrajectory,
|
|
7180
|
+
t: float, # double
|
|
7181
|
+
|
|
7182
|
+
) -> numpy.ndarray:
|
|
7183
|
+
...
|
|
7184
|
+
|
|
7185
|
+
def get_next_support(
|
|
7186
|
+
self: WPGTrajectory,
|
|
7187
|
+
t: float, # double
|
|
7188
|
+
n: int = 1, # int
|
|
7189
|
+
|
|
7190
|
+
) -> Support:
|
|
7191
|
+
"""Returns the nth next support corresponding to the given time in the trajectory."""
|
|
7192
|
+
...
|
|
7193
|
+
|
|
7194
|
+
def get_p_world_CoM(
|
|
7195
|
+
self: WPGTrajectory,
|
|
7196
|
+
t: float, # double
|
|
7197
|
+
|
|
7198
|
+
) -> numpy.ndarray:
|
|
7199
|
+
...
|
|
7200
|
+
|
|
7201
|
+
def get_p_world_DCM(
|
|
7202
|
+
self: WPGTrajectory,
|
|
7203
|
+
t: float, # double
|
|
7204
|
+
omega: float, # double
|
|
7205
|
+
|
|
7206
|
+
) -> numpy.ndarray:
|
|
7207
|
+
...
|
|
7208
|
+
|
|
7209
|
+
def get_p_world_ZMP(
|
|
7210
|
+
self: WPGTrajectory,
|
|
7211
|
+
t: float, # double
|
|
7212
|
+
omega: float, # double
|
|
7213
|
+
|
|
7214
|
+
) -> numpy.ndarray:
|
|
7215
|
+
...
|
|
7216
|
+
|
|
7217
|
+
def get_part_t_start(
|
|
7218
|
+
self: WPGTrajectory,
|
|
7219
|
+
t: float, # double
|
|
7220
|
+
|
|
7221
|
+
) -> float:
|
|
7222
|
+
"""Returns the trajectory time start for the support corresponding to the given time."""
|
|
7223
|
+
...
|
|
7224
|
+
|
|
7225
|
+
def get_prev_support(
|
|
7226
|
+
self: WPGTrajectory,
|
|
7227
|
+
t: float, # double
|
|
7228
|
+
n: int = 1, # int
|
|
7229
|
+
|
|
7230
|
+
) -> Support:
|
|
7231
|
+
"""Returns the nth previous support corresponding to the given time in the trajectory."""
|
|
7232
|
+
...
|
|
7233
|
+
|
|
7234
|
+
def get_support(
|
|
7235
|
+
self: WPGTrajectory,
|
|
7236
|
+
t: float, # double
|
|
7237
|
+
|
|
7238
|
+
) -> Support:
|
|
7239
|
+
"""Returns the support corresponding to the given time in the trajectory."""
|
|
7240
|
+
...
|
|
7241
|
+
|
|
7242
|
+
def get_supports(
|
|
7243
|
+
self: WPGTrajectory,
|
|
7244
|
+
|
|
7245
|
+
) -> list[Support]:
|
|
7246
|
+
...
|
|
7247
|
+
|
|
7248
|
+
def get_v_world_CoM(
|
|
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
|
|
7258
|
+
t: float, # double
|
|
7259
|
+
|
|
7260
|
+
) -> numpy.ndarray:
|
|
7261
|
+
...
|
|
7262
|
+
|
|
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
|
+
...
|
|
7277
|
+
|
|
7278
|
+
def support_is_both(
|
|
7279
|
+
self: WPGTrajectory,
|
|
7280
|
+
t: float, # double
|
|
7281
|
+
|
|
7282
|
+
) -> bool:
|
|
7283
|
+
...
|
|
7284
|
+
|
|
7285
|
+
def support_side(
|
|
7286
|
+
self: WPGTrajectory,
|
|
7287
|
+
t: float, # double
|
|
7288
|
+
|
|
7289
|
+
) -> any:
|
|
7290
|
+
...
|
|
7291
|
+
|
|
7292
|
+
t_end: float # double
|
|
7293
|
+
|
|
7294
|
+
t_start: float # double
|
|
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
|
+
|
|
6875
7317
|
class WalkPatternGenerator:
|
|
6876
7318
|
def __init__(
|
|
6877
7319
|
self: WalkPatternGenerator,
|
|
@@ -6883,7 +7325,7 @@ class WalkPatternGenerator:
|
|
|
6883
7325
|
|
|
6884
7326
|
def can_replan_supports(
|
|
6885
7327
|
self: WalkPatternGenerator,
|
|
6886
|
-
trajectory:
|
|
7328
|
+
trajectory: WPGTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
|
|
6887
7329
|
t_replan: float, # double
|
|
6888
7330
|
|
|
6889
7331
|
) -> bool:
|
|
@@ -6896,8 +7338,8 @@ class WalkPatternGenerator:
|
|
|
6896
7338
|
initial_com_world: numpy.ndarray, # Eigen::Vector3d
|
|
6897
7339
|
t_start: float = 0., # double
|
|
6898
7340
|
|
|
6899
|
-
) ->
|
|
6900
|
-
"""
|
|
7341
|
+
) -> WPGTrajectory:
|
|
7342
|
+
"""Plans a walk trajectory following given footsteps based on the parameters of the WPG.
|
|
6901
7343
|
|
|
6902
7344
|
|
|
6903
7345
|
:param supports: Supports generated from the foosteps to follow
|
|
@@ -6908,11 +7350,11 @@ class WalkPatternGenerator:
|
|
|
6908
7350
|
def replan(
|
|
6909
7351
|
self: WalkPatternGenerator,
|
|
6910
7352
|
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
6911
|
-
old_trajectory:
|
|
7353
|
+
old_trajectory: WPGTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
|
|
6912
7354
|
t_replan: float, # double
|
|
6913
7355
|
|
|
6914
|
-
) ->
|
|
6915
|
-
"""
|
|
7356
|
+
) -> WPGTrajectory:
|
|
7357
|
+
"""Updates the walk trajectory to follow given footsteps based on the parameters of the WPG.
|
|
6916
7358
|
|
|
6917
7359
|
|
|
6918
7360
|
:param supports: Supports generated from the current foosteps or the new ones to follow. Contain the current support
|
|
@@ -6921,17 +7363,18 @@ class WalkPatternGenerator:
|
|
|
6921
7363
|
|
|
6922
7364
|
:param t_replan: The time (in the original trajectory) where the replan happens
|
|
6923
7365
|
|
|
6924
|
-
:return:
|
|
7366
|
+
:return: Updated trajectory"""
|
|
6925
7367
|
...
|
|
6926
7368
|
|
|
6927
7369
|
def replan_supports(
|
|
6928
7370
|
self: WalkPatternGenerator,
|
|
6929
7371
|
planner: FootstepsPlanner, # placo::humanoid::FootstepsPlanner
|
|
6930
|
-
trajectory:
|
|
7372
|
+
trajectory: WPGTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
|
|
6931
7373
|
t_replan: float, # double
|
|
7374
|
+
t_last_replan: float, # double
|
|
6932
7375
|
|
|
6933
7376
|
) -> list[Support]:
|
|
6934
|
-
"""
|
|
7377
|
+
"""Replans the supports for a given trajectory given a footsteps planner."""
|
|
6935
7378
|
...
|
|
6936
7379
|
|
|
6937
7380
|
|
|
@@ -7000,154 +7443,13 @@ class WalkTasks:
|
|
|
7000
7443
|
|
|
7001
7444
|
def update_tasks_from_trajectory(
|
|
7002
7445
|
arg1: WalkTasks,
|
|
7003
|
-
arg2:
|
|
7446
|
+
arg2: WPGTrajectory,
|
|
7004
7447
|
arg3: float,
|
|
7005
7448
|
|
|
7006
7449
|
) -> None:
|
|
7007
7450
|
...
|
|
7008
7451
|
|
|
7009
7452
|
|
|
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:
|
|
7030
|
-
...
|
|
7031
|
-
|
|
7032
|
-
def get_T_world_left(
|
|
7033
|
-
self: WalkTrajectory,
|
|
7034
|
-
t: float, # double
|
|
7035
|
-
|
|
7036
|
-
) -> numpy.ndarray:
|
|
7037
|
-
...
|
|
7038
|
-
|
|
7039
|
-
def get_T_world_right(
|
|
7040
|
-
self: WalkTrajectory,
|
|
7041
|
-
t: float, # double
|
|
7042
|
-
|
|
7043
|
-
) -> numpy.ndarray:
|
|
7044
|
-
...
|
|
7045
|
-
|
|
7046
|
-
def get_a_world_CoM(
|
|
7047
|
-
self: WalkTrajectory,
|
|
7048
|
-
t: float, # double
|
|
7049
|
-
|
|
7050
|
-
) -> numpy.ndarray:
|
|
7051
|
-
...
|
|
7052
|
-
|
|
7053
|
-
def get_j_world_CoM(
|
|
7054
|
-
self: WalkTrajectory,
|
|
7055
|
-
t: float, # double
|
|
7056
|
-
|
|
7057
|
-
) -> numpy.ndarray:
|
|
7058
|
-
...
|
|
7059
|
-
|
|
7060
|
-
def get_next_support(
|
|
7061
|
-
self: WalkTrajectory,
|
|
7062
|
-
t: float, # double
|
|
7063
|
-
n: int = 1, # int
|
|
7064
|
-
|
|
7065
|
-
) -> Support:
|
|
7066
|
-
"""Returns the nth next support corresponding to the given time in the trajectory."""
|
|
7067
|
-
...
|
|
7068
|
-
|
|
7069
|
-
def get_p_world_CoM(
|
|
7070
|
-
self: WalkTrajectory,
|
|
7071
|
-
t: float, # double
|
|
7072
|
-
|
|
7073
|
-
) -> numpy.ndarray:
|
|
7074
|
-
...
|
|
7075
|
-
|
|
7076
|
-
def get_p_world_DCM(
|
|
7077
|
-
self: WalkTrajectory,
|
|
7078
|
-
t: float, # double
|
|
7079
|
-
omega: float, # double
|
|
7080
|
-
|
|
7081
|
-
) -> numpy.ndarray:
|
|
7082
|
-
...
|
|
7083
|
-
|
|
7084
|
-
def get_p_world_ZMP(
|
|
7085
|
-
self: WalkTrajectory,
|
|
7086
|
-
t: float, # double
|
|
7087
|
-
omega: float, # double
|
|
7088
|
-
|
|
7089
|
-
) -> numpy.ndarray:
|
|
7090
|
-
...
|
|
7091
|
-
|
|
7092
|
-
def get_part_t_start(
|
|
7093
|
-
self: WalkTrajectory,
|
|
7094
|
-
t: float, # double
|
|
7095
|
-
|
|
7096
|
-
) -> float:
|
|
7097
|
-
"""Returns the trajectory time start for the support corresponding to the given time."""
|
|
7098
|
-
...
|
|
7099
|
-
|
|
7100
|
-
def get_prev_support(
|
|
7101
|
-
self: WalkTrajectory,
|
|
7102
|
-
t: float, # double
|
|
7103
|
-
n: int = 1, # int
|
|
7104
|
-
|
|
7105
|
-
) -> Support:
|
|
7106
|
-
"""Returns the nth previous support corresponding to the given time in the trajectory."""
|
|
7107
|
-
...
|
|
7108
|
-
|
|
7109
|
-
def get_support(
|
|
7110
|
-
self: WalkTrajectory,
|
|
7111
|
-
t: float, # double
|
|
7112
|
-
|
|
7113
|
-
) -> Support:
|
|
7114
|
-
"""Returns the support corresponding to the given time in the trajectory."""
|
|
7115
|
-
...
|
|
7116
|
-
|
|
7117
|
-
def get_supports(
|
|
7118
|
-
self: WalkTrajectory,
|
|
7119
|
-
|
|
7120
|
-
) -> list[Support]:
|
|
7121
|
-
...
|
|
7122
|
-
|
|
7123
|
-
def get_v_world_CoM(
|
|
7124
|
-
self: WalkTrajectory,
|
|
7125
|
-
t: float, # double
|
|
7126
|
-
|
|
7127
|
-
) -> numpy.ndarray:
|
|
7128
|
-
...
|
|
7129
|
-
|
|
7130
|
-
jerk_planner_timesteps: int # int
|
|
7131
|
-
|
|
7132
|
-
def support_is_both(
|
|
7133
|
-
self: WalkTrajectory,
|
|
7134
|
-
t: float, # double
|
|
7135
|
-
|
|
7136
|
-
) -> bool:
|
|
7137
|
-
...
|
|
7138
|
-
|
|
7139
|
-
def support_side(
|
|
7140
|
-
self: WalkTrajectory,
|
|
7141
|
-
t: float, # double
|
|
7142
|
-
|
|
7143
|
-
) -> any:
|
|
7144
|
-
...
|
|
7145
|
-
|
|
7146
|
-
t_end: float # double
|
|
7147
|
-
|
|
7148
|
-
t_start: float # double
|
|
7149
|
-
|
|
7150
|
-
|
|
7151
7453
|
class WheelTask:
|
|
7152
7454
|
A: numpy.ndarray # Eigen::MatrixXd
|
|
7153
7455
|
"""Matrix A in the task Ax = b, where x are the joint delta positions.
|
|
@@ -7567,4 +7869,4 @@ def wrap_angle(
|
|
|
7567
7869
|
...
|
|
7568
7870
|
|
|
7569
7871
|
|
|
7570
|
-
__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
|