NimbRo ROS Soccer Package
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
wak_plot.h
1 // Walk and kick: Plotter variable definitions
2 // Author: Philipp Allgeuer <pallgeuer@ais.uni-bonn.de>
3 
4  // Ensure header is only included once
5 #ifndef WAK_PLOT_H
6 #define WAK_PLOT_H
7 
8 // Includes
9 #include <plot_msgs/plot_manager.h>
10 #include <ros/time.h>
11 #include <string>
12 
13 // Defines - Plot variable scalers
14 #define PMSCALE_CYCLE 1000 // Scaler for the cycle plot variables
15 #define PMSCALE_HALT 0.9 // Scaler for the halt plot variables
16 #define PMSCALE_KICK 0.8 // Scaler for the kick plot variables
17 #define PMSCALE_DRIBBLE 1.0 // Scaler for the dribble plot variables
18 #define PMSCALE_HAVE 1.1 // Scaler for the have plot variables
19 #define PMSCALE_STABLE 0.8 // Scaler for the stable plot variables
20 #define PMSCALE_HAVETARGET 1.2 // Scaler for the have target plot variables
21 #define PMSCALE_OKTOKDB 0.7 // Scaler for the ok to kick/dribble plot variables
22 #define PMSCALE_STILLOKTOKDB 0.65 // Scaler for the still ok to kick/dribble plot variables
23 #define PMSCALE_COULDKDB 0.6 // Scaler for the could kick/dribble plot variables
24 #define PMSCALE_ALLOWKDB 0.5 // Scaler for the allow kick/dribble plot variables
25 #define PMSCALE_BALLACT 0.4 // Scaler for the ball action plot variables
26 #define PMSCALE_WTGPBOOL 0.95 // Scaler for the walk to global pose boolean plot variables
27 #define PMSCALE_WALK 0.85 // Scaler for the walk plot variables
28 #define PMSCALE_MOTION 0.75 // Scaler for the motion plot variables
29 #define PMSCALE_FOOTSEL 0.45 // Scaler for the foot selection plot variables
30 #define PMSCALE_LOCK 0.35 // Scaler for the lock plot variables
31 #define PMSCALE_FACINGOK 1.1 // Scaler for the facing ok plot variables
32 #define PMSCALE_FOOTOK 1.2 // Scaler for the foot ok plot variables
33 #define PMSCALE_ARRIVED 1.25 // Scaler for the arrived plot variables
34 #define PMSCALE_ISRESUMED 1.30 // Scaler for the is resumed plot variables
35 #define PMSCALE_COUNTER 0.01 // Scaler for the counter plot variables
36 #define PMSCALE_KICKOFF 0.8 // Scaler for the kickoff plot variables
37 #define PMSCALE_DROPBALL 0.9 // Scaler for the drop ball plot variables
38 #define PMSCALE_COMMSOK 1.15 // Scaler for the communications ok plot variables
39 #define PMSCALE_COLOR 0.85 // Scaler for the color plot variables
40 #define PMSCALE_PENALTY 0.95 // Scaler for the penalty plot variables
41 #define PMSCALE_LEGAL 0.75 // Scaler for the legal plot variables
42 
43 // Walk and kick namespace
44 namespace walk_and_kick
45 {
46  // Walk and kick plot manager IDs enumeration
47  enum WAKPMIDS
48  {
49  PM_WAK_TRUEDT = 0,
50  PM_WAK_CYCLE,
51 
52  PM_RI_COMMSOK,
53  PM_RI_PUBGAZEPITCH,
54  PM_RI_PUBGAZEYAW,
55  PM_RI_PUBGCVX,
56  PM_RI_PUBGCVY,
57  PM_RI_PUBGCVZ,
58  PM_RI_PUBWALK,
59  PM_RI_PUBKICKLEFT,
60  PM_RI_PUBKICKRIGHT,
61 
62  PM_GC_SEQID,
63  PM_GC_TIMESINCEPACKETBASE,
64  PM_GC_TIMESINCEPACKETEXTRA,
65  PM_GC_EXTRAOUTOFDATE,
66  PM_GC_GAMEPHASE,
67  PM_GC_GAMESTATE,
68  PM_GC_TIMEPLAYING,
69  PM_GC_KICKOFFTYPE,
70  PM_GC_TIMEREMAINING_RAW,
71  PM_GC_TIMEREMAINING_SMOOTH,
72  PM_GC_SECONDARYTIME_RAW,
73  PM_GC_SECONDARYTIME_SMOOTH,
74  PM_GC_TIMETOBALLINPLAY_RAW,
75  PM_GC_TIMETOBALLINPLAY_SMOOTH,
76  PM_GC_OWNPENALTYSTATE,
77  PM_GC_OWNPENALTYTIME_RAW,
78  PM_GC_OWNPENALTYTIME_SMOOTH,
79  PM_GC_OWNSCORE,
80  PM_GC_OPPSCORE,
81  PM_GC_OWNNUMPLAYING,
82  PM_GC_OPPNUMPLAYING,
83 
84  PM_TC_NUMFRESH,
85  PM_TC_NUMFRESHVALID,
86  PM_TC_TIMESINCEDATA,
87 
88  PM_SV_ISPENALTYSHOOT,
89  PM_SV_ISPENALTYTAKER,
90  PM_SV_KICKOFFTYPE,
91  PM_SV_GOALSIGN,
92  PM_SV_PLAYASCYAN,
93  PM_SV_GAMECOMMAND,
94  PM_SV_GAMEROLE,
95  PM_SV_PLAYSTATE,
96  PM_SV_PLAYSTATEFIRSTIN,
97  PM_SV_PLAYSTATEFIRSTTOLD,
98  PM_SV_PLAYSTATELASTTOLD,
99  PM_SV_PLAYSTATETIMEOUT,
100  PM_SV_TIMEPLAYING,
101  PM_SV_COMPASSHEADING,
102  PM_SV_ROBOTPOSECONF,
103  PM_SV_HAVEROBOTPOSE,
104  PM_SV_ROBOTPOSETIMEAGO,
105  PM_SV_ROBOTPOSEDUR,
106  PM_SV_ROBOTPOSEX,
107  PM_SV_ROBOTPOSEY,
108  PM_SV_ROBOTPOSEZ,
109  PM_SV_BALLCONF,
110  PM_SV_HAVEBALL,
111  PM_SV_BALLTIMEAGO,
112  PM_SV_BALLDUR,
113  PM_SV_BALLX,
114  PM_SV_BALLY,
115  PM_SV_BALLANGLE,
116  PM_SV_BALLDIST,
117  PM_SV_BALLSTABLE,
118  PM_SV_HAVEBALLPOSE,
119  PM_SV_BALLPOSETIMEAGO,
120  PM_SV_BALLPOSEDUR,
121  PM_SV_BALLPOSEX,
122  PM_SV_BALLPOSEY,
123  PM_SV_BALLPOSESTABLE,
124  PM_SV_BALLHASMOVED,
125  PM_SV_BALLINPLAY,
126  PM_SV_DIRECTGOALALLOWED,
127 
128  PM_GV_FORCEBEHSTATE,
129  PM_GV_SUGGESTFOOT,
130  PM_GV_DRIBBLEIFPOSSIBLE,
131  PM_GV_KICKIFPOSSIBLE,
132  PM_GV_DIVEIFPOSSIBLE,
133  PM_GV_HAVEBALLTARGET,
134  PM_GV_BALLTARGETX,
135  PM_GV_BALLTARGETY,
136  PM_GV_BALLTARGETCONF,
137  PM_GV_BALLTARGETDIST,
138  PM_GV_BALLTARGETANGLE,
139  PM_GV_BALLTARGETWEDGE,
140  PM_GV_BALLTARGETTYPE,
141  PM_GV_BALLTOTARGETDIST,
142  PM_GV_BALLTOTARGETANGLE,
143  PM_GV_BTTANGLEOFFSETKICK,
144  PM_GV_TARGETPOSEX,
145  PM_GV_TARGETPOSEY,
146  PM_GV_TARGETPOSEZ,
147  PM_GV_TARGETPOSETOL,
148  PM_GV_TARGETPOSEVALID,
149 
150  PM_AV_GAZEPITCH,
151  PM_AV_GAZEYAW,
152  PM_AV_GCVX,
153  PM_AV_GCVY,
154  PM_AV_GCVZ,
155  PM_AV_HALT,
156  PM_AV_KICKLEFT,
157  PM_AV_KICKRIGHT,
158  PM_AV_DIVE,
159 
160  PM_GM_STATECYCLE,
161  PM_GM_CURSTATE,
162  PM_GM_POSELEGAL,
163 
164  PM_DG_SCORINGDIST,
165 
166  PM_OBH_ACTIVE,
167  PM_OBH_BALLTOOBSTDIST,
168  PM_OBH_ANGLEATBALLLOW,
169  PM_OBH_ANGLEATBALLHIGH,
170  PM_OBH_ANGLEATBALLSTD,
171  PM_OBH_TARGETANGLEADJUST,
172  PM_OBH_ANGLEADJUSTFORDRIBBLE,
173  PM_OBH_ANGLEADJUSTFORFOOTSEL,
174  PM_OBH_KICKIFPOSSIBLE,
175  PM_OBH_SUGGESTFOOT,
176 
177  PM_BM_STATECYCLE,
178  PM_BM_CURSTATE,
179  PM_BM_OKTOKICK,
180  PM_BM_OKTODRIBBLE,
181  PM_BM_OKTODRIBBLESTILL,
182  PM_BM_COULDKICKNOW,
183  PM_BM_COULDDRIBBLENOW,
184  PM_BM_ALLOWKICK,
185  PM_BM_ALLOWDRIBBLE,
186  PM_BM_BALLACTIONISKICK,
187 
188  PM_WTGP_GBLTARGETX,
189  PM_WTGP_GBLTARGETY,
190  PM_WTGP_GBLTARGETZ,
191  PM_WTGP_USEZ,
192  PM_WTGP_TARGETX,
193  PM_WTGP_TARGETY,
194  PM_WTGP_TARGETZERR,
195  PM_WTGP_TARGETDIST,
196  PM_WTGP_TARGETANGLE,
197  PM_WTGP_DISTCOST,
198 
199  PM_WTP_DISTCOST,
200  PM_WTP_ARRIVED,
201 
202  PM_GAB_TS90,
203 
204  PM_LA_GAZEMAG,
205  PM_LA_GAZETARGETID,
206  PM_LA_GAZETARGETX,
207  PM_LA_GAZETARGETY,
208 
209  PM_LLR_GAZEFREQ,
210 
211  PM_SFB_SFBSTATE,
212  PM_SFB_ISREQUEST,
213  PM_SFB_ISRESUMED,
214  PM_SFB_SFBSTATETIME,
215  PM_SFB_BALLHYPTYPE,
216  PM_SFB_TIMEOUT,
217  PM_SFB_TARGETX,
218  PM_SFB_TARGETY,
219  PM_SFB_DIRN,
220  PM_SFB_FACTOR,
221  PM_SFB_FAILCOUNTER,
222  PM_SFB_DONECOUNTER,
223 
224  PM_GBB_BALLDIST,
225  PM_GBB_BETA,
226  PM_GBB_RADIUS_MIN,
227  PM_GBB_RADIUS_DES,
228  PM_GBB_RADIUS_HALO,
229  PM_GBB_PATH_LEN,
230  PM_GBB_WALK_SPEED,
231  PM_GBB_PSI_BALL,
232  PM_GBB_PSI_TARGET,
233  PM_GBB_PSI_DES,
234  PM_GBB_PROXIMITY_VALUE,
235  PM_GBB_NEAR_FACTOR,
236  PM_GBB_FOOTDUETOLESSDIST,
237  PM_GBB_FOOTDUETOBALLPOSE,
238  PM_GBB_RECONSIDERFOOT,
239  PM_GBB_USERIGHTFOOT,
240  PM_GBB_REQBALLX,
241  PM_GBB_REQBALLY,
242  PM_GBB_GCVX,
243  PM_GBB_GCVY,
244  PM_GBB_GCVZ,
245  PM_GBB_GCVN,
246  PM_GBB_BALLACTIONTIP,
247 
248  PM_DB_WEDGETOL,
249  PM_DB_WEDGETOLSTILL,
250  PM_DB_FACINGTARGET,
251  PM_DB_FACINGTARGETSTILL,
252  PM_DB_BALLXOK,
253  PM_DB_BALLXOKSTILL,
254  PM_DB_BALLYOK,
255  PM_DB_BALLYOKSTILL,
256  PM_DB_OKTODRIBBLE,
257  PM_DB_OKTODRIBBLESTILL,
258  PM_DBAPP_PREFERRIGHTFOOT,
259  PM_DBAPP_RECONSIDERFOOT,
260  PM_DBAPP_USERIGHTFOOT,
261  PM_DBAPP_ROBOTEX,
262  PM_DBAPP_ROBOTEY,
263  PM_DBAPP_LOCALPATHANGLE,
264  PM_DBAPP_UFACTOR,
265  PM_DBAPP_RATIOXY,
266 
267  PM_KB_WEDGETOL,
268  PM_KB_BALLERRORLEFTX,
269  PM_KB_BALLERRORLEFTY,
270  PM_KB_BALLERRORRIGHTX,
271  PM_KB_BALLERRORRIGHTY,
272  PM_KB_FACINGTARGET,
273  PM_KB_FACINGTARGETSTILL,
274  PM_KB_LEFTFOOTOK,
275  PM_KB_LEFTFOOTOKSTILL,
276  PM_KB_RIGHTFOOTOK,
277  PM_KB_RIGHTFOOTOKSTILL,
278  PM_KB_OKTOKICK,
279  PM_KB_OKTOKICKSTILL,
280  PM_KB_DOKICK,
281  PM_KB_BESTKICKRIGHT,
282  PM_KB_KICKLOCK,
283 
284  PM_DFB_DIVELOCK,
285 
286  PM_COUNT
287  };
288 
289  // Plot manager configuration
290  inline void configurePlotManager(plot_msgs::PlotManagerFS* PM)
291  {
292  // Walk and kick plot variables
293  PM->setName(PM_WAK_TRUEDT, "WalkAndKick/truedT");
294  PM->setName(PM_WAK_CYCLE, "WalkAndKick/wakCycle");
295 
296  // ROS interface plot variables
297  PM->setName(PM_RI_COMMSOK, "WAKRosInterface/commsOk");
298  PM->setName(PM_RI_PUBGAZEPITCH, "WAKRosInterface/published/gazePitch");
299  PM->setName(PM_RI_PUBGAZEYAW, "WAKRosInterface/published/gazeYaw");
300  PM->setName(PM_RI_PUBGCVX, "WAKRosInterface/published/gcvX");
301  PM->setName(PM_RI_PUBGCVY, "WAKRosInterface/published/gcvY");
302  PM->setName(PM_RI_PUBGCVZ, "WAKRosInterface/published/gcvZ");
303  PM->setName(PM_RI_PUBWALK, "WAKRosInterface/published/walk");
304  PM->setName(PM_RI_PUBKICKLEFT, "WAKRosInterface/published/kickLeft");
305  PM->setName(PM_RI_PUBKICKRIGHT, "WAKRosInterface/published/kickRight");
306 
307  // Game controller plot variables
308  PM->setName(PM_GC_SEQID, "GameController/seqID");
309  PM->setName(PM_GC_TIMESINCEPACKETBASE, "GameController/timeSincePacketBase");
310  PM->setName(PM_GC_TIMESINCEPACKETEXTRA, "GameController/timeSincePacketExtra");
311  PM->setName(PM_GC_EXTRAOUTOFDATE, "GameController/extraOutOfDate");
312  PM->setName(PM_GC_GAMEPHASE, "GameController/gamePhase");
313  PM->setName(PM_GC_GAMESTATE, "GameController/gameState");
314  PM->setName(PM_GC_TIMEPLAYING, "GameController/timePlaying");
315  PM->setName(PM_GC_KICKOFFTYPE, "GameController/kickoffType");
316  PM->setName(PM_GC_TIMEREMAINING_RAW, "GameController/timeRemaining/raw");
317  PM->setName(PM_GC_TIMEREMAINING_SMOOTH, "GameController/timeRemaining/smooth");
318  PM->setName(PM_GC_SECONDARYTIME_RAW, "GameController/secondaryTime/raw");
319  PM->setName(PM_GC_SECONDARYTIME_SMOOTH, "GameController/secondaryTime/smooth");
320  PM->setName(PM_GC_TIMETOBALLINPLAY_RAW, "GameController/timeToBallInPlay/raw");
321  PM->setName(PM_GC_TIMETOBALLINPLAY_SMOOTH, "GameController/timeToBallInPlay/smooth");
322  PM->setName(PM_GC_OWNPENALTYSTATE, "GameController/ownRobot/penaltyState");
323  PM->setName(PM_GC_OWNPENALTYTIME_RAW, "GameController/ownRobot/penaltyTime/raw");
324  PM->setName(PM_GC_OWNPENALTYTIME_SMOOTH, "GameController/ownRobot/penaltyTime/smooth");
325  PM->setName(PM_GC_OWNSCORE, "GameController/ownTeam/score");
326  PM->setName(PM_GC_OPPSCORE, "GameController/oppTeam/score");
327  PM->setName(PM_GC_OWNNUMPLAYING, "GameController/ownTeam/numPlaying");
328  PM->setName(PM_GC_OPPNUMPLAYING, "GameController/oppTeam/numPlaying");
329 
330  // Team communications plot variable
331  PM->setName(PM_TC_NUMFRESH, "TeamComms/numFresh");
332  PM->setName(PM_TC_NUMFRESHVALID, "TeamComms/numFreshAndValid");
333  PM->setName(PM_TC_TIMESINCEDATA, "TeamComms/timeSinceData");
334 
335  // SensorVars plot variables
336  PM->setName(PM_SV_ISPENALTYSHOOT, "SensorVars/isPenaltyShoot");
337  PM->setName(PM_SV_ISPENALTYTAKER, "SensorVars/isPenaltyTaker");
338  PM->setName(PM_SV_KICKOFFTYPE, "SensorVars/kickoffType");
339  PM->setName(PM_SV_GOALSIGN, "SensorVars/goalSign");
340  PM->setName(PM_SV_PLAYASCYAN, "SensorVars/playAsCyan");
341  PM->setName(PM_SV_GAMECOMMAND, "SensorVars/gameCommand");
342  PM->setName(PM_SV_GAMEROLE, "SensorVars/gameRole");
343  PM->setName(PM_SV_PLAYSTATE, "SensorVars/playState/playState");
344  PM->setName(PM_SV_PLAYSTATEFIRSTIN, "SensorVars/playState/timeSinceFirstIn");
345  PM->setName(PM_SV_PLAYSTATEFIRSTTOLD, "SensorVars/playState/timeSinceFirstTold");
346  PM->setName(PM_SV_PLAYSTATELASTTOLD, "SensorVars/playState/timeSinceLastTold");
347  PM->setName(PM_SV_PLAYSTATETIMEOUT, "SensorVars/playState/timeUntilTimeout");
348  PM->setName(PM_SV_TIMEPLAYING, "SensorVars/timePlaying");
349  PM->setName(PM_SV_COMPASSHEADING, "SensorVars/compassHeading");
350  PM->setName(PM_SV_ROBOTPOSECONF, "SensorVars/robotPose/conf");
351  PM->setName(PM_SV_HAVEROBOTPOSE, "SensorVars/robotPose/have");
352  PM->setName(PM_SV_ROBOTPOSETIMEAGO, "SensorVars/robotPose/timeAgo");
353  PM->setName(PM_SV_ROBOTPOSEDUR, "SensorVars/robotPose/duration");
354  PM->setName(PM_SV_ROBOTPOSEX, "SensorVars/robotPose/x");
355  PM->setName(PM_SV_ROBOTPOSEY, "SensorVars/robotPose/y");
356  PM->setName(PM_SV_ROBOTPOSEZ, "SensorVars/robotPose/z");
357  PM->setName(PM_SV_BALLCONF, "SensorVars/ball/conf");
358  PM->setName(PM_SV_HAVEBALL, "SensorVars/ball/have");
359  PM->setName(PM_SV_BALLTIMEAGO, "SensorVars/ball/timeAgo");
360  PM->setName(PM_SV_BALLDUR, "SensorVars/ball/duration");
361  PM->setName(PM_SV_BALLX, "SensorVars/ball/x");
362  PM->setName(PM_SV_BALLY, "SensorVars/ball/y");
363  PM->setName(PM_SV_BALLANGLE, "SensorVars/ball/angle");
364  PM->setName(PM_SV_BALLDIST, "SensorVars/ball/dist");
365  PM->setName(PM_SV_BALLSTABLE, "SensorVars/ball/stable");
366  PM->setName(PM_SV_HAVEBALLPOSE, "SensorVars/ballPose/have");
367  PM->setName(PM_SV_BALLPOSETIMEAGO, "SensorVars/ballPose/timeAgo");
368  PM->setName(PM_SV_BALLPOSEDUR, "SensorVars/ballPose/duration");
369  PM->setName(PM_SV_BALLPOSEX, "SensorVars/ballPose/x");
370  PM->setName(PM_SV_BALLPOSEY, "SensorVars/ballPose/y");
371  PM->setName(PM_SV_BALLPOSESTABLE, "SensorVars/ballPose/stable");
372  PM->setName(PM_SV_BALLHASMOVED, "SensorVars/ballHasMoved");
373  PM->setName(PM_SV_BALLINPLAY, "SensorVars/ballInPlay");
374  PM->setName(PM_SV_DIRECTGOALALLOWED, "SensorVars/directGoalAllowed");
375 
376  // GameVars plot variables
377  PM->setName(PM_GV_FORCEBEHSTATE, "GameVars/forceBehState");
378  PM->setName(PM_GV_SUGGESTFOOT, "GameVars/suggestFoot");
379  PM->setName(PM_GV_DRIBBLEIFPOSSIBLE, "GameVars/dribbleIfPossible");
380  PM->setName(PM_GV_KICKIFPOSSIBLE, "GameVars/kickIfPossible");
381  PM->setName(PM_GV_DIVEIFPOSSIBLE, "GameVars/diveIfPossible");
382  PM->setName(PM_GV_HAVEBALLTARGET, "GameVars/haveBallTarget");
383  PM->setName(PM_GV_BALLTARGETX, "GameVars/ballTarget/x");
384  PM->setName(PM_GV_BALLTARGETY, "GameVars/ballTarget/y");
385  PM->setName(PM_GV_BALLTARGETCONF, "GameVars/ballTarget/conf");
386  PM->setName(PM_GV_BALLTARGETDIST, "GameVars/ballTarget/dist");
387  PM->setName(PM_GV_BALLTARGETANGLE, "GameVars/ballTarget/angle");
388  PM->setName(PM_GV_BALLTARGETWEDGE, "GameVars/ballTarget/wedge");
389  PM->setName(PM_GV_BALLTARGETTYPE, "GameVars/ballTarget/type");
390  PM->setName(PM_GV_BALLTOTARGETDIST, "GameVars/ballToTarget/dist");
391  PM->setName(PM_GV_BALLTOTARGETANGLE, "GameVars/ballToTarget/angle");
392  PM->setName(PM_GV_BTTANGLEOFFSETKICK, "GameVars/ballToTarget/angleOffsetKick");
393  PM->setName(PM_GV_TARGETPOSEX, "GameVars/targetPose/x");
394  PM->setName(PM_GV_TARGETPOSEY, "GameVars/targetPose/y");
395  PM->setName(PM_GV_TARGETPOSEZ, "GameVars/targetPose/z");
396  PM->setName(PM_GV_TARGETPOSETOL, "GameVars/targetPose/tol");
397  PM->setName(PM_GV_TARGETPOSEVALID, "GameVars/targetPose/valid");
398 
399  // ActuatorVars plot variables
400  PM->setName(PM_AV_GAZEPITCH, "ActuatorVars/gazePitch");
401  PM->setName(PM_AV_GAZEYAW, "ActuatorVars/gazeYaw");
402  PM->setName(PM_AV_GCVX, "ActuatorVars/gcvX");
403  PM->setName(PM_AV_GCVY, "ActuatorVars/gcvY");
404  PM->setName(PM_AV_GCVZ, "ActuatorVars/gcvZ");
405  PM->setName(PM_AV_HALT, "ActuatorVars/halt");
406  PM->setName(PM_AV_KICKLEFT, "ActuatorVars/kickLeft");
407  PM->setName(PM_AV_KICKRIGHT, "ActuatorVars/kickRight");
408  PM->setName(PM_AV_DIVE, "ActuatorVars/dive");
409 
410  // Game manager plot variables
411  PM->setName(PM_GM_STATECYCLE, "GameFSM/Manager/stateCycle");
412  PM->setName(PM_GM_CURSTATE, "GameFSM/Manager/curState");
413  PM->setName(PM_GM_POSELEGAL, "GameFSM/Manager/poseLegalForKickoff");
414 
415  // Default goalie variables
416  PM->setName(PM_DG_SCORINGDIST, "GameFSM/DefaultGoalie/scoringDist");
417 
418  // Obstacle ball handling plot variables
419  PM->setName(PM_OBH_ACTIVE, "GameFSM/ObstacleBallHandling/active");
420  PM->setName(PM_OBH_BALLTOOBSTDIST, "GameFSM/ObstacleBallHandling/ballToObstDist");
421  PM->setName(PM_OBH_ANGLEATBALLLOW, "GameFSM/ObstacleBallHandling/angleAtBallLow");
422  PM->setName(PM_OBH_ANGLEATBALLHIGH, "GameFSM/ObstacleBallHandling/angleAtBallHigh");
423  PM->setName(PM_OBH_ANGLEATBALLSTD, "GameFSM/ObstacleBallHandling/angleAtBallWrapped");
424  PM->setName(PM_OBH_TARGETANGLEADJUST, "GameFSM/ObstacleBallHandling/targetAngleAdjust");
425  PM->setName(PM_OBH_ANGLEADJUSTFORDRIBBLE, "GameFSM/ObstacleBallHandling/angleAdjustForDribble");
426  PM->setName(PM_OBH_ANGLEADJUSTFORFOOTSEL, "GameFSM/ObstacleBallHandling/angleAdjustForFootSel");
427  PM->setName(PM_OBH_KICKIFPOSSIBLE, "GameFSM/ObstacleBallHandling/kickIfPossible");
428  PM->setName(PM_OBH_SUGGESTFOOT, "GameFSM/ObstacleBallHandling/suggestFoot");
429 
430  // Behaviour manager plot variables
431  PM->setName(PM_BM_STATECYCLE, "BehFSM/Manager/stateCycle");
432  PM->setName(PM_BM_CURSTATE, "BehFSM/Manager/curState");
433  PM->setName(PM_BM_OKTOKICK, "BehFSM/Manager/okToKick");
434  PM->setName(PM_BM_OKTODRIBBLE, "BehFSM/Manager/okToDribble");
435  PM->setName(PM_BM_OKTODRIBBLESTILL, "BehFSM/Manager/okToDribbleStill");
436  PM->setName(PM_BM_COULDKICKNOW, "BehFSM/Manager/couldKickNow");
437  PM->setName(PM_BM_COULDDRIBBLENOW, "BehFSM/Manager/couldDribbleNow");
438  PM->setName(PM_BM_ALLOWKICK, "BehFSM/Manager/allowKick");
439  PM->setName(PM_BM_ALLOWDRIBBLE, "BehFSM/Manager/allowDribble");
440  PM->setName(PM_BM_BALLACTIONISKICK, "BehFSM/Manager/ballActionIsKick");
441 
442  // Walk to global pose plot variables
443  PM->setName(PM_WTGP_GBLTARGETX, "BehFSM/WalkToGlobalPose/globalTargetX");
444  PM->setName(PM_WTGP_GBLTARGETY, "BehFSM/WalkToGlobalPose/globalTargetY");
445  PM->setName(PM_WTGP_GBLTARGETZ, "BehFSM/WalkToGlobalPose/globalTargetZ");
446  PM->setName(PM_WTGP_USEZ, "BehFSM/WalkToGlobalPose/useTargetZ");
447  PM->setName(PM_WTGP_TARGETX, "BehFSM/WalkToGlobalPose/targetX");
448  PM->setName(PM_WTGP_TARGETY, "BehFSM/WalkToGlobalPose/targetY");
449  PM->setName(PM_WTGP_TARGETZERR, "BehFSM/WalkToGlobalPose/targetZErr");
450  PM->setName(PM_WTGP_TARGETDIST, "BehFSM/WalkToGlobalPose/targetDist");
451  PM->setName(PM_WTGP_TARGETANGLE, "BehFSM/WalkToGlobalPose/targetAngle");
452  PM->setName(PM_WTGP_DISTCOST, "BehFSM/WalkToGlobalPose/distCost");
453 
454  // Walk to pose plot variables
455  PM->setName(PM_WTP_DISTCOST, "BehFSM/WalkToPose/distCost");
456  PM->setName(PM_WTP_ARRIVED, "BehFSM/WalkToPose/arrived");
457 
458  // Gaze at ball plot variables
459  PM->setName(PM_GAB_TS90, "BehFSM/GazeAtBall/settlingTime90%");
460 
461  // Look around plot variables
462  PM->setName(PM_LA_GAZEMAG, "BehFSM/LookAround/gazeMag");
463  PM->setName(PM_LA_GAZETARGETID, "BehFSM/LookAround/gazeTargetID");
464  PM->setName(PM_LA_GAZETARGETX, "BehFSM/LookAround/gazeTargetX");
465  PM->setName(PM_LA_GAZETARGETY, "BehFSM/LookAround/gazeTargetY");
466 
467  // Look left right plot variables
468  PM->setName(PM_LLR_GAZEFREQ, "BehFSM/LookLeftRight/gazeFreq");
469 
470  // Search for ball plot variables
471  PM->setName(PM_SFB_SFBSTATE, "BehFSM/SearchForBall/sfbState");
472  PM->setName(PM_SFB_ISREQUEST, "BehFSM/SearchForBall/stateIsRequested");
473  PM->setName(PM_SFB_ISRESUMED, "BehFSM/SearchForBall/stateIsResumed");
474  PM->setName(PM_SFB_SFBSTATETIME, "BehFSM/SearchForBall/sfbStateElapsed");
475  PM->setName(PM_SFB_BALLHYPTYPE, "BehFSM/SearchForBall/ballHypType");
476  PM->setName(PM_SFB_TIMEOUT, "BehFSM/SearchForBall/timeout");
477  PM->setName(PM_SFB_TARGETX, "BehFSM/SearchForBall/targetX");
478  PM->setName(PM_SFB_TARGETY, "BehFSM/SearchForBall/targetY");
479  PM->setName(PM_SFB_DIRN, "BehFSM/SearchForBall/dirn");
480  PM->setName(PM_SFB_FACTOR, "BehFSM/SearchForBall/factor");
481  PM->setName(PM_SFB_FAILCOUNTER, "BehFSM/SearchForBall/failCounter");
482  PM->setName(PM_SFB_DONECOUNTER, "BehFSM/SearchForBall/doneCounter");
483 
484  // Go behind ball plot variables
485  PM->setName(PM_GBB_BALLDIST, "BehFSM/GoBehindBall/ballDist");
486  PM->setName(PM_GBB_BETA, "BehFSM/GoBehindBall/beta");
487  PM->setName(PM_GBB_RADIUS_MIN, "BehFSM/GoBehindBall/radius/minDesired");
488  PM->setName(PM_GBB_RADIUS_DES, "BehFSM/GoBehindBall/radius/desiredHalo");
489  PM->setName(PM_GBB_RADIUS_HALO, "BehFSM/GoBehindBall/radius/actualHalo");
490  PM->setName(PM_GBB_PATH_LEN, "BehFSM/GoBehindBall/near/pathLength");
491  PM->setName(PM_GBB_WALK_SPEED, "BehFSM/GoBehindBall/near/walkSpeed");
492  PM->setName(PM_GBB_PSI_BALL, "BehFSM/GoBehindBall/lookAt/ballAngle");
493  PM->setName(PM_GBB_PSI_TARGET, "BehFSM/GoBehindBall/lookAt/targetAngle");
494  PM->setName(PM_GBB_PSI_DES, "BehFSM/GoBehindBall/lookAt/desiredAngle");
495  PM->setName(PM_GBB_PROXIMITY_VALUE, "BehFSM/GoBehindBall/near/proximityValue");
496  PM->setName(PM_GBB_NEAR_FACTOR, "BehFSM/GoBehindBall/nearFactor");
497  PM->setName(PM_GBB_FOOTDUETOLESSDIST, "BehFSM/GoBehindBall/footSel/footDueToLessDist");
498  PM->setName(PM_GBB_FOOTDUETOBALLPOSE, "BehFSM/GoBehindBall/footSel/footDueToBallPose");
499  PM->setName(PM_GBB_RECONSIDERFOOT, "BehFSM/GoBehindBall/footSel/reconsiderFoot");
500  PM->setName(PM_GBB_USERIGHTFOOT, "BehFSM/GoBehindBall/footSel/useRightFoot");
501  PM->setName(PM_GBB_REQBALLX, "BehFSM/GoBehindBall/reqBallDir/x");
502  PM->setName(PM_GBB_REQBALLY, "BehFSM/GoBehindBall/reqBallDir/y");
503  PM->setName(PM_GBB_GCVX, "BehFSM/GoBehindBall/gcv/x");
504  PM->setName(PM_GBB_GCVY, "BehFSM/GoBehindBall/gcv/y");
505  PM->setName(PM_GBB_GCVZ, "BehFSM/GoBehindBall/gcv/z");
506  PM->setName(PM_GBB_GCVN, "BehFSM/GoBehindBall/gcv/norm");
507  PM->setName(PM_GBB_BALLACTIONTIP, "BehFSM/GoBehindBall/ballActionTip");
508 
509  // Dribble ball plot variables
510  PM->setName(PM_DB_WEDGETOL, "BehFSM/DribbleBall/wedgeTol");
511  PM->setName(PM_DB_WEDGETOLSTILL, "BehFSM/DribbleBall/wedgeTolStill");
512  PM->setName(PM_DB_FACINGTARGET, "BehFSM/DribbleBall/facingTarget");
513  PM->setName(PM_DB_FACINGTARGETSTILL, "BehFSM/DribbleBall/facingTargetStill");
514  PM->setName(PM_DB_BALLXOK, "BehFSM/DribbleBall/ballXOk");
515  PM->setName(PM_DB_BALLXOKSTILL, "BehFSM/DribbleBall/ballXOkStill");
516  PM->setName(PM_DB_BALLYOK, "BehFSM/DribbleBall/ballYOk");
517  PM->setName(PM_DB_BALLYOKSTILL, "BehFSM/DribbleBall/ballYOkStill");
518  PM->setName(PM_DB_OKTODRIBBLE, "BehFSM/DribbleBall/okToDribble");
519  PM->setName(PM_DB_OKTODRIBBLESTILL, "BehFSM/DribbleBall/okToDribbleStill");
520  PM->setName(PM_DBAPP_PREFERRIGHTFOOT, "BehFSM/DribbleBall/footSel/preferRightFoot");
521  PM->setName(PM_DBAPP_RECONSIDERFOOT, "BehFSM/DribbleBall/footSel/reconsiderFoot");
522  PM->setName(PM_DBAPP_USERIGHTFOOT, "BehFSM/DribbleBall/footSel/useRightFoot");
523  PM->setName(PM_DBAPP_ROBOTEX, "BehFSM/DribbleBall/approach/robotEx");
524  PM->setName(PM_DBAPP_ROBOTEY, "BehFSM/DribbleBall/approach/robotEy");
525  PM->setName(PM_DBAPP_LOCALPATHANGLE, "BehFSM/DribbleBall/approach/localPathAngle");
526  PM->setName(PM_DBAPP_UFACTOR, "BehFSM/DribbleBall/approach/sideStepFactorU");
527  PM->setName(PM_DBAPP_RATIOXY, "BehFSM/DribbleBall/approach/gcvRatioXY");
528 
529  // Kick ball plot variables
530  PM->setName(PM_KB_WEDGETOL, "BehFSM/KickBall/wedgeTol");
531  PM->setName(PM_KB_BALLERRORLEFTX, "BehFSM/KickBall/ballError/leftX");
532  PM->setName(PM_KB_BALLERRORLEFTY, "BehFSM/KickBall/ballError/leftY");
533  PM->setName(PM_KB_BALLERRORRIGHTX, "BehFSM/KickBall/ballError/rightX");
534  PM->setName(PM_KB_BALLERRORRIGHTY, "BehFSM/KickBall/ballError/rightY");
535  PM->setName(PM_KB_FACINGTARGET, "BehFSM/KickBall/facingTarget");
536  PM->setName(PM_KB_FACINGTARGETSTILL, "BehFSM/KickBall/facingTargetStill");
537  PM->setName(PM_KB_LEFTFOOTOK, "BehFSM/KickBall/leftFootInPosition");
538  PM->setName(PM_KB_LEFTFOOTOKSTILL, "BehFSM/KickBall/leftFootInPositionStill");
539  PM->setName(PM_KB_RIGHTFOOTOK, "BehFSM/KickBall/rightFootInPosition");
540  PM->setName(PM_KB_RIGHTFOOTOKSTILL, "BehFSM/KickBall/rightFootInPositionStill");
541  PM->setName(PM_KB_OKTOKICK, "BehFSM/KickBall/okToKick");
542  PM->setName(PM_KB_OKTOKICKSTILL, "BehFSM/KickBall/okToKickStill");
543  PM->setName(PM_KB_DOKICK, "BehFSM/KickBall/doKick");
544  PM->setName(PM_KB_BESTKICKRIGHT, "BehFSM/KickBall/bestKickRight");
545  PM->setName(PM_KB_KICKLOCK, "BehFSM/KickBall/kickLock");
546 
547  // Dive for ball plot variables
548  PM->setName(PM_DFB_DIVELOCK, "BehFSM/DiveForBall/diveLock");
549 
550  // Check that we have been thorough
551  if(!PM->checkNames())
552  ROS_ERROR("Please review any warnings above that are related to the naming of plotter variables!");
553  }
554 }
555 
556 #endif
557 // EOF