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.

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: numpy.ndarray # Eigen::Affine3d
2646
+ def frame(
2647
+ self: Footstep,
2638
2648
 
2639
- kick: bool # bool
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
- """Duratuon [s]of a double support."""
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
- """Duration [timesteps] of a double support."""
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
- """dt for planning [s]"""
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. Support phases have to last longer than [replan_frequency * dt] or their duration has to be equal to 0.
3120
+ """Number of timesteps between each replan for the CoM trajectory.
3147
3121
  """
3148
3122
 
3149
3123
  single_support_duration: float # double
3150
- """SSP duration [s].
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
- """Duration [s] of a start/end double support."""
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
- """Duration [timesteps]of a start/end double support."""
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
- arg1: object,
6748
+ self: Support,
6749
+ footsteps: list[Footstep], # std::vector<placo::humanoid::FootstepsPlanner::Footstep>
6499
6750
 
6500
- ) -> None:
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
- def kick(
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
- t_end: float, # double
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: WalkTrajectory, # placo::humanoid::WalkPatternGenerator::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
- ) -> WalkTrajectory:
6900
- """Plan a walk trajectory following given footsteps based on the parameters of the WPG.
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: WalkTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
7353
+ old_trajectory: WPGTrajectory, # placo::humanoid::WalkPatternGenerator::Trajectory
6912
7354
  t_replan: float, # double
6913
7355
 
6914
- ) -> WalkTrajectory:
6915
- """Update the walk trajectory to follow given footsteps based on the parameters of the WPG.
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: True if the trajectory have been replanned, false it hasn't"""
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: WalkTrajectory, # placo::humanoid::WalkPatternGenerator::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
- """Replan the supports for a given trajectory given a footsteps planner."""
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: WalkTrajectory,
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', 'WalkPatternGenerator', 'WalkTasks', 'WalkTrajectory']}
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']}
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: placo
3
- Version: 0.6.3
3
+ Version: 0.6.4
4
4
  Summary: PlaCo: Rhoban Planning and Control
5
5
  Requires-Python: >= 3.8
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
- cmeel.prefix/lib/liblibplaco.so,sha256=dW2MV7F2r0WwQcByZhI1l-uvg0WLdISQStZ4AA_cTAI,2616424
2
- cmeel.prefix/lib/python3.10/site-packages/placo.pyi,sha256=Dv3QaHIsO_eh0FNluw9AFC3Hao09e9gdK0TbYbPHbvk,157676
3
- cmeel.prefix/lib/python3.10/site-packages/placo.so,sha256=VmJRvX6tkxZoqJoHzssmekDUE4_MQD9Xrh4H8dWbhgo,7766704
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.3.dist-info/license/LICENSE,sha256=q2bBXvk4Eh7TmP11LoIOIGSUuJbR30JBI6ZZ37g52T4,1061
12
- placo-0.6.3.dist-info/METADATA,sha256=nUdBGDAALqcemXjBxMpxSf_Y9VbvknUiwse6wAazGEg,2569
13
- placo-0.6.3.dist-info/WHEEL,sha256=y7GzdFHC0qrZwnE2SqFjrXxL9NLtXflO9hVb0PhWwIU,115
14
- placo-0.6.3.dist-info/top_level.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- placo-0.6.3.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: cmeel 0.53.3
2
+ Generator: cmeel 0.57.1
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp310-cp310-manylinux_2_35_x86_64
5
5
  Build: 0