mmm_body_68.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 Fabian Reister ( fabian dot reister 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/color/Color.h>
25 #include <SimoxUtility/meta/enum/EnumNames.hpp>
26 
27 
29 {
30  inline const std::string ModelId = "MMM_BODY_68";
31 
32  enum class Joints
33  {
34  HeadTip,
38  Neck,
39 
41  EyeLeft,
43  EyeRight,
44 
47  ElbowLeft,
48  WristLeft,
49 
52  ElbowRight,
53  WristRight,
54 
58  //
62  //
66  //
71  //
76  //
78 
82  //
86  //
90  //
95  //
100  //
101  HandTCPRight,
102 
103  Torso,
105  Pelvis,
106 
107  HipLeft,
108  KneeLeft,
109  AnkleLeft,
110 
111  HipRight,
112  KneeRight,
113  AnkleRight,
114 
115  HeelLeft,
116  ToeLeft,
119 
120  HeelRight,
121  ToeRight,
124  };
125 
126  inline const simox::meta::EnumNames<Joints> JointNames{
127  {Joints::HeadTip, "HeadSegment_joint"},
128  {Joints::MidHeadSegment_joint, "MidHeadSegment_joint"},
129  // Upper and lower neck as defined in the MMM Model
130  {Joints::NeckAnatomicallyUpper, "BUNsegment_joint"},
131  {Joints::NeckAnatomicallyLower, "BLNsegment_joint"},
132  // to comply with other models, like K4ABT_BODY_32 and BODY_25, use the mid
133  // between the left and right hip as "Neck"
134  {Joints::Neck, "collarSegment_joint"},
135 
136  {Joints::EyeLeftProjected, "LeftEyeSegmentX_joint"},
137  {Joints::EyeLeft, "LeftEyeSegmentY_joint"},
138  {Joints::EyeRightProjected, "RightEyeSegmentX_joint"},
139  {Joints::EyeRight, "RightEyeSegmentY_joint"},
140 
141  {Joints::ShoulderLeft, "LSsegment_joint"},
142  {Joints::ClavicleLeft, "LSCsegment_joint"},
143  {Joints::ElbowLeft, "LEsegment_joint"},
144  {Joints::WristLeft, "LWsegment_joint"},
145 
146  {Joints::ShoulderRight, "RSsegment_joint"},
147  {Joints::ClavicleRight, "RSCsegment_joint"},
148  {Joints::ElbowRight, "REsegment_joint"},
149  {Joints::WristRight, "RWsegment_joint"},
150 
151  {Joints::ThumbCarpometacarpalLeft, "LeftFingerJoint11z_joint"},
152  {Joints::ThumbMetacarpophalangealLeft, "LeftFingerJoint12y_joint"},
153  {Joints::ThumbDistalInterphalangealLeft, "LeftFingerJoint13z_joint"},
154  //
155  {Joints::IndexMetacarpophalangealLeft, "LeftFingerJoint21y_joint"},
156  {Joints::IndexProximalInterphalangealLeft, "LeftFingerJoint22y_joint"},
157  {Joints::IndexDistalInterphalangealLeft, "LeftFingerJoint23y_joint"},
158  //
159  {Joints::MiddleMetacarpophalangealLeft, "LeftFingerJoint31y_joint"},
160  {Joints::MiddleProximalInterphalangealLeft, "LeftFingerJoint32y_joint"},
161  {Joints::MiddleDistalInterphalangealLeft, "LeftFingerJoint33y_joint"},
162  //
163  {Joints::RingFingersCarpometacarpalLeft, "LeftFingerJoint40y_joint"},
164  {Joints::RingMetacarpophalangealLeft, "LeftFingerJoint41y_joint"},
165  {Joints::RingProximalInterphalangealLeft, "LeftFingerJoint42y_joint"},
166  {Joints::RingDistalInterphalangealLeft, "LeftFingerJoint43y_joint"},
167  //
168  {Joints::PinkyFingersCarpometacarpalLeft, "LeftFingerJoint50y_joint"},
169  {Joints::PinkyMetacarpophalangealLeft, "LeftFingerJoint51y_joint"},
170  {Joints::PinkyProximalInterphalangealLeft, "LeftFingerJoint52y_joint"},
171  {Joints::PinkyDistalInterphalangealLeft, "LeftFingerJoint53y_joint"},
172  //
173  {Joints::HandTCPLeft, "Hand L TCP"},
174 
175  {Joints::ThumbCarpometacarpalRight, "RightFingerJoint11z_joint"},
176  {Joints::ThumbMetacarpophalangealRight, "RightFingerJoint12y_joint"},
177  {Joints::ThumbDistalInterphalangealRight, "RightFingerJoint13z_joint"},
178  //
179  {Joints::IndexMetacarpophalangealRight, "RightFingerJoint21y_joint"},
180  {Joints::IndexProximalInterphalangealRight, "RightFingerJoint22y_joint"},
181  {Joints::IndexDistalInterphalangealRight, "RightFingerJoint23y_joint"},
182  //
183  {Joints::MiddleMetacarpophalangealRight, "RightFingerJoint31y_joint"},
184  {Joints::MiddleProximalInterphalangealRight, "RightFingerJoint32y_joint"},
185  {Joints::MiddleDistalInterphalangealRight, "RightFingerJoint33y_joint"},
186  //
187  {Joints::RingFingersCarpometacarpalRight, "RightFingerJoint40y_joint"},
188  {Joints::RingMetacarpophalangealRight, "RightFingerJoint41y_joint"},
189  {Joints::RingProximalInterphalangealRight, "RightFingerJoint42y_joint"},
190  {Joints::RingDistalInterphalangealRight, "RightFingerJoint43y_joint"},
191  //
192  {Joints::PinkyFingersCarpometacarpalRight, "RightFingerJoint50y_joint"},
193  {Joints::PinkyMetacarpophalangealRight, "RightFingerJoint51y_joint"},
194  {Joints::PinkyProximalInterphalangealRight, "RightFingerJoint52y_joint"},
195  {Joints::PinkyDistalInterphalangealRight, "RightFingerJoint53y_joint"},
196  //
197  {Joints::HandTCPRight, "Hand R TCP"},
198 
199  {Joints::Torso, "BTSegment_joint"},
200  // Pelvis as defined in the MMM Model
201  {Joints::PelvisAnatomically, "BPSegment_joint"},
202  // to comply with other models, like K4ABT_BODY_32 and BODY_25, that use the mid
203  // between the left and right hip as "Pelvis"
204  {Joints::Pelvis, "root_joint"},
205 
206  {Joints::HipLeft, "LHsegment_joint"},
207  {Joints::KneeLeft, "LKsegment_joint"},
208  {Joints::AnkleLeft, "LAsegment_joint"},
209 
210  {Joints::HipRight, "RHsegment_joint"},
211  {Joints::KneeRight, "RKsegment_joint"},
212  {Joints::AnkleRight, "RAsegment_joint"},
213 
214  {Joints::HeelLeft, "LeftFootHeight_joint"},
215  {Joints::ToeLeft, "LeftFootLength_joint"},
216  {Joints::FootInversionLeft, "LMrot_joint"}, // ?
217  {Joints::FootToeFlexionLeft, "LFx_joint"}, // ?
218 
219  {Joints::HeelRight, "RightFootHeight_joint"},
220  {Joints::ToeRight, "RightFootLength_joint"},
221  {Joints::FootInversionRight, "RMrot_joint"}, // ?
222  {Joints::FootToeFlexionRight, "RFx_joint"}, // ?
223  };
224 
225 
226  inline const std::vector<std::pair<Joints, Joints>> Segments = {
235 
240 
245 
249  //
253  //
257  //
262  //
267  //
268  //{Joints::WristLeft, Joints::HandTCPLeft},
269 
273  //
277  //
281  //
286  //
291  //
292  //{Joints::WristRight, Joints::HandTCPRight},
293 
297 
301 
305 
310 
315  };
316 
317 
318  inline const std::map<Joints, simox::Color> Colors = {
319  {Joints::HeadTip, {0.68f, 0.51f, 0.33f}},
320  {Joints::MidHeadSegment_joint, {0.68f, 0.51f, 0.33f}},
321  {Joints::NeckAnatomicallyUpper, {0.68f, 0.51f, 0.33f}},
322  {Joints::NeckAnatomicallyLower, {0.68f, 0.51f, 0.33f}},
323  {Joints::Neck, {0.68f, 0.51f, 0.33f}},
324  {Joints::EyeLeftProjected, {0.68f, 0.51f, 0.33f}},
325  {Joints::EyeLeft, {0.68f, 0.51f, 0.33f}},
326  {Joints::EyeRightProjected, {0.68f, 0.51f, 0.33f}},
327  {Joints::EyeRight, {0.68f, 0.51f, 0.33f}},
328  {Joints::ShoulderLeft, {0.68f, 0.51f, 0.33f}},
329  {Joints::ClavicleLeft, {0.68f, 0.51f, 0.33f}},
330  {Joints::ElbowLeft, {0.68f, 0.51f, 0.33f}},
331  {Joints::WristLeft, {0.68f, 0.51f, 0.33f}},
332  {Joints::ShoulderRight, {0.68f, 0.51f, 0.33f}},
333  {Joints::ClavicleRight, {0.68f, 0.51f, 0.33f}},
334  {Joints::ElbowRight, {0.68f, 0.51f, 0.33f}},
335  {Joints::WristRight, {0.68f, 0.51f, 0.33f}},
336  {Joints::ThumbCarpometacarpalLeft, {0.68f, 0.51f, 0.33f}},
337  {Joints::ThumbMetacarpophalangealLeft, {0.68f, 0.51f, 0.33f}},
338  {Joints::ThumbDistalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
339  {Joints::IndexMetacarpophalangealLeft, {0.68f, 0.51f, 0.33f}},
340  {Joints::IndexProximalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
341  {Joints::IndexDistalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
342  {Joints::MiddleMetacarpophalangealLeft, {0.68f, 0.51f, 0.33f}},
343  {Joints::MiddleProximalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
344  {Joints::MiddleDistalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
345  {Joints::RingFingersCarpometacarpalLeft, {0.68f, 0.51f, 0.33f}},
346  {Joints::RingMetacarpophalangealLeft, {0.68f, 0.51f, 0.33f}},
347  {Joints::RingProximalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
348  {Joints::RingDistalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
349  {Joints::PinkyFingersCarpometacarpalLeft, {0.68f, 0.51f, 0.33f}},
350  {Joints::PinkyMetacarpophalangealLeft, {0.68f, 0.51f, 0.33f}},
351  {Joints::PinkyProximalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
352  {Joints::PinkyDistalInterphalangealLeft, {0.68f, 0.51f, 0.33f}},
353  {Joints::HandTCPLeft, {1.f, 1.f, 1.f, 0.25f}},
354  {Joints::ThumbCarpometacarpalRight, {0.68f, 0.51f, 0.33f}},
355  {Joints::ThumbMetacarpophalangealRight, {0.68f, 0.51f, 0.33f}},
356  {Joints::ThumbDistalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
357  {Joints::IndexMetacarpophalangealRight, {0.68f, 0.51f, 0.33f}},
358  {Joints::IndexProximalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
359  {Joints::IndexDistalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
360  {Joints::MiddleMetacarpophalangealRight, {0.68f, 0.51f, 0.33f}},
361  {Joints::MiddleProximalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
362  {Joints::MiddleDistalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
363  {Joints::RingFingersCarpometacarpalRight, {0.68f, 0.51f, 0.33f}},
364  {Joints::RingMetacarpophalangealRight, {0.68f, 0.51f, 0.33f}},
365  {Joints::RingProximalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
366  {Joints::RingDistalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
367  {Joints::PinkyFingersCarpometacarpalRight, {0.68f, 0.51f, 0.33f}},
368  {Joints::PinkyMetacarpophalangealRight, {0.68f, 0.51f, 0.33f}},
369  {Joints::PinkyProximalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
370  {Joints::PinkyDistalInterphalangealRight, {0.68f, 0.51f, 0.33f}},
371  {Joints::HandTCPRight, {1.f, 1.f, 1.f, 0.25f}},
372  {Joints::Torso, {0.68f, 0.51f, 0.33f}},
373  {Joints::PelvisAnatomically, {0.68f, 0.51f, 0.33f}},
374  {Joints::Pelvis, {0.68f, 0.51f, 0.33f}},
375  {Joints::HipLeft, {0.68f, 0.51f, 0.33f}},
376  {Joints::KneeLeft, {0.68f, 0.51f, 0.33f}},
377  {Joints::AnkleLeft, {0.68f, 0.51f, 0.33f}},
378  {Joints::HipRight, {0.68f, 0.51f, 0.33f}},
379  {Joints::KneeRight, {0.68f, 0.51f, 0.33f}},
380  {Joints::AnkleRight, {0.68f, 0.51f, 0.33f}},
381  {Joints::HeelLeft, {0.68f, 0.51f, 0.33f}},
382  {Joints::ToeLeft, {0.68f, 0.51f, 0.33f}},
383  {Joints::FootInversionLeft, {0.68f, 0.51f, 0.33f}},
384  {Joints::FootToeFlexionLeft, {0.68f, 0.51f, 0.33f}},
385  {Joints::HeelRight, {0.68f, 0.51f, 0.33f}},
386  {Joints::ToeRight, {0.68f, 0.51f, 0.33f}},
387  {Joints::FootInversionRight, {0.68f, 0.51f, 0.33f}},
388  {Joints::FootToeFlexionRight, {0.68f, 0.51f, 0.33f}}
389  };
390 
391 } // namespace armarx::human::pose::model::mmm_body_68
armarx::human::pose::model::mmm_body_68::Joints::AnkleRight
@ AnkleRight
armarx::human::pose::model::mmm_body_68::Joints::WristLeft
@ WristLeft
armarx::human::pose::model::mmm_body_68::Joints::RingProximalInterphalangealRight
@ RingProximalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints::PinkyFingersCarpometacarpalLeft
@ PinkyFingersCarpometacarpalLeft
armarx::human::pose::model::mmm_body_68::Joints::Torso
@ Torso
armarx::human::pose::model::mmm_body_68::Joints::ThumbDistalInterphalangealLeft
@ ThumbDistalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Colors
const std::map< Joints, simox::Color > Colors
Definition: mmm_body_68.h:318
armarx::human::pose::model::mmm_body_68::Joints::KneeLeft
@ KneeLeft
armarx::human::pose::model::mmm_body_68::Joints::FootToeFlexionRight
@ FootToeFlexionRight
armarx::human::pose::model::mmm_body_68::Joints::NeckAnatomicallyLower
@ NeckAnatomicallyLower
armarx::human::pose::model::mmm_body_68::Joints::PinkyMetacarpophalangealLeft
@ PinkyMetacarpophalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::IndexDistalInterphalangealLeft
@ IndexDistalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::ClavicleLeft
@ ClavicleLeft
armarx::human::pose::model::mmm_body_68::Joints::PinkyMetacarpophalangealRight
@ PinkyMetacarpophalangealRight
armarx::human::pose::model::mmm_body_68::Joints::MiddleDistalInterphalangealLeft
@ MiddleDistalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::ThumbCarpometacarpalRight
@ ThumbCarpometacarpalRight
armarx::human::pose::model::mmm_body_68::Joints::RingFingersCarpometacarpalRight
@ RingFingersCarpometacarpalRight
armarx::human::pose::model::mmm_body_68::Joints::Neck
@ Neck
armarx::human::pose::model::mmm_body_68::Joints::ShoulderRight
@ ShoulderRight
armarx::human::pose::model::mmm_body_68::Joints::EyeLeft
@ EyeLeft
armarx::human::pose::model::mmm_body_68::Joints::KneeRight
@ KneeRight
armarx::human::pose::model::mmm_body_68::Joints::EyeRight
@ EyeRight
armarx::human::pose::model::mmm_body_68
This file is part of ArmarX.
Definition: mmm_body_68.h:28
armarx::human::pose::model::mmm_body_68::Joints::RingMetacarpophalangealRight
@ RingMetacarpophalangealRight
armarx::human::pose::model::mmm_body_68::Joints::PinkyProximalInterphalangealLeft
@ PinkyProximalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::HandTCPLeft
@ HandTCPLeft
armarx::human::pose::model::mmm_body_68::Joints::RingMetacarpophalangealLeft
@ RingMetacarpophalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::MiddleProximalInterphalangealLeft
@ MiddleProximalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::IndexProximalInterphalangealRight
@ IndexProximalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints
Joints
Definition: mmm_body_68.h:32
armarx::human::pose::model::mmm_body_68::Joints::ThumbCarpometacarpalLeft
@ ThumbCarpometacarpalLeft
armarx::human::pose::model::mmm_body_68::Joints::EyeLeftProjected
@ EyeLeftProjected
armarx::human::pose::model::mmm_body_68::Joints::IndexMetacarpophalangealRight
@ IndexMetacarpophalangealRight
armarx::human::pose::model::mmm_body_68::Joints::PinkyProximalInterphalangealRight
@ PinkyProximalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints::MiddleDistalInterphalangealRight
@ MiddleDistalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints::Pelvis
@ Pelvis
armarx::human::pose::model::mmm_body_68::Joints::RingFingersCarpometacarpalLeft
@ RingFingersCarpometacarpalLeft
armarx::human::pose::model::mmm_body_68::Joints::HandTCPRight
@ HandTCPRight
armarx::human::pose::model::mmm_body_68::JointNames
const simox::meta::EnumNames< Joints > JointNames
Definition: mmm_body_68.h:126
armarx::human::pose::model::mmm_body_68::Joints::ThumbMetacarpophalangealLeft
@ ThumbMetacarpophalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::FootInversionRight
@ FootInversionRight
armarx::human::pose::model::mmm_body_68::Joints::FootInversionLeft
@ FootInversionLeft
armarx::human::pose::model::mmm_body_68::Joints::MiddleMetacarpophalangealRight
@ MiddleMetacarpophalangealRight
armarx::human::pose::model::mmm_body_68::Joints::ToeLeft
@ ToeLeft
armarx::human::pose::model::mmm_body_68::Joints::HeadTip
@ HeadTip
armarx::human::pose::model::mmm_body_68::Joints::MiddleMetacarpophalangealLeft
@ MiddleMetacarpophalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::HeelRight
@ HeelRight
armarx::human::pose::model::mmm_body_68::Joints::ToeRight
@ ToeRight
armarx::human::pose::model::mmm_body_68::Joints::IndexProximalInterphalangealLeft
@ IndexProximalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::ThumbMetacarpophalangealRight
@ ThumbMetacarpophalangealRight
armarx::human::pose::model::mmm_body_68::Joints::MiddleProximalInterphalangealRight
@ MiddleProximalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints::AnkleLeft
@ AnkleLeft
armarx::human::pose::model::mmm_body_68::Joints::RingDistalInterphalangealLeft
@ RingDistalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::PinkyDistalInterphalangealLeft
@ PinkyDistalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::MidHeadSegment_joint
@ MidHeadSegment_joint
armarx::human::pose::model::mmm_body_68::Joints::FootToeFlexionLeft
@ FootToeFlexionLeft
armarx::human::pose::model::mmm_body_68::Joints::WristRight
@ WristRight
armarx::human::pose::model::mmm_body_68::Joints::EyeRightProjected
@ EyeRightProjected
armarx::human::pose::model::mmm_body_68::Segments
const std::vector< std::pair< Joints, Joints > > Segments
Definition: mmm_body_68.h:226
armarx::human::pose::model::mmm_body_68::Joints::PelvisAnatomically
@ PelvisAnatomically
armarx::human::pose::model::mmm_body_68::Joints::NeckAnatomicallyUpper
@ NeckAnatomicallyUpper
armarx::human::pose::model::mmm_body_68::Joints::PinkyFingersCarpometacarpalRight
@ PinkyFingersCarpometacarpalRight
armarx::human::pose::model::mmm_body_68::Joints::IndexMetacarpophalangealLeft
@ IndexMetacarpophalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::RingProximalInterphalangealLeft
@ RingProximalInterphalangealLeft
armarx::human::pose::model::mmm_body_68::Joints::HeelLeft
@ HeelLeft
armarx::human::pose::model::mmm_body_68::Joints::PinkyDistalInterphalangealRight
@ PinkyDistalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints::RingDistalInterphalangealRight
@ RingDistalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints::ElbowLeft
@ ElbowLeft
armarx::human::pose::model::mmm_body_68::Joints::ShoulderLeft
@ ShoulderLeft
armarx::human::pose::model::mmm_body_68::Joints::HipLeft
@ HipLeft
armarx::human::pose::model::mmm_body_68::Joints::ThumbDistalInterphalangealRight
@ ThumbDistalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints::ClavicleRight
@ ClavicleRight
armarx::human::pose::model::mmm_body_68::Joints::IndexDistalInterphalangealRight
@ IndexDistalInterphalangealRight
armarx::human::pose::model::mmm_body_68::Joints::HipRight
@ HipRight
armarx::human::pose::model::mmm_body_68::ModelId
const std::string ModelId
Definition: mmm_body_68.h:30
armarx::human::pose::model::mmm_body_68::Joints::ElbowRight
@ ElbowRight