placo 0.6.4__0-cp310-cp310-manylinux_2_35_x86_64.whl → 0.7.0__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 +136 -127
- cmeel.prefix/lib/python3.10/site-packages/placo.so +0 -0
- cmeel.prefix/lib/python3.10/site-packages/placo_utils/visualization.py +3 -2
- placo-0.7.0.dist-info/METADATA +60 -0
- placo-0.7.0.dist-info/RECORD +12 -0
- {placo-0.6.4.dist-info → placo-0.7.0.dist-info}/WHEEL +1 -1
- cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/__init__.cpython-310.pyc +0 -0
- cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/tf.cpython-310.pyc +0 -0
- cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/visualization.cpython-310.pyc +0 -0
- placo-0.6.4.dist-info/METADATA +0 -57
- placo-0.6.4.dist-info/RECORD +0 -15
- {placo-0.6.4.dist-info → placo-0.7.0.dist-info}/licenses/LICENSE +0 -0
- {placo-0.6.4.dist-info → placo-0.7.0.dist-info}/top_level.txt +0 -0
cmeel.prefix/lib/liblibplaco.so
CHANGED
|
Binary file
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# Doxygen stubs generation
|
|
1
2
|
import numpy
|
|
2
3
|
import typing
|
|
3
4
|
AvoidSelfCollisionsDynamicsConstraint = typing.NewType("AvoidSelfCollisionsDynamicsConstraint", None)
|
|
@@ -90,16 +91,13 @@ WPGTrajectoryPart = typing.NewType("WPGTrajectoryPart", None)
|
|
|
90
91
|
WalkPatternGenerator = typing.NewType("WalkPatternGenerator", None)
|
|
91
92
|
WalkTasks = typing.NewType("WalkTasks", None)
|
|
92
93
|
WheelTask = typing.NewType("WheelTask", None)
|
|
94
|
+
boost_type_index = typing.NewType("boost_type_index", None)
|
|
93
95
|
map_indexing_suite_map_string_double_entry = typing.NewType("map_indexing_suite_map_string_double_entry", None)
|
|
94
96
|
map_string_double = typing.NewType("map_string_double", None)
|
|
97
|
+
std_type_index = typing.NewType("std_type_index", None)
|
|
95
98
|
vector_Collision = typing.NewType("vector_Collision", None)
|
|
96
99
|
vector_Distance = typing.NewType("vector_Distance", None)
|
|
97
100
|
vector_MatrixXd = typing.NewType("vector_MatrixXd", None)
|
|
98
|
-
vector_Vector2d = typing.NewType("vector_Vector2d", None)
|
|
99
|
-
vector_Vector3d = typing.NewType("vector_Vector3d", None)
|
|
100
|
-
vector_double = typing.NewType("vector_double", None)
|
|
101
|
-
vector_int = typing.NewType("vector_int", None)
|
|
102
|
-
vector_string = typing.NewType("vector_string", None)
|
|
103
101
|
class AvoidSelfCollisionsDynamicsConstraint:
|
|
104
102
|
def __init__(
|
|
105
103
|
arg1: object,
|
|
@@ -2534,7 +2532,7 @@ class ExternalWrenchContact:
|
|
|
2534
2532
|
def __init__(
|
|
2535
2533
|
self: ExternalWrenchContact,
|
|
2536
2534
|
frame_index: any, # pinocchio::FrameIndex
|
|
2537
|
-
reference: any, # pinocchio::ReferenceFrame
|
|
2535
|
+
reference: any = None, # pinocchio::ReferenceFrame (default: pinocchio::LOCAL_WORLD_ALIGNED)
|
|
2538
2536
|
|
|
2539
2537
|
) -> any:
|
|
2540
2538
|
"""see DynamicsSolver::add_external_wrench_contact"""
|
|
@@ -2635,19 +2633,11 @@ class Footstep:
|
|
|
2635
2633
|
) -> any:
|
|
2636
2634
|
...
|
|
2637
2635
|
|
|
2638
|
-
dx: float # double
|
|
2639
|
-
|
|
2640
|
-
dy: float # double
|
|
2641
|
-
|
|
2642
2636
|
foot_length: float # double
|
|
2643
2637
|
|
|
2644
2638
|
foot_width: float # double
|
|
2645
2639
|
|
|
2646
|
-
|
|
2647
|
-
self: Footstep,
|
|
2648
|
-
|
|
2649
|
-
) -> numpy.ndarray:
|
|
2650
|
-
...
|
|
2640
|
+
frame: numpy.ndarray # Eigen::Affine3d
|
|
2651
2641
|
|
|
2652
2642
|
def overlap(
|
|
2653
2643
|
self: Footstep,
|
|
@@ -2665,8 +2655,6 @@ class Footstep:
|
|
|
2665
2655
|
) -> bool:
|
|
2666
2656
|
...
|
|
2667
2657
|
|
|
2668
|
-
raw_frame: numpy.ndarray # Eigen::Affine3d
|
|
2669
|
-
|
|
2670
2658
|
side: any # placo::humanoid::HumanoidRobot::Side
|
|
2671
2659
|
|
|
2672
2660
|
def support_polygon(
|
|
@@ -3052,6 +3040,8 @@ class HumanoidParameters:
|
|
|
3052
3040
|
) -> None:
|
|
3053
3041
|
...
|
|
3054
3042
|
|
|
3043
|
+
dcm_offset_polygon: list[numpy.ndarray] # std::vector< Eigen::Vector2d >
|
|
3044
|
+
|
|
3055
3045
|
def double_support_duration(
|
|
3056
3046
|
self: HumanoidParameters,
|
|
3057
3047
|
|
|
@@ -3112,6 +3102,8 @@ class HumanoidParameters:
|
|
|
3112
3102
|
"""Checks if the walk resulting from those parameters will have double supports."""
|
|
3113
3103
|
...
|
|
3114
3104
|
|
|
3105
|
+
op_space_polygon: list[numpy.ndarray] # std::vector< Eigen::Vector2d >
|
|
3106
|
+
|
|
3115
3107
|
planned_timesteps: int # int
|
|
3116
3108
|
"""Planning horizon for the CoM trajectory.
|
|
3117
3109
|
"""
|
|
@@ -4392,7 +4384,7 @@ class KinematicsSolver:
|
|
|
4392
4384
|
def add_frame_task(
|
|
4393
4385
|
self: KinematicsSolver,
|
|
4394
4386
|
frame: str, # std::string
|
|
4395
|
-
T_world_frame: numpy.ndarray, # Eigen::Affine3d
|
|
4387
|
+
T_world_frame: numpy.ndarray = None, # Eigen::Affine3d (default: Eigen::Affine3d::Identity())
|
|
4396
4388
|
|
|
4397
4389
|
) -> FrameTask:
|
|
4398
4390
|
"""Adds a frame task, this is equivalent to a position + orientation task, resulting in decoupled tasks for a given frame.
|
|
@@ -4798,8 +4790,8 @@ class LIPM:
|
|
|
4798
4790
|
timesteps: int, # int
|
|
4799
4791
|
t_start: float, # double
|
|
4800
4792
|
initial_pos: numpy.ndarray, # Eigen::Vector2d
|
|
4801
|
-
initial_vel: numpy.ndarray, # Eigen::Vector2d
|
|
4802
|
-
initial_acc: numpy.ndarray, # Eigen::Vector2d
|
|
4793
|
+
initial_vel: numpy.ndarray = None, # Eigen::Vector2d (default: Eigen::Vector2d::Zero())
|
|
4794
|
+
initial_acc: numpy.ndarray = None, # Eigen::Vector2d (default: Eigen::Vector2d::Zero())
|
|
4803
4795
|
|
|
4804
4796
|
) -> any:
|
|
4805
4797
|
...
|
|
@@ -6569,6 +6561,19 @@ class Segment:
|
|
|
6569
6561
|
|
|
6570
6562
|
end: numpy.ndarray # Eigen::Vector2d
|
|
6571
6563
|
|
|
6564
|
+
def half_line_pass_through(
|
|
6565
|
+
self: Segment,
|
|
6566
|
+
s: Segment, # placo::tools::Segment
|
|
6567
|
+
|
|
6568
|
+
) -> bool:
|
|
6569
|
+
"""Checks if the half-line starting from the start of this segment and going through its end pass through another segment.
|
|
6570
|
+
|
|
6571
|
+
|
|
6572
|
+
:param s: The other segment.
|
|
6573
|
+
|
|
6574
|
+
:return: True if the intersection is a point of the other segment."""
|
|
6575
|
+
...
|
|
6576
|
+
|
|
6572
6577
|
def intersects(
|
|
6573
6578
|
self: Segment,
|
|
6574
6579
|
s: Segment, # placo::tools::Segment
|
|
@@ -6751,6 +6756,13 @@ class Support:
|
|
|
6751
6756
|
) -> any:
|
|
6752
6757
|
...
|
|
6753
6758
|
|
|
6759
|
+
def apply_offset(
|
|
6760
|
+
self: Support,
|
|
6761
|
+
offset: numpy.ndarray, # Eigen::Vector2d
|
|
6762
|
+
|
|
6763
|
+
) -> None:
|
|
6764
|
+
...
|
|
6765
|
+
|
|
6754
6766
|
elapsed_ratio: float # double
|
|
6755
6767
|
|
|
6756
6768
|
end: bool # bool
|
|
@@ -6893,7 +6905,7 @@ class SwingFootCubic:
|
|
|
6893
6905
|
start: numpy.ndarray, # Eigen::Vector3d
|
|
6894
6906
|
target: numpy.ndarray, # Eigen::Vector3d
|
|
6895
6907
|
elapsed_ratio: float = 0., # double
|
|
6896
|
-
start_vel: numpy.ndarray, # Eigen::Vector3d
|
|
6908
|
+
start_vel: numpy.ndarray = None, # Eigen::Vector3d (default: Eigen::Vector3d::Zero())
|
|
6897
6909
|
|
|
6898
6910
|
) -> SwingFootCubicTrajectory:
|
|
6899
6911
|
...
|
|
@@ -7214,12 +7226,29 @@ class WPGTrajectory:
|
|
|
7214
7226
|
) -> numpy.ndarray:
|
|
7215
7227
|
...
|
|
7216
7228
|
|
|
7229
|
+
def get_part_end_dcm(
|
|
7230
|
+
self: WPGTrajectory,
|
|
7231
|
+
t: float, # double
|
|
7232
|
+
omega: float, # double
|
|
7233
|
+
|
|
7234
|
+
) -> numpy.ndarray:
|
|
7235
|
+
"""Returns the DCM at the end of the trajectory part corresponding to the given time."""
|
|
7236
|
+
...
|
|
7237
|
+
|
|
7238
|
+
def get_part_t_end(
|
|
7239
|
+
self: WPGTrajectory,
|
|
7240
|
+
t: float, # double
|
|
7241
|
+
|
|
7242
|
+
) -> float:
|
|
7243
|
+
"""Returns the end time of the trajectory part corresponding to the given time."""
|
|
7244
|
+
...
|
|
7245
|
+
|
|
7217
7246
|
def get_part_t_start(
|
|
7218
7247
|
self: WPGTrajectory,
|
|
7219
7248
|
t: float, # double
|
|
7220
7249
|
|
|
7221
7250
|
) -> float:
|
|
7222
|
-
"""Returns the
|
|
7251
|
+
"""Returns the start time of the trajectory part corresponding to the given time."""
|
|
7223
7252
|
...
|
|
7224
7253
|
|
|
7225
7254
|
def get_prev_support(
|
|
@@ -7332,6 +7361,26 @@ class WalkPatternGenerator:
|
|
|
7332
7361
|
"""Checks if a trajectory can be replanned for supports."""
|
|
7333
7362
|
...
|
|
7334
7363
|
|
|
7364
|
+
def get_optimal_zmp(
|
|
7365
|
+
self: WalkPatternGenerator,
|
|
7366
|
+
world_dcm_start: numpy.ndarray, # Eigen::Vector2d
|
|
7367
|
+
world_dcm_end: numpy.ndarray, # Eigen::Vector2d
|
|
7368
|
+
duration: float, # double
|
|
7369
|
+
support: Support, # placo::humanoid::FootstepsPlanner::Support
|
|
7370
|
+
|
|
7371
|
+
) -> numpy.ndarray:
|
|
7372
|
+
"""Computes the best ZMP in the support polygon to move de DCM from world_dcm_start to world_dcm_end in duration.
|
|
7373
|
+
|
|
7374
|
+
|
|
7375
|
+
:param world_dcm_start: The initial DCM position in world frame
|
|
7376
|
+
|
|
7377
|
+
:param world_dcm_end: The desired final DCM position in world frame
|
|
7378
|
+
|
|
7379
|
+
:param duration: The duration
|
|
7380
|
+
|
|
7381
|
+
:param support: The support"""
|
|
7382
|
+
...
|
|
7383
|
+
|
|
7335
7384
|
def plan(
|
|
7336
7385
|
self: WalkPatternGenerator,
|
|
7337
7386
|
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
@@ -7377,6 +7426,26 @@ class WalkPatternGenerator:
|
|
|
7377
7426
|
"""Replans the supports for a given trajectory given a footsteps planner."""
|
|
7378
7427
|
...
|
|
7379
7428
|
|
|
7429
|
+
def update_supports(
|
|
7430
|
+
self: WalkPatternGenerator,
|
|
7431
|
+
t: float, # double
|
|
7432
|
+
supports: list[Support], # std::vector<placo::humanoid::FootstepsPlanner::Support>
|
|
7433
|
+
world_measured_dcm: numpy.ndarray, # Eigen::Vector2d
|
|
7434
|
+
world_end_dcm: numpy.ndarray, # Eigen::Vector2d
|
|
7435
|
+
|
|
7436
|
+
) -> list[Support]:
|
|
7437
|
+
"""Updates the supports to ensure DCM viability by adjusting the duration and the target of the current swing trajectory.
|
|
7438
|
+
|
|
7439
|
+
|
|
7440
|
+
:param t: The current time
|
|
7441
|
+
|
|
7442
|
+
:param supports: The planned supports
|
|
7443
|
+
|
|
7444
|
+
:param world_measured_dcm: The measured DCM in world frame
|
|
7445
|
+
|
|
7446
|
+
:param world_end_dcm: The desired DCM at the end of the current support phase"""
|
|
7447
|
+
...
|
|
7448
|
+
|
|
7380
7449
|
|
|
7381
7450
|
class WalkTasks:
|
|
7382
7451
|
def __init__(
|
|
@@ -7538,6 +7607,31 @@ class WheelTask:
|
|
|
7538
7607
|
...
|
|
7539
7608
|
|
|
7540
7609
|
|
|
7610
|
+
class boost_type_index:
|
|
7611
|
+
def __init__(
|
|
7612
|
+
|
|
7613
|
+
) -> any:
|
|
7614
|
+
...
|
|
7615
|
+
|
|
7616
|
+
def hash_code(
|
|
7617
|
+
self: boost_type_index,
|
|
7618
|
+
|
|
7619
|
+
) -> int:
|
|
7620
|
+
...
|
|
7621
|
+
|
|
7622
|
+
def name(
|
|
7623
|
+
self: boost_type_index,
|
|
7624
|
+
|
|
7625
|
+
) -> str:
|
|
7626
|
+
...
|
|
7627
|
+
|
|
7628
|
+
def pretty_name(
|
|
7629
|
+
self: boost_type_index,
|
|
7630
|
+
|
|
7631
|
+
) -> str:
|
|
7632
|
+
...
|
|
7633
|
+
|
|
7634
|
+
|
|
7541
7635
|
def directions_2d(
|
|
7542
7636
|
n: int, # int
|
|
7543
7637
|
|
|
@@ -7685,117 +7779,32 @@ def sharedMemory(
|
|
|
7685
7779
|
...
|
|
7686
7780
|
|
|
7687
7781
|
|
|
7688
|
-
class
|
|
7689
|
-
def __init__(
|
|
7690
|
-
arg1: object,
|
|
7691
|
-
|
|
7692
|
-
) -> None:
|
|
7693
|
-
...
|
|
7694
|
-
|
|
7695
|
-
def append(
|
|
7696
|
-
arg1: vector_Collision,
|
|
7697
|
-
arg2: object,
|
|
7698
|
-
|
|
7699
|
-
) -> None:
|
|
7700
|
-
...
|
|
7701
|
-
|
|
7702
|
-
def extend(
|
|
7703
|
-
arg1: vector_Collision,
|
|
7704
|
-
arg2: object,
|
|
7705
|
-
|
|
7706
|
-
) -> None:
|
|
7707
|
-
...
|
|
7708
|
-
|
|
7709
|
-
|
|
7710
|
-
class vector_Distance:
|
|
7711
|
-
def __init__(
|
|
7712
|
-
arg1: object,
|
|
7713
|
-
|
|
7714
|
-
) -> None:
|
|
7715
|
-
...
|
|
7716
|
-
|
|
7717
|
-
def append(
|
|
7718
|
-
arg1: vector_Distance,
|
|
7719
|
-
arg2: object,
|
|
7720
|
-
|
|
7721
|
-
) -> None:
|
|
7722
|
-
...
|
|
7723
|
-
|
|
7724
|
-
def extend(
|
|
7725
|
-
arg1: vector_Distance,
|
|
7726
|
-
arg2: object,
|
|
7727
|
-
|
|
7728
|
-
) -> None:
|
|
7729
|
-
...
|
|
7730
|
-
|
|
7731
|
-
|
|
7732
|
-
class vector_MatrixXd:
|
|
7782
|
+
class std_type_index:
|
|
7733
7783
|
def __init__(
|
|
7734
|
-
arg1: object,
|
|
7735
7784
|
|
|
7736
|
-
) ->
|
|
7737
|
-
...
|
|
7738
|
-
|
|
7739
|
-
def append(
|
|
7740
|
-
arg1: vector_MatrixXd,
|
|
7741
|
-
arg2: object,
|
|
7742
|
-
|
|
7743
|
-
) -> None:
|
|
7744
|
-
...
|
|
7745
|
-
|
|
7746
|
-
def extend(
|
|
7747
|
-
arg1: vector_MatrixXd,
|
|
7748
|
-
arg2: object,
|
|
7749
|
-
|
|
7750
|
-
) -> None:
|
|
7751
|
-
...
|
|
7752
|
-
|
|
7753
|
-
|
|
7754
|
-
class vector_Vector2d:
|
|
7755
|
-
def __init__(
|
|
7756
|
-
arg1: object,
|
|
7757
|
-
|
|
7758
|
-
) -> None:
|
|
7759
|
-
...
|
|
7760
|
-
|
|
7761
|
-
def append(
|
|
7762
|
-
arg1: vector_Vector2d,
|
|
7763
|
-
arg2: object,
|
|
7764
|
-
|
|
7765
|
-
) -> None:
|
|
7766
|
-
...
|
|
7767
|
-
|
|
7768
|
-
def extend(
|
|
7769
|
-
arg1: vector_Vector2d,
|
|
7770
|
-
arg2: object,
|
|
7771
|
-
|
|
7772
|
-
) -> None:
|
|
7785
|
+
) -> any:
|
|
7773
7786
|
...
|
|
7774
7787
|
|
|
7788
|
+
def hash_code(
|
|
7789
|
+
self: std_type_index,
|
|
7775
7790
|
|
|
7776
|
-
|
|
7777
|
-
def __init__(
|
|
7778
|
-
arg1: object,
|
|
7779
|
-
|
|
7780
|
-
) -> None:
|
|
7791
|
+
) -> int:
|
|
7781
7792
|
...
|
|
7782
7793
|
|
|
7783
|
-
def
|
|
7784
|
-
|
|
7785
|
-
arg2: object,
|
|
7794
|
+
def name(
|
|
7795
|
+
self: std_type_index,
|
|
7786
7796
|
|
|
7787
|
-
) ->
|
|
7797
|
+
) -> str:
|
|
7788
7798
|
...
|
|
7789
7799
|
|
|
7790
|
-
def
|
|
7791
|
-
|
|
7792
|
-
arg2: object,
|
|
7800
|
+
def pretty_name(
|
|
7801
|
+
self: std_type_index,
|
|
7793
7802
|
|
|
7794
|
-
) ->
|
|
7803
|
+
) -> str:
|
|
7795
7804
|
...
|
|
7796
7805
|
|
|
7797
7806
|
|
|
7798
|
-
class
|
|
7807
|
+
class vector_Collision:
|
|
7799
7808
|
def __init__(
|
|
7800
7809
|
arg1: object,
|
|
7801
7810
|
|
|
@@ -7803,21 +7812,21 @@ class vector_double:
|
|
|
7803
7812
|
...
|
|
7804
7813
|
|
|
7805
7814
|
def append(
|
|
7806
|
-
arg1:
|
|
7815
|
+
arg1: vector_Collision,
|
|
7807
7816
|
arg2: object,
|
|
7808
7817
|
|
|
7809
7818
|
) -> None:
|
|
7810
7819
|
...
|
|
7811
7820
|
|
|
7812
7821
|
def extend(
|
|
7813
|
-
arg1:
|
|
7822
|
+
arg1: vector_Collision,
|
|
7814
7823
|
arg2: object,
|
|
7815
7824
|
|
|
7816
7825
|
) -> None:
|
|
7817
7826
|
...
|
|
7818
7827
|
|
|
7819
7828
|
|
|
7820
|
-
class
|
|
7829
|
+
class vector_Distance:
|
|
7821
7830
|
def __init__(
|
|
7822
7831
|
arg1: object,
|
|
7823
7832
|
|
|
@@ -7825,21 +7834,21 @@ class vector_int:
|
|
|
7825
7834
|
...
|
|
7826
7835
|
|
|
7827
7836
|
def append(
|
|
7828
|
-
arg1:
|
|
7837
|
+
arg1: vector_Distance,
|
|
7829
7838
|
arg2: object,
|
|
7830
7839
|
|
|
7831
7840
|
) -> None:
|
|
7832
7841
|
...
|
|
7833
7842
|
|
|
7834
7843
|
def extend(
|
|
7835
|
-
arg1:
|
|
7844
|
+
arg1: vector_Distance,
|
|
7836
7845
|
arg2: object,
|
|
7837
7846
|
|
|
7838
7847
|
) -> None:
|
|
7839
7848
|
...
|
|
7840
7849
|
|
|
7841
7850
|
|
|
7842
|
-
class
|
|
7851
|
+
class vector_MatrixXd:
|
|
7843
7852
|
def __init__(
|
|
7844
7853
|
arg1: object,
|
|
7845
7854
|
|
|
@@ -7847,14 +7856,14 @@ class vector_string:
|
|
|
7847
7856
|
...
|
|
7848
7857
|
|
|
7849
7858
|
def append(
|
|
7850
|
-
arg1:
|
|
7859
|
+
arg1: vector_MatrixXd,
|
|
7851
7860
|
arg2: object,
|
|
7852
7861
|
|
|
7853
7862
|
) -> None:
|
|
7854
7863
|
...
|
|
7855
7864
|
|
|
7856
7865
|
def extend(
|
|
7857
|
-
arg1:
|
|
7866
|
+
arg1: vector_MatrixXd,
|
|
7858
7867
|
arg2: object,
|
|
7859
7868
|
|
|
7860
7869
|
) -> None:
|
|
Binary file
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import meshcat
|
|
2
2
|
import pinocchio as pin
|
|
3
|
+
import pinocchio.visualize as pin_viz
|
|
3
4
|
import numpy as np
|
|
4
5
|
import meshcat.geometry as g
|
|
5
6
|
import meshcat.transformations as tf
|
|
@@ -26,7 +27,7 @@ def get_viewer() -> meshcat.Visualizer:
|
|
|
26
27
|
|
|
27
28
|
def robot_viz(
|
|
28
29
|
robot: placo.RobotWrapper, name: str = "robot"
|
|
29
|
-
) ->
|
|
30
|
+
) -> pin_viz.MeshcatVisualizer:
|
|
30
31
|
"""
|
|
31
32
|
Builds an instance of pinocchio MeshcatVisualizer, which allows to push the model to the meshcat
|
|
32
33
|
visualizer passed as parameter
|
|
@@ -38,7 +39,7 @@ def robot_viz(
|
|
|
38
39
|
global robot_names
|
|
39
40
|
|
|
40
41
|
robot_names[robot] = name
|
|
41
|
-
viz =
|
|
42
|
+
viz = pin_viz.MeshcatVisualizer(
|
|
42
43
|
robot.model, robot.collision_model, robot.visual_model
|
|
43
44
|
)
|
|
44
45
|
viz.initViewer(viewer=get_viewer())
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: placo
|
|
3
|
+
Version: 0.7.0
|
|
4
|
+
Summary: PlaCo: Rhoban Planning and Control
|
|
5
|
+
Requires-Python: >= 3.9
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Author-email: Rhoban team <team@rhoban.com>
|
|
9
|
+
Project-URL: Changelog, https://github.com/rhoban/placo/blob/main/CHANGELOG.md
|
|
10
|
+
Home-page: https://placo.readthedocs.io/en/latest/
|
|
11
|
+
Project-URL: Repository, https://github.com/rhoban/placo.git
|
|
12
|
+
Requires-Dist: cmeel
|
|
13
|
+
Requires-Dist: eiquadprog >= 1.2.6, < 2
|
|
14
|
+
Requires-Dist: pin >= 3
|
|
15
|
+
Requires-Dist: rhoban-cmeel-jsoncpp
|
|
16
|
+
Requires-Dist: meshcat
|
|
17
|
+
Requires-Dist: ischedule
|
|
18
|
+
Provides-Extra: build
|
|
19
|
+
Requires-Dist: pin[build] >= 3 ; extra == "build"
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
<img width="400" src="https://placo.readthedocs.io/en/latest/_static/placo.png" />
|
|
23
|
+
|
|
24
|
+
## Planning & Control
|
|
25
|
+
|
|
26
|
+
PlaCo is Rhoban's planning and control library. It is built on the top of [pinocchio](https://github.com/stack-of-tasks/pinocchio), [eiquadprog](https://github.com/stack-of-tasks/eiquadprog) QP solver, and fully written in C++ with Python bindings, allowing fast prototyping with good runtime performances. It features task-space inverse kinematics and dynamics (see below) high-level API for whole-body control tasks.
|
|
27
|
+
|
|
28
|
+
### Task-Space Inverse Kinematics
|
|
29
|
+
|
|
30
|
+
[](https://github.com/Rhoban/placo-examples/blob/master/kinematics/videos/quadruped_targets.mp4?raw=true)
|
|
31
|
+
|
|
32
|
+
High-level API to specify tasks for constrained inverse kinematics (IK).
|
|
33
|
+
|
|
34
|
+
- [See documentation](https://placo.readthedocs.io/en/latest/kinematics/getting_started.html)
|
|
35
|
+
- [Examples](https://placo.readthedocs.io/en/latest/kinematics/examples_gallery.html)
|
|
36
|
+
|
|
37
|
+
### Task-Space Inverse Dynamics
|
|
38
|
+
|
|
39
|
+
[](https://github.com/Rhoban/placo-examples/blob/master/dynamics/videos/megabot.mp4?raw=true)
|
|
40
|
+
|
|
41
|
+
High-level API to specify tasks for constrained inverse dynamics (ID).
|
|
42
|
+
|
|
43
|
+
- [See documentation](https://placo.readthedocs.io/en/latest/dynamics/getting_started.html)
|
|
44
|
+
- [Examples](https://placo.readthedocs.io/en/latest/dynamics/examples_gallery.html)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## Installing
|
|
48
|
+
|
|
49
|
+
PlaCo can be installed from ``pip``
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
pip install placo
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Or [built from sources](https://placo.readthedocs.io/en/latest/basics/installation_source.html)
|
|
56
|
+
|
|
57
|
+
## Resources
|
|
58
|
+
|
|
59
|
+
* [Documentation](https://placo.readthedocs.io/en/latest/)
|
|
60
|
+
* [Examples](https://github.com/rhoban/placo-examples) repository
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
cmeel.prefix/lib/liblibplaco.so,sha256=Kss_9m8cwF-CMHjGAQ59M-yaND6P3rGL6Yazls7KpXk,2025088
|
|
2
|
+
cmeel.prefix/lib/python3.10/site-packages/placo.pyi,sha256=mnQkavsOZxq78ZBNN0f5our9wQ2OPefGq3hagObh_nI,165939
|
|
3
|
+
cmeel.prefix/lib/python3.10/site-packages/placo.so,sha256=DnhhsNkIQ5DO1zRV06V7kh2E3WjyWtMmBVYMLEdeSys,8266104
|
|
4
|
+
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__init__.py,sha256=UN-fc5KfBWQ-_qkm0Ajouh-T9tBGm5aUtuzBiH1tRtk,80
|
|
5
|
+
cmeel.prefix/lib/python3.10/site-packages/placo_utils/tf.py,sha256=fFRXNbeLlXzn5VOqYl7hcSuvOOtTDTiLi_Lpd9_l6wA,36
|
|
6
|
+
cmeel.prefix/lib/python3.10/site-packages/placo_utils/view.py,sha256=7KiLYGpTKaPJtFHZ6kjERdOzJiPSDUtkIKHbziHpkYk,928
|
|
7
|
+
cmeel.prefix/lib/python3.10/site-packages/placo_utils/visualization.py,sha256=8exPggKw-njoJ9YDKgxFdpYoqiscNqnfvdsAC30iJCk,8227
|
|
8
|
+
placo-0.7.0.dist-info/licenses/LICENSE,sha256=q2bBXvk4Eh7TmP11LoIOIGSUuJbR30JBI6ZZ37g52T4,1061
|
|
9
|
+
placo-0.7.0.dist-info/METADATA,sha256=ubfE-qcTspVcod08RxCqL1R_Qyd3AtCKI40yVd0jQRg,2525
|
|
10
|
+
placo-0.7.0.dist-info/WHEEL,sha256=CGpSWoBURgVtaMPvLWXBsECBIFvGPsCx-wd2AU5rQ8c,115
|
|
11
|
+
placo-0.7.0.dist-info/top_level.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
placo-0.7.0.dist-info/RECORD,,
|
|
Binary file
|
|
Binary file
|
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/visualization.cpython-310.pyc
DELETED
|
Binary file
|
placo-0.6.4.dist-info/METADATA
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: placo
|
|
3
|
-
Version: 0.6.4
|
|
4
|
-
Summary: PlaCo: Rhoban Planning and Control
|
|
5
|
-
Requires-Python: >= 3.8
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Author-email: Rhoban team <team@rhoban.com>
|
|
9
|
-
Project-URL: Changelog, https://github.com/rhoban/placo/blob/main/CHANGELOG.md
|
|
10
|
-
Home-page: https://placo.readthedocs.io/en/latest/
|
|
11
|
-
Project-URL: Repository, https://github.com/rhoban/placo.git
|
|
12
|
-
Requires-Dist: cmeel
|
|
13
|
-
Requires-Dist: eiquadprog >= 1.2.6, < 2
|
|
14
|
-
Requires-Dist: pin >= 2.6.18, < 3
|
|
15
|
-
Requires-Dist: rhoban-cmeel-jsoncpp
|
|
16
|
-
Requires-Dist: meshcat
|
|
17
|
-
Requires-Dist: numpy<2
|
|
18
|
-
Requires-Dist: ischedule
|
|
19
|
-
Provides-Extra: build
|
|
20
|
-
Requires-Dist: pin[build] >= 2.6.18, < 3 ; extra == "build"
|
|
21
|
-
Requires-Dist: cmeel-urdfdom[build] ; extra == "build"
|
|
22
|
-
Description-Content-Type: text/markdown
|
|
23
|
-
|
|
24
|
-
# PlaCo
|
|
25
|
-
|
|
26
|
-
PlaCo is Rhoban's planning and control library.
|
|
27
|
-
Its main features are:
|
|
28
|
-
|
|
29
|
-
* Task-space Inverse Kinematics with constraints,
|
|
30
|
-
* Task-space Inverse Dynamics with constraints,
|
|
31
|
-
* QP problem formulation,
|
|
32
|
-
* Built on the top of [pinocchio](https://github.com/stack-of-tasks/pinocchio)
|
|
33
|
-
* Written in C++ with Python bindings
|
|
34
|
-
|
|
35
|
-
[](https://github.com/Rhoban/placo-examples/blob/master/kinematics/videos/quadruped_targets.mp4?raw=true)
|
|
36
|
-
|
|
37
|
-
*Inverse Kinematics Example: a quadruped robot hitting targets with a leg while keeping its three legs on the ground*
|
|
38
|
-
|
|
39
|
-
[source code (quadruped_targets.py)](https://github.com/Rhoban/placo-examples/blob/master/kinematics/quadruped_targets.py) / [more kinematics examples](https://placo.readthedocs.io/en/latest/kinematics/examples_gallery.html)
|
|
40
|
-
|
|
41
|
-
[](https://github.com/Rhoban/placo-examples/blob/master/dynamics/videos/megabot.mp4?raw=true)
|
|
42
|
-
|
|
43
|
-
*Inverse Dynamics Example: a quadruped with many loop closure joints*
|
|
44
|
-
|
|
45
|
-
[source code (megabot.py)](https://github.com/Rhoban/placo-examples/blob/master/dynamics/megabot.py) / [more dynamics examples](https://placo.readthedocs.io/en/latest/dynamics/examples_gallery.html)
|
|
46
|
-
|
|
47
|
-
## Installing
|
|
48
|
-
|
|
49
|
-
PlaCo is available from [pip](https://placo.readthedocs.io/en/latest/basics/installation_pip.html),
|
|
50
|
-
or can be [built from sources](https://placo.readthedocs.io/en/latest/basics/installation_source.html).
|
|
51
|
-
|
|
52
|
-
## Documentation
|
|
53
|
-
|
|
54
|
-
Here is the [official documentation](https://placo.readthedocs.io/en/latest/)
|
|
55
|
-
|
|
56
|
-
You can also find many examples in the [placo-examples](https://github.com/rhoban/placo-examples)
|
|
57
|
-
repository.
|
placo-0.6.4.dist-info/RECORD
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
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
|
-
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__init__.py,sha256=UN-fc5KfBWQ-_qkm0Ajouh-T9tBGm5aUtuzBiH1tRtk,80
|
|
5
|
-
cmeel.prefix/lib/python3.10/site-packages/placo_utils/tf.py,sha256=fFRXNbeLlXzn5VOqYl7hcSuvOOtTDTiLi_Lpd9_l6wA,36
|
|
6
|
-
cmeel.prefix/lib/python3.10/site-packages/placo_utils/view.py,sha256=7KiLYGpTKaPJtFHZ6kjERdOzJiPSDUtkIKHbziHpkYk,928
|
|
7
|
-
cmeel.prefix/lib/python3.10/site-packages/placo_utils/visualization.py,sha256=6ET7YkZBuIWoJg2qVO-rPt3Nj4ZnezyvGAe458G4VGo,8201
|
|
8
|
-
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/__init__.cpython-310.pyc,sha256=tJrTajdA7hNO9tZkE1oN49rU-61lCNUED-mQXdAvzAs,261
|
|
9
|
-
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/tf.cpython-310.pyc,sha256=APWQ5-zKgbEcMnkv6Hxgj_Q46jpnuOyL9YbSrj6Z5Vw,204
|
|
10
|
-
cmeel.prefix/lib/python3.10/site-packages/placo_utils/__pycache__/visualization.cpython-310.pyc,sha256=kMdmKY2LZKM4rkKm4j0y-TOMBQ3PeVIpbfB_YJxNz5c,6781
|
|
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
|