PlatformUnitSimulation.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5  *
6  * ArmarX is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * ArmarX is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * @package ArmarXCore::units
19  * @author Christian Boege (boege dot at kit dot edu)
20  * @date 2011
21  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22  * GNU General Public License
23  */
24 
25 #pragma once
26 
27 #include <string>
28 
29 #include <IceUtil/Time.h>
30 
33 
34 #include <RobotAPI/interface/core/RobotState.h>
36 
37 #include "PlatformUnit.h"
38 
39 namespace armarx
40 {
41  /**
42  * \class PlatformUnitSimulation
43  * \brief Simulates a robot platform.
44  * \ingroup RobotAPI-SensorActorUnits-simulation
45  */
46  class PlatformUnitSimulation : virtual public PlatformUnit
47  {
48  public:
49  // inherited from Component
50  std::string
51  getDefaultName() const override
52  {
53  return "PlatformUnitSimulation";
54  }
55 
56  void onInitPlatformUnit() override;
57  void onStartPlatformUnit() override;
58  void onStopPlatformUnit() override;
59  void onExitPlatformUnit() override;
60 
61  void simulationFunction();
62 
63  // proxy implementation
64  void moveTo(Ice::Float targetPlatformPositionX,
65  Ice::Float targetPlatformPositionY,
66  Ice::Float targetPlatformRotation,
69  const Ice::Current& c = Ice::emptyCurrent) override;
70 
71  /**
72  * \warning Not yet implemented!
73  */
74  void move(float targetPlatformVelocityX,
75  float targetPlatformVelocityY,
76  float targetPlatformVelocityRotation,
77  const Ice::Current& c = Ice::emptyCurrent) override;
78 
79  void moveRelative(float targetPlatformOffsetX,
80  float targetPlatformOffsetY,
81  float targetPlatformOffsetRotation,
82  float positionalAccuracy,
84  const Ice::Current& c = Ice::emptyCurrent) override;
85  void setMaxVelocities(float positionalVelocity,
86  float orientaionalVelocity,
87  const Ice::Current& c = Ice::emptyCurrent) override;
88  void stopPlatform(const Ice::Current& c = Ice::emptyCurrent) override;
89  /**
90  * \see PropertyUser::createPropertyDefinitions()
91  */
93 
94  protected:
95  std::mutex currentPoseMutex;
98 
100  {
104  } platformMode;
105 
112 
118 
121 
122  std::string referenceFrame;
124  Eigen::Vector2f currentTranslationVelocity = Eigen::Vector2f::Zero();
125 
127 
128 
129  private:
130  Eigen::Matrix4f currentPlatformPose() const;
131 
132  RobotStateComponentInterfacePrx robotStateComponent;
133 
134  std::string agentName;
135  std::string robotRootFrame;
136  };
137 } // namespace armarx
armarx::PlatformUnitSimulation::intervalMs
int intervalMs
Definition: PlatformUnitSimulation.h:97
armarx::PlatformUnitSimulation::currentRotation
::Ice::Float currentRotation
Definition: PlatformUnitSimulation.h:111
armarx::VariantType::Float
const VariantTypeId Float
Definition: Variant.h:919
armarx::PlatformUnitSimulation::targetRotation
::Ice::Float targetRotation
Definition: PlatformUnitSimulation.h:110
armarx::PlatformUnitSimulation::linearVelocityY
::Ice::Float linearVelocityY
Definition: PlatformUnitSimulation.h:114
armarx::PlatformUnitSimulation::eVelocityControl
@ eVelocityControl
Definition: PlatformUnitSimulation.h:103
armarx::PlatformUnitSimulation::velPID
MultiDimPIDControllerPtr velPID
Definition: PlatformUnitSimulation.h:123
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
armarx::PlatformUnitSimulation::onExitPlatformUnit
void onExitPlatformUnit() override
Definition: PlatformUnitSimulation.cpp:153
armarx::PlatformUnitSimulation::currentTranslationVelocity
Eigen::Vector2f currentTranslationVelocity
Definition: PlatformUnitSimulation.h:124
armarx::PlatformUnitSimulation::angularVelocity
::Ice::Float angularVelocity
Definition: PlatformUnitSimulation.h:116
PeriodicTask.h
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
armarx::PlatformUnitSimulation::platformMode
enum armarx::PlatformUnitSimulation::PlatformMode platformMode
armarx::PlatformUnitSimulation::maxLinearVelocity
::Ice::Float maxLinearVelocity
Definition: PlatformUnitSimulation.h:115
armarx::PlatformUnit
The PlatformUnit class.
Definition: PlatformUnit.h:69
armarx::PlatformUnitSimulation::currentPositionY
::Ice::Float currentPositionY
Definition: PlatformUnitSimulation.h:109
armarx::PlatformUnitSimulation::moveTo
void moveTo(Ice::Float targetPlatformPositionX, Ice::Float targetPlatformPositionY, Ice::Float targetPlatformRotation, Ice::Float positionalAccuracy, Ice::Float orientationalAccuracy, const Ice::Current &c=Ice::emptyCurrent) override
Definition: PlatformUnitSimulation.cpp:286
armarx::PlatformUnitSimulation::PlatformMode
PlatformMode
Definition: PlatformUnitSimulation.h:99
armarx::MultiDimPIDControllerPtr
std::shared_ptr< MultiDimPIDControllerTemplate<> > MultiDimPIDControllerPtr
Definition: MultiDimPIDController.h:271
armarx::PlatformUnitSimulation::currentPositionX
::Ice::Float currentPositionX
Definition: PlatformUnitSimulation.h:108
armarx::PlatformUnitSimulation::linearVelocityX
::Ice::Float linearVelocityX
Definition: PlatformUnitSimulation.h:113
armarx::PlatformUnitSimulation::targetPositionX
::Ice::Float targetPositionX
Definition: PlatformUnitSimulation.h:106
armarx::PlatformUnitSimulation::onInitPlatformUnit
void onInitPlatformUnit() override
Definition: PlatformUnitSimulation.cpp:81
armarx::PlatformUnitSimulation::ePositionControl
@ ePositionControl
Definition: PlatformUnitSimulation.h:102
armarx::PlatformUnitSimulation
Simulates a robot platform.
Definition: PlatformUnitSimulation.h:46
armarx::PlatformUnitSimulation::positionalAccuracy
::Ice::Float positionalAccuracy
Definition: PlatformUnitSimulation.h:119
armarx::PlatformUnitSimulation::simulationTask
PeriodicTask< PlatformUnitSimulation >::pointer_type simulationTask
Definition: PlatformUnitSimulation.h:126
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
armarx::PlatformUnitSimulation::orientationalAccuracy
::Ice::Float orientationalAccuracy
Definition: PlatformUnitSimulation.h:120
armarx::PlatformUnitSimulation::targetPositionY
::Ice::Float targetPositionY
Definition: PlatformUnitSimulation.h:107
PIDController.h
armarx::PlatformUnitSimulation::move
void move(float targetPlatformVelocityX, float targetPlatformVelocityY, float targetPlatformVelocityRotation, const Ice::Current &c=Ice::emptyCurrent) override
Definition: PlatformUnitSimulation.cpp:318
armarx::PlatformUnitSimulation::currentPoseMutex
std::mutex currentPoseMutex
Definition: PlatformUnitSimulation.h:95
armarx::PlatformUnitSimulation::lastExecutionTime
IceUtil::Time lastExecutionTime
Definition: PlatformUnitSimulation.h:96
PlatformUnit.h
armarx::PlatformUnitSimulation::eUndefined
@ eUndefined
Definition: PlatformUnitSimulation.h:101
IceUtil::Handle
Definition: forward_declarations.h:30
IceInternal::ProxyHandle<::IceProxy::armarx::RobotStateComponentInterface >
armarx::PlatformUnitSimulation::maxAngularVelocity
::Ice::Float maxAngularVelocity
Definition: PlatformUnitSimulation.h:117
armarx::PlatformUnitSimulation::posPID
MultiDimPIDControllerPtr posPID
Definition: PlatformUnitSimulation.h:123
armarx::PlatformUnitSimulation::getDefaultName
std::string getDefaultName() const override
Retrieve default name of component.
Definition: PlatformUnitSimulation.h:51
armarx::PlatformUnitSimulation::onStartPlatformUnit
void onStartPlatformUnit() override
Definition: PlatformUnitSimulation.cpp:126
armarx::PlatformUnitSimulation::stopPlatform
void stopPlatform(const Ice::Current &c=Ice::emptyCurrent) override
Definition: PlatformUnitSimulation.cpp:366
armarx::PlatformUnitSimulation::createPropertyDefinitions
PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: PlatformUnitSimulation.cpp:44
armarx::PlatformUnitSimulation::simulationFunction
void simulationFunction()
Definition: PlatformUnitSimulation.cpp:162
armarx::PlatformUnitSimulation::moveRelative
void moveRelative(float targetPlatformOffsetX, float targetPlatformOffsetY, float targetPlatformOffsetRotation, float positionalAccuracy, float orientationalAccuracy, const Ice::Current &c=Ice::emptyCurrent) override
Definition: PlatformUnitSimulation.cpp:334
armarx::PlatformUnitSimulation::onStopPlatformUnit
void onStopPlatformUnit() override
Definition: PlatformUnitSimulation.cpp:144
armarx::PlatformUnitSimulation::referenceFrame
std::string referenceFrame
Definition: PlatformUnitSimulation.h:122
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::PlatformUnitSimulation::setMaxVelocities
void setMaxVelocities(float positionalVelocity, float orientaionalVelocity, const Ice::Current &c=Ice::emptyCurrent) override
Definition: PlatformUnitSimulation.cpp:356
ImportExportComponent.h