robotic 0.3.1.dev2__cp310-cp310-manylinux2014_x86_64.whl → 0.3.2__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.

Potentially problematic release.


This version of robotic might be problematic. Click here for more details.

Files changed (38) hide show
  1. robotic/_robotic.pyi +40 -7
  2. robotic/_robotic.so +0 -0
  3. robotic/include/rai/Algo/SplineCtrlFeed.h +1 -1
  4. robotic/include/rai/Algo/spline.h +4 -8
  5. robotic/include/rai/Control/CtrlSolver.h +1 -1
  6. robotic/include/rai/Core/defines.h +7 -8
  7. robotic/include/rai/Core/graph.h +3 -20
  8. robotic/include/rai/Core/thread.h +11 -11
  9. robotic/include/rai/Core/util.h +43 -76
  10. robotic/include/rai/Geo/geo.h +1 -0
  11. robotic/include/rai/Geo/mesh.h +2 -1
  12. robotic/include/rai/Gui/RenderData.h +2 -2
  13. robotic/include/rai/Gui/opengl.h +2 -2
  14. robotic/include/rai/Gui/plot.h +1 -1
  15. robotic/include/rai/KOMO/komo.h +1 -1
  16. robotic/include/rai/KOMO/testProblems_KOMO.h +12 -9
  17. robotic/include/rai/Kin/frame.h +1 -1
  18. robotic/include/rai/Optim/NLP.h +1 -1
  19. robotic/include/rai/Optim/NLP_GraphSolver.h +1 -1
  20. robotic/include/rai/Optim/testProblems_Opt.h +3 -9
  21. robotic/include/rai/Perception/surfels.h +1 -1
  22. robotic/include/rai/ry/types.h +1 -0
  23. robotic/librai.so +0 -0
  24. robotic/meshTool +0 -0
  25. robotic/src/h5_helper.py +31 -0
  26. robotic/version.py +1 -1
  27. {robotic-0.3.1.dev2.dist-info → robotic-0.3.2.dist-info}/METADATA +1 -1
  28. {robotic-0.3.1.dev2.dist-info → robotic-0.3.2.dist-info}/RECORD +38 -37
  29. {robotic-0.3.1.dev2.data → robotic-0.3.2.data}/scripts/ry-bot +0 -0
  30. {robotic-0.3.1.dev2.data → robotic-0.3.2.data}/scripts/ry-h5info +0 -0
  31. {robotic-0.3.1.dev2.data → robotic-0.3.2.data}/scripts/ry-info +0 -0
  32. {robotic-0.3.1.dev2.data → robotic-0.3.2.data}/scripts/ry-meshTool +0 -0
  33. {robotic-0.3.1.dev2.data → robotic-0.3.2.data}/scripts/ry-test +0 -0
  34. {robotic-0.3.1.dev2.data → robotic-0.3.2.data}/scripts/ry-urdfConvert.py +0 -0
  35. {robotic-0.3.1.dev2.data → robotic-0.3.2.data}/scripts/ry-view +0 -0
  36. {robotic-0.3.1.dev2.dist-info → robotic-0.3.2.dist-info}/WHEEL +0 -0
  37. {robotic-0.3.1.dev2.dist-info → robotic-0.3.2.dist-info}/licenses/LICENSE +0 -0
  38. {robotic-0.3.1.dev2.dist-info → robotic-0.3.2.dist-info}/top_level.txt +0 -0
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_SolverOptions', 'OT', 'OptBench_Skeleton_Handover', 'OptBench_Skeleton_Pick', 'OptBench_Skeleton_StackAndBalance', 'OptBenchmark_InvKin_Endeff', 'OptMethod', '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']
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_SolverOptions', 'OT', 'OptBench_Skeleton_Handover', 'OptBench_Skeleton_Pick', 'OptBench_Skeleton_StackAndBalance', 'OptBenchmark_InvKin_Endeff', 'OptMethod', 'Quaternion', 'RRT_PathFinder', 'ST', 'SY', 'Simulation', 'SimulationEngine', 'Skeleton', 'SolverReturn', 'TAMP_Provider', 'compiled', 'default_Actions2KOMO_Translator', 'default_TAMP_Provider', 'depthImage2PointCloud', 'get_NLP_Problem_names', 'make_NLP_Problem', 'params_add', 'params_clear', 'params_file', 'params_print', 'raiPath', 'rnd_seed', 'rnd_seed_random', 'setRaiPath', 'test']
10
10
  class Actions2KOMO_Translator:
11
11
  """
12
12
  Actions2KOMO_Translator
@@ -72,10 +72,18 @@ class BSpline:
72
72
  """
73
73
  non-initialized
74
74
  """
75
+ def append(self, points: arr, times_rel: arr, inside: bool = False) -> None:
76
+ """
77
+ appends points to the current spline; times_rel become relative to the current last knot; inside = remove the current end double knot (zero vel), smoothly blending but not transitioning anymore through the current end point
78
+ """
75
79
  def eval(self, sampleTimes: arr, derivative: int = 0) -> arr:
76
80
  """
77
81
  evaluate the spline (or its derivative) for given sampleTimes
78
82
  """
83
+ def eval3(self, time: float) -> arr:
84
+ """
85
+ evaluate the spline pos, vel, acc (3xn matrix) at a single time
86
+ """
79
87
  def getBmatrix(self, sampleTimes: arr, startDuplicates: bool = False, endDuplicates: bool = False) -> arr:
80
88
  """
81
89
  return the B-matrix mapping from ctrlPoints to (e.g. finer) sampleTimes (e.g. uniform linspace(0,1,T)
@@ -84,6 +92,14 @@ class BSpline:
84
92
  ...
85
93
  def getKnots(self) -> arr:
86
94
  ...
95
+ def overwriteSmooth(self, points: arr, times_rel: arr, time_cut: float) -> None:
96
+ """
97
+ overwrites the spline by adopting the pos+vel at time_cut of the current spline and appending given points; NOTE: times_rel are added to time_cut)
98
+ """
99
+ def set(self, degree: int, points: arr, times: arr, setStartVel: arr = ..., setEndVel: arr = ...) -> BSpline:
100
+ """
101
+ convenience: same as setKnots(degree, times) and setCtrlPoints(points, true, true, startVel, endVel)
102
+ """
87
103
  def setCtrlPoints(self, points: arr, addStartDuplicates: bool = True, addEndDuplicates: bool = True, setStartVel: arr = ..., setEndVel: arr = ...) -> None:
88
104
  """
89
105
  set the ctrl points, automatically duplicating them as needed at start/end, optionally setting vels at start/end
@@ -103,11 +119,11 @@ class BotOp:
103
119
  """
104
120
  constructor
105
121
  """
106
- def attach(self, gripper: ..., obj: ...) -> None:
122
+ def attach(self, from: ..., to: ...) -> None:
107
123
  """
108
124
  cheating: attach two objects kinematically
109
125
  """
110
- def detach(self, obj: ...) -> None:
126
+ def detach(self, from: ..., to: ...) -> None:
111
127
  """
112
128
  cheating: detach two previously attached objects
113
129
  """
@@ -1188,7 +1204,7 @@ class NLP:
1188
1204
  """
1189
1205
  def getBounds(self) -> arr:
1190
1206
  """
1191
- returns the tuple $(b_{lo},b_{up})$, where both vectors are of same dimensionality of $x$ (or size zero, if there are no bounds)
1207
+ returns a 2xn array with lower and upper bounds as rows (or size zero, if there are no bounds)
1192
1208
  """
1193
1209
  def getDimension(self) -> int:
1194
1210
  """
@@ -1505,6 +1521,7 @@ class OptMethod:
1505
1521
  ...
1506
1522
  class Quaternion:
1507
1523
  """
1524
+ See the Quaternion Lecture Note https://www.user.tu-berlin.de/mtoussai/notes/quaternions.html for details
1508
1525
  """
1509
1526
  @staticmethod
1510
1527
  def _pybind11_conduit_v1_(*args, **kwargs):
@@ -1847,11 +1864,11 @@ class Simulation:
1847
1864
  """
1848
1865
  def addSensor(self, sensorName: str, width: int = 640, height: int = 360, focalLength: float = -1.0, orthoAbsHeight: float = -1.0, zRange: arr = []) -> ...:
1849
1866
  ...
1850
- def attach(self, gripper: Frame, obj: Frame) -> None:
1867
+ def attach(self, from: Frame, to: Frame) -> None:
1851
1868
  ...
1852
1869
  def depthData2pointCloud(self, arg0: numpy.ndarray[numpy.float32], arg1: list[float]) -> numpy.ndarray[numpy.float64]:
1853
1870
  ...
1854
- def detach(self, obj: Frame) -> None:
1871
+ def detach(self, from: Frame, to: Frame) -> None:
1855
1872
  ...
1856
1873
  def getGripperWidth(self, gripperFrameName: str) -> float:
1857
1874
  ...
@@ -1896,7 +1913,7 @@ class Simulation:
1896
1913
  """
1897
1914
  def setState(self, frameState: arr, jointState: arr = ..., frameVelocities: arr = ..., jointVelocities: arr = ...) -> None:
1898
1915
  ...
1899
- def step(self, u_control: arr, tau: float = 0.01, u_mode: ControlMode = ...) -> None:
1916
+ def step(self, u_control: arr = ..., tau: float = 0.01, u_mode: ControlMode = ...) -> None:
1900
1917
  ...
1901
1918
  class SimulationEngine:
1902
1919
  """
@@ -2008,6 +2025,14 @@ def depthImage2PointCloud(depth: numpy.ndarray[numpy.float32], fxycxy: arr) -> a
2008
2025
  """
2009
2026
  return the point cloud from the depth image
2010
2027
  """
2028
+ def get_NLP_Problem_names() -> StringA:
2029
+ """
2030
+ return all problem names
2031
+ """
2032
+ def make_NLP_Problem(problem_name: ...) -> NLP:
2033
+ """
2034
+ create a benchmark NLP
2035
+ """
2011
2036
  def params_add(*args, **kwargs) -> None:
2012
2037
  """
2013
2038
  add/set parameters
@@ -2028,6 +2053,14 @@ def raiPath(arg0: str) -> ...:
2028
2053
  """
2029
2054
  get a path relative to rai base path
2030
2055
  """
2056
+ def rnd_seed(s: int) -> None:
2057
+ """
2058
+ seed rnd with s
2059
+ """
2060
+ def rnd_seed_random() -> None:
2061
+ """
2062
+ seed rnd randomly
2063
+ """
2031
2064
  def setRaiPath(arg0: str) -> None:
2032
2065
  """
2033
2066
  redefine the rai (or rai-robotModels) path
robotic/_robotic.so CHANGED
Binary file
@@ -40,7 +40,7 @@ struct BSplineCtrlReference : ReferenceFeed {
40
40
  //info:
41
41
  double getEndTime() { return spline.get()->end(); }
42
42
  arr getEndPoint() { return spline.get()->ctrlPoints[-1].copy(); }
43
- void eval(arr& x, arr& xDot, arr& xDDot, double t) { spline.get()->eval2(x, xDot, xDDot, t); }
43
+ void eval(arr& x, arr& xDot, arr& xDDot, double t) { spline.get()->eval3(x, xDot, xDDot, t); }
44
44
 
45
45
  void report(double ctrlTime);
46
46
  };
@@ -29,27 +29,23 @@ struct BSpline {
29
29
  arr getBmatrix(const arr& sampleTimes, bool startDuplicates=false, bool endDuplicates=false);
30
30
 
31
31
  //-- methods concerning ctrl points
32
- void setCtrlPoints(const arr& pts, bool addStartDuplicates=true, bool addEndDuplicates=true, const arr& setStartVel=NoArr, const arr& setEndVel=NoArr);
33
- void append(const arr& points, const arr& times, bool inside);
32
+ void setCtrlPoints(const arr& points, bool addStartDuplicates=true, bool addEndDuplicates=true, const arr& setStartVel=NoArr, const arr& setEndVel=NoArr);
34
33
 
35
34
  //-- convenience user functions
36
35
  BSpline& set(uint _degree, const arr& points, const arr& times, const arr& startVel=NoArr, const arr& endVel=NoArr);
36
+ void overwriteSmooth(const arr& points, const arr& times_rel, double time_cut);
37
+ void append(const arr& points, const arr& times_rel, bool inside);
37
38
  void clear();
38
39
  arr& getKnots(){ return knots; }
39
40
  arr& getCtrlPoints(){ return ctrlPoints; }
40
41
  arr getPoints();
41
42
 
42
- //-- obsolete
43
- // BSpline& set_vel(uint degree, const arr& points, const arr& velocities, const arr& _times);
44
-
45
-
46
43
  //experimental
47
44
  void doubleKnot(uint t);
48
45
  void setDoubleKnotVel(int t, const arr& vel);
49
46
 
50
47
  /// core method to evaluate spline
51
- // void eval(arr& x, arr& xDot, arr& xDDot, double t) const;
52
- void eval2(arr& x, arr& xDot, arr& xDDot, double t, arr& Jpoints=NoArr, arr& Jtimes=NoArr) const;
48
+ void eval3(arr& x, arr& xDot, arr& xDDot, double t, arr& Jpoints=NoArr, arr& Jtimes=NoArr) const;
53
49
  arr eval(double t, uint derivative=0) const;
54
50
  arr eval(const arr& sampleTimes, uint derivative=0) const;
55
51
 
@@ -15,7 +15,7 @@
15
15
 
16
16
  //===========================================================================
17
17
 
18
- struct CtrlSolver : NonCopyable {
18
+ struct CtrlSolver : rai::NonCopyable {
19
19
  KOMO komo;
20
20
  double tau;
21
21
  double maxVel=1.;
@@ -52,14 +52,16 @@ using std::istream;
52
52
  using std::ofstream;
53
53
  using std::ifstream;
54
54
 
55
+ namespace rai {
56
+
57
+ struct String;
58
+
55
59
  //===========================================================================
56
60
  //
57
61
  // enums
58
62
  //
59
63
 
60
- namespace rai {
61
64
  enum ArgWord { _left, _right, _sequence, _path, _xAxis, _yAxis, _zAxis, _xNegAxis, _yNegAxis, _zNegAxis };
62
- }
63
65
 
64
66
  //===========================================================================
65
67
 
@@ -84,9 +86,6 @@ struct Stepper {
84
86
  // logging
85
87
  //
86
88
 
87
- namespace rai {
88
- struct String;
89
-
90
89
  /// An object that represents a log file and/or cout logging, together with log levels read from a cfg file
91
90
  struct LogObject {
92
91
  std::ofstream* fil=0;
@@ -117,12 +116,12 @@ extern LogObject _log;
117
116
  const char* errString();
118
117
  String& errStringStream();
119
118
 
120
- }
121
-
122
119
  //----- parsing strings in a stream
123
120
  struct PARSE { const char* str; PARSE(const char* _str):str(_str) {} };
124
121
  std::istream& operator>>(std::istream& is, const PARSE&);
125
122
 
123
+ } //namespace
124
+
126
125
  //===========================================================================
127
126
  //
128
127
  // macros for LOG and CHECK
@@ -177,7 +176,7 @@ std::istream& operator>>(std::istream& is, const PARSE&);
177
176
  // macros to define the standard <<and >>operatos for most classes
178
177
  //
179
178
 
180
- #define stdInPipe(type)\
179
+ #define stdInPipe(type) \
181
180
  inline std::istream& operator>>(std::istream& is, type& x){ x.read(is); return is; }
182
181
  #define stdOutPipe(type)\
183
182
  inline std::ostream& operator<<(std::ostream& os, const type& x){ x.write(os); return os; }
@@ -53,7 +53,6 @@ struct Node {
53
53
  void swapParent(uint i, Node* p);
54
54
 
55
55
  //-- get value
56
- //get() -> as()
57
56
  template<class T> bool is() const { return type==typeid(T); }
58
57
  template<class T> T& as() { T* x=getValue<T>(); CHECK(x, "this node '" <<*this <<"' is not of type '" <<typeid(T).name() <<"' but type '" <<type.name() <<"'"); return *x; }
59
58
  template<class T> const T& as() const { const T* x=getValue<T>(); CHECK(x, "this node '" <<*this <<"'is not of type '" <<typeid(T).name() <<"' but type '" <<type.name() <<"'"); return *x; }
@@ -61,10 +60,9 @@ struct Node {
61
60
 
62
61
  template<class T> T* getValue(); ///< query whether node type is equal to (or derived from) T, return the value if so
63
62
  template<class T> const T* getValue() const; ///< as above
64
- template<class T> std::shared_ptr<T> getPtr() const; ///< query whether node type is equal to (or derived from) shared_ptr<T>, return the shared_ptr if so
65
- template<class T> bool getFromDouble(T& x) const; ///< return value = false means parsing object of type T from the string failed
63
+ template<class T> bool getFromDouble(T& x) const; ///< return value = false means parsing object of type T from the double failed
66
64
  template<class T> bool getFromString(T& x) const; ///< return value = false means parsing object of type T from the string failed
67
- template<class T> bool getFromArr(T& x) const; ///< return value = false means parsing object of type T from the string failed
65
+ template<class T> bool getFromArr(T& x) const; ///< return value = false means parsing object of type T from the arr failed
68
66
  bool isBoolAndTrue() const { if(type!=typeid(bool)) return false; return *getValue<bool>() == true; }
69
67
  bool isBoolAndFalse() const { if(type!=typeid(bool)) return false; return *getValue<bool>() == false; }
70
68
 
@@ -82,12 +80,10 @@ struct Node {
82
80
  virtual void copyValue(Node*) {NIY}
83
81
  virtual bool hasEqualValue(Node*) {NIY}
84
82
  virtual void writeValue(std::ostream& os) const {NIY}
85
- // virtual void copyValueInto(void*) const {NIY}
86
83
  virtual Node* newClone(Graph& container) const {NIY}
87
84
  };
88
-
89
- inline std::istream& operator>>(std::istream& is, Node*& x) { HALT("prohibited"); return is; }
90
85
  stdOutPipe(Node)
86
+
91
87
  } //namespace
92
88
 
93
89
  //===========================================================================
@@ -408,10 +404,6 @@ struct Node_typed : Node {
408
404
  else os <<value;
409
405
  }
410
406
 
411
- // virtual void copyValueInto(void* value_ptr) const {
412
- // *((T*)value_ptr) = value;
413
- // }
414
-
415
407
  virtual const std::type_info& getValueType() const {
416
408
  return typeid(T);
417
409
  }
@@ -445,15 +437,6 @@ template<class T> const T* Node::getValue() const {
445
437
  return &typed->value;
446
438
  }
447
439
 
448
- template<class T> std::shared_ptr<T> Node::getPtr() const {
449
- NIY
450
- // std::shared_ptr<T> typed = std::dynamic_pointer_cast<T>(std::shared_ptr<T>(value_ptr));
451
- return std::shared_ptr<T>();
452
- // const Node_typed<std::shared_ptr<T>>* typed = dynamic_cast<const Node_typed<std::shared_ptr<T>>*>(this);
453
- // if(!typed) return nullptr;
454
- // return typed->value;
455
- }
456
-
457
440
  template<class T> bool Node::getFromDouble(T& x) const {
458
441
  if(!is<double>()) return false;
459
442
  double y = as<double>();
@@ -51,7 +51,7 @@ struct CallbackL : rai::Array<Callback<F>*> {
51
51
  struct RWLock {
52
52
  std::shared_timed_mutex rwLock;
53
53
  int rwCount=0; ///< -1==write locked, positive=numer of readers, 0=unlocked
54
- Mutex rwCountMutex;
54
+ rai::Mutex rwCountMutex;
55
55
  RWLock();
56
56
  ~RWLock();
57
57
  void readLock(); ///< multiple threads may request 'lock for read'
@@ -67,7 +67,7 @@ struct RWLock {
67
67
  //
68
68
 
69
69
  /// This RW lock counts revisions and broadcasts accesses to listeners; who is accessing can be logged; it has a unique name
70
- struct Var_base : NonCopyable {
70
+ struct Var_base : rai::NonCopyable {
71
71
  RWLock rwlock; ///< rwLock (handled via read/writeAccess)
72
72
  uint revision=0;
73
73
  rai::String name; ///< name
@@ -227,7 +227,7 @@ template<class T> std::ostream& operator<<(std::ostream& os, Var<T>& x) { x.writ
227
227
  /// a basic condition variable
228
228
  struct Signaler {
229
229
  int status;
230
- Mutex statusMutex;
230
+ rai::Mutex statusMutex;
231
231
  std::condition_variable cond;
232
232
 
233
233
  Signaler(int initialStatus=0);
@@ -240,13 +240,13 @@ struct Signaler {
240
240
  void statusLock(); //the user can manually lock/unlock, if he needs locked state access for longer -> use userHasLocked=true below!
241
241
  void statusUnlock();
242
242
 
243
- int getStatus(Mutex::Token* userHasLocked=0) const;
244
- bool waitForSignal(Mutex::Token* userHasLocked=0, double timeout=-1.);
245
- bool waitForEvent(std::function<bool()> f, Mutex::Token* userHasLocked=0);
246
- bool waitForStatusEq(int i, Mutex::Token* userHasLocked=0, double timeout=-1.); ///< return value is the state after the waiting
247
- int waitForStatusNotEq(int i, Mutex::Token* userHasLocked=0, double timeout=-1.); ///< return value is the state after the waiting
248
- int waitForStatusGreaterThan(int i, Mutex::Token* userHasLocked=0, double timeout=-1.); ///< return value is the state after the waiting
249
- int waitForStatusSmallerThan(int i, Mutex::Token* userHasLocked=0, double timeout=-1.); ///< return value is the state after the waiting
243
+ int getStatus(rai::Mutex::Token* userHasLocked=0) const;
244
+ bool waitForSignal(rai::Mutex::Token* userHasLocked=0, double timeout=-1.);
245
+ bool waitForEvent(std::function<bool()> f, rai::Mutex::Token* userHasLocked=0);
246
+ bool waitForStatusEq(int i, rai::Mutex::Token* userHasLocked=0, double timeout=-1.); ///< return value is the state after the waiting
247
+ int waitForStatusNotEq(int i, rai::Mutex::Token* userHasLocked=0, double timeout=-1.); ///< return value is the state after the waiting
248
+ int waitForStatusGreaterThan(int i, rai::Mutex::Token* userHasLocked=0, double timeout=-1.); ///< return value is the state after the waiting
249
+ int waitForStatusSmallerThan(int i, rai::Mutex::Token* userHasLocked=0, double timeout=-1.); ///< return value is the state after the waiting
250
250
  };
251
251
 
252
252
  //===========================================================================
@@ -331,7 +331,7 @@ struct Thread {
331
331
  rai::String name;
332
332
  std::unique_ptr<std::thread> thread; ///< the underlying pthread; nullptr iff not opened
333
333
  int tid; ///< system thread id
334
- Mutex stepMutex; ///< This is set whenever the 'main' is in step (or open, or close) --- use this in all service methods callable from outside!!
334
+ rai::Mutex stepMutex; ///< This is set whenever the 'main' is in step (or open, or close) --- use this in all service methods callable from outside!!
335
335
  uint step_count; ///< how often the step was called
336
336
  Metronome metronome; ///< used for beat-looping
337
337
  CycleTimer timer; ///< measure how the time spend per cycle, within step, idle
@@ -19,17 +19,19 @@
19
19
  #include <climits>
20
20
  #include <mutex>
21
21
  #include <functional>
22
+ #include <random>
22
23
 
23
24
  using std::cout;
24
25
  using std::cerr;
25
26
  using std::endl;
26
27
 
28
+ namespace rai {
29
+
27
30
  //===========================================================================
28
31
  //
29
32
  // standard little methods (this needs cleanup)
30
33
  //
31
34
 
32
- namespace rai {
33
35
  extern int argc;
34
36
  extern char** argv;
35
37
  extern std::string startDir;
@@ -121,7 +123,6 @@ const char* niceTypeidName(const std::type_info& type);
121
123
  //----- get verbose level
122
124
  bool getInteractivity();
123
125
  bool getDisableGui();
124
- }
125
126
 
126
127
  //===========================================================================
127
128
  //
@@ -132,7 +133,6 @@ bool getDisableGui();
132
133
  #define STRINGF(format,...) (rai::String().printf(format, __VA_ARGS__))
133
134
  #define STREAM(x) (((rai::String&)(rai::String().stream() <<x)).stream())
134
135
 
135
- namespace rai {
136
136
  /** @brief String implements the functionalities of an ostream and an
137
137
  istream, but also can be send to an ostream or read from an
138
138
  istream. It is based on a simple streambuf derived from the
@@ -214,16 +214,13 @@ struct String : public std::iostream {
214
214
 
215
215
  /// @name I/O
216
216
  void write(std::ostream& os) const;
217
- uint read(std::istream& is, const char* skipSymbols=nullptr, const char* stopSymbols=nullptr, int eatStopSymbol=-1);
217
+ uint read(std::istream& is, const char* skipSymbols=0, const char* stopSymbols=0, int eatStopSymbol=-1);
218
218
  };
219
219
  stdPipes(String)
220
220
 
221
221
  inline String operator+(const String& a, const char* b) { String s=a; s <<b; return s; }
222
222
  //template<class T> String operator+(const String& a, const T& b) { String s=a; s <<b; return s; }
223
223
 
224
- } //namespace
225
-
226
- typedef rai::String str;
227
224
 
228
225
  void setLogLevels(int fileLogLevel=3, int consoleLogLevel=2);
229
226
 
@@ -236,26 +233,25 @@ void setLogLevels(int fileLogLevel=3, int consoleLogLevel=2);
236
233
  // give names to Enum (for pipe << >> )
237
234
  //
238
235
 
239
- namespace rai {
240
236
  template<class enum_T>
241
237
  struct Enum {
242
238
  enum_T x;
243
239
  static const char* names [];
244
240
  Enum():x((enum_T)-1) {}
245
241
  Enum(enum_T y):x(y) {}
246
- explicit Enum(const rai::String& str):Enum() { operator=(str); }
242
+ explicit Enum(const String& str):Enum() { operator=(str); }
247
243
  const enum_T& operator=(enum_T y) { x=y; return x; }
248
244
  bool operator==(const enum_T& y) const { return x==y; }
249
245
  bool operator!=(const enum_T& y) const { return x!=y; }
250
246
  operator enum_T() const { return x; }
251
247
  void read(std::istream& is) {
252
- rai::String str(is);
248
+ String str(is);
253
249
  operator=(str);
254
250
  }
255
251
  void operator=(const char* str) {
256
252
  operator=(STRING(str));
257
253
  }
258
- void operator=(const rai::String& str) {
254
+ void operator=(const String& str) {
259
255
  bool good=false;
260
256
  for(int i=0; names[i]; i++) {
261
257
  const char* n = names[i];
@@ -263,14 +259,14 @@ struct Enum {
263
259
  if(str==n) { x=(enum_T)(i); good=true; break; }
264
260
  }
265
261
  if(!good) {
266
- rai::String all;
262
+ String all;
267
263
  for(int i=0; names[i]; i++) all <<names[i] <<' ';
268
264
  HALT("Enum::read could not find the keyword '" <<str <<"'. Possible Enum keywords: " <<all);
269
265
  } else {
270
266
  CHECK(str.p && !strcmp(names[x], str.p), "");
271
267
  }
272
268
  }
273
- static bool contains(const rai::String& str) {
269
+ static bool contains(const String& str) {
274
270
  for(int i=0; names[i]; i++) {
275
271
  if(str==names[i]) return true;
276
272
  }
@@ -287,14 +283,12 @@ struct Enum {
287
283
  };
288
284
  template<class T> std::istream& operator>>(std::istream& is, Enum<T>& x) { x.read(is); return is; }
289
285
  template<class T> std::ostream& operator<<(std::ostream& os, const Enum<T>& x) { x.write(os); return os; }
290
- }
291
286
 
292
287
  //===========================================================================
293
288
  //
294
289
  // parameters
295
290
  //
296
291
 
297
- namespace rai {
298
292
  //----- parameter grabbing from command line, config file, or default value
299
293
  template<class T> T getParameter(const char* tag);
300
294
  template<class T> T getParameter(const char* tag, const T& Default);
@@ -331,8 +325,6 @@ template<class T> struct ParameterInitEnum {
331
325
  auto& set_##name(type _##name){ name=_##name; return *this; } \
332
326
  rai::ParameterInitEnum<type> __init_##name = {name, scope #name, Default};
333
327
 
334
- }
335
-
336
328
  //===========================================================================
337
329
  //
338
330
  // Testing
@@ -359,15 +351,13 @@ template<class T> struct ParameterInitEnum {
359
351
  // FileToken
360
352
  //
361
353
 
362
- namespace rai {
363
-
364
354
  /** @brief A ostream/istream wrapper that allows easier initialization of objects, like:
365
355
  arr X = FILE("inname");
366
356
  X >>FILE("outfile");
367
357
  etc
368
358
  */
369
359
  struct FileToken {
370
- rai::String path, name, baseDir;
360
+ String path, name, baseDir;
371
361
  std::shared_ptr<std::ofstream> os;
372
362
  std::shared_ptr<std::ifstream> is;
373
363
 
@@ -386,9 +376,9 @@ struct FileToken {
386
376
  operator std::istream& () { return getIs(); }
387
377
  operator std::ostream& () { return getOs(); }
388
378
 
389
- rai::String autoPath() const;
390
- rai::String relPath() const;
391
- rai::String fullPath() const;
379
+ String autoPath() const;
380
+ String relPath() const;
381
+ String fullPath() const;
392
382
  };
393
383
  template<class T> FileToken& operator>>(FileToken& fil, T& x) { fil.getIs() >>x; return fil; }
394
384
  template<class T> std::ostream& operator<<(FileToken& fil, const T& x) { fil.getOs() <<x; return fil.getOs(); }
@@ -396,7 +386,7 @@ inline std::ostream& operator<<(std::ostream& os, const FileToken& fil) { return
396
386
  template<class T> FileToken& operator<<(T& x, FileToken& fil) { fil.getIs() >>x; return fil; }
397
387
  template<class T> void operator>>(const T& x, FileToken& fil) { fil.getOs() <<x; }
398
388
  inline bool operator==(const FileToken&, const FileToken&) { return false; }
399
- }
389
+
400
390
  #define FILE(filename) (rai::FileToken(filename)()) //it needs to return a REFERENCE to a local scope object
401
391
 
402
392
  //===========================================================================
@@ -404,15 +394,17 @@ inline bool operator==(const FileToken&, const FileToken&) { return false; }
404
394
  // random number generator
405
395
  //
406
396
 
407
- namespace rai {
408
397
  /** @brief A random number generator. An global instantiation \c
409
- rai::rnd of a \c Rnd object is created. Use this one object to get
398
+ rnd of a \c Rnd object is created. Use this one object to get
410
399
  random numbers.*/
411
400
  class Rnd {
412
401
  private:
413
402
  bool ready;
414
403
  int32_t rpoint; /* Feldindex */
415
404
  int32_t rfield[256]; /* Schieberegisterfeld */
405
+ public:
406
+ std::minstd_rand e1;
407
+ std::random_device r;
416
408
 
417
409
  public:
418
410
  /// ...
@@ -420,52 +412,23 @@ class Rnd {
420
412
 
421
413
  public:/// @name initialization
422
414
  /// initialize with a specific seed
423
- uint32_t seed(uint32_t n);
415
+ void seed(int s){ e1.seed(s); ready=true; }
424
416
 
425
417
  /// use Parameter<uint>("seed") as seed
426
- uint32_t seed();
418
+ void seed(){ e1.seed(getParameter<uint32_t>("seed", 0)); ready=true; }
427
419
 
428
420
  /// uses the internal clock to generate a seed
429
- uint32_t clockSeed();
421
+ void seed_random(){ e1.seed(r()); ready=true; }
430
422
 
431
423
  public:/// @name access
432
- /// a initeger random number uniformly distributed in [0, ?]
433
- uint32_t num() { if(!ready) seed(); return (uint32_t)rnd250() >>5; }
434
- /// same as \c num()
435
- uint32_t operator()() { return num(); }
436
- /// a initeger random number uniformly distributed in [0, \c i-1]
437
- uint32_t num(uint32_t limit) {
438
- CHECK(limit, "zero limit in rnd.num()"); return num() % limit;
439
- }
440
- uint32_t num(int32_t lo, int32_t hi) { return lo+num(hi-lo+1); }
441
- /// same as \c num(i)
442
- uint32_t operator()(uint32_t i) { return num(i); }
443
- uint32_t operator()(int32_t lo, int32_t hi) { return num(lo, hi); }
444
- /// a random variable uniformly distributed in [0, 1]
445
- double uni() { return ((double)num(1 <<22))/(1 <<22); }
446
- /// a random variable uniformly distributed in [\c low, \c high]
447
- double uni(double low, double high) { return low+uni()*(high-low); }
448
- /// a gaussian random variable with mean zero
449
- double gauss();
450
- /** @brief a positive integer drawn from a poisson distribution with given
451
- \c mean; is case \c mean>100, a (positive) gauss number
452
- \c floor(mean+gauss(sqrt(mean))+.5) is returned */
453
- uint32_t poisson(double mean);
424
+ int uni_int(int lo, int up) { if(!ready) seed(); std::uniform_int_distribution<int> dist(lo, up); return dist(e1); }
425
+ double uni(double lo=0., double up=1.) { if(!ready) seed(); std::uniform_real_distribution<double> dist(lo, up); return dist(e1); }
426
+ double gauss(double mean=0., double std=1.){ if(!ready) seed(); std::normal_distribution<double> dist(mean, std); return dist(e1); }
454
427
 
455
- private:
456
- int32_t rnd250() {
457
- rpoint = (rpoint+1) & 255; // Index erhoehen
458
- return rfield[rpoint] = rfield[(rpoint-250) & 255]
459
- ^ rfield[(rpoint-103) & 255];
460
- }
428
+ uint operator()(uint up) { return uint(uni_int(0, up-1)); }
461
429
 
462
- void seed250(int32_t seed);
463
430
  };
464
431
 
465
- }
466
- /// The global Rnd object
467
- extern rai::Rnd rnd;
468
-
469
432
  //===========================================================================
470
433
  //
471
434
  /// a little inotify wrapper
@@ -475,7 +438,7 @@ struct Inotify {
475
438
  int fd, wd;
476
439
  char* buffer;
477
440
  uint buffer_size;
478
- rai::FileToken* fil;
441
+ FileToken* fil;
479
442
  Inotify(const char* filename);
480
443
  ~Inotify();
481
444
  bool poll(bool block=false, bool verbose=false);
@@ -541,7 +504,6 @@ struct Singleton {
541
504
  // just a hook to make things gl drawable
542
505
  //
543
506
 
544
- struct OpenGL;
545
507
  struct OpenGLDrawOptions {
546
508
  bool drawWires=false;
547
509
  bool drawColors=true;
@@ -569,22 +531,20 @@ struct CoutToken {
569
531
  ~CoutToken() { coutMutex.unlock(); }
570
532
  std::ostream& getOs() { return cout; }
571
533
  };
572
- #define COUT (CoutToken().getOs())
534
+ #define COUT (rai::CoutToken().getOs())
573
535
 
574
536
  //===========================================================================
575
537
  //
576
538
  // to register a type
577
539
  //
578
540
 
579
- namespace rai {
580
541
  struct Node;
581
542
  struct Graph;
582
- }
583
543
 
584
544
  struct Type {
585
545
  virtual ~Type() {}
586
546
  virtual const std::type_info& typeId() const {NIY}
587
- virtual struct rai::Node* readIntoNewNode(struct rai::Graph& container, std::istream&) const {NIY}
547
+ virtual struct Node* readIntoNewNode(struct Graph& container, std::istream&) const {NIY}
588
548
  virtual void* newInstance() const {NIY}
589
549
  void write(std::ostream& os) const { os <<"Type '" <<typeId().name() <<"' "; }
590
550
  void read(std::istream& is) const {NIY}
@@ -606,7 +566,7 @@ inline bool operator==(Type& t1, Type& t2) { return t1.typeId() == t2.typeId();
606
566
  //
607
567
 
608
568
  template<class T> T fromFile(const char* filename) {
609
- rai::FileToken file(filename);
569
+ FileToken file(filename);
610
570
  T x;
611
571
  file.cd_file();
612
572
  x.read(file.getIs());
@@ -621,6 +581,14 @@ inline bool operator==(Type& t1, Type& t2) { return t1.typeId() == t2.typeId();
621
581
  // return x;
622
582
  // }
623
583
 
584
+ } //namespace
585
+
586
+ //===========================================================================
587
+
588
+ typedef rai::String str;
589
+ extern rai::Rnd rnd;
590
+ std::istream& operator>>(std::istream& is, char* str);
591
+
624
592
  //===========================================================================
625
593
  //
626
594
  // shared ptrs
@@ -629,20 +597,19 @@ inline bool operator==(Type& t1, Type& t2) { return t1.typeId() == t2.typeId();
629
597
  template<class T> void _delete(T* ptr){}
630
598
  template<class T> std::shared_ptr<T> _shared(T& x){ return std::shared_ptr<T>(&x, &_delete<T>); }
631
599
 
632
-
633
600
  //===========================================================================
634
601
  //
635
- /// running code on init (in cpp files)
602
+ // gnuplot calls
636
603
  //
637
604
 
638
- #define RUN_ON_INIT_BEGIN(key) struct key##_RUN_ON_INIT{ key##_RUN_ON_INIT(){
639
- #define RUN_ON_INIT_END(key) } } key##_RUN_ON_INIT_dummy;
605
+ void gnuplot(const char* command, bool pause=false, bool persist=false, const char* PDFfile=nullptr);
606
+ void gnuplotClose();
640
607
 
641
608
  //===========================================================================
642
609
  //
643
- // gnuplot calls
610
+ /// running code on init (in cpp files)
644
611
  //
645
612
 
646
- void gnuplot(const char* command, bool pause=false, bool persist=false, const char* PDFfile=nullptr);
647
- void gnuplotClose();
613
+ #define RUN_ON_INIT_BEGIN(key) struct key##_RUN_ON_INIT{ key##_RUN_ON_INIT(){
614
+ #define RUN_ON_INIT_END(key) } } key##_RUN_ON_INIT_dummy;
648
615
 
@@ -262,6 +262,7 @@ struct Camera {
262
262
  void focus(float x, float y, float z, bool makeUpright=false);
263
263
  void watchDirection(const Vector& d);
264
264
  void upright(const Vector& up=Vector(0, 0, 1));
265
+ bool checkFocus();
265
266
 
266
267
  //-- projection matrix stuff
267
268
  arr getT_IC() const;
@@ -21,7 +21,7 @@ struct SharedTextureImage{ byteA img; charA file; uint glBufferID=UINT32_MAX; };
21
21
 
22
22
  namespace rai {
23
23
 
24
- enum ShapeType { ST_none=-1, ST_box=0, ST_sphere, ST_capsule, ST_mesh, ST_cylinder, ST_marker, ST_pointCloud, ST_ssCvx, ST_ssBox, ST_ssCylinder, ST_ssBoxElip, ST_quad, ST_camera, ST_sdf, ST_tensor, ST_lines };
24
+ enum ShapeType : int { ST_none=-1, ST_box=0, ST_sphere, ST_capsule, ST_mesh, ST_cylinder, ST_marker, ST_pointCloud, ST_ssCvx, ST_ssBox, ST_ssCylinder, ST_ssBoxElip, ST_quad, ST_camera, ST_sdf, ST_tensor, ST_lines };
25
25
 
26
26
  //===========================================================================
27
27
  /// a mesh (arrays of vertices, triangles, colors & normals)
@@ -150,6 +150,7 @@ struct Mesh {
150
150
  void writeJson(std::ostream&);
151
151
  void readJson(std::istream&);
152
152
  void writeArr(std::ostream&);
153
+ void writeAssimp(const char* filename, const char* format);
153
154
  void writeH5(const char* filename, const String& group);
154
155
  void readH5(const char* filename, const String& group);
155
156
  void readArr(std::istream&);
@@ -99,9 +99,9 @@ struct DistMarkers {
99
99
  };
100
100
 
101
101
  struct RenderData {
102
- Mutex dataLock;
102
+ rai::Mutex dataLock;
103
103
 
104
- Render_Options opt;
104
+ rai::Render_Options opt;
105
105
 
106
106
  rai::Camera camera;
107
107
  rai::Array<std::shared_ptr<RenderItem>> items;
@@ -139,14 +139,14 @@ struct OpenGL {
139
139
  int scrollCounter=0;
140
140
  byteA captureImage;
141
141
  floatA captureDepth;
142
- Mutex dataLock; //'data' means anything: member fields (camera, variables), drawers, data the drawers access
142
+ rai::Mutex dataLock; //'data' means anything: member fields (camera, variables), drawers, data the drawers access
143
143
  // uint fbo, render_buf;
144
144
  uint offscreenFramebuffer=0;
145
145
  uint offscreenColor=0;
146
146
  uint offscreenDepth=0;
147
147
  Signaler isUpdating;
148
148
  Signaler watching;
149
- OpenGLDrawOptions drawOptions;
149
+ rai::OpenGLDrawOptions drawOptions;
150
150
  int selectID=-1;
151
151
  std::shared_ptr<rai::RenderData> _data;
152
152
 
@@ -72,6 +72,6 @@ struct PlotModule {
72
72
 
73
73
  }
74
74
 
75
- extern Singleton<rai::PlotModule> plot;
75
+ extern rai::Singleton<rai::PlotModule> plot;
76
76
 
77
77
  //===========================================================================
@@ -38,7 +38,7 @@ struct KOMO_Options {
38
38
  };
39
39
  }//namespace
40
40
 
41
- struct KOMO : NonCopyable {
41
+ struct KOMO : rai::NonCopyable {
42
42
 
43
43
  //-- the problem definition
44
44
  uint stepsPerPhase=0; ///< time slices per phase
@@ -14,6 +14,18 @@
14
14
 
15
15
  #include "../Optim/NLP.h"
16
16
 
17
+ namespace rai{
18
+ std::shared_ptr<NLP> make_NLP_Problem(str problem={});
19
+ StringA get_NLP_Problem_names();
20
+ }
21
+
22
+ struct KOMO_wrap : std::shared_ptr<NLP> {
23
+ std::shared_ptr<KOMO> komo;
24
+ KOMO_wrap(const std::shared_ptr<KOMO>& _komo) : komo(_komo){
25
+ std::shared_ptr<NLP>::operator=( komo->nlp() );
26
+ }
27
+ };
28
+
17
29
  shared_ptr<KOMO> problem_IK();
18
30
  shared_ptr<KOMO> problem_IKobstacle();
19
31
  shared_ptr<KOMO> problem_IKtorus();
@@ -22,15 +34,6 @@ shared_ptr<KOMO> problem_StableSphere();
22
34
 
23
35
  //===========================================================================
24
36
 
25
- struct Problem{
26
- std::shared_ptr<KOMO> komo;
27
- std::shared_ptr<NLP> nlp;
28
-
29
- void load(str problem={});
30
- };
31
-
32
- //===========================================================================
33
-
34
37
  //a set of spheres, confined in a box, and no collision, minimizing their height..
35
38
  struct SpherePacking : NLP{
36
39
  arr x; //position of spheres
@@ -174,7 +174,7 @@ struct Frame : NonCopyable {
174
174
  Frame& setConvexMesh(const arr& points, const byteA& colors= {}, double radius=0.);
175
175
  Frame& setSdf(std::shared_ptr<SDF>& sdf);
176
176
  Frame& setTensorShape(const floatA& data, const arr& size);
177
- Frame& setImplicitSurface(const floatA& data, const arr& size, uint blur, double resample);
177
+ Frame& setImplicitSurface(const floatA& data, const arr& size, uint blur=0, double resample=-1.);
178
178
  Frame& setColor(const arr& color);
179
179
  Frame& setJoint(rai::JointType jointType, const arr& limits={}, double scale=1., Frame* mimic=0);
180
180
  Frame& setContact(int cont);
@@ -32,7 +32,7 @@ extern ObjectiveTypeA& NoObjectiveTypeA;
32
32
  *
33
33
  * Importantly: the Jacobian may be sparse! This allows to implicitly represent structured NLP (in contrast to explicit structure, see below)
34
34
  */
35
- struct NLP : NonCopyable {
35
+ struct NLP : rai::NonCopyable {
36
36
  //-- problem signature: needs to be defined in the constructor or a derived class
37
37
  uint dimension=0;
38
38
  ObjectiveTypeA featureTypes;
@@ -10,7 +10,7 @@
10
10
 
11
11
  #include "NLP_Solver.h"
12
12
 
13
- struct NLP_GraphSolver : NonCopyable {
13
+ struct NLP_GraphSolver : rai::NonCopyable {
14
14
  rai::NLP_Solver subSolver;
15
15
  arr x, dual;
16
16
  std::shared_ptr<NLP_Factored> P;
@@ -75,7 +75,7 @@ struct NLP_TrivialSquareFunction : NLP {
75
75
  struct NLP_RandomLP : NLP {
76
76
  arr randomG;
77
77
 
78
- NLP_RandomLP(uint dim);
78
+ NLP_RandomLP(uint dim=2);
79
79
 
80
80
  virtual void evaluate(arr& phi, arr& J, const arr& x);
81
81
 
@@ -126,13 +126,7 @@ struct SimpleConstraintFunction : NLP {
126
126
  struct NLP_RastriginSOS : NLP {
127
127
  double a;
128
128
  double condition;
129
- NLP_RastriginSOS() {
130
- a = rai::getParameter<double>("Rastrigin/a");
131
- condition = rai::getParameter<double>("benchmark/condition");
132
-
133
- dimension=2;
134
- featureTypes = rai::consts<ObjectiveType>(OT_sos, 4);
135
- }
129
+ NLP_RastriginSOS();
136
130
  virtual void evaluate(arr& phi, arr& J, const arr& x);
137
131
  };
138
132
 
@@ -143,7 +137,7 @@ struct NLP_Squared : NLP {
143
137
  arr C; /// $A = C^T C $
144
138
  uint n; /// dimensionality of $x$
145
139
 
146
- NLP_Squared(uint n, double condition=100., bool random=true);
140
+ NLP_Squared(uint n=2, double condition=100., bool random=true);
147
141
 
148
142
  virtual void evaluate(arr& phi, arr& J, const arr& x) { phi=C*x; if(!!J) J=C; }
149
143
  // virtual arr getInitializationSample(){ return ones(n); }
@@ -42,7 +42,7 @@ struct SurfelStatistics {
42
42
 
43
43
  struct Surfels {
44
44
  OpenGL gl;
45
- Mutex mx;
45
+ rai::Mutex mx;
46
46
  arr pos, norm, col, rad;
47
47
  rai::Array<SurfelStatistics> D;
48
48
  uint32A surfelIdx, rndPerm;
@@ -46,6 +46,7 @@ template<class T> rai::Array<T> vec2Array(const std::vector<T>& x) {
46
46
  }
47
47
 
48
48
  template<class T> pybind11::array_t<T> Array2numpy(const rai::Array<T>& x) {
49
+ if(!x.N) return pybind11::array_t<T>();
49
50
  return pybind11::array_t<T>(vecdim(x), x.p);
50
51
  }
51
52
 
robotic/librai.so CHANGED
Binary file
robotic/meshTool CHANGED
Binary file
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import argparse
4
+ import h5py
5
+
6
+ class H5Writer:
7
+ def __init__(self, filename):
8
+ self.fil = h5py.File(filename, 'w')
9
+
10
+ def write(self, name, data, dtype = 'float32'):
11
+ self.fil.create_dataset(name, data=data, dtype=dtype)
12
+
13
+ class H5Reader:
14
+ def __init__(self, filename):
15
+ self.fil = h5py.File(filename, 'r')
16
+
17
+ def print_attrs(self,name, obj):
18
+ if isinstance(obj, h5py.Dataset):
19
+ print(' ', name, obj.name, obj.shape, obj.dtype, f'{obj.size*obj.dtype.itemsize/1024:.2f}kB')
20
+ if obj.dtype=='int8':
21
+ print(' ', ''.join([chr(x) for x in obj[()]]))
22
+ elif obj.size<20:
23
+ print(' ', obj[()])
24
+ else:
25
+ print('---', name)
26
+
27
+ def print_info(self):
28
+ self.fil.visititems(self.print_attrs)
29
+
30
+ def read(self, name):
31
+ return self.fil[name][()]
robotic/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '0.3.1.dev2'
1
+ __version__ = '0.3.2'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotic
3
- Version: 0.3.1.dev2
3
+ Version: 0.3.2
4
4
  Summary: Robotic Control Interface & Manipulation Planning Library
5
5
  Home-page: https://github.com/MarcToussaint/robotic/
6
6
  Author: Marc Toussaint
@@ -1,10 +1,10 @@
1
1
  robotic/DataGen.pyi,sha256=qDQjATpbIgFvOrWk7F3ZTVbOuyXjT5nwHxrsRfGxWRU,3716
2
2
  robotic/__init__.py,sha256=H8Qi-wA95h6SuziEFNZFEt6Tpt5UrttS9ftBjZCsMm4,421
3
- robotic/_robotic.pyi,sha256=QGS7Zw1nxilAqTCbv0YemHU8ZDab02kp59FRkExtsHM,75530
4
- robotic/_robotic.so,sha256=zdEmt66SxlXlOJwHhBrpwO2EU_a0DtnHNKI4L-4j_8o,1238824
5
- robotic/librai.so,sha256=9MntSREVZlircpqFB83r8fVzv4oW0Ve3l2n9zIdl7OE,38726016
3
+ robotic/_robotic.pyi,sha256=gr5_H1AoXHl6fbJqoseQRs5Iiue59qa3HBKVUSW6X08,76998
4
+ robotic/_robotic.so,sha256=H7Vdco5M7-owEawia597fUvlZDim0Xt3sjhLur1x_BE,1259304
5
+ robotic/librai.so,sha256=SuIUWB7bLk-2iTy7SfXWGrHIdn1GXLZ4abjqoXdku6c,38758816
6
6
  robotic/manipulation.py,sha256=0B7UzU9J7b4f19thz67TbvknoncxffQEMHSBB6ez1Jg,22279
7
- robotic/meshTool,sha256=wxcOt_C3PAn2vbnMpGYm57rjrU4iZLoEriODlQResmg,52176
7
+ robotic/meshTool,sha256=kYLO2HPXn8nj98Qx-MIvJYpkFzOk2zY9-d30DgFZT80,52176
8
8
  robotic/mujoco-import.py,sha256=8eC8ldlFwnYQfqII3FVdWEQ7zd1PkSdAF-oyryIQtkY,231
9
9
  robotic/nlp.py,sha256=n9_hOj3i707DdL_r49Yd2eWyjsSOahW8DmJrEhQlNFw,3200
10
10
  robotic/render.py,sha256=OE1dvyWHD7Oyzk4wlhXZ7m3v3xxa3zAL5_LCV1RgJXk,4662
@@ -17,10 +17,10 @@ robotic/ry-urdfConvert.py,sha256=8Efnq3PU202rrZrVEZiGwzFOJdvrLjTJ2q-gnY6-tiU,255
17
17
  robotic/ry-view,sha256=T1Omn1QS7cNAtjQhBjMJTNz7aW5FgoOf9vBIfW0mFME,613
18
18
  robotic/test.py,sha256=8hiDRB2kB37hE5cZ7h26AJDnSGYb1y8DwOrcEGD_5Hc,620
19
19
  robotic/test.pyi,sha256=vVxwRSerjUG4bpB7pIhof7ZatrBqwg3Bj5voywa-YTI,917
20
- robotic/version.py,sha256=6zFXj91tQaAP1c18NoFsA-iEzHyvj6isEdLopC6_G48,27
20
+ robotic/version.py,sha256=bqu4G7Is-8Were-hMi-SthEalL7QW-PAbKWGZ9pVB6U,22
21
21
  robotic/include/rai/Algo/MLcourse.h,sha256=TGkAJWC5ollGfPw0-gcYL0TZeDJiHtWFzkHSMK8_lqU,1828
22
22
  robotic/include/rai/Algo/RidgeRegression.h,sha256=VXiv6-xr3j--CN7DJTzUg9Xb49zV9FZ9dwzxP1CmcPM,3730
23
- robotic/include/rai/Algo/SplineCtrlFeed.h,sha256=9ZtYLHXx9sExj0lZV6F5ZWaCtkm0R4hMiYb-KJjktnc,3339
23
+ robotic/include/rai/Algo/SplineCtrlFeed.h,sha256=yILBoUh9Ce0YtzGVZeAKmdUqsf0xeCGjXGC8bXNzZ3o,3339
24
24
  robotic/include/rai/Algo/ann.h,sha256=XCQSzJIg_cPzZBKgIJMuHvBLc3ayD1FzSFqh2s_1TnM,1294
25
25
  robotic/include/rai/Algo/dataNeighbored.h,sha256=NfwS4xJElLxX8t5cYY3xiTLXgJyMsHoaD-J0kT2GXqE,1208
26
26
  robotic/include/rai/Algo/eigenValues.h,sha256=U76I5DT_WO_o7k-W3qYt2exc0WCpw4yYjR8WCqxGBv4,942
@@ -31,11 +31,11 @@ robotic/include/rai/Algo/kalman.h,sha256=c3i6ebYHZtyT5ReTmpJVx8aJ26JWLymqK_QRDY4
31
31
  robotic/include/rai/Algo/minimalSpanningTree.h,sha256=56zTSWdMi4TMjtQDVv7tHo4ahivfidTXWN4zp9NX-Jw,512
32
32
  robotic/include/rai/Algo/priorityQueue.h,sha256=nF-5_eSbGjXMmY2K3SpD-Hxwb3bhFA1ilr6IBsFq87Q,1938
33
33
  robotic/include/rai/Algo/rungeKutta.h,sha256=Kbqeu-MauQDQnmKXSRk3VnOLUY_ngKzy-rqSskBqR9k,1761
34
- robotic/include/rai/Algo/spline.h,sha256=sc36vGI2Ypm1bAo1bgu1mB8D2I4pHlmvHKonmrQi4v4,4358
34
+ robotic/include/rai/Algo/spline.h,sha256=mNi6ktREVFYkdJWPZaCrnvCW3AuZyMAsktYkRz3Ywxo,4269
35
35
  robotic/include/rai/Control/CtrlMsgs.h,sha256=61lxkvpcVB2ZAL7qmB35CJ1KkhZUB27lUJ4ZMiFH0Co,2406
36
36
  robotic/include/rai/Control/CtrlObjective.h,sha256=fC-6cS0X0RR_7ooFm1xnAXlN2mgyF26qKfTjomUK45U,2591
37
37
  robotic/include/rai/Control/CtrlSet.h,sha256=o7u8N9ZSoMbiDR3TGKDjfIarIP1JAw0SHMFL18t1fv0,1404
38
- robotic/include/rai/Control/CtrlSolver.h,sha256=79BZgnFMvPwM1cAWoyIcRCGYLLF21ky_LLBass3wnUQ,1095
38
+ robotic/include/rai/Control/CtrlSolver.h,sha256=fwlXJcgHl01FL1n6HR-dKgEZKp8mYOhC085vb1yw4l0,1100
39
39
  robotic/include/rai/Control/CtrlSolvers.h,sha256=gxr_aTn-dyV1J6HxDSX8SVrqIPm14oxOkXx5-OGfamo,3094
40
40
  robotic/include/rai/Control/CtrlTargets.h,sha256=FRjAi9KwDL2-5ziKYP5g_-uR234SdPw70TNZbYn3QVg,5475
41
41
  robotic/include/rai/Control/RTControllerSimulation.h,sha256=iDpVRfivTlGS7DVWxVrS-xzCdVWrag1pUHsczZEb0po,1254
@@ -49,11 +49,11 @@ robotic/include/rai/Control/timingOpt.h,sha256=Ne_IH8QuFCID0Sy88LS5i3qkp1nL1FbIg
49
49
  robotic/include/rai/Core/array.h,sha256=YcI48DcBMUYgdlXP4V1dV6juBUe1iCtbKoxWjp4nCxI,26125
50
50
  robotic/include/rai/Core/array.ipp,sha256=DNmfosznj0jF-5lXTb8NUejfrVfs_Fw3O0IvvnDfF7M,63560
51
51
  robotic/include/rai/Core/arrayDouble.h,sha256=9pr_9g50dFluF2dLgc29bl9o6ri9C84p69fNW2PYqXg,28724
52
- robotic/include/rai/Core/defines.h,sha256=hBTgf5EiJ50rQYW1saGw8Ox87aKVFOYVKnFw0jojVW0,6894
53
- robotic/include/rai/Core/graph.h,sha256=K8LFdhTJ0zGXnd-uI8TaR_k5aTbX3Mf9uUCvr9Yhzxk,21127
52
+ robotic/include/rai/Core/defines.h,sha256=Y5YF92lo5dV3r0W6DFCapY7_7vUk9dS1po6ixtNxGIg,6896
53
+ robotic/include/rai/Core/graph.h,sha256=XkRLNuU8Aav9FMm-zgdWP6025NN5gauO1HFkWB2-e34,20351
54
54
  robotic/include/rai/Core/h5.h,sha256=cfs8cew5QYpOxbWFZHV9TXVh5_dEJdFF1-aGZVR54EY,1162
55
- robotic/include/rai/Core/thread.h,sha256=wjwvXACwI8B6rhZSf2UDruWUb8kT9Xjm-VE-OnUQpwk,18248
56
- robotic/include/rai/Core/util.h,sha256=MB07dgIgOYQxsGpGnQS8VmfGch3MnDBbp3qQSn1zTB4,19694
55
+ robotic/include/rai/Core/thread.h,sha256=oCcqgzPHYoVwCbarDibmbTwxKxnGGwdK0e0re3yWfPY,18303
56
+ robotic/include/rai/Core/util.h,sha256=2Od8h_k5YTiE4WK1D0_Cr7A0dgOuHccY8f_cJi-x3CQ,18856
57
57
  robotic/include/rai/Core/util.ipp,sha256=soCVdpzWTpLL9i6rilFPNGozHZP40yhkmuXul7gHC7o,2157
58
58
  robotic/include/rai/Core/lapack/blaswrap.h,sha256=jl8W6GwBGMiU-ND9ILeKqWlIvryw7AsIydPUCQGT_ew,3750
59
59
  robotic/include/rai/Core/lapack/cblas.h,sha256=4bSmMzZ4idIPlmcwjw5HuwY1cs5RU73ZwmfydSpaBdk,32367
@@ -64,8 +64,8 @@ robotic/include/rai/DataGen/shapenetGrasps.h,sha256=NlpKWicgaylzw1si7EPzeM7cE_-V
64
64
  robotic/include/rai/Geo/assimpInterface.h,sha256=2Jg7v2GZ83nz4kkgPLzbSWTIBmL9nZg-LhMlWcjiF_o,1055
65
65
  robotic/include/rai/Geo/depth2PointCloud.h,sha256=0mXJnTk0sMB--KDE9CO_2gKgGw4gHXUe7xg6DcROhvk,1168
66
66
  robotic/include/rai/Geo/fclInterface.h,sha256=d89JFW3WKI64gOdQSGs6uFdE7NcMavNg89BMHhzMDac,984
67
- robotic/include/rai/Geo/geo.h,sha256=9_hpJsINF7Fpc6hb41LPsz9A_tCp48QgfB1HqAAeklU,14858
68
- robotic/include/rai/Geo/mesh.h,sha256=9tXbU-uuuBv56JUEHjZrGs_WZRCOC4HA2yd4Ex_P12g,6904
67
+ robotic/include/rai/Geo/geo.h,sha256=04dkfACju5vir09K2hS-p9Dptn6H1LLGprujnu4UocY,14879
68
+ robotic/include/rai/Geo/mesh.h,sha256=LrVD3QjxIPotRtFL5s6_t-9Lv5eoVkwRf1Br2C70Shg,6972
69
69
  robotic/include/rai/Geo/pairCollision.h,sha256=DOrRoKrYFHM_--h1Ubcgc7tc3xt6KyxA0ezLRCn5IaM,4256
70
70
  robotic/include/rai/Geo/qhull.h,sha256=dRAAHIdvujPPW1fXW4hXMjgixpBDajDg-y_OX1JMi_0,1890
71
71
  robotic/include/rai/Geo/signedDistanceFunctions.h,sha256=hrC838CsYWQ6TXm536iNRwB8W5-62LNb-JPqPoDAFPE,4831
@@ -88,12 +88,12 @@ robotic/include/rai/Geo/ccd_rai/support.h,sha256=B9KBuOctG7Hx-e1TXpnkU667WVH7SP4
88
88
  robotic/include/rai/Geo/ccd_rai/vec3.h,sha256=ARkNnQz8yWf_Cs3vgt22zclN1cLeGmwWPTVHVpvmfEA,8115
89
89
  robotic/include/rai/Geo/ply/ply.h,sha256=_oAXgQ5CyHvUMtPDBxYtOBbnKDVoZf5PKMswisqvOeI,9384
90
90
  robotic/include/rai/Geo/vhacd/VHACD.h,sha256=QT_cT6PPzec_mxKODsS9cJGr6nBt6S8cUJF7dCeBQCc,258343
91
- robotic/include/rai/Gui/RenderData.h,sha256=SQEJbq1lTdCBsbMx8Yo6Dk_EPpQ2pNxM5l9D9xVU-qk,4986
91
+ robotic/include/rai/Gui/RenderData.h,sha256=6YDE58vdQ2E18IfgGUj40fmxqgj4-LZAVrZftkKG3-c,4996
92
92
  robotic/include/rai/Gui/color.h,sha256=4ElBkpWgwBuqQEFD4Mdhv_afZE4ul6NkptwFQ2oDS5o,2596
93
- robotic/include/rai/Gui/opengl.h,sha256=eFp5yfBh0sjqzGQ6xqeZdadsQzwYYVgeur_GMpmEdWA,9091
94
- robotic/include/rai/Gui/plot.h,sha256=xhTBY84UN4KpgZsX7SJQGqVKd1jU7jojGVKFv02v0xU,2341
93
+ robotic/include/rai/Gui/opengl.h,sha256=NipYBJ40hqC6K7xqmB0UYdU4rX_zQgnh7rsi5_Fg0-8,9101
94
+ robotic/include/rai/Gui/plot.h,sha256=Y_X9-V6IExvFafNzkG88O2wUGDCCnarUzpi5b0DKBcQ,2346
95
95
  robotic/include/rai/KOMO/PathSmoother.h,sha256=y-t3yVEZvxfQIs8_EA-WI7FJ_RzfbG8TEfdiNAruuUI,813
96
- robotic/include/rai/KOMO/komo.h,sha256=q4BhbBXiV3hrI05iqJdMIKYcqFVrozo2fmEIDY1PpDA,13395
96
+ robotic/include/rai/KOMO/komo.h,sha256=lyhu0CTfJliiHRywA-Mk8x15ro4-Z3DhTP3IOtmQ1Lw,13400
97
97
  robotic/include/rai/KOMO/komo_NLP.h,sha256=kSzUMDmw4yzAXtpNB2v38dpw2tBS8n8R_op_T3yS3DQ,3681
98
98
  robotic/include/rai/KOMO/manipTools.h,sha256=WMdCxQB2rTcb3kzbiW9CHDpmGJZcKRqAnT861_iTsH4,4233
99
99
  robotic/include/rai/KOMO/objective.h,sha256=Cl4-KjheRMNWoh_xFas5tLWMKSMlJf-HLDihfqvfcSw,2704
@@ -102,7 +102,7 @@ robotic/include/rai/KOMO/skeleton.h,sha256=NPaMfUMC_sUd3AjlLHTFpxWH4QtnKP_zzvHb2
102
102
  robotic/include/rai/KOMO/skeletonSymbol.h,sha256=mrPqRn_1i4PuqbkQBhKEYc5WPEGqPjBN6TvwZxZ5e7A,1261
103
103
  robotic/include/rai/KOMO/splined.h,sha256=G_fu9gXCboJLkwhwu77F6F3Ei6deqzbvkgP8r9kiNL8,903
104
104
  robotic/include/rai/KOMO/switch.h,sha256=teNNnHFe4h9W5rLlL3TFBsq97ni-RUEhcxw4uVPYR1g,1850
105
- robotic/include/rai/KOMO/testProblems_KOMO.h,sha256=zpujbYe9Q97Mx_m91LQcPhEW8YVSitzYO_7I8l7M3WI,2882
105
+ robotic/include/rai/KOMO/testProblems_KOMO.h,sha256=K68JhZOpPcB9A0K2IEnfOJHG3-QweSDmHB2u_YfjeIA,3000
106
106
  robotic/include/rai/Kin/F_LeapCost.h,sha256=wNAUNgAJjLirMurF67BlFLHtjyuXy1EPr--9XLBe6Wk,556
107
107
  robotic/include/rai/Kin/F_collisions.h,sha256=Atq9LPVOkEuMF-kSHk78cGjaJYwDIbvrTxHmLBJw3yk,2092
108
108
  robotic/include/rai/Kin/F_forces.h,sha256=tHyBQcKhi4ZdsHoBU5bu7kLWVm611SfEYG_o-vMSDN0,6694
@@ -117,7 +117,7 @@ robotic/include/rai/Kin/dof_particles.h,sha256=PboLndC5a5extUKAfUPAIsJEGTTs6_ACD
117
117
  robotic/include/rai/Kin/dof_path.h,sha256=XRPj3bH90JUIdkTS4jxwbAb5n9yAsRoemWUWUV1xDtQ,792
118
118
  robotic/include/rai/Kin/feature.h,sha256=xicsrElMcYnYXdIXdO5LBLmXxvCGVUVgZJY2NIarO5I,3935
119
119
  robotic/include/rai/Kin/featureSymbols.h,sha256=JVXbXoW43PlEGOgwHPpULlbXUQzkl79F1EFnfl-0wyk,1984
120
- robotic/include/rai/Kin/frame.h,sha256=xqNwSGPxCmGOgCEtMZmeE80RJLXcHdpJRHWIkxbqCwU,14617
120
+ robotic/include/rai/Kin/frame.h,sha256=Glq5nVSukaxl4NITLx0cabIrGToUVhLPKy0zP7QQkhA,14623
121
121
  robotic/include/rai/Kin/kin.h,sha256=uu2rwBXk0vMLH4NzXJTBHyV2sRRXK_zHrnoy61zh0qc,16060
122
122
  robotic/include/rai/Kin/kin_bullet.h,sha256=y8aApXpXY4bD5QN_WmDAU2vNEvvbdo1Rd4zY7qo-FKE,1970
123
123
  robotic/include/rai/Kin/kin_feather.h,sha256=o-hOJA8UcmIBKx_qPzoG9R7fxzz-4zhBNMBmBTK21oA,1627
@@ -138,9 +138,9 @@ robotic/include/rai/Logic/folWorld.h,sha256=XpqTWOIvZbKlS_vsJkXOexrhjfy3_iywebFe
138
138
  robotic/include/rai/Logic/treeSearchDomain.h,sha256=sO5Y6o9wRTQxfST9YyJw3P0KcqGX7ISqbIN-uGQ5abU,3882
139
139
  robotic/include/rai/Optim/BayesOpt.h,sha256=GqOqGk5Y0USf513duMPtt--TBYGqujdsvY2qi17jVxI,1241
140
140
  robotic/include/rai/Optim/GlobalIterativeNewton.h,sha256=WRaTFUrx0A1FO7d7shgZbJVaC5AWKZT5PTD8LnuPXiE,801
141
- robotic/include/rai/Optim/NLP.h,sha256=rWs2HDuaIQnrz2DZeiCuLjYrENb5mfdUiCcht6dQaus,8195
141
+ robotic/include/rai/Optim/NLP.h,sha256=UwlTvUopRLYldVtx_WiFYDegPCssd4slWMQQD2EqI9s,8200
142
142
  robotic/include/rai/Optim/NLP_Factory.h,sha256=xDn73B-u6fFvtu-udkXgyTiFyjTzfJNHwUm6z88FiOo,1979
143
- robotic/include/rai/Optim/NLP_GraphSolver.h,sha256=Wwq4YiU_35Wa0qERa9Pibo4EqzxzJcIYDTSh5Gol9so,1167
143
+ robotic/include/rai/Optim/NLP_GraphSolver.h,sha256=Te5_uyLrBvHANfGv9uHdR6YPuCWCqgJqj9EL8WYfF14,1172
144
144
  robotic/include/rai/Optim/NLP_Sampler.h,sha256=JaOEc8YJwatW5toOviTFXlOoF3Dg8ZWPM9zejyW9ND8,4643
145
145
  robotic/include/rai/Optim/NLP_Solver.h,sha256=Y07FfnrTjkVldXFU5HJ0SB0pOlGGivQ9k_4vpEM3YoA,2482
146
146
  robotic/include/rai/Optim/SlackGaussNewton.h,sha256=b5w2ti8AqqothZtCFevUNSs1Y5dz4LOLBJXZQvoKNmU,1338
@@ -153,7 +153,7 @@ robotic/include/rai/Optim/opt-ipopt.h,sha256=1v147tZVY3MuNMRLaFFWxKC7fyNP5-59WJz
153
153
  robotic/include/rai/Optim/opt-nlopt.h,sha256=R0ma9SjxcVU9nI7H39QOWUIPy95H4AiQwLRHz3DRe7k,970
154
154
  robotic/include/rai/Optim/options.h,sha256=JSqHw6agqLkvfvw6kd54KHQ6Hz7xZyHeRkWAumYUag0,1876
155
155
  robotic/include/rai/Optim/primalDual.h,sha256=xHXhAPbZWPVj17ZGpDr4OrLJLYj_G1Wr_k4TCPFBiHc,1272
156
- robotic/include/rai/Optim/testProblems_Opt.h,sha256=rYPVdz7y1pkmzJH6aIw3pQ6JqN2_HhJ50CAAdsL2r9A,6531
156
+ robotic/include/rai/Optim/testProblems_Opt.h,sha256=4gpRMynlhr-01r3Tls1C4pueylO_UsCw8wElbgxhMf8,6338
157
157
  robotic/include/rai/Optim/utils.h,sha256=VMTSVUcg3UWN8RhBYSSyqoBCa_AcUrZ_7zvcz3XWEC0,3517
158
158
  robotic/include/rai/PathAlgos/ConfigurationProblem.h,sha256=Zl_J3yooYFxA2-z-ulFL67nfzQBX90hUbD_cVFzpb3U,1351
159
159
  robotic/include/rai/PathAlgos/PathResult.h,sha256=xxZiD8ClGKO719mQR50BsIzOlHeoH0UH4QNzWifoz6c,1070
@@ -174,7 +174,7 @@ robotic/include/rai/Perception/pcl.h,sha256=bb_INnIt89xfwvx3gkLRqRPiH2OOpdPL7f-3
174
174
  robotic/include/rai/Perception/pclPlaneExtraction.h,sha256=RTyPIrxS4oZGZ1rXAhaRWxBrs3YX-PHmUimLG7t0LG0,2077
175
175
  robotic/include/rai/Perception/pixel_format.h,sha256=dNRLdsMdckP0npn19WO_37RpH3poNamOT4JfEM6QAco,1064
176
176
  robotic/include/rai/Perception/pointcloud_io.h,sha256=G908jUYDi8QFXmBDXrIuUrqZh24utcv3ABK2pWmhB50,1085
177
- robotic/include/rai/Perception/surfels.h,sha256=q9VGx6ncsv74WPsUn2-wMBirsuhwzeqUkOkEZD2l7DQ,1947
177
+ robotic/include/rai/Perception/surfels.h,sha256=OblVWjI_bEpQwqcANJ8cHYvah4BraYmLpicN_Vn39Dg,1952
178
178
  robotic/include/rai/Perception/videoEncoder.h,sha256=TWphAWKPuvwwM6kNSfbEv57w9_LzZSbx-zkovfPVGA0,1823
179
179
  robotic/include/rai/Search/AStar.h,sha256=qXZybtUHusQUjmA2xYCvKtLpe8Saq73klpnBuz1plZc,1209
180
180
  robotic/include/rai/Search/ComputeNode.h,sha256=JcUy-8fmMsFbluSriDOh9FgLrJhaC4ggoiQwQa-1IZ0,3420
@@ -190,7 +190,7 @@ robotic/include/rai/ry/py-Quaternion.h,sha256=EydIMfUB_Zf9H21x29dhBjDm7472Ge_XD6
190
190
  robotic/include/rai/ry/py-Simulation.h,sha256=Kc4e6pK1yQyxDMCQu1HvXOYt9IlUiojBYFdqv3PP1AY,437
191
191
  robotic/include/rai/ry/py-Spline.h,sha256=gR8Cvwt5PlzlolxegS1wUEEOQj9RydOp1gS67Zxm0jk,433
192
192
  robotic/include/rai/ry/py-tests.h,sha256=-l_0V-yRqeOEztqCo_BAdcKCAMovyd8-9tnrytM5pQM,432
193
- robotic/include/rai/ry/types.h,sha256=KQ_byer3O3iFnrtBNyg5sptEfCsujbEeo6edOHSNzaM,8495
193
+ robotic/include/rai/ry/types.h,sha256=gfyXJCRwkvrQ8jibdJVMRxPUIhXMUQJlgws9ocKyB8c,8537
194
194
  robotic/rai-robotModels/g1/g1.g,sha256=9lA31eCRoFENw9Nbg04KoX3diIIQYKz981oRYNKLvO4,499
195
195
  robotic/rai-robotModels/g1/g1_29dof_conv.yml,sha256=KU7Usxi4fMCKFH7Jfb6Jvs98fbK1UozBHCeTnD0KPPU,12132
196
196
  robotic/rai-robotModels/g1/g1_clean.g,sha256=jXlPAlL02pPSybl5DgazO0Qf96wAg2tbVwXKYh9e5XQ,11883
@@ -351,20 +351,21 @@ robotic/rai-robotModels/ur10/meshes/wrist2.h5,sha256=fJSQ4Jh-ChmwvRYfDobqXssVaBZ
351
351
  robotic/rai-robotModels/ur10/meshes/wrist3.h5,sha256=F8FrYVVp8YBdkgJ6EHKb5r_rm0kyhxf6b8KbwHjeegk,20770
352
352
  robotic/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
353
353
  robotic/src/cleanMeshes.py,sha256=42T9WwN_cn4u_s_BzN2eRfBQxmZTEQ6ZYPBtsesA5BM,1678
354
+ robotic/src/h5_helper.py,sha256=erZTmCSWIROWcn4MojakXSdvFtkWaDpaIhFCf7y8_Cc,899
354
355
  robotic/src/mesh_helper.py,sha256=AMSOz3Eew9uJkDm5tFThbfJKcEQCmGyRLN4bZphISNk,16691
355
356
  robotic/src/meshlabFilters.mlx,sha256=SCIiIk7XZusvKEKY62pHSem_R3TcMUP8BFaLTVUcnEg,3833
356
357
  robotic/src/mujoco_io.py,sha256=drLNE4yo30hpOY01-AsuCWKLvNoG5w2YDSzR_rlyfz0,9474
357
358
  robotic/src/urdf_io.py,sha256=bbPcJWS9rnYk8CWgEZTmx1XJRBIDrfwgCj-S_RFxl9U,8800
358
359
  robotic/src/yaml_helper.py,sha256=Jf9QaKSNQrPkUPqd5FUDv7_h0wDlGXrhCdMwu6y-Nh0,925
359
- robotic-0.3.1.dev2.data/scripts/ry-bot,sha256=LBNbbQeNNNd_tupI5463Xe-RKSD6xy4HGTbJloisCGk,2280
360
- robotic-0.3.1.dev2.data/scripts/ry-h5info,sha256=eh9McT5Ury7bbTudxkSOLWo-tZ6heiSEpGStM07N-Dc,810
361
- robotic-0.3.1.dev2.data/scripts/ry-info,sha256=fL5QXJL4Xx-Q42L2C29HHbj1XsmWdWiKIv9rVfc5sm4,425
362
- robotic-0.3.1.dev2.data/scripts/ry-meshTool,sha256=h4f4wFPNaey3ziz870SrEvy6SsQSL-ZnR_cH3UuAZxE,101
363
- robotic-0.3.1.dev2.data/scripts/ry-test,sha256=vcaPrFq9Co9N2F2Mdl2_1CTieOBssSoEhU67wXqJ2EY,981
364
- robotic-0.3.1.dev2.data/scripts/ry-urdfConvert.py,sha256=762MIDmAhdCCj55QftY7wsy9gOEs-TDEWcRPt5dECyc,2542
365
- robotic-0.3.1.dev2.data/scripts/ry-view,sha256=_GjUbVS2X3AWnlXqIHwU5dofLmUKA2-NUPySgS-QJNI,599
366
- robotic-0.3.1.dev2.dist-info/licenses/LICENSE,sha256=oT-pAsUSXiuMq2_3omR87-GFBeBnegQYixH4Bm_7wag,1071
367
- robotic-0.3.1.dev2.dist-info/METADATA,sha256=gpaBPxgQWGSgSEWO6QTYiggxiHoSazBYmyJfNP2FJcg,6659
368
- robotic-0.3.1.dev2.dist-info/WHEEL,sha256=0-G7woG4LgutcYzUGJCOYFgoh749-FtfhSMeIPLVGS0,104
369
- robotic-0.3.1.dev2.dist-info/top_level.txt,sha256=x5A4haAZ18y9FpO1IhXSVJ2TFdhVAgT5JMkejHUg_9U,8
370
- robotic-0.3.1.dev2.dist-info/RECORD,,
360
+ robotic-0.3.2.data/scripts/ry-bot,sha256=LBNbbQeNNNd_tupI5463Xe-RKSD6xy4HGTbJloisCGk,2280
361
+ robotic-0.3.2.data/scripts/ry-h5info,sha256=eh9McT5Ury7bbTudxkSOLWo-tZ6heiSEpGStM07N-Dc,810
362
+ robotic-0.3.2.data/scripts/ry-info,sha256=fL5QXJL4Xx-Q42L2C29HHbj1XsmWdWiKIv9rVfc5sm4,425
363
+ robotic-0.3.2.data/scripts/ry-meshTool,sha256=h4f4wFPNaey3ziz870SrEvy6SsQSL-ZnR_cH3UuAZxE,101
364
+ robotic-0.3.2.data/scripts/ry-test,sha256=vcaPrFq9Co9N2F2Mdl2_1CTieOBssSoEhU67wXqJ2EY,981
365
+ robotic-0.3.2.data/scripts/ry-urdfConvert.py,sha256=762MIDmAhdCCj55QftY7wsy9gOEs-TDEWcRPt5dECyc,2542
366
+ robotic-0.3.2.data/scripts/ry-view,sha256=_GjUbVS2X3AWnlXqIHwU5dofLmUKA2-NUPySgS-QJNI,599
367
+ robotic-0.3.2.dist-info/licenses/LICENSE,sha256=oT-pAsUSXiuMq2_3omR87-GFBeBnegQYixH4Bm_7wag,1071
368
+ robotic-0.3.2.dist-info/METADATA,sha256=owChbzqRWeS2Kiak332W1oF4-jY1cBu9NV8ADIfiReI,6654
369
+ robotic-0.3.2.dist-info/WHEEL,sha256=0-G7woG4LgutcYzUGJCOYFgoh749-FtfhSMeIPLVGS0,104
370
+ robotic-0.3.2.dist-info/top_level.txt,sha256=x5A4haAZ18y9FpO1IhXSVJ2TFdhVAgT5JMkejHUg_9U,8
371
+ robotic-0.3.2.dist-info/RECORD,,