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" 14 typedef BasicResource<Config> ConfigResource;
15 typedef BasicResource<Vector3> Vector3Resource;
16 typedef BasicResource<Matrix3> Matrix3Resource;
17 typedef BasicResource<Matrix> MatrixResource;
18 typedef BasicResource<RigidTransform> RigidTransformResource;
19 typedef BasicResource<GeometricPrimitive3D> GeometricPrimitive3DResource;
20 typedef BasicResource<Camera::Viewport> ViewportResource;
28 using ResourceBase::Load;
29 using ResourceBase::Save;
30 virtual bool Load(istream& in);
31 virtual bool Save(ostream& out);
32 virtual bool Save(AnyCollection& c);
33 virtual bool Load(AnyCollection& c);
34 virtual const char* Type()
const {
return "Configs"; }
36 virtual ResourceBase* Copy();
37 virtual vector<string> CastTypes()
const;
38 virtual vector<string> SubTypes()
const;
39 virtual ResourcePtr Cast(
const char* subtype);
40 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&);
41 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL);
42 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL);
44 vector<Vector> configs;
54 virtual bool Load(
const std::string& fn);
55 virtual bool Save(
const std::string& fn);
56 virtual const char* Type()
const {
return "TriMesh"; }
58 virtual ResourceBase* Copy();
67 using ResourceBase::Load;
68 using ResourceBase::Save;
69 virtual bool Load(istream& in);
70 virtual bool Save(ostream& out);
71 virtual const char* Type()
const {
return "PointCloud"; }
73 virtual ResourceBase* Copy();
75 Meshing::PointCloud3D pointCloud;
84 using ResourceBase::Load;
85 using ResourceBase::Save;
86 virtual bool Load(
const string& fn);
87 virtual bool Save(
const string& fn);
88 virtual const char* Type()
const {
return "Robot"; }
90 virtual ResourceBase* Copy();
101 using ResourceBase::Load;
102 using ResourceBase::Save;
103 virtual bool Load(
const string& fn);
104 virtual bool Save(
const string& fn);
105 virtual const char* Type()
const {
return "RigidObject"; }
107 virtual ResourceBase* Copy();
121 using ResourceBase::Load;
122 using ResourceBase::Save;
123 virtual bool Load(
const string& fn);
124 virtual bool Save(
const string& fn);
125 virtual const char* Type()
const {
return "World"; }
127 virtual ResourceBase* Copy();
128 virtual vector<string> SubTypes()
const;
129 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&);
130 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL);
131 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL);
142 using ResourceBase::Load;
143 using ResourceBase::Save;
144 virtual bool Load(istream& in);
145 virtual bool Save(ostream& out);
146 virtual bool Save(AnyCollection& c);
147 virtual bool Load(AnyCollection& c);
148 virtual const char* Type()
const {
return "LinearPath"; }
150 virtual ResourceBase* Copy();
151 virtual vector<string> CastTypes()
const;
152 virtual vector<string> SubTypes()
const;
153 virtual vector<string> ExtractTypes()
const;
154 virtual ResourcePtr Cast(
const char* subtype);
155 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&);
156 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL);
157 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL);
160 vector<Vector> milestones;
172 using ResourceBase::Load;
173 using ResourceBase::Save;
174 virtual bool Load(
const string& fn);
175 virtual bool Save(
const string& fn);
176 virtual bool Load(TiXmlElement* in);
177 virtual bool Save(TiXmlElement* out);
178 virtual const char* Type()
const {
return "MultiPath"; }
180 virtual ResourceBase* Copy();
181 virtual vector<string> CastTypes()
const;
182 virtual vector<string> SubTypes()
const;
183 virtual vector<string> ExtractTypes()
const;
184 virtual ResourcePtr Cast(
const char* subtype);
185 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&);
186 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL);
187 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL);
202 IKGoalResource(
const IKGoal& val,
const string& name) : CompoundResourceBase(name),goal(val) {}
203 using ResourceBase::Load;
204 using ResourceBase::Save;
205 virtual bool Load(AnyCollection& c);
206 virtual bool Save(AnyCollection& c);
207 virtual bool Load(std::istream& in) {
209 if(in.bad())
return false;
212 virtual bool Save(std::ostream& out) {
213 out<<goal<<std::endl;
216 virtual const char* Type()
const {
return "IKGoal"; }
218 virtual ResourceBase* Copy() {
return new IKGoalResource(goal,name); }
219 virtual vector<string> CastTypes()
const;
220 virtual ResourcePtr Cast(
const char* subtype)
const;
233 HoldResource(
const Hold& val,
const string& name) : CompoundResourceBase(name),hold(val) {}
234 using ResourceBase::Load;
235 using ResourceBase::Save;
236 virtual bool Load(AnyCollection& c);
237 virtual bool Save(AnyCollection& c);
238 virtual bool Load(std::istream& in) {
240 if(in.bad())
return false;
243 virtual bool Save(std::ostream& out) {
244 out<<hold<<std::endl;
247 virtual const char* Type()
const {
return "Hold"; }
248 virtual ResourceBase* Make() {
return new HoldResource; }
249 virtual ResourceBase* Copy() {
return new HoldResource(hold,name); }
250 virtual vector<string> CastTypes()
const;
251 virtual vector<string> SubTypes()
const;
252 virtual ResourcePtr Cast(
const char* subtype)
const;
253 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL);
254 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL);
267 using ResourceBase::Load;
268 using ResourceBase::Save;
269 virtual bool Load(istream& in);
270 virtual bool Save(ostream& out);
271 virtual bool Load(TiXmlElement* in);
272 virtual bool Save(TiXmlElement* out);
273 virtual bool Load(AnyCollection& c);
274 virtual bool Save(AnyCollection& c);
275 virtual const char* Type()
const {
return "Stance"; }
277 virtual ResourceBase* Copy();
278 virtual vector<string> CastTypes()
const;
279 virtual vector<string> SubTypes()
const;
280 virtual vector<string> ExtractTypes()
const;
281 virtual ResourcePtr Cast(
const char* subtype);
282 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&);
283 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL);
284 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL);
300 using ResourceBase::Load;
301 using ResourceBase::Save;
302 virtual bool Load(TiXmlElement* in);
303 virtual bool Save(TiXmlElement* out);
304 virtual bool Load(AnyCollection& c);
305 virtual bool Save(AnyCollection& c);
306 virtual const char* Type()
const {
return "Grasp"; }
308 virtual ResourceBase* Copy();
309 virtual vector<string> CastTypes()
const;
310 virtual vector<string> SubTypes()
const;
311 virtual vector<string> ExtractTypes()
const;
312 virtual ResourcePtr Cast(
const char* subtype);
313 virtual bool Extract(
const char* subtype,vector<ResourcePtr>&);
314 virtual bool Pack(vector<ResourcePtr>& subobjects,
string* errorMessage=NULL);
315 virtual bool Unpack(vector<ResourcePtr>& subobjects,
bool* incomplete=NULL);
328 ResourcePtr MakeResource(
const string& name,
const vector<int>& vals);
329 ResourcePtr MakeResource(
const string& name,
const vector<double>& vals);
330 ResourcePtr MakeResource(
const string& name,
const Config& q);
331 ResourcePtr MakeResource(
const string& name,
const vector<Config>& qs);
332 ResourcePtr MakeResource(
const string& name,
const vector<Real>& ts,
const vector<Config>& qs);
333 ResourcePtr MakeResource(
const string& name,
const MultiPath& path);
334 ResourcePtr MakeResource(
const string& name,
const Vector3& pt);
335 ResourcePtr MakeResource(
const string& name,
const Matrix3& R);
336 ResourcePtr MakeResource(
const string& name,
const RigidTransform& T);
337 ResourcePtr MakeResource(
const string& name,
const GeometricPrimitive3D& geom);
338 ResourcePtr MakeResource(
const string& name,
const Meshing::TriMesh& mesh);
339 ResourcePtr MakeResource(
const string& name,
const Geometry::AnyGeometry3D& geom);
340 ResourcePtr MakeResource(
const string& name,
const IKGoal& goal);
341 ResourcePtr MakeResource(
const string& name,
const Hold& hold);
342 ResourcePtr MakeResource(
const string& name,
const Stance& stance);
343 ResourcePtr MakeResource(
const string& name,
const Grasp& grasp);
350 ResourcePtr
CastResource(ResourcePtr& item,
const char* type);
359 ResourcePtr
PackResources(vector<ResourcePtr>& resources,ResourcePtr rtemplate,
string* errorMessage=NULL);
361 ResourcePtr
PackResources(ResourceLibrary& resources,
const string& type,
string* errorMessage=NULL);
368 vector<ResourcePtr>
UnpackResource(ResourcePtr r,
bool* successful=NULL,
bool* incomplete=NULL);
Resource for a Hold.
Definition: Resources.h:228
A single contact between the robot and the environment.
Definition: Hold.h:26
A very general multi-section path container.
Definition: MultiPath.h:29
The main robot type used in RobotSim.
Definition: Robot.h:79
ResourcePtr CastResource(ResourcePtr &item, const char *type)
Convert a resource to a given type.
Resource for a RigidObject.
Definition: Resources.h:98
A collection of holds.
Definition: Stance.h:19
Resource for a TriMesh. Needs to be overloaded to load from alternate mesh formats (meshing/IO...
Definition: Resources.h:51
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:20
Resource for multiple Config's.
Definition: Resources.h:25
void MakeRobotResourceLibrary(ResourceLibrary &library)
Initializes a ResourceLibrary so that it accepts standard RobotSim file types.
Resource for a Grasp.
Definition: Resources.h:295
Resource for a Stance.
Definition: Resources.h:262
Resource for a RobotWorld.
Definition: Resources.h:118
Resource for an IKGoal.
Definition: Resources.h:197
vector< ResourcePtr > ExtractResources(ResourcePtr &item, const char *type)
Extract all sub-resources of a given type.
bool CanCastResource(const ResourcePtr &item, const char *type)
Returns true if CastResource can cast to the given type.
ResourcePtr PackResources(vector< ResourcePtr > &resources, ResourcePtr rtemplate, string *errorMessage=NULL)
Resource for a LinearPath.
Definition: Resources.h:139
vector< ResourcePtr > UnpackResource(ResourcePtr r, bool *successful=NULL, bool *incomplete=NULL)
vector< string > ExtractResourceTypes(const ResourcePtr &item)
Returns the list of types that can be extracted from the item.
vector< string > CastResourceTypes(const ResourcePtr &item)
Returns the list of types which the item is castable to.
Resource for a PointCloud3D.
Definition: Resources.h:64
Resource for a MultiPath.
Definition: Resources.h:169
A (static) rigid object that may be manipulated.
Definition: RigidObject.h:13
Slightly more sophisticated than a Stance, a Grasp allows some of the robot's degrees of freedom to b...
Definition: Grasp.h:15
Resource for a Robot.
Definition: Resources.h:81