Fawkes API  Fawkes Development Version
MotorInterface.h
1 
2 /***************************************************************************
3  * MotorInterface.h - Fawkes BlackBoard Interface - MotorInterface
4  *
5  * Templated created: Thu Oct 12 10:49:19 2006
6  * Copyright 2007 Martin Liebenberg, Tim Niemueller
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef __INTERFACES_MOTORINTERFACE_H_
25 #define __INTERFACES_MOTORINTERFACE_H_
26 
27 #include <interface/interface.h>
28 #include <interface/message.h>
29 #include <interface/field_iterator.h>
30 
31 namespace fawkes {
32 
33 class MotorInterface : public Interface
34 {
35  /// @cond INTERNALS
36  INTERFACE_MGMT_FRIENDS(MotorInterface)
37  /// @endcond
38  public:
39  /* constants */
40  static const uint32_t MOTOR_ENABLED;
41  static const uint32_t MOTOR_DISABLED;
42  static const uint32_t DRIVE_MODE_RPM;
43  static const uint32_t DRIVE_MODE_TRANS;
44  static const uint32_t DRIVE_MODE_ROT;
45  static const uint32_t DRIVE_MODE_TRANS_ROT;
46  static const uint32_t DRIVE_MODE_ORBIT;
47  static const uint32_t DRIVE_MODE_LINE_TRANS_ROT;
48 
49  private:
50 #pragma pack(push,4)
51  /** Internal data storage, do NOT modify! */
52  typedef struct {
53  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
54  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
55  uint32_t motor_state; /**<
56  The current state of the motor.
57  */
58  uint32_t drive_mode; /**<
59  The current drive mode of the motor.
60  */
61  int32_t right_rpm; /**<
62  RPM of the motor on the right front of the robot.
63  */
64  int32_t rear_rpm; /**<
65  RPM of motor on the rear of the robot.
66  */
67  int32_t left_rpm; /**<
68  RPM of the motor on the left front of the robot.
69  */
70  float odometry_path_length; /**<
71  The actual length of the robot's trajectory since the last ResetOdometry.
72  */
73  float odometry_position_x; /**<
74  The actual position of the robot relative to the position at the last ResetOdometry.
75  */
76  float odometry_position_y; /**<
77  The actual position of the robot relative to the position at the last ResetOdometry.
78  */
79  float odometry_orientation; /**<
80  The actual orientation of the robot relative to the orientation at the last ResetOdometry.
81  */
82  float vx; /**<
83  VX of the robot in m/s. Forward.
84  */
85  float vy; /**<
86  VY of the robot in m/s. Left.
87  */
88  float omega; /**<
89  Rotation speed of the robot in rad/s.
90  */
91  uint32_t controller; /**<
92  The ID of the controller. The controller ID is the instance serial of the sending
93  interface. Only from this interface instance command messages are accepted.
94  */
95  char controller_thread_name[64]; /**<
96  The name of the controlling thread, for easier debugging. This is informative only
97  and actually two threads may share an interface instance (although this should be
98  avoided since the interface locking has to be reproduced for these threads then).
99  */
100  } MotorInterface_data_t;
101 #pragma pack(pop)
102 
103  MotorInterface_data_t *data;
104 
105  public:
106  /* messages */
108  {
109  private:
110 #pragma pack(push,4)
111  /** Internal data storage, do NOT modify! */
112  typedef struct {
113  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
114  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
115  uint32_t motor_state; /**<
116  The new motor state to set. Use the MOTOR_* constants.
117  */
118  } SetMotorStateMessage_data_t;
119 #pragma pack(pop)
120 
121  SetMotorStateMessage_data_t *data;
122 
123  public:
124  SetMotorStateMessage(const uint32_t ini_motor_state);
127 
129  /* Methods */
130  uint32_t motor_state() const;
131  void set_motor_state(const uint32_t new_motor_state);
132  size_t maxlenof_motor_state() const;
133  virtual Message * clone() const;
134  };
135 
137  {
138  private:
139 #pragma pack(push,4)
140  /** Internal data storage, do NOT modify! */
141  typedef struct {
142  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
143  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
144  uint32_t controller; /**<
145  The ID of the controller. The controller ID is the instance serial of the sending
146  interface. Only from this interface instance command messages are accepted.
147  */
148  char controller_thread_name[64]; /**<
149  The name of the controlling thread, for easier debugging. This is informative only
150  and actually two threads may share an interface instance (although this should be
151  avoided since the interface locking has to be reproduced for these threads then).
152  */
153  } AcquireControlMessage_data_t;
154 #pragma pack(pop)
155 
156  AcquireControlMessage_data_t *data;
157 
158  public:
159  AcquireControlMessage(const uint32_t ini_controller, const char * ini_controller_thread_name);
162 
164  /* Methods */
165  uint32_t controller() const;
166  void set_controller(const uint32_t new_controller);
167  size_t maxlenof_controller() const;
168  char * controller_thread_name() const;
169  void set_controller_thread_name(const char * new_controller_thread_name);
170  size_t maxlenof_controller_thread_name() const;
171  virtual Message * clone() const;
172  };
173 
175  {
176  private:
177 #pragma pack(push,4)
178  /** Internal data storage, do NOT modify! */
179  typedef struct {
180  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
181  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
182  } ResetOdometryMessage_data_t;
183 #pragma pack(pop)
184 
185  ResetOdometryMessage_data_t *data;
186 
187  public:
190 
192  /* Methods */
193  virtual Message * clone() const;
194  };
195 
196  class DriveRPMMessage : public Message
197  {
198  private:
199 #pragma pack(push,4)
200  /** Internal data storage, do NOT modify! */
201  typedef struct {
202  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
203  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
204  float front_right; /**< Rotation in RPM of the right front wheel. */
205  float front_left; /**< Rotation in RPM of the left front wheel. */
206  float rear; /**< Rotation in RPM of the rear wheel. */
207  } DriveRPMMessage_data_t;
208 #pragma pack(pop)
209 
210  DriveRPMMessage_data_t *data;
211 
212  public:
213  DriveRPMMessage(const float ini_front_right, const float ini_front_left, const float ini_rear);
214  DriveRPMMessage();
216 
218  /* Methods */
219  float front_right() const;
220  void set_front_right(const float new_front_right);
221  size_t maxlenof_front_right() const;
222  float front_left() const;
223  void set_front_left(const float new_front_left);
224  size_t maxlenof_front_left() const;
225  float rear() const;
226  void set_rear(const float new_rear);
227  size_t maxlenof_rear() const;
228  virtual Message * clone() const;
229  };
230 
231  class GotoMessage : public Message
232  {
233  private:
234 #pragma pack(push,4)
235  /** Internal data storage, do NOT modify! */
236  typedef struct {
237  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
238  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
239  float x; /**< X distance in m. */
240  float y; /**< Y distance in m. */
241  float phi; /**< Angle relative to current angle in rad. */
242  float time_sec; /**< When to reach the desired location. */
243  } GotoMessage_data_t;
244 #pragma pack(pop)
245 
246  GotoMessage_data_t *data;
247 
248  public:
249  GotoMessage(const float ini_x, const float ini_y, const float ini_phi, const float ini_time_sec);
250  GotoMessage();
251  ~GotoMessage();
252 
253  GotoMessage(const GotoMessage *m);
254  /* Methods */
255  float x() const;
256  void set_x(const float new_x);
257  size_t maxlenof_x() const;
258  float y() const;
259  void set_y(const float new_y);
260  size_t maxlenof_y() const;
261  float phi() const;
262  void set_phi(const float new_phi);
263  size_t maxlenof_phi() const;
264  float time_sec() const;
265  void set_time_sec(const float new_time_sec);
266  size_t maxlenof_time_sec() const;
267  virtual Message * clone() const;
268  };
269 
270  class TransMessage : public Message
271  {
272  private:
273 #pragma pack(push,4)
274  /** Internal data storage, do NOT modify! */
275  typedef struct {
276  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
277  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
278  float vx; /**< Speed in X direction in m/s. */
279  float vy; /**< Speed in Y direction in m/s. */
280  } TransMessage_data_t;
281 #pragma pack(pop)
282 
283  TransMessage_data_t *data;
284 
285  public:
286  TransMessage(const float ini_vx, const float ini_vy);
287  TransMessage();
288  ~TransMessage();
289 
290  TransMessage(const TransMessage *m);
291  /* Methods */
292  float vx() const;
293  void set_vx(const float new_vx);
294  size_t maxlenof_vx() const;
295  float vy() const;
296  void set_vy(const float new_vy);
297  size_t maxlenof_vy() const;
298  virtual Message * clone() const;
299  };
300 
301  class RotMessage : public Message
302  {
303  private:
304 #pragma pack(push,4)
305  /** Internal data storage, do NOT modify! */
306  typedef struct {
307  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
308  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
309  float omega; /**< Angle rotation in rad/s. */
310  } RotMessage_data_t;
311 #pragma pack(pop)
312 
313  RotMessage_data_t *data;
314 
315  public:
316  RotMessage(const float ini_omega);
317  RotMessage();
318  ~RotMessage();
319 
320  RotMessage(const RotMessage *m);
321  /* Methods */
322  float omega() const;
323  void set_omega(const float new_omega);
324  size_t maxlenof_omega() const;
325  virtual Message * clone() const;
326  };
327 
328  class TransRotMessage : public Message
329  {
330  private:
331 #pragma pack(push,4)
332  /** Internal data storage, do NOT modify! */
333  typedef struct {
334  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
335  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
336  float vx; /**< Speed in X direction in m/s. */
337  float vy; /**< Speed in Y direction in m/s. */
338  float omega; /**< Angle rotation in rad/s. */
339  } TransRotMessage_data_t;
340 #pragma pack(pop)
341 
342  TransRotMessage_data_t *data;
343 
344  public:
345  TransRotMessage(const float ini_vx, const float ini_vy, const float ini_omega);
346  TransRotMessage();
348 
350  /* Methods */
351  float vx() const;
352  void set_vx(const float new_vx);
353  size_t maxlenof_vx() const;
354  float vy() const;
355  void set_vy(const float new_vy);
356  size_t maxlenof_vy() const;
357  float omega() const;
358  void set_omega(const float new_omega);
359  size_t maxlenof_omega() const;
360  virtual Message * clone() const;
361  };
362 
363  class OrbitMessage : public Message
364  {
365  private:
366 #pragma pack(push,4)
367  /** Internal data storage, do NOT modify! */
368  typedef struct {
369  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
370  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
371  float px; /**< Point's X coordinate to orbit. */
372  float py; /**< Point's Y coordinate to orbit. */
373  float omega; /**< Angular speed around point in rad/s. */
374  } OrbitMessage_data_t;
375 #pragma pack(pop)
376 
377  OrbitMessage_data_t *data;
378 
379  public:
380  OrbitMessage(const float ini_px, const float ini_py, const float ini_omega);
381  OrbitMessage();
382  ~OrbitMessage();
383 
384  OrbitMessage(const OrbitMessage *m);
385  /* Methods */
386  float px() const;
387  void set_px(const float new_px);
388  size_t maxlenof_px() const;
389  float py() const;
390  void set_py(const float new_py);
391  size_t maxlenof_py() const;
392  float omega() const;
393  void set_omega(const float new_omega);
394  size_t maxlenof_omega() const;
395  virtual Message * clone() const;
396  };
397 
399  {
400  private:
401 #pragma pack(push,4)
402  /** Internal data storage, do NOT modify! */
403  typedef struct {
404  int64_t timestamp_sec; /**< Interface Unix timestamp, seconds */
405  int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
406  float vx; /**< Speed for translation in X direction in m/s. */
407  float vy; /**< Speed for translation in Y direction in m/s. */
408  float omega; /**< Rotational speed in rad/s. */
409  } LinTransRotMessage_data_t;
410 #pragma pack(pop)
411 
412  LinTransRotMessage_data_t *data;
413 
414  public:
415  LinTransRotMessage(const float ini_vx, const float ini_vy, const float ini_omega);
418 
420  /* Methods */
421  float vx() const;
422  void set_vx(const float new_vx);
423  size_t maxlenof_vx() const;
424  float vy() const;
425  void set_vy(const float new_vy);
426  size_t maxlenof_vy() const;
427  float omega() const;
428  void set_omega(const float new_omega);
429  size_t maxlenof_omega() const;
430  virtual Message * clone() const;
431  };
432 
433  virtual bool message_valid(const Message *message) const;
434  private:
435  MotorInterface();
436  ~MotorInterface();
437 
438  public:
439  /* Methods */
440  uint32_t motor_state() const;
441  void set_motor_state(const uint32_t new_motor_state);
442  size_t maxlenof_motor_state() const;
443  uint32_t drive_mode() const;
444  void set_drive_mode(const uint32_t new_drive_mode);
445  size_t maxlenof_drive_mode() const;
446  int32_t right_rpm() const;
447  void set_right_rpm(const int32_t new_right_rpm);
448  size_t maxlenof_right_rpm() const;
449  int32_t rear_rpm() const;
450  void set_rear_rpm(const int32_t new_rear_rpm);
451  size_t maxlenof_rear_rpm() const;
452  int32_t left_rpm() const;
453  void set_left_rpm(const int32_t new_left_rpm);
454  size_t maxlenof_left_rpm() const;
455  float odometry_path_length() const;
456  void set_odometry_path_length(const float new_odometry_path_length);
457  size_t maxlenof_odometry_path_length() const;
458  float odometry_position_x() const;
459  void set_odometry_position_x(const float new_odometry_position_x);
460  size_t maxlenof_odometry_position_x() const;
461  float odometry_position_y() const;
462  void set_odometry_position_y(const float new_odometry_position_y);
463  size_t maxlenof_odometry_position_y() const;
464  float odometry_orientation() const;
465  void set_odometry_orientation(const float new_odometry_orientation);
466  size_t maxlenof_odometry_orientation() const;
467  float vx() const;
468  void set_vx(const float new_vx);
469  size_t maxlenof_vx() const;
470  float vy() const;
471  void set_vy(const float new_vy);
472  size_t maxlenof_vy() const;
473  float omega() const;
474  void set_omega(const float new_omega);
475  size_t maxlenof_omega() const;
476  uint32_t controller() const;
477  void set_controller(const uint32_t new_controller);
478  size_t maxlenof_controller() const;
479  char * controller_thread_name() const;
480  void set_controller_thread_name(const char * new_controller_thread_name);
481  size_t maxlenof_controller_thread_name() const;
482  virtual Message * create_message(const char *type) const;
483 
484  virtual void copy_values(const Interface *other);
485  virtual const char * enum_tostring(const char *enumtype, int val) const;
486 
487 };
488 
489 } // end namespace fawkes
490 
491 #endif
void set_vy(const float new_vy)
Set vy value.
virtual Message * create_message(const char *type) const
Create message based on type name.
virtual const char * enum_tostring(const char *enumtype, int val) const
Convert arbitrary enum value to string.
void set_omega(const float new_omega)
Set omega value.
SetMotorStateMessage Fawkes BlackBoard Interface Message.
static const uint32_t DRIVE_MODE_LINE_TRANS_ROT
DRIVE_MODE_LINE_TRANS_ROT constant.
RotMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_left_rpm() const
Get maximum length of left_rpm value.
float py() const
Get py value.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
Definition: message.h:43
virtual Message * clone() const
Clone this message.
float omega() const
Get omega value.
static const uint32_t MOTOR_ENABLED
MOTOR_ENABLED constant.
void set_rear(const float new_rear)
Set rear value.
float px() const
Get px value.
size_t maxlenof_odometry_path_length() const
Get maximum length of odometry_path_length value.
static const uint32_t DRIVE_MODE_RPM
DRIVE_MODE_RPM constant.
void set_omega(const float new_omega)
Set omega value.
float x() const
Get x value.
void set_vx(const float new_vx)
Set vx value.
size_t maxlenof_y() const
Get maximum length of y value.
TransRotMessage Fawkes BlackBoard Interface Message.
float phi() const
Get phi value.
size_t maxlenof_motor_state() const
Get maximum length of motor_state value.
uint32_t controller() const
Get controller value.
int32_t rear_rpm() const
Get rear_rpm value.
virtual Message * clone() const
Clone this message.
void set_odometry_position_y(const float new_odometry_position_y)
Set odometry_position_y value.
Fawkes library namespace.
size_t maxlenof_omega() const
Get maximum length of omega value.
size_t maxlenof_px() const
Get maximum length of px value.
size_t maxlenof_vy() const
Get maximum length of vy value.
void set_controller(const uint32_t new_controller)
Set controller value.
size_t maxlenof_drive_mode() const
Get maximum length of drive_mode value.
float rear() const
Get rear value.
float time_sec() const
Get time_sec value.
float vx() const
Get vx value.
size_t maxlenof_front_left() const
Get maximum length of front_left value.
void set_vy(const float new_vy)
Set vy value.
void set_motor_state(const uint32_t new_motor_state)
Set motor_state value.
void set_vy(const float new_vy)
Set vy value.
size_t maxlenof_motor_state() const
Get maximum length of motor_state value.
virtual Message * clone() const
Clone this message.
void set_controller(const uint32_t new_controller)
Set controller value.
void set_odometry_orientation(const float new_odometry_orientation)
Set odometry_orientation value.
void set_rear_rpm(const int32_t new_rear_rpm)
Set rear_rpm value.
void set_front_right(const float new_front_right)
Set front_right value.
OrbitMessage Fawkes BlackBoard Interface Message.
void set_motor_state(const uint32_t new_motor_state)
Set motor_state value.
char * controller_thread_name() const
Get controller_thread_name value.
Base class for all Fawkes BlackBoard interfaces.
Definition: interface.h:80
uint32_t motor_state() const
Get motor_state value.
void set_time_sec(const float new_time_sec)
Set time_sec value.
float odometry_orientation() const
Get odometry_orientation value.
void set_omega(const float new_omega)
Set omega value.
size_t maxlenof_vy() const
Get maximum length of vy value.
void set_right_rpm(const int32_t new_right_rpm)
Set right_rpm value.
void set_left_rpm(const int32_t new_left_rpm)
Set left_rpm value.
float omega() const
Get omega value.
float vy() const
Get vy value.
ResetOdometryMessage Fawkes BlackBoard Interface Message.
void set_odometry_path_length(const float new_odometry_path_length)
Set odometry_path_length value.
AcquireControlMessage Fawkes BlackBoard Interface Message.
float omega() const
Get omega value.
char * controller_thread_name() const
Get controller_thread_name value.
size_t maxlenof_vx() const
Get maximum length of vx value.
virtual Message * clone() const
Clone this message.
float front_right() const
Get front_right value.
size_t maxlenof_odometry_orientation() const
Get maximum length of odometry_orientation value.
static const uint32_t DRIVE_MODE_TRANS_ROT
DRIVE_MODE_TRANS_ROT constant.
float front_left() const
Get front_left value.
float odometry_position_y() const
Get odometry_position_y value.
size_t maxlenof_controller_thread_name() const
Get maximum length of controller_thread_name value.
void set_vy(const float new_vy)
Set vy value.
size_t maxlenof_omega() const
Get maximum length of omega value.
void set_phi(const float new_phi)
Set phi value.
float vy() const
Get vy value.
void set_vx(const float new_vx)
Set vx value.
size_t maxlenof_omega() const
Get maximum length of omega value.
void set_omega(const float new_omega)
Set omega value.
size_t maxlenof_vx() const
Get maximum length of vx value.
void set_py(const float new_py)
Set py value.
float y() const
Get y value.
static const uint32_t DRIVE_MODE_TRANS
DRIVE_MODE_TRANS constant.
void set_omega(const float new_omega)
Set omega value.
size_t maxlenof_x() const
Get maximum length of x value.
virtual Message * clone() const
Clone this message.
void set_front_left(const float new_front_left)
Set front_left value.
size_t maxlenof_vy() const
Get maximum length of vy value.
int32_t left_rpm() const
Get left_rpm value.
size_t maxlenof_vx() const
Get maximum length of vx value.
void set_controller_thread_name(const char *new_controller_thread_name)
Set controller_thread_name value.
LinTransRotMessage Fawkes BlackBoard Interface Message.
void set_px(const float new_px)
Set px value.
virtual Message * clone() const
Clone this message.
uint32_t drive_mode() const
Get drive_mode value.
size_t maxlenof_omega() const
Get maximum length of omega value.
size_t maxlenof_time_sec() const
Get maximum length of time_sec value.
float omega() const
Get omega value.
size_t maxlenof_front_right() const
Get maximum length of front_right value.
size_t maxlenof_phi() const
Get maximum length of phi value.
virtual Message * clone() const
Clone this message.
DriveRPMMessage Fawkes BlackBoard Interface Message.
float omega() const
Get omega value.
void set_drive_mode(const uint32_t new_drive_mode)
Set drive_mode value.
size_t maxlenof_vx() const
Get maximum length of vx value.
void set_vx(const float new_vx)
Set vx value.
void set_vx(const float new_vx)
Set vx value.
float vx() const
Get vx value.
virtual Message * clone() const
Clone this message.
float odometry_path_length() const
Get odometry_path_length value.
virtual Message * clone() const
Clone this message.
size_t maxlenof_rear_rpm() const
Get maximum length of rear_rpm value.
size_t maxlenof_odometry_position_y() const
Get maximum length of odometry_position_y value.
static const uint32_t MOTOR_DISABLED
MOTOR_DISABLED constant.
size_t maxlenof_rear() const
Get maximum length of rear value.
void set_odometry_position_x(const float new_odometry_position_x)
Set odometry_position_x value.
uint32_t controller() const
Get controller value.
size_t maxlenof_controller_thread_name() const
Get maximum length of controller_thread_name value.
size_t maxlenof_controller() const
Get maximum length of controller value.
static const uint32_t DRIVE_MODE_ORBIT
DRIVE_MODE_ORBIT constant.
size_t maxlenof_controller() const
Get maximum length of controller value.
MotorInterface Fawkes BlackBoard Interface.
size_t maxlenof_omega() const
Get maximum length of omega value.
float odometry_position_x() const
Get odometry_position_x value.
GotoMessage Fawkes BlackBoard Interface Message.
const char * type() const
Get type of interface.
Definition: interface.cpp:635
int32_t right_rpm() const
Get right_rpm value.
void set_controller_thread_name(const char *new_controller_thread_name)
Set controller_thread_name value.
void set_x(const float new_x)
Set x value.
size_t maxlenof_odometry_position_x() const
Get maximum length of odometry_position_x value.
size_t maxlenof_vy() const
Get maximum length of vy value.
static const uint32_t DRIVE_MODE_ROT
DRIVE_MODE_ROT constant.
virtual void copy_values(const Interface *other)
Copy values from other interface.
uint32_t motor_state() const
Get motor_state value.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
TransMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_py() const
Get maximum length of py value.
size_t maxlenof_right_rpm() const
Get maximum length of right_rpm value.
void set_y(const float new_y)
Set y value.
virtual Message * clone() const
Clone this message.