ActionComposed.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2020 IIT-HHCM
3  * Author: Davide Torielli
4  * email: davide.torielli@iit.it
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 #ifndef __ROSEE_ACTIONCOMPOSED_H
20 #define __ROSEE_ACTIONCOMPOSED_H
21 
22 #include <vector>
23 #include <string>
25 #include <end_effector/Utils.h>
26 #include <yaml-cpp/yaml.h>
27 #include <memory>
28 
29 
30 namespace ROSEE{
31 
45 {
46 
47 public:
48  typedef std::shared_ptr<ActionComposed> Ptr;
49  typedef std::shared_ptr<const ActionComposed> ConstPtr;
50 
52  ActionComposed(std::string name);
53  ActionComposed(std::string name, bool independent);
56  ActionComposed (const ActionComposed &other);
57 
58 
63  unsigned int numberOfInnerActions () const;
64 
69  bool isIndependent () const;
70 
75  std::vector <std::string> getInnerActionsNames() const ;
76 
80  virtual void print () const override;
81 
86  virtual void emitYaml ( YAML::Emitter& out) const override;
87 
93  virtual bool fillFromYaml( YAML::const_iterator yamlIt ) override;
94 
103  virtual bool sumAction ( ROSEE::Action::Ptr action , double jointPosScaleFactor = 1.0, unsigned int jointPosIndex = 0 );
104 
110  bool empty();
111 
112 protected:
113  std::vector < std::string > innerActionsNames;
114  unsigned int nInnerActions;
115 
116  bool independent; //true if each primitive must set different joint states
117 
118  bool checkIndependency ( ROSEE::Action::Ptr action );
119 
120 
121 };
122 }
123 
124 #endif // __ROSEE_ACTIONCOMPOSED_H
std::string name
Definition: Action.h:146
std::vector< std::string > innerActionsNames
std::shared_ptr< ActionComposed > Ptr
unsigned int numberOfInnerActions() const
bool empty()
Check if the action composed is empty.
A ActionComposed, which is formed by one or more Primitives (or even other composed). It is useful for example to create an action that grasp only with bending the tips (e.g. to take a dish from above) If the ActionComposed has the boolean value independent to true, it means that include indipendent sub-actions, so, each joint is used by at maximum by ONLY ONE of the sub-action inside. In this case the jointsInvolvedCount will contain only 0 or 1 values. If the ActionComposed is not independent, each joint position is calculated as the mean of all the joint position of the contained sub-actions that uses that joint. So each mean can include different primitives, so we used the jointsInvolvedCount vector to store the number of sub action that use each joint.
unsigned int nInnerActions
virtual void print() const override
Print info about this action (name, jointpos, inner actions names, and other)
Class to handle a generic, simple action. Differently from other class, this is easily creable manual...
Definition: ActionGeneric.h:32
std::shared_ptr< const ActionComposed > ConstPtr
bool checkIndependency(ROSEE::Action::Ptr action)
bool isIndependent() const
virtual bool sumAction(ROSEE::Action::Ptr action, double jointPosScaleFactor=1.0, unsigned int jointPosIndex=0)
Function to add another action to this one.
std::shared_ptr< Action > Ptr
Definition: Action.h:75
std::vector< std::string > getInnerActionsNames() const
virtual bool fillFromYaml(YAML::const_iterator yamlIt) override
Fill the internal data with infos taken from yaml file.
virtual void emitYaml(YAML::Emitter &out) const override
Emit info in a file with yaml format.


end-effector
Author(s): Luca Muratore , Davide Torielli , Liana Bertoni
autogenerated on Tue Apr 5 2022 02:57:52