1 #ifndef ROBOT_RESOURCES_H 2 #define ROBOT_RESOURCES_H 4 #include <KrisLibrary/utils/ResourceLibrary.h> 5 #include <KrisLibrary/math3d/geometry3d.h> 6 #include <KrisLibrary/meshing/PointCloud.h> 9 #include "Contact/Stance.h" 10 #include "Contact/Grasp.h" 18 typedef BasicResource<Config> ConfigResource;
19 typedef BasicResource<Math3D::Vector3> Vector3Resource;
20 typedef BasicResource<Math3D::Matrix3> Matrix3Resource;
21 typedef BasicResource<Math::Matrix> MatrixResource;
22 typedef BasicResource<Math3D::RigidTransform> RigidTransformResource;
23 typedef BasicResource<Geometry::GeometricPrimitive3D> GeometricPrimitive3DResource;
24 typedef BasicResource<Camera::Viewport> ViewportResource;
26 template <>
const char* BasicResourceTypeName<Config>();
27 template <>
const char* BasicResourceTypeName<Math3D::Vector3>();
28 template <>
const char* BasicResourceTypeName<Math3D::Matrix3>();
29 template <>
const char* BasicResourceTypeName<Math::Matrix>();
30 template <>
const char* BasicResourceTypeName<Math3D::RigidTransform>();
31 template <>
const char* BasicResourceTypeName<Meshing::TriMesh>();
32 template <>
const char* BasicResourceTypeName<Geometry::GeometricPrimitive3D>();
33 template <>
const char* BasicResourceTypeName<Camera::Viewport>();
44 using ResourceBase::Load;
45 using ResourceBase::Save;
46 virtual bool Load(istream& in)
override;
47 virtual bool Save(ostream& out)
override;
48 virtual bool Save(AnyCollection& c)
override;
49 virtual bool Load(AnyCollection& c)
override;
50 virtual const char* Type()
const override {
return "Configs"; }
52 virtual ResourceBase* Copy()
override;
53 virtual vector<string> CastTypes()
const override;
54 virtual vector<string> SubTypes()
const override;
55 virtual ResourcePtr Cast(
const char* subtype)
override;
56 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&)
override;
57 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL)
override;
58 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL)
override;
60 vector<Vector> configs;
70 virtual bool Load(
const std::string& fn)
override;
71 virtual bool Save(
const std::string& fn)
override;
72 virtual const char* Type()
const override {
return "TriMesh"; }
74 virtual ResourceBase* Copy()
override;
83 using ResourceBase::Load;
84 using ResourceBase::Save;
85 virtual bool Load(istream& in)
override;
86 virtual bool Save(ostream& out)
override;
87 virtual const char* Type()
const override {
return "PointCloud"; }
89 virtual ResourceBase* Copy()
override;
91 Meshing::PointCloud3D pointCloud;
100 using ResourceBase::Load;
101 using ResourceBase::Save;
102 virtual bool Load(
const string& fn)
override;
103 virtual bool Save(
const string& fn)
override;
104 virtual const char* Type()
const override {
return "Robot"; }
105 virtual ResourceBase* Make()
override {
return new RobotResource; }
106 virtual ResourceBase* Copy()
override;
117 using ResourceBase::Load;
118 using ResourceBase::Save;
119 virtual bool Load(
const string& fn)
override;
120 virtual bool Save(
const string& fn)
override;
121 virtual const char* Type()
const override {
return "RigidObject"; }
123 virtual ResourceBase* Copy()
override;
137 using ResourceBase::Load;
138 using ResourceBase::Save;
139 virtual bool Load(
const string& fn)
override;
140 virtual bool Save(
const string& fn)
override;
141 virtual const char* Type()
const override {
return "World"; }
142 virtual ResourceBase* Make()
override {
return new WorldResource; }
143 virtual ResourceBase* Copy()
override;
144 virtual vector<string> SubTypes()
const override;
145 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&)
override;
146 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL)
override;
147 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL)
override;
158 using ResourceBase::Load;
159 using ResourceBase::Save;
160 virtual bool Load(istream& in)
override;
161 virtual bool Save(ostream& out)
override;
162 virtual bool Save(AnyCollection& c)
override;
163 virtual bool Load(AnyCollection& c)
override;
164 virtual const char* Type()
const override {
return "LinearPath"; }
166 virtual ResourceBase* Copy()
override;
167 virtual vector<string> CastTypes()
const override;
168 virtual vector<string> SubTypes()
const override;
169 virtual vector<string> ExtractTypes()
const override;
170 virtual ResourcePtr Cast(
const char* subtype)
override;
171 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&)
override;
172 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL)
override;
173 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL)
override;
176 vector<Vector> milestones;
188 using ResourceBase::Load;
189 using ResourceBase::Save;
190 virtual bool Load(
const string& fn)
override;
191 virtual bool Save(
const string& fn)
override;
192 virtual bool Load(TiXmlElement* in)
override;
193 virtual bool Save(TiXmlElement* out)
override;
194 virtual const char* Type()
const override {
return "MultiPath"; }
196 virtual ResourceBase* Copy()
override;
197 virtual vector<string> CastTypes()
const override;
198 virtual vector<string> SubTypes()
const override;
199 virtual vector<string> ExtractTypes()
const override;
200 virtual ResourcePtr Cast(
const char* subtype)
override;
201 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&)
override;
202 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL)
override;
203 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL)
override;
218 IKGoalResource(
const IKGoal& val,
const string& name) : CompoundResourceBase(name),goal(val) {}
219 using ResourceBase::Load;
220 using ResourceBase::Save;
221 virtual bool Load(AnyCollection& c)
override;
222 virtual bool Save(AnyCollection& c)
override;
223 virtual bool Load(std::istream& in)
override {
225 if(in.bad())
return false;
228 virtual bool Save(std::ostream& out)
override {
229 out<<goal<<std::endl;
232 virtual const char* Type()
const override {
return "IKGoal"; }
233 virtual ResourceBase* Make()
override {
return new IKGoalResource; }
234 virtual ResourceBase* Copy()
override {
return new IKGoalResource(goal,name); }
235 virtual vector<string> CastTypes()
const override;
236 virtual ResourcePtr Cast(
const char* subtype)
override;
249 HoldResource(
const Hold& val,
const string& name) : CompoundResourceBase(name),hold(val) {}
250 using ResourceBase::Load;
251 using ResourceBase::Save;
252 virtual bool Load(AnyCollection& c)
override;
253 virtual bool Save(AnyCollection& c)
override;
254 virtual bool Load(std::istream& in)
override {
256 if(in.bad())
return false;
259 virtual bool Save(std::ostream& out)
override {
260 out<<hold<<std::endl;
263 virtual const char* Type()
const override {
return "Hold"; }
264 virtual ResourceBase* Make()
override {
return new HoldResource; }
265 virtual ResourceBase* Copy()
override {
return new HoldResource(hold,name); }
266 virtual vector<string> CastTypes()
const override;
267 virtual vector<string> SubTypes()
const override;
268 virtual ResourcePtr Cast(
const char* subtype)
override;
269 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL)
override;
270 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL)
override;
283 using ResourceBase::Load;
284 using ResourceBase::Save;
285 virtual bool Load(istream& in)
override;
286 virtual bool Save(ostream& out)
override;
287 virtual bool Load(TiXmlElement* in)
override;
288 virtual bool Save(TiXmlElement* out)
override;
289 virtual bool Load(AnyCollection& c)
override;
290 virtual bool Save(AnyCollection& c)
override;
291 virtual const char* Type()
const override {
return "Stance"; }
292 virtual ResourceBase* Make()
override {
return new StanceResource; }
293 virtual ResourceBase* Copy()
override;
294 virtual vector<string> CastTypes()
const override;
295 virtual vector<string> SubTypes()
const override;
296 virtual vector<string> ExtractTypes()
const override;
297 virtual ResourcePtr Cast(
const char* subtype)
override;
298 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&)
override;
299 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL)
override;
300 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL)
override;
316 using ResourceBase::Load;
317 using ResourceBase::Save;
318 virtual bool Load(TiXmlElement* in)
override;
319 virtual bool Save(TiXmlElement* out)
override;
320 virtual bool Load(AnyCollection& c)
override;
321 virtual bool Save(AnyCollection& c)
override;
322 virtual const char* Type()
const override {
return "Grasp"; }
323 virtual ResourceBase* Make()
override {
return new GraspResource; }
324 virtual ResourceBase* Copy()
override;
325 virtual vector<string> CastTypes()
const override;
326 virtual vector<string> SubTypes()
const override;
327 virtual vector<string> ExtractTypes()
const override;
328 virtual ResourcePtr Cast(
const char* subtype)
override;
329 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&)
override;
330 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL)
override;
331 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL)
override;
344 ResourcePtr MakeResource(
const string& name,
const vector<int>& vals);
345 ResourcePtr MakeResource(
const string& name,
const vector<double>& vals);
346 ResourcePtr MakeResource(
const string& name,
const Config& q);
347 ResourcePtr MakeResource(
const string& name,
const vector<Config>& qs);
348 ResourcePtr MakeResource(
const string& name,
const vector<Real>& ts,
const vector<Config>& qs);
349 ResourcePtr MakeResource(
const string& name,
const MultiPath& path);
350 ResourcePtr MakeResource(
const string& name,
const Vector3& pt);
351 ResourcePtr MakeResource(
const string& name,
const Matrix3& R);
352 ResourcePtr MakeResource(
const string& name,
const RigidTransform& T);
353 ResourcePtr MakeResource(
const string& name,
const GeometricPrimitive3D& geom);
354 ResourcePtr MakeResource(
const string& name,
const Meshing::TriMesh& mesh);
355 ResourcePtr MakeResource(
const string& name,
const Geometry::AnyGeometry3D& geom);
356 ResourcePtr MakeResource(
const string& name,
const IKGoal& goal);
357 ResourcePtr MakeResource(
const string& name,
const Hold& hold);
358 ResourcePtr MakeResource(
const string& name,
const Stance& stance);
359 ResourcePtr MakeResource(
const string& name,
const Grasp& grasp);
366 ResourcePtr
CastResource(ResourcePtr& item,
const char* type);
375 ResourcePtr
PackResources(vector<ResourcePtr>& resources,ResourcePtr rtemplate,
string* errorMessage=NULL);
377 ResourcePtr
PackResources(ResourceLibrary& resources,
const string& type,
string* errorMessage=NULL);
384 vector<ResourcePtr>
UnpackResource(ResourcePtr r,
bool* successful=NULL,
bool* incomplete=NULL);
Resource for a TriMesh. Needs to be overloaded to load from alternate mesh formats (meshing/IO...
Definition: Resources.h:67
Resource for an IKGoal.
Definition: Resources.h:213
Resource for a RigidObject.
Definition: Resources.h:114
Resource for a Hold.
Definition: Resources.h:244
A very general multi-section path container.
Definition: MultiPath.h:31
Resource for a PointCloud3D.
Definition: Resources.h:80
A collection of holds.
Definition: Stance.h:20
ResourcePtr CastResource(ResourcePtr &item, const char *type)
Convert a resource to a given type.
Resource for a Grasp.
Definition: Resources.h:311
void MakeRobotResourceLibrary(ResourceLibrary &library)
Initializes a ResourceLibrary so that it accepts standard RobotSim file types.
A (static) rigid object that may be manipulated.
Definition: RigidObject.h:15
Resource for a Stance.
Definition: Resources.h:278
Defines the WorldModel class.
vector< string > ExtractResourceTypes(const ResourcePtr &item)
Returns the list of types that can be extracted from the item.
ResourcePtr PackResources(ResourceLibrary &resources, const string &type, string *errorMessage=NULL)
Creates an object of the given type out of the given resources.
Resource for a MultiPath.
Definition: Resources.h:185
vector< string > CastResourceTypes(const ResourcePtr &item)
Returns the list of types which the item is castable to.
Resource for multiple Config's.
Definition: Resources.h:41
bool CanCastResource(const ResourcePtr &item, const char *type)
Returns true if CastResource can cast to the given type.
The main robot type used in RobotSim.
Definition: Robot.h:83
Resource for a WorldModel.
Definition: Resources.h:134
A single contact between the robot and the environment.
Definition: Hold.h:28
Resource for a Robot.
Definition: Resources.h:97
vector< ResourcePtr > UnpackResource(ResourcePtr r, bool *successful=NULL, bool *incomplete=NULL)
vector< ResourcePtr > ExtractResources(ResourcePtr &item, const char *type)
Extract all sub-resources of a given type.
Slightly more sophisticated than a Stance, a Grasp allows some of the robot's degrees of freedom to b...
Definition: Grasp.h:17
Definition: ContactDistance.h:6
Resource for a LinearPath.
Definition: Resources.h:155
The main world class containing multiple robots, objects, and static geometries (terrains). Lights and other viewport information may also be stored here.
Definition: World.h:24