Ignition Physics

API Reference

5.1.0
ForwardStep.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 
18 #ifndef IGNITION_PHYSICS_FORWARDSTEP_HH_
19 #define IGNITION_PHYSICS_FORWARDSTEP_HH_
20 
21 #include <string>
22 #include <vector>
23 
24 #include <ignition/math.hh>
25 
28 
29 namespace ignition
30 {
31  namespace physics
32  {
33  // ---------------- Output Data Structures -----------------
34  // In the long-term, these data structures should be defined in some kind of
35  // meta-file, and our build system should generate these definitions during
36  // compilation. These are being defined here in this header until we know
37  // more about how the ECS will work.
38 
39  struct WorldPose
40  {
42 
44  };
45 
46  struct WorldPoses
47  {
50  };
51 
56  {
59  };
60 
61  struct Point
62  {
64 
67  };
68 
69  struct FreeVector
70  {
72 
74  };
75 
77  {
81  };
82 
83  struct Contacts
84  {
87  };
88 
89  // ---------------- Input Data Structures -----------------
90  // Same note as for Output Data Structures. Eventually, these should be
91  // defined in some kind of meta files.
92 
93  struct TimeStep
94  {
95  double dt;
96  };
97 
98  struct ForceTorque
99  {
102 
105 
107  };
108 
110  {
114  };
115 
116  struct PIDValues
117  {
118  double P;
119  double I;
120  double D;
121  };
122 
124  {
127  };
128 
130  {
133  };
134 
136  {
139  };
140 
142  {
145 
147  };
148 
152  class ForwardStep : public virtual Feature
153  {
154  public: using Input = ExpectData<
159 
160  public: using Output = SpecifyData<
161  RequireData<WorldPoses>,
162  ExpectData<ChangedWorldPoses, Contacts, JointPositions> >;
163 
164  public: using State = CompositeData;
165 
166  public: template <typename PolicyT, typename FeaturesT>
167  class World : public virtual Feature::World<PolicyT, FeaturesT>
168  {
169  public: void Step(Output &_h, State &_x, const Input &_u)
170  {
171  this->template Interface<ForwardStep>()->
172  WorldForwardStep(this->identity, _h, _x, _u);
173  }
174  };
175 
176  public: template <typename PolicyT>
178  {
179  public: virtual void WorldForwardStep(
180  const Identity &_worldID,
181  Output &_h,
182  State &_x,
183  const Input &_u) = 0;
184  };
185  };
186 
187  // ---------------- SetState Interface -----------------
188  // class SetState
189  // {
190  // public: using State = CompositeData;
191 
192  // public: virtual void SetStateTo(const State &x) = 0;
193 
194  // public: virtual ~SetState() = default;
195  // };
196  }
197 }
198 
199 #endif
double D
Definition: ForwardStep.hh:120
Definition: ForwardStep.hh:109
Definition: ForwardStep.hh:61
double P
Definition: ForwardStep.hh:118
std::vector< WorldPose > entries
Definition: ForwardStep.hh:48
ChangedWorldPoses has the same definition as WorldPoses. This type provides a way to keep track of wh...
Definition: ForwardStep.hh:55
ignition::math::Vector3d point
Definition: ForwardStep.hh:63
Definition: ForwardStep.hh:39
Point location
Definition: ForwardStep.hh:101
Definition: ForwardStep.hh:46
std::string annotation
Definition: ForwardStep.hh:146
This class defines the concept of a Feature. It should be inherited by classes that define some plugi...
Definition: Feature.hh:35
Definition: ForwardStep.hh:135
std::vector< double > forces
Definition: ForwardStep.hh:112
void Step(Output &_h, State &_x, const Input &_u)
Definition: ForwardStep.hh:169
Definition: ForwardStep.hh:167
std::vector< GeneralizedParameters > commands
Definition: ForwardStep.hh:143
ForwardStep is a feature that allows a simulation of a world to take one step forward in time...
Definition: ForwardStep.hh:152
std::string annotation
Definition: ForwardStep.hh:132
STL class.
std::vector< PIDValues > gains
Definition: ForwardStep.hh:144
ignition::math::Pose3d pose
Definition: ForwardStep.hh:41
double dt
Definition: ForwardStep.hh:95
std::size_t inCoordinatesOf
Definition: ForwardStep.hh:66
Definition: ForwardStep.hh:129
std::size_t body
Definition: ForwardStep.hh:100
double I
Definition: ForwardStep.hh:119
Definition: ForwardStep.hh:83
Definition: ForwardStep.hh:123
std::string annotation
Definition: ForwardStep.hh:106
std::vector< GeneralizedParameters > commands
Definition: ForwardStep.hh:137
Definition: ForwardStep.hh:98
Definition: ForwardStep.hh:93
Definition: ForwardStep.hh:76
Definition: ForwardStep.hh:141
Definition: ForwardStep.hh:69
std::vector< std::size_t > dofs
Definition: ForwardStep.hh:111
Placeholder class in case a Feature does not define its own World API.
Definition: Feature.hh:49
std::string annotation
Definition: ForwardStep.hh:113
std::size_t body
Definition: ForwardStep.hh:43
ignition::math::Vector3d vec
Definition: ForwardStep.hh:71
The CompositeData class allows arbitrary data structures to be composed together, copied...
Definition: CompositeData.hh:43
ExpectData< ApplyExternalForceTorques, ApplyGeneralizedForces, VelocityControlCommands, ServoControlCommands > Input
Definition: ForwardStep.hh:158
STL class.
std::vector< WorldPose > entries
Definition: ForwardStep.hh:57
std::vector< ForceTorque > entries
Definition: ForwardStep.hh:125
Definition: ForwardStep.hh:116
std::string annotation
Definition: ForwardStep.hh:126
std::size_t inCoordinatesOf
Definition: ForwardStep.hh:73
std::string annotation
Definition: ForwardStep.hh:49
std::vector< GeneralizedParameters > forces
Definition: ForwardStep.hh:131
std::string annotation
Definition: ForwardStep.hh:86
std::string annotation
Definition: ForwardStep.hh:80
std::string annotation
Definition: ForwardStep.hh:58
std::string annotation
Definition: ForwardStep.hh:138
The SpecifyData class allows you to form combinations of data specifications. In other words...
Definition: SpecifyData.hh:265
std::vector< Point > entries
Definition: ForwardStep.hh:85
FreeVector force
Definition: ForwardStep.hh:103
std::vector< std::size_t > dofs
Definition: ForwardStep.hh:78
std::vector< double > positions
Definition: ForwardStep.hh:79
std::size_t relativeTo
Definition: ForwardStep.hh:65
FreeVector torque
Definition: ForwardStep.hh:104