robotic 0.2.7__cp310-cp310-manylinux2014_x86_64.whl → 0.2.8.dev1__cp310-cp310-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.
Files changed (40) hide show
  1. robotic/DataGen.pyi +6 -2
  2. robotic/_robotic.pyi +83 -7
  3. robotic/_robotic.so +0 -0
  4. robotic/include/rai/Core/h5.h +3 -0
  5. robotic/include/rai/Core/util.h +2 -0
  6. robotic/include/rai/DataGen/shapenetGrasps.h +9 -6
  7. robotic/include/rai/Geo/assimpInterface.h +1 -1
  8. robotic/include/rai/Geo/geo.h +22 -24
  9. robotic/include/rai/Geo/mesh.h +1 -4
  10. robotic/include/rai/Gui/RenderData.h +8 -6
  11. robotic/include/rai/KOMO/komo.h +3 -1
  12. robotic/include/rai/Kin/F_collisions.h +10 -0
  13. robotic/include/rai/Kin/F_forces.h +14 -0
  14. robotic/include/rai/Kin/F_pose.h +2 -0
  15. robotic/include/rai/Kin/dof_direction.h +1 -1
  16. robotic/include/rai/Kin/dof_forceExchange.h +1 -1
  17. robotic/include/rai/Kin/dof_path.h +0 -1
  18. robotic/include/rai/Kin/frame.h +10 -11
  19. robotic/include/rai/ry/py-Quaternion.h +17 -0
  20. robotic/include/rai/ry/types.h +29 -0
  21. robotic/librai.so +0 -0
  22. robotic/manipulation.py +5 -6
  23. robotic/meshTool +0 -0
  24. robotic/rai-robotModels/scenarios/ballFinger.g +1 -1
  25. robotic/rai-robotModels/scenarios/pandaFloatingGripper.g +1 -1
  26. robotic/{ry-h5info.py → ry-h5info} +0 -0
  27. robotic/version.py +1 -1
  28. robotic-0.2.8.dev1.data/scripts/ry-h5info +28 -0
  29. {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/METADATA +1 -1
  30. {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/RECORD +40 -38
  31. {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-bot +0 -0
  32. {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-info +0 -0
  33. {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-meshTool +0 -0
  34. {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-test +0 -0
  35. {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-urdf2rai +0 -0
  36. {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-urdf2yaml +0 -0
  37. {robotic-0.2.7.data → robotic-0.2.8.dev1.data}/scripts/ry-view +0 -0
  38. {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/LICENSE +0 -0
  39. {robotic-0.2.7.dist-info → robotic-0.2.8.dev1.dist-info}/WHEEL +0 -0
  40. {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/', numShapes: 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:
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, frameName: str, warnIfNotExist: bool = True) -> Frame:
302
+ def frame(self, frameID: int) -> Frame:
299
303
  """
300
- get access to a frame by name; use the Frame methods to set/get frame properties
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: str) -> None:
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: str) -> None:
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, initName: str = None, initFrame: Frame = None) -> Frame:
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
@@ -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
@@ -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, numShapes, -1)
11
- RAI_PARAM("ShapenetGrasps/", int, startShape, 0)
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 rndPose=true);
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
- void addSceneGripper();
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 const& path, bool flipYZ=true, bool relativeMeshPoses=false);
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();
@@ -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
- void set(double w, double x, double y, double z);
115
- void set(const arr& q);
116
- void set(const std::vector<double>& x) { CHECK_EQ(x.size(), 4, ""); set(x.data()); }
117
- void set(const double* p);
118
- void setZero();
119
- void setRandom();
120
- void setExp(const Vector& w);
121
- void setDeg(double degree, double axis0, double axis1, double axis2);
122
- void setDeg(double degree, const Vector& axis);
123
- void setRad(double radians, double axis0, double axis1, double axis2);
124
- void setRad(double radians, const Vector& axis);
125
- void setRadX(double radians);
126
- void setRadY(double radians);
127
- void setRadZ(double radians);
128
- void setRollPitchYaw(double roll, double pitch, double yaw);
129
- void setVector(const Vector& w){ setExp(w); }
130
- void setMatrix(double* m);
131
- void setMatrix(const arr& R) { CHECK_EQ(R.N, 9, ""); setMatrix(R.p); }
132
- void setDiff(const Vector& from, const Vector& to);
133
- void setInterpolateEmbedded(double t, const Quaternion& from, const Quaternion to);
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
- void getDeg(double& degree, Vector& axis) const;
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 getArr4d() const { return arr(&w, 4, false); }
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
@@ -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
- uintA Tt; ///< triangle texture indices (pointing into coordinates)
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, texture;
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
  };
@@ -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* initName=0, rai::Frame* initFrame=0);
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; }
@@ -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 {
@@ -28,6 +28,5 @@ struct PathDof : Dof, NonCopyable {
28
28
 
29
29
  void getJacobians(arr& Jpos, arr& Jang) const;
30
30
  };
31
- stdOutPipe(PathDof)
32
31
 
33
32
  }
@@ -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.getArr4d(); }
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.getArr4d(); }
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(std::ostream& os) const;
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& g);
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
@@ -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
- while len(objs) > 1:
272
- comp = objs[0]
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:.1 }
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: [.1] }
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.7'
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,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: robotic
3
- Version: 0.2.7
3
+ Version: 0.2.8.dev1
4
4
  Summary: Robotic Control Interface & Manipulation Planning Library
5
5
  Home-page: https://github.com/MarcToussaint/robotic/
6
6
  Author: Marc Toussaint
@@ -1,14 +1,14 @@
1
- robotic/DataGen.pyi,sha256=2IncN1yBCB_YgCzBoL8MoonOlMMMxENny_hqbJNmlTw,3051
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=1y2Z5sHqRAcKFtH9cAN7OH6iHZeeF8VSvskQEy31rzg,70731
4
- robotic/_robotic.so,sha256=vq8fbL0oEqtOHUGuVN18GZpBBMMb-yjSrmbOfqzLb0U,1165024
5
- robotic/librai.so,sha256=TmuLoBZ0kkhWNS-sNbVVp2MmZ71JuMX5PQadyWxOy3E,40126344
6
- robotic/manipulation.py,sha256=UgH3Fy2FjuCL3ip0s1q--JzqlBLU74eRiOWMOnCM-Ys,22355
7
- robotic/meshTool,sha256=2SpKcToxKHD8M6me_GRWu9vi1G4jauEOZSgZWWwisug,43928
3
+ robotic/_robotic.pyi,sha256=bn_N5aB290VEAbyAC7CUyHFk1wXdfP8Hh4x_azYzrDo,72942
4
+ robotic/_robotic.so,sha256=bKGLcz3Hcrua-5YDQMenglL0uATaFxJksx4sEn95mRM,1206016
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.py,sha256=YrkBvLAadxAgTmx0hlcm9h_KXy-KaNV_zp4raSXXdYY,620
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=e3cfQy_iVs9ILsymUalJnJu5D_dd7HuUVoVwKKurcL0,22
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=3dlhKBfrWpfZEhvhz9ceFe5ewF4LXAK4ykq-Yk4s9Ro,1026
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=lISHJcHh0aZ0pifea_MKEkKJ7F4nU55_pssuUiotzDA,19370
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=NXOnjUhE-KpCHDQq7BFvwYgq8QYdQ2imtZ-kanypoPA,1411
63
- robotic/include/rai/Geo/assimpInterface.h,sha256=bTLjLN7_6unykJ-erIxyyb2RZtmcFxkygUws8N5MlNI,1039
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=_Ahf2k5-2iyzhQMf_MGsqJ40L5kZFaPv-fsrWYrHWys,14545
67
- robotic/include/rai/Geo/mesh.h,sha256=OP7owWT7B_EUXq5Pji2qJA4W0e1xO8z17622c8nW6QQ,6575
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=uQWRwAAh7eN8RjGR0cVkcKGL00oRRzsy_o0-qr2GiEU,4606
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=SHyG2X0F0RVAxUlRhaYBVKzccwru9m6pQfvXuh9bEB0,13008
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=pWjq-0jR-i814KquLndMHyFjkLWio7dtqgfDEKIlMq8,1814
106
- robotic/include/rai/Kin/F_forces.h,sha256=7qFg_5JZSxaq8GpjHrGojLWPrHOO1cxOhRGcc27oVks,6315
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=37Atdsxnb1CdnIFcRUjkBqEQRNRWkC2p6BpTrrMBfvI,5166
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=HRdl3-r8TeAtW8qU00PEZVKCL7GASkGjVF4HKVU956c,825
113
- robotic/include/rai/Kin/dof_forceExchange.h,sha256=Apf95urslSgX0PZmU-u-u6goxWWtwlWC7EE9-Q9039M,1817
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=0vHnPER8XnrCufXF27hCWd8Nq9_J31MNoksNLhZvv2g,812
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=KgNJBbfkaeNd-CfKnRmT5pxyDaaFzGk_ikhh4ySsSe8,14225
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=2hZJJsSlNAD6_mEyHNLkIccgao7sSgjhTwB94vDnegs,7557
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=BALhO2h83-r6AIoTy3LS-blB43MNibrKyl7JuN7xqho,456
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=62swwmxuYPd_DWT1ANw5qE-cCxjvSqURX_lAz0rK_jQ,1497
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.7.data/scripts/ry-bot,sha256=LBNbbQeNNNd_tupI5463Xe-RKSD6xy4HGTbJloisCGk,2280
400
- robotic-0.2.7.data/scripts/ry-info,sha256=fL5QXJL4Xx-Q42L2C29HHbj1XsmWdWiKIv9rVfc5sm4,425
401
- robotic-0.2.7.data/scripts/ry-meshTool,sha256=h4f4wFPNaey3ziz870SrEvy6SsQSL-ZnR_cH3UuAZxE,101
402
- robotic-0.2.7.data/scripts/ry-test,sha256=61CnOEa-OqBsNznvXlZ_Xo5aCXx8QKYeokhsHcEUZac,962
403
- robotic-0.2.7.data/scripts/ry-urdf2rai,sha256=oeLKgNzYKV5yZ_vkvCrw65CY3ZAxL2ssFQQKcRuCNeo,7722
404
- robotic-0.2.7.data/scripts/ry-urdf2yaml,sha256=Nebu73TLTUx2p40-FLakek9n3y74cRJfRchV0vV0Gf0,8529
405
- robotic-0.2.7.data/scripts/ry-view,sha256=_GjUbVS2X3AWnlXqIHwU5dofLmUKA2-NUPySgS-QJNI,599
406
- robotic-0.2.7.dist-info/LICENSE,sha256=oT-pAsUSXiuMq2_3omR87-GFBeBnegQYixH4Bm_7wag,1071
407
- robotic-0.2.7.dist-info/METADATA,sha256=sJOsa-sTnum4Wl0vHproqYztL1KP6qMMCAnkCwXdIcw,6689
408
- robotic-0.2.7.dist-info/WHEEL,sha256=aJ4RvyGkNe3spInijG_tdeo2KZhSBTVwmh5LQ523pbk,104
409
- robotic-0.2.7.dist-info/top_level.txt,sha256=x5A4haAZ18y9FpO1IhXSVJ2TFdhVAgT5JMkejHUg_9U,8
410
- robotic-0.2.7.dist-info/RECORD,,
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=RdgGtwPUnnZK_3TKX3xOvyDTJC2cHHUpScg4KtgmkPg,6694
410
+ robotic-0.2.8.dev1.dist-info/WHEEL,sha256=aJ4RvyGkNe3spInijG_tdeo2KZhSBTVwmh5LQ523pbk,104
411
+ robotic-0.2.8.dev1.dist-info/top_level.txt,sha256=x5A4haAZ18y9FpO1IhXSVJ2TFdhVAgT5JMkejHUg_9U,8
412
+ robotic-0.2.8.dev1.dist-info/RECORD,,