type.h
Go to the documentation of this file.
1 /**
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @author Jianfeng Gao ( jianfeng dot gao at kit dot edu )
17  * @date 2022
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #pragma once
23 
24 #include <SimoxUtility/meta/enum/EnumNames.hpp>
25 
27 {
28 
29  enum class ControllerType
30  {
31  // ----------- NjointControllers -----------
32  TSAdm, // TSAdmittance,
33  TSImp, // TSImpedance,
34  TSImpCol, // TSCollisionAvoidanceImpedance,
35  TSAdmCol, // TSCollisionAvoidanceAdmittance,
36  TSMixImpVel, // TSMixedImpedanceVelocity,
37  TSVel,
38  TSMixImpVelCol, // TSCollisionAvoidanceMixedImpedanceVelocity,
39  // KptAdm, // KptAdmittance,
40  // KptImp, // KptImpedance,
41  // ----------- NJointMPControllers -----------
42  TSMPAdm, // TSAdmittanceMP,
43  TSMPImp, // TSImpedanceMP,
44  TSMPImpCol, // TSCollisionAvoidanceImpedanceMP,
45  TSMPMixImpVel, // TSMixedImpedanceVelocityMP,
46  TSMPVel,
47  TSMPMixImpVelCol, // TSCollisionAvoidanceMixedImpedanceVelocityMP,
48  // ----------- NJointMPControllers for specific use-cases ------------------
49  TSMPMixImpVelColWiping, // adapted TSMPMixImpVelCol for wiping task
50  TSMPVelWiping, // adapted TSMPVel for wiping task
51  // KptMPAdm, // KptAdmittanceMP,
52  // KptMPImp, // KptImpedanceMP,
53  // KVILMPImp, // KVILImpedanceMP,
54  // BiKAC,
58  };
59 
60  enum class MPType
61  {
62  taskspace,
63  nullsapce,
64  hand,
65  // The following will probably be supported in the future
66  // hand_ts,
67  // head,
68  // platform
69  };
70 
71 
72  enum class MPStatus
73  {
74  reset,
75  trained,
76  running,
77  paused,
78  finished
79  };
80 
81  inline const simox::meta::EnumNames<MPType> mpTypeToString = {{MPType::taskspace, "taskspace"},
82  {MPType::nullsapce, "nullspace"},
83  {MPType::hand, "hand"}};
84 
85  inline const simox::meta::EnumNames<ControllerType> ControllerTypeShort{
86  {ControllerType::TSAdm, "TSAdm"},
87  {ControllerType::TSImp, "TSImp"},
88  {ControllerType::TSImpCol, "TSImpCol"},
89  {ControllerType::TSMixImpVel, "TSMixImpVel"},
90  {ControllerType::TSVel, "TSVel"},
91  {ControllerType::TSMixImpVelCol, "TSMixImpVelCol"},
92  // {ControllerType::KptAdmittance, "KeypointAdmittance"},
93  // {ControllerType::KptImpedance, "KeypointImpedance"},
94  {ControllerType::TSMPAdm, "TSMPAdm"},
95  {ControllerType::TSMPImp, "TSMPImp"},
96  {ControllerType::TSMPImpCol, "TSMPImpCol"},
97  {ControllerType::TSMPMixImpVel, "TSMPMixImpVel"},
98  {ControllerType::TSMPVel, "TSMPVel"},
99  {ControllerType::TSMPMixImpVelCol, "TSMPMixImpVelCol"},
100  {ControllerType::TSMPMixImpVelColWiping, "TSMPMixImpVelColWiping"},
101  {ControllerType::TSMPVelWiping, "TSMPVelWiping"},
102  // {ControllerType::KptAdmittanceMP, "KeypointAdmittanceMP"},
103  // {ControllerType::KptImpedanceMP, "KeypointImpedanceMP"},
104  // {ControllerType::KVILImpedanceMP, "KVILImpedanceMP"},
105  // {ControllerType::BiKAC, "BiKAC"},
106  {ControllerType::QPWholeBodyImpedance, "QPWholeBodyImpedance"},
107  {ControllerType::QPWholeBodyVelocity, "QPWholeBodyVelocity"},
108  {ControllerType::WholeBodyTrajectoryController, "WholeBodyTrajectoryController"}};
109 
110 
111  inline const simox::meta::EnumNames<ControllerType> ControllerTypeNames{
112  {ControllerType::TSAdm, "NJointTaskspaceAdmittanceController"},
113  {ControllerType::TSImp, "NJointTaskspaceImpedanceController"},
114  {ControllerType::TSImpCol, "NJointTaskspaceCollisionAvoidanceImpedanceController"},
115  {ControllerType::TSMixImpVel, "NJointTaskspaceMixedImpedanceVelocityController"},
116  {ControllerType::TSVel, "NJointTaskspaceVelocityController"},
118  "NJointTaskspaceCollisionAvoidanceMixedImpedanceVelocityController"},
119  // {ControllerType::KptAdmittance, "NJointKeypointsAdmittanceController"},
120  // {ControllerType::KptImpedance, "KeypointImpedance"},
121  {ControllerType::TSMPAdm, "NJointTSAdmittanceMPController"},
122  {ControllerType::TSMPImp, "NJointTSImpedanceMPController"},
123  {ControllerType::TSMPImpCol, "NJointTSCollisionAvoidanceImpedanceMPController"},
124  {ControllerType::TSMPMixImpVel, "NJointTSMixedImpedanceVelocityMPController"},
125  {ControllerType::TSMPVel, "NJointTSVelocityMPController"},
126  {ControllerType::TSMPMixImpVelCol, "NJointTSCollisionAvoidanceMixedImpedanceVelocityMP"},
127  {ControllerType::TSMPMixImpVelColWiping, "NJointWipingMixImpVelColMPController"},
128  {ControllerType::TSMPVelWiping, "NJointWipingVelMPController"},
129  // {ControllerType::KptAdmittanceMP, "NJointKeypointsAdmittanceMPController"},
130  // {ControllerType::KptImpedanceMP, "NJointKeypointsImpedanceMPController"},
131  // {ControllerType::BiKAC, "NJointBiKAC"},
132  // {ControllerType::KVILImpedanceMP, "NJointKVILImpedanceMPController"},
133  {ControllerType::WholeBodyTrajectoryController, "NJointWholeBodyTrajectoryController"}};
134 
135 } // namespace armarx::control::common
armarx::control::common::ControllerType::TSImp
@ TSImp
armarx::control::common::MPStatus::paused
@ paused
armarx::control::common::ControllerType::QPWholeBodyImpedance
@ QPWholeBodyImpedance
armarx::control::common::MPStatus::finished
@ finished
armarx::control::common::ControllerType::TSMPVelWiping
@ TSMPVelWiping
armarx::control::common::ControllerType::TSMPMixImpVel
@ TSMPMixImpVel
armarx::control::common::ControllerType::TSAdm
@ TSAdm
armarx::control::common::ControllerType::WholeBodyTrajectoryController
@ WholeBodyTrajectoryController
armarx::control::common
This file is part of ArmarX.
Definition: aron_conversions.cpp:29
armarx::control::common::MPType::nullsapce
@ nullsapce
armarx::control::common::ControllerTypeNames
const simox::meta::EnumNames< ControllerType > ControllerTypeNames
Definition: type.h:111
armarx::control::common::ControllerType::QPWholeBodyVelocity
@ QPWholeBodyVelocity
armarx::control::common::ControllerType::TSMPMixImpVelCol
@ TSMPMixImpVelCol
armarx::control::common::ControllerType::TSMixImpVelCol
@ TSMixImpVelCol
armarx::control::common::ControllerType::TSMixImpVel
@ TSMixImpVel
armarx::control::common::mpTypeToString
const simox::meta::EnumNames< MPType > mpTypeToString
Definition: type.h:81
armarx::control::common::MPType
MPType
Definition: type.h:60
armarx::control::common::ControllerType::TSVel
@ TSVel
armarx::control::common::ControllerTypeShort
const simox::meta::EnumNames< ControllerType > ControllerTypeShort
Definition: type.h:85
armarx::control::common::ControllerType::TSMPMixImpVelColWiping
@ TSMPMixImpVelColWiping
armarx::control::common::ControllerType::TSMPImp
@ TSMPImp
armarx::control::common::MPType::hand
@ hand
armarx::control::common::ControllerType::TSMPAdm
@ TSMPAdm
armarx::control::common::ControllerType::TSMPVel
@ TSMPVel
armarx::control::common::MPStatus::trained
@ trained
armarx::control::common::ControllerType
ControllerType
Definition: type.h:29
armarx::control::common::MPStatus
MPStatus
Definition: type.h:72
armarx::control::common::ControllerType::TSAdmCol
@ TSAdmCol
armarx::control::common::ControllerType::TSImpCol
@ TSImpCol
armarx::control::common::ControllerType::TSMPImpCol
@ TSMPImpCol
armarx::control::common::MPType::taskspace
@ taskspace
armarx::control::common::MPStatus::reset
@ reset
armarx::control::common::MPStatus::running
@ running