robotic 0.2.7__cp38-cp38-manylinux2014_x86_64.whl → 0.2.8.dev1__cp38-cp38-manylinux2014_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 robotic might be problematic. Click here for more details.
- robotic/DataGen.pyi +6 -2
- robotic/_robotic.pyi +83 -7
- robotic/_robotic.so +0 -0
- robotic/include/rai/Core/h5.h +3 -0
- robotic/include/rai/Core/util.h +2 -0
- robotic/include/rai/DataGen/shapenetGrasps.h +9 -6
- robotic/include/rai/Geo/assimpInterface.h +1 -1
- robotic/include/rai/Geo/geo.h +22 -24
- robotic/include/rai/Geo/mesh.h +1 -4
- robotic/include/rai/Gui/RenderData.h +8 -6
- robotic/include/rai/KOMO/komo.h +3 -1
- robotic/include/rai/Kin/F_collisions.h +10 -0
- robotic/include/rai/Kin/F_forces.h +14 -0
- robotic/include/rai/Kin/F_pose.h +2 -0
- robotic/include/rai/Kin/dof_direction.h +1 -1
- robotic/include/rai/Kin/dof_forceExchange.h +1 -1
- robotic/include/rai/Kin/dof_path.h +0 -1
- robotic/include/rai/Kin/frame.h +10 -11
- robotic/include/rai/ry/py-Quaternion.h +17 -0
- robotic/include/rai/ry/types.h +29 -0
- robotic/librai.so +0 -0
- robotic/manipulation.py +5 -6
- robotic/meshTool +0 -0
- robotic/rai-robotModels/scenarios/ballFinger.g +1 -1
- robotic/rai-robotModels/scenarios/pandaFloatingGripper.g +1 -1
- robotic/{ry-h5info.py → ry-h5info} +0 -0
- robotic/version.py +1 -1
- robotic-0.2.8.dev1.data/scripts/ry-h5info +28 -0
- {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/METADATA +1 -1
- {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/RECORD +40 -38
- {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-bot +0 -0
- {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-info +0 -0
- {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-meshTool +0 -0
- {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-test +0 -0
- {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-urdf2rai +0 -0
- {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-urdf2yaml +0 -0
- {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-view +0 -0
- {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/LICENSE +0 -0
- {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/WHEEL +0 -0
- {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/top_level.txt +0 -0
robotic/DataGen.pyi
CHANGED
|
@@ -3,7 +3,7 @@ rai data generators
|
|
|
3
3
|
"""
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
import _robotic
|
|
6
|
-
__all__ = ['RndStableConfigs', 'ShapenetGrasps']
|
|
6
|
+
__all__ = ['RndStableConfigs', 'ShapenetGrasps', 'sampleGraspCandidate']
|
|
7
7
|
class RndStableConfigs:
|
|
8
8
|
"""
|
|
9
9
|
A generator of random stable configurations
|
|
@@ -68,7 +68,7 @@ class ShapenetGrasps:
|
|
|
68
68
|
"""
|
|
69
69
|
(direct interface) set (relative) pose of grasp candidate
|
|
70
70
|
"""
|
|
71
|
-
def setOptions(self, verbose: int = 1, filesPrefix: ... = 'shapenet/models/',
|
|
71
|
+
def setOptions(self, verbose: int = 1, filesPrefix: ... = 'shapenet/models/', endShape: int = -1, startShape: int = 0, simVerbose: int = 0, optVerbose: int = 0, simTau: float = 0.01, gripperCloseSpeed: float = 0.001, moveSpeed: float = 0.005, pregraspNormalSdv: float = 0.2) -> ShapenetGrasps:
|
|
72
72
|
"""
|
|
73
73
|
set options
|
|
74
74
|
"""
|
|
@@ -76,3 +76,7 @@ class ShapenetGrasps:
|
|
|
76
76
|
"""
|
|
77
77
|
set options
|
|
78
78
|
"""
|
|
79
|
+
def sampleGraspCandidate(C: _robotic.Config, ptsFrame: str, refFrame: str, pregraspNormalSdv: float = 0.2, verbose: int = 1) -> arr:
|
|
80
|
+
"""
|
|
81
|
+
sample random grasp candidates on an object represented as points
|
|
82
|
+
"""
|
robotic/_robotic.pyi
CHANGED
|
@@ -6,7 +6,7 @@ import numpy
|
|
|
6
6
|
import typing
|
|
7
7
|
from . import DataGen
|
|
8
8
|
from . import test
|
|
9
|
-
__all__ = ['Actions2KOMO_Translator', 'ArgWord', 'BSpline', 'BotOp', 'CameraView', 'CameraViewSensor', 'Config', 'ConfigurationViewer', 'ControlMode', 'DataGen', 'FS', 'Frame', 'JT', 'KOMO', 'KOMO_Objective', 'LGP_Tool', 'NLP', 'NLP_Factory', 'NLP_Sampler', 'NLP_Solver', 'NLP_SolverID', 'NLP_SolverOptions', 'OT', 'OptBench_Skeleton_Handover', 'OptBench_Skeleton_Pick', 'OptBench_Skeleton_StackAndBalance', 'OptBenchmark_InvKin_Endeff', 'RRT_PathFinder', 'ST', 'SY', 'Simulation', 'SimulationEngine', 'Skeleton', 'SolverReturn', 'TAMP_Provider', 'compiled', 'default_Actions2KOMO_Translator', 'default_TAMP_Provider', 'depthImage2PointCloud', 'params_add', 'params_clear', 'params_file', 'params_print', 'raiPath', 'setRaiPath', 'test']
|
|
9
|
+
__all__ = ['Actions2KOMO_Translator', 'ArgWord', 'BSpline', 'BotOp', 'CameraView', 'CameraViewSensor', 'Config', 'ConfigurationViewer', 'ControlMode', 'DataGen', 'FS', 'Frame', 'JT', 'KOMO', 'KOMO_Objective', 'LGP_Tool', 'NLP', 'NLP_Factory', 'NLP_Sampler', 'NLP_Solver', 'NLP_SolverID', 'NLP_SolverOptions', 'OT', 'OptBench_Skeleton_Handover', 'OptBench_Skeleton_Pick', 'OptBench_Skeleton_StackAndBalance', 'OptBenchmark_InvKin_Endeff', 'Quaternion', 'RRT_PathFinder', 'ST', 'SY', 'Simulation', 'SimulationEngine', 'Skeleton', 'SolverReturn', 'TAMP_Provider', 'compiled', 'default_Actions2KOMO_Translator', 'default_TAMP_Provider', 'depthImage2PointCloud', 'params_add', 'params_clear', 'params_file', 'params_print', 'raiPath', 'setRaiPath', 'test']
|
|
10
10
|
class Actions2KOMO_Translator:
|
|
11
11
|
"""
|
|
12
12
|
Actions2KOMO_Translator
|
|
@@ -263,6 +263,10 @@ class Config:
|
|
|
263
263
|
"""
|
|
264
264
|
add a new frame to C; optionally make this a child to the given parent; use the Frame methods to set properties of the new frame
|
|
265
265
|
"""
|
|
266
|
+
def addH5Object(self, framename: str, filename: str, verbose: int = 0) -> Frame:
|
|
267
|
+
"""
|
|
268
|
+
add the contents of the file to C
|
|
269
|
+
"""
|
|
266
270
|
def animate(self) -> None:
|
|
267
271
|
"""
|
|
268
272
|
displays while articulating all dofs in a row
|
|
@@ -295,9 +299,9 @@ class Config:
|
|
|
295
299
|
"""
|
|
296
300
|
evaluate a feature -- see https://marctoussaint.github.io/robotics-course/tutorials/features.html
|
|
297
301
|
"""
|
|
298
|
-
def frame(self,
|
|
302
|
+
def frame(self, frameID: int) -> Frame:
|
|
299
303
|
"""
|
|
300
|
-
get access to a frame by
|
|
304
|
+
get access to a frame by index (< getFrameDimension)
|
|
301
305
|
"""
|
|
302
306
|
def getCollidablePairs(self) -> StringA:
|
|
303
307
|
"""
|
|
@@ -452,6 +456,14 @@ class ConfigurationViewer:
|
|
|
452
456
|
@staticmethod
|
|
453
457
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
|
454
458
|
...
|
|
459
|
+
def savePng(self, saveVideoPath: str = 'z.vid/', count: int = -1) -> None:
|
|
460
|
+
"""
|
|
461
|
+
save enumerated pngs in a path - for video making
|
|
462
|
+
"""
|
|
463
|
+
def visualsOnly(self, _visualsOnly: bool = True) -> None:
|
|
464
|
+
"""
|
|
465
|
+
display only visuals (no markers/transparent/text)
|
|
466
|
+
"""
|
|
455
467
|
class ControlMode:
|
|
456
468
|
"""
|
|
457
469
|
Members:
|
|
@@ -772,19 +784,27 @@ class Frame:
|
|
|
772
784
|
"""
|
|
773
785
|
def setMeshAsLines(self, arg0: list[float]) -> None:
|
|
774
786
|
...
|
|
787
|
+
def setMeshFile(self, filename: ...) -> Frame:
|
|
788
|
+
"""
|
|
789
|
+
attach a mesh shape from a file
|
|
790
|
+
"""
|
|
775
791
|
def setParent(self, parent: Frame, keepAbsolutePose_and_adaptRelativePose: bool = False, checkForLoop: bool = False) -> Frame:
|
|
776
792
|
...
|
|
777
793
|
def setPointCloud(self, points: arr, colors: ... = ..., normals: arr = ...) -> Frame:
|
|
778
794
|
"""
|
|
779
795
|
attach a point cloud shape
|
|
780
796
|
"""
|
|
781
|
-
def setPose(self, arg0:
|
|
797
|
+
def setPose(self, arg0: arr) -> None:
|
|
798
|
+
...
|
|
799
|
+
def setPoseByText(self, arg0: str) -> None:
|
|
782
800
|
...
|
|
783
801
|
def setPosition(self, arg0: arr) -> Frame:
|
|
784
802
|
...
|
|
785
803
|
def setQuaternion(self, arg0: arr) -> Frame:
|
|
786
804
|
...
|
|
787
|
-
def setRelativePose(self, arg0:
|
|
805
|
+
def setRelativePose(self, arg0: arr) -> None:
|
|
806
|
+
...
|
|
807
|
+
def setRelativePoseByText(self, arg0: str) -> None:
|
|
788
808
|
...
|
|
789
809
|
def setRelativePosition(self, arg0: arr) -> Frame:
|
|
790
810
|
...
|
|
@@ -798,7 +818,7 @@ class Frame:
|
|
|
798
818
|
...
|
|
799
819
|
def setTensorShape(self, data: ..., size: arr) -> Frame:
|
|
800
820
|
...
|
|
801
|
-
def transformToDiagInertia(self) -> ...:
|
|
821
|
+
def transformToDiagInertia(self, arg0: bool) -> ...:
|
|
802
822
|
...
|
|
803
823
|
def unLink(self) -> Frame:
|
|
804
824
|
...
|
|
@@ -934,7 +954,7 @@ class KOMO:
|
|
|
934
954
|
* order: Do we penalize the jointState directly (order=0: penalizing sqr distance to qHome, order=1: penalizing sqr distances between consecutive configurations (velocities), order=2: penalizing accelerations across 3 configurations)
|
|
935
955
|
* scale: as usual, but modulated by a factor 'sqrt(delta t)' that somehow ensures total control costs in approximately independent of the choice of stepsPerPhase
|
|
936
956
|
"""
|
|
937
|
-
def addFrameDof(self, name: str, parent: str, jointType: JT, stable: bool,
|
|
957
|
+
def addFrameDof(self, name: str, parent: str, jointType: JT, stable: bool, originFrameName: str = None, originFrame: Frame = None) -> Frame:
|
|
938
958
|
"""
|
|
939
959
|
complicated...
|
|
940
960
|
"""
|
|
@@ -1421,6 +1441,62 @@ class OptBenchmark_InvKin_Endeff:
|
|
|
1421
1441
|
...
|
|
1422
1442
|
def get(self) -> NLP:
|
|
1423
1443
|
...
|
|
1444
|
+
class Quaternion:
|
|
1445
|
+
"""
|
|
1446
|
+
"""
|
|
1447
|
+
@staticmethod
|
|
1448
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
|
1449
|
+
...
|
|
1450
|
+
def __init__(self) -> None:
|
|
1451
|
+
"""
|
|
1452
|
+
non-initialized
|
|
1453
|
+
"""
|
|
1454
|
+
def append(self, q: Quaternion) -> None:
|
|
1455
|
+
...
|
|
1456
|
+
def applyOnPointArray(self, pts: arr) -> None:
|
|
1457
|
+
...
|
|
1458
|
+
def flipSign(self) -> None:
|
|
1459
|
+
...
|
|
1460
|
+
def getArr(self) -> arr:
|
|
1461
|
+
...
|
|
1462
|
+
def getJacobian(self) -> arr:
|
|
1463
|
+
...
|
|
1464
|
+
def getLog(self) -> Vector:
|
|
1465
|
+
...
|
|
1466
|
+
def getMatrix(self) -> arr:
|
|
1467
|
+
...
|
|
1468
|
+
def getRad(self) -> float:
|
|
1469
|
+
...
|
|
1470
|
+
def getRollPitchYaw(self) -> arr:
|
|
1471
|
+
...
|
|
1472
|
+
def invert(self) -> None:
|
|
1473
|
+
...
|
|
1474
|
+
def multiply(self, f: float) -> None:
|
|
1475
|
+
...
|
|
1476
|
+
def normalize(self) -> None:
|
|
1477
|
+
...
|
|
1478
|
+
def set(self, q: arr) -> Quaternion:
|
|
1479
|
+
...
|
|
1480
|
+
def setDiff(self, from: Vector, to: Vector) -> Quaternion:
|
|
1481
|
+
...
|
|
1482
|
+
def setExp(self, vector_w: Vector) -> Quaternion:
|
|
1483
|
+
...
|
|
1484
|
+
def setInterpolateEmbedded(self, t: float, from: Quaternion, to: Quaternion) -> Quaternion:
|
|
1485
|
+
...
|
|
1486
|
+
def setInterpolateProper(self, t: float, from: Quaternion, to: Quaternion) -> Quaternion:
|
|
1487
|
+
...
|
|
1488
|
+
def setMatrix(self, R: arr) -> Quaternion:
|
|
1489
|
+
...
|
|
1490
|
+
def setRad(self, radians: float, axis: Vector) -> Quaternion:
|
|
1491
|
+
...
|
|
1492
|
+
def setRandom(self) -> Quaternion:
|
|
1493
|
+
...
|
|
1494
|
+
def setRollPitchYaw(self, roll_pitch_yaw: Vector) -> Quaternion:
|
|
1495
|
+
...
|
|
1496
|
+
def setZero(self) -> Quaternion:
|
|
1497
|
+
...
|
|
1498
|
+
def sqrNorm(self) -> float:
|
|
1499
|
+
...
|
|
1424
1500
|
class RRT_PathFinder:
|
|
1425
1501
|
"""
|
|
1426
1502
|
todo doc
|
robotic/_robotic.so
CHANGED
|
Binary file
|
robotic/include/rai/Core/h5.h
CHANGED
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
|
|
14
14
|
namespace H5 { class H5File; }
|
|
15
15
|
|
|
16
|
+
namespace rai {
|
|
17
|
+
|
|
16
18
|
//===========================================================================
|
|
17
19
|
|
|
18
20
|
struct H5_Writer {
|
|
@@ -37,3 +39,4 @@ struct H5_Reader {
|
|
|
37
39
|
bool exists(const char* name);
|
|
38
40
|
};
|
|
39
41
|
|
|
42
|
+
} //namespace
|
robotic/include/rai/Core/util.h
CHANGED
|
@@ -187,6 +187,7 @@ struct String : public std::iostream {
|
|
|
187
187
|
void prepend(const String& s);
|
|
188
188
|
void replace(uint i, uint n, const char* xp, uint xN);
|
|
189
189
|
void removePrefix(const char* prefix);
|
|
190
|
+
void removePostfix(const char* postfix);
|
|
190
191
|
|
|
191
192
|
String& setRandom();
|
|
192
193
|
|
|
@@ -218,6 +219,7 @@ struct String : public std::iostream {
|
|
|
218
219
|
stdPipes(String)
|
|
219
220
|
|
|
220
221
|
inline String operator+(const String& a, const char* b) { String s=a; s <<b; return s; }
|
|
222
|
+
//template<class T> String operator+(const String& a, const T& b) { String s=a; s <<b; return s; }
|
|
221
223
|
|
|
222
224
|
} //namespace
|
|
223
225
|
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
struct ShapenetGrasps_Options {
|
|
8
8
|
RAI_PARAM("ShapenetGrasps/", int, verbose, 1)
|
|
9
9
|
RAI_PARAM("ShapenetGrasps/", rai::String, filesPrefix, "shapenet/models/")
|
|
10
|
-
RAI_PARAM("ShapenetGrasps/", int,
|
|
11
|
-
RAI_PARAM("ShapenetGrasps/", int,
|
|
10
|
+
RAI_PARAM("ShapenetGrasps/", int, startShape, 3)
|
|
11
|
+
RAI_PARAM("ShapenetGrasps/", int, endShape, 5)
|
|
12
12
|
RAI_PARAM("ShapenetGrasps/", int, simVerbose, 0)
|
|
13
13
|
RAI_PARAM("ShapenetGrasps/", int, optVerbose, 0)
|
|
14
14
|
RAI_PARAM("ShapenetGrasps/", double, simTau, .01)
|
|
@@ -29,7 +29,8 @@ struct ShapenetGrasps{
|
|
|
29
29
|
void displaySamples(const arr& X, const uintA& shapes, const arr& Scores={});
|
|
30
30
|
|
|
31
31
|
//-- direct interfaces
|
|
32
|
-
bool loadObject(uint shape, bool
|
|
32
|
+
bool loadObject(uint shape, bool rndOrientation=true);
|
|
33
|
+
void resetObjectPose(int idx=0, bool rndOrientation=true);
|
|
33
34
|
arr getPointCloud();
|
|
34
35
|
arr sampleGraspPose();
|
|
35
36
|
void setGraspPose(const arr& pose, const char* objPts="objPts0");
|
|
@@ -37,9 +38,11 @@ struct ShapenetGrasps{
|
|
|
37
38
|
|
|
38
39
|
|
|
39
40
|
rai::Configuration C;
|
|
40
|
-
private:
|
|
41
41
|
StringA files;
|
|
42
|
+
|
|
43
|
+
private:
|
|
42
44
|
void clearScene();
|
|
43
|
-
|
|
44
|
-
bool addSceneObject(const char* file, int idx, bool rndPose=true, bool visual=false);
|
|
45
|
+
bool addSceneObject(const char* file, int idx, bool rndOri=true, bool visual=false);
|
|
45
46
|
};
|
|
47
|
+
|
|
48
|
+
arr sampleGraspCandidate(rai::Configuration& C, const char *ptsFrame, const char* refFrame, double pregraspNormalSdv=.2, int verbose=1);
|
|
@@ -19,7 +19,7 @@ struct AssimpLoader {
|
|
|
19
19
|
std::string directory;
|
|
20
20
|
int verbose=0;
|
|
21
21
|
|
|
22
|
-
AssimpLoader(std::string
|
|
22
|
+
AssimpLoader(const std::string& path, bool flipYZ=true, bool relativeMeshPoses=false, int _verbose=0);
|
|
23
23
|
AssimpLoader(const struct aiScene* scene);
|
|
24
24
|
|
|
25
25
|
rai::Mesh getSingleMesh();
|
robotic/include/rai/Geo/geo.h
CHANGED
|
@@ -111,27 +111,26 @@ struct Quaternion {
|
|
|
111
111
|
double* p() { return &w; }
|
|
112
112
|
|
|
113
113
|
double& operator()(uint i) { CHECK(i<4, "out of range"); return (&w)[i]; }
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
void setInterpolateProper(double t, const Quaternion& from, const Quaternion to);
|
|
114
|
+
Quaternion& set(double w, double x, double y, double z);
|
|
115
|
+
Quaternion& set(const arr& q);
|
|
116
|
+
Quaternion& set(const std::vector<double>& x) { CHECK_EQ(x.size(), 4, ""); return set(x.data()); }
|
|
117
|
+
Quaternion& set(const double* p);
|
|
118
|
+
Quaternion& setZero();
|
|
119
|
+
Quaternion& setRandom();
|
|
120
|
+
Quaternion& setExp(const Vector& w);
|
|
121
|
+
Quaternion& setRad(double radians, double axis0, double axis1, double axis2);
|
|
122
|
+
Quaternion& setRad(double radians, const Vector& axis);
|
|
123
|
+
Quaternion& setDeg(double degree, double axis0, double axis1, double axis2){ return setRad(degree*RAI_PI/180., axis0, axis1, axis2); }
|
|
124
|
+
Quaternion& setRadX(double radians);
|
|
125
|
+
Quaternion& setRadY(double radians);
|
|
126
|
+
Quaternion& setRadZ(double radians);
|
|
127
|
+
Quaternion& setRollPitchYaw(const Vector& rpy);
|
|
128
|
+
Quaternion& setVector(const Vector& w){ return setExp(w); }
|
|
129
|
+
Quaternion& setMatrix(double* m);
|
|
130
|
+
Quaternion& setMatrix(const arr& R) { CHECK_EQ(R.N, 9, ""); return setMatrix(R.p); }
|
|
131
|
+
Quaternion& setDiff(const Vector& from, const Vector& to);
|
|
132
|
+
Quaternion& setInterpolateEmbedded(double t, const Quaternion& from, const Quaternion to);
|
|
133
|
+
Quaternion& setInterpolateProper(double t, const Quaternion& from, const Quaternion to);
|
|
135
134
|
void invert();
|
|
136
135
|
void flipSign();
|
|
137
136
|
void uniqueSign();
|
|
@@ -150,15 +149,14 @@ struct Quaternion {
|
|
|
150
149
|
bool isNormalized() const;
|
|
151
150
|
Vector getLog() const;
|
|
152
151
|
Vector getVector() const { return getLog(); }
|
|
153
|
-
double getDeg() const;
|
|
154
152
|
double getRad() const;
|
|
155
|
-
|
|
153
|
+
double getDeg() const{ return 180./RAI_PI*getRad(); }
|
|
156
154
|
void getRad(double& angle, Vector& axis) const;
|
|
157
155
|
Vector getX() const;
|
|
158
156
|
Vector getY() const;
|
|
159
157
|
Vector getZ() const;
|
|
160
158
|
arr getMatrix() const;
|
|
161
|
-
arr
|
|
159
|
+
arr getArr() const { return arr(&w, 4, false); }
|
|
162
160
|
double* getMatrix(double* m) const;
|
|
163
161
|
double* getMatrixOde(double* m) const; //in Ode foramt: 3x4 memory storae
|
|
164
162
|
double* getMatrixGL(double* m) const; //in OpenGL format: transposed 4x4 memory storage
|
robotic/include/rai/Geo/mesh.h
CHANGED
|
@@ -32,10 +32,8 @@ struct Mesh {
|
|
|
32
32
|
uintA T; ///< triangles (faces, empty -> point cloud)
|
|
33
33
|
arr Tn; ///< triangle normals (optional)
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
arr tex; ///< texture coordinates
|
|
35
|
+
arr texCoords; ///< texture coordinates for each vertex, dimensionality (V.d0, 2)
|
|
37
36
|
byteA texImg; ///< texture image
|
|
38
|
-
int texture=-1; ///< GL texture name created with glBindTexture
|
|
39
37
|
|
|
40
38
|
uintA cvxParts;
|
|
41
39
|
uintAA graph; ///< for every vertex, the set of neighboring vertices
|
|
@@ -134,7 +132,6 @@ struct Mesh {
|
|
|
134
132
|
|
|
135
133
|
//[preliminary]]
|
|
136
134
|
void skin(uint i);
|
|
137
|
-
void deleteGlTexture();
|
|
138
135
|
|
|
139
136
|
/// @name IO
|
|
140
137
|
void write(std::ostream&) const; ///< only writes generic info
|
|
@@ -24,9 +24,11 @@ struct Render_Options {
|
|
|
24
24
|
enum RenderType { _solid, _shadow, _tensor, _text, _marker, _transparent, _all };
|
|
25
25
|
|
|
26
26
|
struct RenderAsset{
|
|
27
|
-
floatA vertices, colors, normals
|
|
27
|
+
floatA vertices, colors, normals; //for 2D textures: colors are vertex-wise texture coordinates
|
|
28
|
+
byteA texture;
|
|
28
29
|
GLuint vao, vertexBuffer, colorBuffer, normalBuffer, textureBuffer;
|
|
29
30
|
GLenum mode=GL_TRIANGLES;
|
|
31
|
+
uint textureDim=0;
|
|
30
32
|
bool initialized=false;
|
|
31
33
|
bool isTransparent=false;
|
|
32
34
|
int version=-1;
|
|
@@ -38,8 +40,8 @@ struct RenderAsset{
|
|
|
38
40
|
void tensor(const floatA& vol, const arr& size={1.,1.,1.});
|
|
39
41
|
|
|
40
42
|
//engine specific -> should be refactored
|
|
41
|
-
void glRender();
|
|
42
43
|
void glInitialize();
|
|
44
|
+
void glRender();
|
|
43
45
|
};
|
|
44
46
|
|
|
45
47
|
//an asset can be drawn multiple times in a scene, with different poses -> each time it is drawn is a RenderItem
|
|
@@ -83,8 +85,8 @@ struct RenderQuad {
|
|
|
83
85
|
|
|
84
86
|
~RenderQuad();
|
|
85
87
|
//engine specific -> should be refactored
|
|
86
|
-
void glRender();
|
|
87
88
|
void glInitialize();
|
|
89
|
+
void glRender();
|
|
88
90
|
};
|
|
89
91
|
|
|
90
92
|
struct DistMarkers {
|
|
@@ -115,7 +117,7 @@ struct RenderData {
|
|
|
115
117
|
struct ContextIDs{
|
|
116
118
|
bool initialized=false;
|
|
117
119
|
GLuint shadowFramebuffer, shadowTexture;
|
|
118
|
-
GLuint prog_ID, prog_Projection_W, prog_ModelT_WM, prog_eyePosition_W, prog_ShadowProjection_W, prog_useShadow, prog_shadowMap, prog_numLights, prog_lightDirection_W, prog_FlatColor;
|
|
120
|
+
GLuint prog_ID, prog_Projection_W, prog_ModelT_WM, prog_eyePosition_W, prog_ShadowProjection_W, prog_useShadow, prog_shadowMap, prog_numLights, prog_lightDirection_W, prog_FlatColor, prog_textureDim, prog_textureImage;
|
|
119
121
|
GLuint progShadow, progShadow_ShadowProjection_W, progShadow_ModelT_WM;
|
|
120
122
|
GLuint progTensor, progTensor_Projection_W, progTensor_ModelT_WM, progTensor_ModelScale, progTensor_eyePosition_W, progTensor_tensorTexture;
|
|
121
123
|
GLuint progMarker, progMarker_Projection_W, progMarker_ModelT_WM;
|
|
@@ -135,7 +137,7 @@ struct RenderData {
|
|
|
135
137
|
void setText(const char* text);
|
|
136
138
|
void addQuad(const byteA& img, float x, float y, float w, float h);
|
|
137
139
|
|
|
138
|
-
RenderData& addStandardScene();
|
|
140
|
+
RenderData& addStandardScene(bool addFloor=true);
|
|
139
141
|
RenderData& clear();
|
|
140
142
|
|
|
141
143
|
//engine specific -> should be refactored
|
|
@@ -145,7 +147,7 @@ struct RenderData {
|
|
|
145
147
|
void visualsOnly(bool _visualsOnly=true){ if(_visualsOnly) renderUntil=_tensor; else renderUntil=_all; }
|
|
146
148
|
|
|
147
149
|
//private:
|
|
148
|
-
void renderObjects(GLuint idT_WM, const uintA& sortedObjIDs, RenderType type, GLint idFlatColor=-1, GLint idScale=-1);
|
|
150
|
+
void renderObjects(GLuint idT_WM, const uintA& sortedObjIDs, RenderType type, GLint idFlatColor=-1, GLint idScale=-1, GLint idTextureDim=-1);
|
|
149
151
|
|
|
150
152
|
void report(std::ostream& os);
|
|
151
153
|
};
|
robotic/include/rai/KOMO/komo.h
CHANGED
|
@@ -19,6 +19,7 @@ struct FclInterface;
|
|
|
19
19
|
enum SwitchInitializationType : int;
|
|
20
20
|
enum SkeletonSymbol : int;
|
|
21
21
|
enum JointType : int;
|
|
22
|
+
enum ForceExchangeType : int;
|
|
22
23
|
}
|
|
23
24
|
typedef rai::Array<ObjectiveType> ObjectiveTypeA;
|
|
24
25
|
struct SolverReturn;
|
|
@@ -214,7 +215,8 @@ struct KOMO : NonCopyable {
|
|
|
214
215
|
// internal (kind of private)
|
|
215
216
|
//
|
|
216
217
|
|
|
217
|
-
rai::Frame* addFrameDof(const char* name, const char* parent, rai::JointType jointType, bool stable, const char*
|
|
218
|
+
rai::Frame* addFrameDof(const char* name, const char* parent, rai::JointType jointType, bool stable, const char* originFrameName=0, rai::Frame* originFrame=0, const rai::Transformation& relOrigin=0);
|
|
219
|
+
void addForceExchangeDofs(const arr& times, const char* onto, const char* from, rai::ForceExchangeType _type, const arr& initPoa={}, const arr& initForce={});
|
|
218
220
|
void set_x(const arr& x, const uintA& selectedConfigurationsOnly= {}); ///< set the state trajectory of all configurations
|
|
219
221
|
private:
|
|
220
222
|
void selectJointsBySubtrees(const StringA& roots, const arr& times= {}, bool notThose=false);
|
|
@@ -31,6 +31,16 @@ struct F_PairCollision : Feature {
|
|
|
31
31
|
virtual uint dim_phi(const FrameL& F);
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
+
//===========================================================================
|
|
35
|
+
|
|
36
|
+
struct F_PairNormalAlign : Feature {
|
|
37
|
+
double dir = 1.;
|
|
38
|
+
F_PairNormalAlign(double _dir=1.){ dir=_dir; }
|
|
39
|
+
virtual arr phi(const FrameL& F);
|
|
40
|
+
virtual uint dim_phi(const FrameL& F){ return 3; }
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
|
|
34
44
|
//===========================================================================
|
|
35
45
|
|
|
36
46
|
struct F_PairFunctional : Feature {
|
|
@@ -91,6 +91,20 @@ struct F_Energy : Feature {
|
|
|
91
91
|
//===========================================================================
|
|
92
92
|
// force geometry, complementarity, velocities
|
|
93
93
|
|
|
94
|
+
struct F_fex_POAAtFrame : Feature {
|
|
95
|
+
arr phi(const FrameL& F);
|
|
96
|
+
uint dim_phi(const FrameL& F) { return 3; }
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
struct F_fex_ForceInFrameCone : Feature {
|
|
100
|
+
double mu;
|
|
101
|
+
F_fex_ForceInFrameCone(double _mu=.5) : mu(_mu) {}
|
|
102
|
+
arr phi(const FrameL& F);
|
|
103
|
+
uint dim_phi(const FrameL& F) { return 1; }
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
//===========================================================================
|
|
107
|
+
|
|
94
108
|
struct F_fex_ForceIsNormal : Feature {
|
|
95
109
|
arr phi(const FrameL& F);
|
|
96
110
|
uint dim_phi(const FrameL& F) { return 3; }
|
robotic/include/rai/Kin/F_pose.h
CHANGED
|
@@ -22,6 +22,8 @@ struct F_Zeros : Feature {
|
|
|
22
22
|
//===========================================================================
|
|
23
23
|
|
|
24
24
|
struct F_Position : Feature {
|
|
25
|
+
rai::Vector relPos;
|
|
26
|
+
F_Position(const rai::Vector& _relPos=0) : relPos(_relPos) {}
|
|
25
27
|
virtual arr phi(const FrameL& F);
|
|
26
28
|
virtual uint dim_phi(const FrameL& F) { return 3; }
|
|
27
29
|
};
|
|
@@ -24,7 +24,7 @@ struct DirectionDof : Dof, NonCopyable {
|
|
|
24
24
|
virtual void setDofs(const arr& q_full, uint qIndex=0);
|
|
25
25
|
virtual arr calcDofsFromConfig() const;
|
|
26
26
|
void read(const Graph& ats);
|
|
27
|
-
void write(Graph& ats);
|
|
27
|
+
void write(Graph& ats) const;
|
|
28
28
|
|
|
29
29
|
void kinVec(arr& y, arr& J) const;
|
|
30
30
|
|
|
@@ -17,7 +17,7 @@ struct PairCollision;
|
|
|
17
17
|
|
|
18
18
|
//===========================================================================
|
|
19
19
|
|
|
20
|
-
enum ForceExchangeType { FXT_none=-1, FXT_poa=0, FXT_torque=1, FXT_force, FXT_forceZ, FXT_poaOnly };
|
|
20
|
+
enum ForceExchangeType : int { FXT_none=-1, FXT_poa=0, FXT_torque=1, FXT_force, FXT_forceZ, FXT_poaOnly };
|
|
21
21
|
|
|
22
22
|
///Description of a ForceExchange
|
|
23
23
|
struct ForceExchangeDof : Dof, NonCopyable {
|
robotic/include/rai/Kin/frame.h
CHANGED
|
@@ -145,14 +145,14 @@ struct Frame : NonCopyable {
|
|
|
145
145
|
void prefixSubtree(const char* prefix);
|
|
146
146
|
|
|
147
147
|
//composed object manipulation
|
|
148
|
-
Transformation transformToDiagInertia();
|
|
148
|
+
Transformation transformToDiagInertia(bool transformOwnMesh=false);
|
|
149
149
|
Frame& computeCompoundInertia(bool clearChildInertias=true);
|
|
150
150
|
Frame& convertDecomposedShapeToChildFrames();
|
|
151
151
|
|
|
152
152
|
//I/O
|
|
153
153
|
void read(const Graph& ats);
|
|
154
|
-
void write(Graph& G);
|
|
155
|
-
void write(std::ostream& os) const;
|
|
154
|
+
void write(Graph& G) const;
|
|
155
|
+
void write(std::ostream& os) const { Graph G; write(G); G.write(os); }
|
|
156
156
|
|
|
157
157
|
//-- HIGHER LEVEL USER INTERFACE
|
|
158
158
|
Frame& setShape(rai::ShapeType shape, const arr& size);
|
|
@@ -166,6 +166,7 @@ struct Frame : NonCopyable {
|
|
|
166
166
|
Frame& setRelativeRotationMatrix(const arr& R);
|
|
167
167
|
Frame& setMesh2(const rai::Mesh& m);
|
|
168
168
|
Frame& setMesh(const arr& verts, const uintA& tris, const byteA& colors={}, const uintA& cvxParts={});
|
|
169
|
+
Frame& setMeshFile(str file);
|
|
169
170
|
Frame& setLines(const arr& verts, const byteA& colors={});
|
|
170
171
|
Frame& setPointCloud(const arr& points, const byteA& colors= {}, const arr& normals= {});
|
|
171
172
|
Frame& setConvexMesh(const arr& points, const byteA& colors= {}, double radius=0.);
|
|
@@ -184,11 +185,11 @@ struct Frame : NonCopyable {
|
|
|
184
185
|
|
|
185
186
|
arr getPose() { return ensure_X().getArr7d(); }
|
|
186
187
|
arr getPosition() { return ensure_X().pos.getArr(); }
|
|
187
|
-
arr getQuaternion() { return ensure_X().rot.
|
|
188
|
+
arr getQuaternion() { return ensure_X().rot.getArr(); }
|
|
188
189
|
arr getTransform() { return ensure_X().getMatrix(); }
|
|
189
190
|
arr getRelativePose() const { return get_Q().getArr7d(); }
|
|
190
191
|
arr getRelativePosition() const { return get_Q().pos.getArr(); }
|
|
191
|
-
arr getRelativeQuaternion() const { return get_Q().rot.
|
|
192
|
+
arr getRelativeQuaternion() const { return get_Q().rot.getArr(); }
|
|
192
193
|
arr getRelativeTransform() { return get_Q().getMatrix(); }
|
|
193
194
|
arr getSize() const ;
|
|
194
195
|
ShapeType getShapeType() const;
|
|
@@ -233,7 +234,7 @@ struct Dof {
|
|
|
233
234
|
arr getDofState();
|
|
234
235
|
virtual String name() const = 0;
|
|
235
236
|
|
|
236
|
-
void copyParameters(Dof* copy) {
|
|
237
|
+
void copyParameters(const Dof* copy) {
|
|
237
238
|
qIndex=copy->qIndex; dim=copy->dim;
|
|
238
239
|
limits=copy->limits; q0=copy->q0;
|
|
239
240
|
active=copy->active;
|
|
@@ -246,9 +247,8 @@ struct Dof {
|
|
|
246
247
|
const Joint* joint() const;
|
|
247
248
|
const ForceExchangeDof* fex() const;
|
|
248
249
|
|
|
249
|
-
virtual void write(
|
|
250
|
+
virtual void write(Graph& ats) const;
|
|
250
251
|
};
|
|
251
|
-
stdOutPipe(Dof)
|
|
252
252
|
|
|
253
253
|
//===========================================================================
|
|
254
254
|
|
|
@@ -294,10 +294,8 @@ struct Joint : Dof, NonCopyable {
|
|
|
294
294
|
void flip();
|
|
295
295
|
|
|
296
296
|
void read(const Graph& ats);
|
|
297
|
-
void write(Graph&
|
|
298
|
-
void write(std::ostream& os) const;
|
|
297
|
+
void write(Graph& ats) const;
|
|
299
298
|
};
|
|
300
|
-
stdOutPipe(Joint)
|
|
301
299
|
|
|
302
300
|
//===========================================================================
|
|
303
301
|
|
|
@@ -315,6 +313,7 @@ struct Inertia : NonCopyable {
|
|
|
315
313
|
void setZero() { mass=0; com=0; matrix=0; }
|
|
316
314
|
void add(const Inertia& I, const rai::Transformation& rel);
|
|
317
315
|
void defaultInertiaByShape();
|
|
316
|
+
void scaleTo(double _mass){ matrix*=_mass/mass; mass=_mass; }
|
|
318
317
|
|
|
319
318
|
rai::Transformation getDiagTransform(arr& diag);
|
|
320
319
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* ------------------------------------------------------------------
|
|
2
|
+
Copyright (c) 2011-2024 Marc Toussaint
|
|
3
|
+
email: toussaint@tu-berlin.de
|
|
4
|
+
|
|
5
|
+
This code is distributed under the MIT License.
|
|
6
|
+
Please see <root-path>/LICENSE for details.
|
|
7
|
+
-------------------------------------------------------------- */
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#ifdef RAI_PYBIND
|
|
12
|
+
|
|
13
|
+
#include <pybind11/pybind11.h>
|
|
14
|
+
|
|
15
|
+
void init_Quaternion(pybind11::module& m);
|
|
16
|
+
|
|
17
|
+
#endif
|
robotic/include/rai/ry/types.h
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
#include "../Core/array.h"
|
|
14
14
|
#include "../Core/graph.h"
|
|
15
|
+
#include "../Geo/geo.h"
|
|
15
16
|
|
|
16
17
|
#include <pybind11/pybind11.h>
|
|
17
18
|
#include <pybind11/stl.h>
|
|
@@ -90,6 +91,17 @@ template<class T> rai::Array<T> arr2list(const rai::Array<T>& X) {
|
|
|
90
91
|
return Y;
|
|
91
92
|
}
|
|
92
93
|
|
|
94
|
+
template<class T> rai::Vector numpy2Vector(const pybind11::array_t<T>& X) {
|
|
95
|
+
CHECK_EQ(X.ndim(), 1, "");
|
|
96
|
+
CHECK_EQ(X.shape()[0], 3, "");
|
|
97
|
+
auto ref = X.unchecked();
|
|
98
|
+
return rai::Vector(ref(0), ref(1), ref(2));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
inline pybind11::array_t<double> Vector2numpy(const rai::Vector v) {
|
|
102
|
+
return pybind11::array_t<double>({3}, &v.x);
|
|
103
|
+
}
|
|
104
|
+
|
|
93
105
|
inline StringA strvec2StringA(const std::vector<std::string>& x) {
|
|
94
106
|
StringA y(x.size());
|
|
95
107
|
for(uint i=0; i<y.N; i++) y(i) = x[i];
|
|
@@ -269,6 +281,23 @@ template <class T> struct type_caster<rai::Array<T>> {
|
|
|
269
281
|
}
|
|
270
282
|
};
|
|
271
283
|
|
|
284
|
+
//== Vector -- numpy
|
|
285
|
+
template <> struct type_caster<rai::Vector> {
|
|
286
|
+
PYBIND11_TYPE_CASTER(rai::Vector, _("Vector"));
|
|
287
|
+
|
|
288
|
+
bool load(pybind11::handle src, bool) {
|
|
289
|
+
auto buf = pybind11::array_t<double>::ensure(src);
|
|
290
|
+
if(!buf) return false;
|
|
291
|
+
value = numpy2Vector<double>(buf);
|
|
292
|
+
return !PyErr_Occurred();
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
static handle cast(const rai::Vector& src, return_value_policy, handle) {
|
|
296
|
+
pybind11::array_t<double> ret = Vector2numpy(src);
|
|
297
|
+
return ret.release();
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
|
|
272
301
|
//== rai::Graph -- pybind11::dict
|
|
273
302
|
template <> struct type_caster<rai::Graph> {
|
|
274
303
|
PYBIND11_TYPE_CASTER(rai::Graph, _("rai::Graph"));
|
robotic/librai.so
CHANGED
|
Binary file
|
robotic/manipulation.py
CHANGED
|
@@ -268,11 +268,8 @@ class KOMO_ManipulationHelper():
|
|
|
268
268
|
'''
|
|
269
269
|
inequality on distance between pairs of objects
|
|
270
270
|
'''
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
del objs[0]
|
|
274
|
-
for obj in objs:
|
|
275
|
-
self.komo.addObjective(time_interval, ry.FS.negDistance, [comp, obj], ry.OT.ineq, [scale], [-margin])
|
|
271
|
+
for i in range(0, len(objs), 2):
|
|
272
|
+
self.komo.addObjective(time_interval, ry.FS.negDistance, [objs[i], objs[i+1]], ry.OT.ineq, [scale], [-margin])
|
|
276
273
|
|
|
277
274
|
def freeze_joint(self, time_interval, joints):
|
|
278
275
|
'''
|
|
@@ -388,13 +385,15 @@ class KOMO_ManipulationHelper():
|
|
|
388
385
|
# cout <<' == scroll through solution in display window using SHIFT-scroll' <<endl
|
|
389
386
|
self.komo.view(True, f'debug: {info}\n{self.ret}')
|
|
390
387
|
|
|
391
|
-
def play(self, C: ry.Config, duration=1
|
|
388
|
+
def play(self, C: ry.Config, duration=1., savePngs=False):
|
|
392
389
|
dofs = C.getJointIDs()
|
|
393
390
|
path = self.komo.getPath(dofs)
|
|
394
391
|
for t in range(self.path.shape[0]):
|
|
395
392
|
C.setJointState(path[t])
|
|
396
393
|
C.view(False, f'step {t}\n{self.info}')
|
|
397
394
|
time.sleep(duration/self.path.shape[0])
|
|
395
|
+
if savePngs:
|
|
396
|
+
C.get_viewer().savePng()
|
|
398
397
|
|
|
399
398
|
def sub_motion(self, phase, fixEnd=True, homing_scale=1e-2, acceleration_scale=1e-1, accumulated_collisions=True, quaternion_norms=False):
|
|
400
399
|
(C, q0, q1) = self.komo.getSubProblem(phase)
|
robotic/meshTool
CHANGED
|
Binary file
|
|
@@ -2,4 +2,4 @@ base { X:[0 0 .5], multibody, multibody_gravity: false }
|
|
|
2
2
|
jointX(base){ joint:transX, mass:.01, limits: [-1.,1.], motorLambda: .01, motorMass: .1, sampleUniform: 1. }
|
|
3
3
|
jointY(jointX){ joint:transY, mass:.01, limits: [-1.,1.], motorLambda: .01, motorMass: .1, sampleUniform: 1. }
|
|
4
4
|
jointZ(jointY){ joint:transZ, limits: [-1.,1.], motorLambda: .01, motorMass: .1, sampleUniform: 1. }
|
|
5
|
-
finger(jointZ){ shape:sphere, size:[.2], color:[.5 1 1], contact:1, mass
|
|
5
|
+
finger(jointZ){ shape:sphere, size:[.2], color:[.5 1 1], contact:1, mass: .5 }
|
|
@@ -7,7 +7,7 @@ floatBall (floatZ){ joint:quatBall, limits:[-1 -1 -1 -1 1 1 1 1], mass:.01 }
|
|
|
7
7
|
|
|
8
8
|
Include: <../panda/panda_gripper.g>
|
|
9
9
|
|
|
10
|
-
gripper_base(floatBall): { Q:"t(0 0 .1035) d(180 1 0 0) d(-90 0 0 1)", shape: marker, size: [.
|
|
10
|
+
gripper_base(floatBall): { Q:"t(0 0 .1035) d(180 1 0 0) d(-90 0 0 1)", shape: marker, size: [.03] }
|
|
11
11
|
Edit panda_hand(gripper_base): {}
|
|
12
12
|
|
|
13
13
|
## define a gripper, palm and fingers
|
|
File without changes
|
robotic/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '0.2.
|
|
1
|
+
__version__ = '0.2.8.dev1'
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!python
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import h5py
|
|
5
|
+
|
|
6
|
+
parser = argparse.ArgumentParser(description='h5-file info')
|
|
7
|
+
|
|
8
|
+
parser.add_argument('FILE', type=str,
|
|
9
|
+
help='h5-file name')
|
|
10
|
+
|
|
11
|
+
def print_attrs(name, obj):
|
|
12
|
+
if isinstance(obj, h5py.Dataset):
|
|
13
|
+
print(' ', name, obj.name, obj.shape, obj.dtype)
|
|
14
|
+
else:
|
|
15
|
+
print('---', name)
|
|
16
|
+
|
|
17
|
+
def main():
|
|
18
|
+
args = parser.parse_args()
|
|
19
|
+
|
|
20
|
+
print('=== file', args.FILE)
|
|
21
|
+
try:
|
|
22
|
+
with h5py.File(args.FILE, 'r') as fil:
|
|
23
|
+
fil.visititems(print_attrs)
|
|
24
|
+
except KeyboardInterrupt:
|
|
25
|
+
sys.exit(1)
|
|
26
|
+
|
|
27
|
+
if __name__ == "__main__":
|
|
28
|
+
main()
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
robotic/DataGen.pyi,sha256=
|
|
1
|
+
robotic/DataGen.pyi,sha256=m1e5j8laihgDWOGAFbXEc5zM_Qq87y11gzj2obgSdXY,3293
|
|
2
2
|
robotic/__init__.py,sha256=k-hVqPB7vN-huwpRzQLt3f--6sNdjaCQ_hWw66dWkA8,297
|
|
3
|
-
robotic/_robotic.pyi,sha256=
|
|
4
|
-
robotic/_robotic.so,sha256=
|
|
5
|
-
robotic/librai.so,sha256=
|
|
6
|
-
robotic/manipulation.py,sha256=
|
|
7
|
-
robotic/meshTool,sha256=
|
|
3
|
+
robotic/_robotic.pyi,sha256=bn_N5aB290VEAbyAC7CUyHFk1wXdfP8Hh4x_azYzrDo,72942
|
|
4
|
+
robotic/_robotic.so,sha256=t1oNT9DmB9Ez9EVWVbNeLJorXpsp1SfkfxLV3tY7X9Y,1205984
|
|
5
|
+
robotic/librai.so,sha256=Tvf7LwXu7WQUDYjNNlAcT3mRc-41i1dxbCPMQS5qyso,40163304
|
|
6
|
+
robotic/manipulation.py,sha256=EhM_Zuv3vl8H4SBNqqYMD3NT9AzFUpOhr4PIzM4U7tM,22374
|
|
7
|
+
robotic/meshTool,sha256=Dssd8R2xExwxcH_Qk7rNfcV8QNTBAYmp6ahfjjDJgY0,52168
|
|
8
8
|
robotic/nlp.py,sha256=n9_hOj3i707DdL_r49Yd2eWyjsSOahW8DmJrEhQlNFw,3200
|
|
9
9
|
robotic/render.py,sha256=OE1dvyWHD7Oyzk4wlhXZ7m3v3xxa3zAL5_LCV1RgJXk,4662
|
|
10
10
|
robotic/ry-bot,sha256=nd2yWqaDsFbwAmr7ySdOjq06ek0E1FMHTxPRO-7e2Q8,2294
|
|
11
|
-
robotic/ry-h5info
|
|
11
|
+
robotic/ry-h5info,sha256=YrkBvLAadxAgTmx0hlcm9h_KXy-KaNV_zp4raSXXdYY,620
|
|
12
12
|
robotic/ry-info,sha256=GRj4oMCgTCGRF2wxtYxiFvETROB92rwwtUFb6S_Eo7g,439
|
|
13
13
|
robotic/ry-meshTool,sha256=h4f4wFPNaey3ziz870SrEvy6SsQSL-ZnR_cH3UuAZxE,101
|
|
14
14
|
robotic/ry-test,sha256=JZJ_h4NxLkkkrcV9IYdXzYHn9eEZDPFPBAzo1jIv278,976
|
|
@@ -16,7 +16,7 @@ robotic/ry-urdf2rai,sha256=88CFu5ikKsjy4wQixvCZqtNOqCheBiT18cjZfOsJA8A,7736
|
|
|
16
16
|
robotic/ry-urdf2yaml,sha256=D36MR8Ui6Ry9V0TqJOBaPCWC89OZa43Fytz4P7Y4v0w,8543
|
|
17
17
|
robotic/ry-view,sha256=T1Omn1QS7cNAtjQhBjMJTNz7aW5FgoOf9vBIfW0mFME,613
|
|
18
18
|
robotic/test.pyi,sha256=vVxwRSerjUG4bpB7pIhof7ZatrBqwg3Bj5voywa-YTI,917
|
|
19
|
-
robotic/version.py,sha256=
|
|
19
|
+
robotic/version.py,sha256=rb-FgRm7ATGsW94hOY7BGKKSKdhF8udjtUpWZnvfXG4,27
|
|
20
20
|
robotic/include/rai/Algo/MLcourse.h,sha256=TGkAJWC5ollGfPw0-gcYL0TZeDJiHtWFzkHSMK8_lqU,1828
|
|
21
21
|
robotic/include/rai/Algo/RidgeRegression.h,sha256=VXiv6-xr3j--CN7DJTzUg9Xb49zV9FZ9dwzxP1CmcPM,3730
|
|
22
22
|
robotic/include/rai/Algo/SplineCtrlFeed.h,sha256=9ZtYLHXx9sExj0lZV6F5ZWaCtkm0R4hMiYb-KJjktnc,3339
|
|
@@ -50,21 +50,21 @@ robotic/include/rai/Core/array.ipp,sha256=hdyULakmWOdt6Gi_-4338uzkWbrkw2_eCh-H3n
|
|
|
50
50
|
robotic/include/rai/Core/arrayDouble.h,sha256=ACvesIGz_0UP3G-x7-LlfGzodKB7EVsGeX5z2RbMFx8,28869
|
|
51
51
|
robotic/include/rai/Core/defines.h,sha256=hBTgf5EiJ50rQYW1saGw8Ox87aKVFOYVKnFw0jojVW0,6894
|
|
52
52
|
robotic/include/rai/Core/graph.h,sha256=Eo0j8q8IbY_M7V2FwzKAi9E8makxgRBvrFcPfJKuCtE,20890
|
|
53
|
-
robotic/include/rai/Core/h5.h,sha256=
|
|
53
|
+
robotic/include/rai/Core/h5.h,sha256=FzIP0eLL7XYg5eRjJgfPIt9SwY5HBaazy4ddoCcpkSU,1057
|
|
54
54
|
robotic/include/rai/Core/thread.h,sha256=wjwvXACwI8B6rhZSf2UDruWUb8kT9Xjm-VE-OnUQpwk,18248
|
|
55
|
-
robotic/include/rai/Core/util.h,sha256=
|
|
55
|
+
robotic/include/rai/Core/util.h,sha256=KhBcYsprUaZXt2BMpsOACoOcmEWLEtOG4WM9Dcooamc,19514
|
|
56
56
|
robotic/include/rai/Core/util.ipp,sha256=soCVdpzWTpLL9i6rilFPNGozHZP40yhkmuXul7gHC7o,2157
|
|
57
57
|
robotic/include/rai/Core/lapack/blaswrap.h,sha256=jl8W6GwBGMiU-ND9ILeKqWlIvryw7AsIydPUCQGT_ew,3750
|
|
58
58
|
robotic/include/rai/Core/lapack/cblas.h,sha256=4bSmMzZ4idIPlmcwjw5HuwY1cs5RU73ZwmfydSpaBdk,32367
|
|
59
59
|
robotic/include/rai/Core/lapack/clapack.h,sha256=8rLteHzzGpKhJZXv4Eom9mk8lzbwRwjJuIqJuR1eePc,343373
|
|
60
60
|
robotic/include/rai/Core/lapack/lapacke.h,sha256=cpP6MEjkLGyhS8mV6ysRlTVeUam6f8zBgFUJB1phuwM,1045408
|
|
61
61
|
robotic/include/rai/DataGen/rndStableConfigs.h,sha256=bIz2RovkruMjYaaDwJIkyevsF6oV16y7dhyKm6sp_6s,391
|
|
62
|
-
robotic/include/rai/DataGen/shapenetGrasps.h,sha256=
|
|
63
|
-
robotic/include/rai/Geo/assimpInterface.h,sha256=
|
|
62
|
+
robotic/include/rai/DataGen/shapenetGrasps.h,sha256=QWv85YMGtW_X9ldKu4eZuoRNdQeIYtVTx1XIsk3Pbvg,1589
|
|
63
|
+
robotic/include/rai/Geo/assimpInterface.h,sha256=2Jg7v2GZ83nz4kkgPLzbSWTIBmL9nZg-LhMlWcjiF_o,1055
|
|
64
64
|
robotic/include/rai/Geo/depth2PointCloud.h,sha256=0mXJnTk0sMB--KDE9CO_2gKgGw4gHXUe7xg6DcROhvk,1168
|
|
65
65
|
robotic/include/rai/Geo/fclInterface.h,sha256=iNdxNc_DSOgYCLyCajxP8lxdnrNcyoKQmjUlVmjxjQM,940
|
|
66
|
-
robotic/include/rai/Geo/geo.h,sha256=
|
|
67
|
-
robotic/include/rai/Geo/mesh.h,sha256=
|
|
66
|
+
robotic/include/rai/Geo/geo.h,sha256=Lyoy1YbDtrscHZxza6CYXIa_R7aaFmgpHrG3rLpBqTk,14672
|
|
67
|
+
robotic/include/rai/Geo/mesh.h,sha256=gq3K-_TbJbrGMVl8V-n2qB5_vDT88PmKxaxOUGgkBxY,6441
|
|
68
68
|
robotic/include/rai/Geo/pairCollision.h,sha256=kFEtQpkgPV_VKJ6YBDBKdb3ko62_s7HKDUti0kB2yYI,4374
|
|
69
69
|
robotic/include/rai/Geo/qhull.h,sha256=dRAAHIdvujPPW1fXW4hXMjgixpBDajDg-y_OX1JMi_0,1890
|
|
70
70
|
robotic/include/rai/Geo/signedDistanceFunctions.h,sha256=hrC838CsYWQ6TXm536iNRwB8W5-62LNb-JPqPoDAFPE,4831
|
|
@@ -86,12 +86,12 @@ robotic/include/rai/Geo/ccd_rai/support.h,sha256=B9KBuOctG7Hx-e1TXpnkU667WVH7SP4
|
|
|
86
86
|
robotic/include/rai/Geo/ccd_rai/vec3.h,sha256=ARkNnQz8yWf_Cs3vgt22zclN1cLeGmwWPTVHVpvmfEA,8115
|
|
87
87
|
robotic/include/rai/Geo/ply/ply.h,sha256=_oAXgQ5CyHvUMtPDBxYtOBbnKDVoZf5PKMswisqvOeI,9384
|
|
88
88
|
robotic/include/rai/Geo/vhacd/VHACD.h,sha256=QT_cT6PPzec_mxKODsS9cJGr6nBt6S8cUJF7dCeBQCc,258343
|
|
89
|
-
robotic/include/rai/Gui/RenderData.h,sha256=
|
|
89
|
+
robotic/include/rai/Gui/RenderData.h,sha256=FPN7ApW8SK-MAI5wIoCU8_ezJbJogUMxfhAvK6GSAJ4,4775
|
|
90
90
|
robotic/include/rai/Gui/color.h,sha256=4ElBkpWgwBuqQEFD4Mdhv_afZE4ul6NkptwFQ2oDS5o,2596
|
|
91
91
|
robotic/include/rai/Gui/opengl.h,sha256=sRvOz-QGHwgrf11UiQV4At4G2FjClveTTJorXyer1Fw,9036
|
|
92
92
|
robotic/include/rai/Gui/plot.h,sha256=xhTBY84UN4KpgZsX7SJQGqVKd1jU7jojGVKFv02v0xU,2341
|
|
93
93
|
robotic/include/rai/KOMO/PathSmoother.h,sha256=y-t3yVEZvxfQIs8_EA-WI7FJ_RzfbG8TEfdiNAruuUI,813
|
|
94
|
-
robotic/include/rai/KOMO/komo.h,sha256=
|
|
94
|
+
robotic/include/rai/KOMO/komo.h,sha256=5TR2IVJzMkWB6oH7NCl1X5OiYtM_OERmf_UPLBaEOlQ,13249
|
|
95
95
|
robotic/include/rai/KOMO/komo_NLP.h,sha256=kSzUMDmw4yzAXtpNB2v38dpw2tBS8n8R_op_T3yS3DQ,3681
|
|
96
96
|
robotic/include/rai/KOMO/manipTools.h,sha256=CoIL9ElNFHAV-AU95wUtSgDWH9ceNx6WmGVTP8DZvaw,4173
|
|
97
97
|
robotic/include/rai/KOMO/objective.h,sha256=Cl4-KjheRMNWoh_xFas5tLWMKSMlJf-HLDihfqvfcSw,2704
|
|
@@ -102,20 +102,20 @@ robotic/include/rai/KOMO/splined.h,sha256=G_fu9gXCboJLkwhwu77F6F3Ei6deqzbvkgP8r9
|
|
|
102
102
|
robotic/include/rai/KOMO/switch.h,sha256=teNNnHFe4h9W5rLlL3TFBsq97ni-RUEhcxw4uVPYR1g,1850
|
|
103
103
|
robotic/include/rai/KOMO/testProblems_KOMO.h,sha256=rlVH4U8PeaSLl6hrDApQQnSd4JR5SA-FrA4jETTu9CU,2453
|
|
104
104
|
robotic/include/rai/Kin/F_LeapCost.h,sha256=wNAUNgAJjLirMurF67BlFLHtjyuXy1EPr--9XLBe6Wk,556
|
|
105
|
-
robotic/include/rai/Kin/F_collisions.h,sha256=
|
|
106
|
-
robotic/include/rai/Kin/F_forces.h,sha256=
|
|
105
|
+
robotic/include/rai/Kin/F_collisions.h,sha256=Atq9LPVOkEuMF-kSHk78cGjaJYwDIbvrTxHmLBJw3yk,2092
|
|
106
|
+
robotic/include/rai/Kin/F_forces.h,sha256=xUPLO0g3AU0nemQfPqElvt4SuGfqU2pV-7olCVBCkmM,6694
|
|
107
107
|
robotic/include/rai/Kin/F_geometrics.h,sha256=2yPFycgcmZjXLezxoRL_aaetrZusDgtGyx7GQbfbRrI,2146
|
|
108
108
|
robotic/include/rai/Kin/F_operators.h,sha256=Nxdk1dPSoN7lW0A5Ns-BSJ_YXFft4iZi9RDOmVn3BJ0,1608
|
|
109
|
-
robotic/include/rai/Kin/F_pose.h,sha256=
|
|
109
|
+
robotic/include/rai/Kin/F_pose.h,sha256=QlZnpS4ZTNFBZlH-lpe6sTt2gdbxbjsZTHPqk0T_4AI,5252
|
|
110
110
|
robotic/include/rai/Kin/F_qFeatures.h,sha256=x4cfFGaVBQSmj9ZetcC25qiGxnvfNMPsWh9zbPa5owE,2212
|
|
111
111
|
robotic/include/rai/Kin/cameraview.h,sha256=byzJyTxP4Irh0A6gi8ZNndvJ0UFDD8leLfbW9B7laJI,2478
|
|
112
|
-
robotic/include/rai/Kin/dof_direction.h,sha256=
|
|
113
|
-
robotic/include/rai/Kin/dof_forceExchange.h,sha256=
|
|
112
|
+
robotic/include/rai/Kin/dof_direction.h,sha256=9tio7VXxXAv-ZAxA6QskjD5rMH2LHU4hIGAG6TC0RaY,831
|
|
113
|
+
robotic/include/rai/Kin/dof_forceExchange.h,sha256=ZjtIbaO0MU5AGsvtMJdAQJh3Ghfn8XrZavAx1WH4MZk,1823
|
|
114
114
|
robotic/include/rai/Kin/dof_particles.h,sha256=PboLndC5a5extUKAfUPAIsJEGTTs6_ACDgnLrei2s8g,790
|
|
115
|
-
robotic/include/rai/Kin/dof_path.h,sha256=
|
|
115
|
+
robotic/include/rai/Kin/dof_path.h,sha256=XRPj3bH90JUIdkTS4jxwbAb5n9yAsRoemWUWUV1xDtQ,792
|
|
116
116
|
robotic/include/rai/Kin/feature.h,sha256=xicsrElMcYnYXdIXdO5LBLmXxvCGVUVgZJY2NIarO5I,3935
|
|
117
117
|
robotic/include/rai/Kin/featureSymbols.h,sha256=JVXbXoW43PlEGOgwHPpULlbXUQzkl79F1EFnfl-0wyk,1984
|
|
118
|
-
robotic/include/rai/Kin/frame.h,sha256=
|
|
118
|
+
robotic/include/rai/Kin/frame.h,sha256=8fqG2axtA0-kezy5fVeMFR9j30XRoU30Ous9P040vSk,14321
|
|
119
119
|
robotic/include/rai/Kin/kin.h,sha256=hhjYI9RF55PjgJvdXhV4omyQK1iRG6MTi8B_GG9yYqM,15594
|
|
120
120
|
robotic/include/rai/Kin/kin_bullet.h,sha256=y8aApXpXY4bD5QN_WmDAU2vNEvvbdo1Rd4zY7qo-FKE,1970
|
|
121
121
|
robotic/include/rai/Kin/kin_feather.h,sha256=o-hOJA8UcmIBKx_qPzoG9R7fxzz-4zhBNMBmBTK21oA,1627
|
|
@@ -184,10 +184,11 @@ robotic/include/rai/ry/py-Frame.h,sha256=ssIlaHBHBreB_3C22bgnv8tPVtLO1jsGPLBxypI
|
|
|
184
184
|
robotic/include/rai/ry/py-KOMO.h,sha256=AMa2vw8HUP-S11C4MF5d0CLT5kegYQN_SSCL467gLjI,514
|
|
185
185
|
robotic/include/rai/ry/py-LGP.h,sha256=0NBErJFTg41xAQcHbRhr6RNeDIy4EJl3DtuUR595Rx8,430
|
|
186
186
|
robotic/include/rai/ry/py-Optim.h,sha256=xvLv7tvE0hOocX64eQi2wa84of9H55GVUctZlFIYtQw,432
|
|
187
|
+
robotic/include/rai/ry/py-Quaternion.h,sha256=EydIMfUB_Zf9H21x29dhBjDm7472Ge_XD6edyRALQY0,437
|
|
187
188
|
robotic/include/rai/ry/py-Simulation.h,sha256=Kc4e6pK1yQyxDMCQu1HvXOYt9IlUiojBYFdqv3PP1AY,437
|
|
188
189
|
robotic/include/rai/ry/py-Spline.h,sha256=gR8Cvwt5PlzlolxegS1wUEEOQj9RydOp1gS67Zxm0jk,433
|
|
189
190
|
robotic/include/rai/ry/py-tests.h,sha256=-l_0V-yRqeOEztqCo_BAdcKCAMovyd8-9tnrytM5pQM,432
|
|
190
|
-
robotic/include/rai/ry/types.h,sha256=
|
|
191
|
+
robotic/include/rai/ry/types.h,sha256=DUTmlv6e8VaXEyJVVzIu7xNADwacBoxh0dSw2n0SB-A,8396
|
|
191
192
|
robotic/rai-robotModels/baxter/baxter.g,sha256=asYXGjk7sqUF20wSMtW0unGRGZa4N0YOPVhsggEjXj0,2654
|
|
192
193
|
robotic/rai-robotModels/baxter/baxter_clean.g,sha256=lTNROJfGXwhCzIJG9HmfU9gpPXjHzD9TD2AhrkBOiso,20777
|
|
193
194
|
robotic/rai-robotModels/baxter/baxter_clean2.g,sha256=rZ7ImZNJnoGP7e-6_XjjSt7csr80C6UGCGKYyYpqgMQ,21191
|
|
@@ -356,7 +357,7 @@ robotic/rai-robotModels/robotiq/meshes/visual/robotiq_arg2f_85_outer_knuckle.ply
|
|
|
356
357
|
robotic/rai-robotModels/robotiq/meshes/visual/robotiq_arg2f_85_pad.ply,sha256=SjbdAIaUjNlUX7okwcDJWwfd0NaT6fazQwerbevKlbI,464
|
|
357
358
|
robotic/rai-robotModels/robotiq/meshes/visual/robotiq_ft300.ply,sha256=0zn76K_SIR85pVNO8hmbnflRsmeFKHCuCykpVTfQf6s,38626
|
|
358
359
|
robotic/rai-robotModels/robotiq/meshes/visual/robotiq_gripper_coupling.ply,sha256=ef10q5MdRRn2wjWPZTc3nrSVW401x9fHgkEdB_bdECA,30421
|
|
359
|
-
robotic/rai-robotModels/scenarios/ballFinger.g,sha256=
|
|
360
|
+
robotic/rai-robotModels/scenarios/ballFinger.g,sha256=Qz69o30vKIpv2VAxR7wStafBMyOHnG055ftSGzgUx6Y,457
|
|
360
361
|
robotic/rai-robotModels/scenarios/climber.g,sha256=fUbSlFq_PVev2AxqLgytyfud6NUxvyO5NSon9wXSOJo,2016
|
|
361
362
|
robotic/rai-robotModels/scenarios/climber2.g,sha256=xYGBfNgcLfPfI6WOxOOFpGCVkusoH7gVECEGj2bwc-4,2349
|
|
362
363
|
robotic/rai-robotModels/scenarios/gripper.g,sha256=-yvc-cxVMxz7OmqVzhg6dyh21hBk9hD9wo5Uc2c4roY,447
|
|
@@ -366,7 +367,7 @@ robotic/rai-robotModels/scenarios/kswing.g,sha256=k1bND_Hr-lE5sklOraw58HdUye6iW8
|
|
|
366
367
|
robotic/rai-robotModels/scenarios/liftRing.g,sha256=fRKPEfUH_kDL4r7PmpO0kB2t1KeLV9QypxEEN_BNrqQ,1349
|
|
367
368
|
robotic/rai-robotModels/scenarios/mobileMini.g,sha256=I7SE9YUUciZ1JrJG6BIAZ9Oho_eUa_Z76l5_h-B0wjY,1158
|
|
368
369
|
robotic/rai-robotModels/scenarios/mobilePanda.g,sha256=AxH1JQJUgwnaLfrojvpP6DO83h_I6Vt3-la10TFpk0Y,608
|
|
369
|
-
robotic/rai-robotModels/scenarios/pandaFloatingGripper.g,sha256=
|
|
370
|
+
robotic/rai-robotModels/scenarios/pandaFloatingGripper.g,sha256=zYo9T6aFWREpP2gnME0iFwOErKR8Ram2gndnZ9s-xXA,1498
|
|
370
371
|
robotic/rai-robotModels/scenarios/pandaSingle.g,sha256=H_UnXdMUbk16os9StOZB0PZMPL3FaGbCAZy0uUAKEKA,1147
|
|
371
372
|
robotic/rai-robotModels/scenarios/panda_fixGripper.g,sha256=bhkRey6igLb18HlOFj7CpAjqF6R7Z3saxevipHAn4W0,337
|
|
372
373
|
robotic/rai-robotModels/scenarios/panda_fixRobotiq.g,sha256=77KlkNgYLNLz3YrO-OrWNK0QTpr9-KaxsV2F7JfpT_U,1561
|
|
@@ -396,15 +397,16 @@ robotic/rai-robotModels/ur10/ur_description/meshes/ur10/visual/UpperArm.ply,sha2
|
|
|
396
397
|
robotic/rai-robotModels/ur10/ur_description/meshes/ur10/visual/Wrist1.ply,sha256=Qmlgt3g046pi8GPzlUBKbDcR-4JehZkXfSRNabe_RVI,282487
|
|
397
398
|
robotic/rai-robotModels/ur10/ur_description/meshes/ur10/visual/Wrist2.ply,sha256=br9zVxfiGNlEMAuVm36e2dJ0chDKpVMe3H1MCh-318E,784726
|
|
398
399
|
robotic/rai-robotModels/ur10/ur_description/meshes/ur10/visual/Wrist3.ply,sha256=el2jO6EOzwgz3ybkKjz9XcjCIQJWCpOCgTA7DSFHz6U,25593
|
|
399
|
-
robotic-0.2.
|
|
400
|
-
robotic-0.2.
|
|
401
|
-
robotic-0.2.
|
|
402
|
-
robotic-0.2.
|
|
403
|
-
robotic-0.2.
|
|
404
|
-
robotic-0.2.
|
|
405
|
-
robotic-0.2.
|
|
406
|
-
robotic-0.2.
|
|
407
|
-
robotic-0.2.
|
|
408
|
-
robotic-0.2.
|
|
409
|
-
robotic-0.2.
|
|
410
|
-
robotic-0.2.
|
|
400
|
+
robotic-0.2.8.dev1.data/scripts/ry-bot,sha256=LBNbbQeNNNd_tupI5463Xe-RKSD6xy4HGTbJloisCGk,2280
|
|
401
|
+
robotic-0.2.8.dev1.data/scripts/ry-h5info,sha256=J-0Q4NRASUaQ_Xgii4Zyiw5mLp5XvvrrJvp-L248Ia4,606
|
|
402
|
+
robotic-0.2.8.dev1.data/scripts/ry-info,sha256=fL5QXJL4Xx-Q42L2C29HHbj1XsmWdWiKIv9rVfc5sm4,425
|
|
403
|
+
robotic-0.2.8.dev1.data/scripts/ry-meshTool,sha256=h4f4wFPNaey3ziz870SrEvy6SsQSL-ZnR_cH3UuAZxE,101
|
|
404
|
+
robotic-0.2.8.dev1.data/scripts/ry-test,sha256=61CnOEa-OqBsNznvXlZ_Xo5aCXx8QKYeokhsHcEUZac,962
|
|
405
|
+
robotic-0.2.8.dev1.data/scripts/ry-urdf2rai,sha256=oeLKgNzYKV5yZ_vkvCrw65CY3ZAxL2ssFQQKcRuCNeo,7722
|
|
406
|
+
robotic-0.2.8.dev1.data/scripts/ry-urdf2yaml,sha256=Nebu73TLTUx2p40-FLakek9n3y74cRJfRchV0vV0Gf0,8529
|
|
407
|
+
robotic-0.2.8.dev1.data/scripts/ry-view,sha256=_GjUbVS2X3AWnlXqIHwU5dofLmUKA2-NUPySgS-QJNI,599
|
|
408
|
+
robotic-0.2.8.dev1.dist-info/LICENSE,sha256=oT-pAsUSXiuMq2_3omR87-GFBeBnegQYixH4Bm_7wag,1071
|
|
409
|
+
robotic-0.2.8.dev1.dist-info/METADATA,sha256=QByHh3xHPdQxxvoRpYC2XcOMyr2KoauzfcYjw3W81Qw,6565
|
|
410
|
+
robotic-0.2.8.dev1.dist-info/WHEEL,sha256=QjksN8yqvEZiPRpkysvFl_zIoTPrHYtCPi208j7yd3I,102
|
|
411
|
+
robotic-0.2.8.dev1.dist-info/top_level.txt,sha256=x5A4haAZ18y9FpO1IhXSVJ2TFdhVAgT5JMkejHUg_9U,8
|
|
412
|
+
robotic-0.2.8.dev1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|