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