24 #include <interfaces/MotorInterface.h> 26 #include <core/exceptions/software.h> 62 MotorInterface::MotorInterface() : Interface()
64 data_size =
sizeof(MotorInterface_data_t);
66 data = (MotorInterface_data_t *)
data_ptr;
97 unsigned char tmp_hash[] = {0x62, 0x6c, 0x3f, 0x33, 0x1c, 0x3a, 0x9e, 0x18, 0xd5, 0xee, 0xab, 0x30, 0xfb, 0x10, 0xf0, 0x79};
102 MotorInterface::~MotorInterface()
116 return data->motor_state;
138 data->motor_state = new_motor_state;
151 return data->drive_mode;
173 data->drive_mode = new_drive_mode;
186 return data->right_rpm;
208 data->right_rpm = new_right_rpm;
221 return data->rear_rpm;
243 data->rear_rpm = new_rear_rpm;
256 return data->left_rpm;
278 data->left_rpm = new_left_rpm;
291 return data->odometry_path_length;
313 data->odometry_path_length = new_odometry_path_length;
326 return data->odometry_position_x;
348 data->odometry_position_x = new_odometry_position_x;
361 return data->odometry_position_y;
383 data->odometry_position_y = new_odometry_position_y;
396 return data->odometry_orientation;
418 data->odometry_orientation = new_odometry_orientation;
523 data->omega = new_omega;
558 data->des_vx = new_des_vx;
593 data->des_vy = new_des_vy;
606 return data->des_omega;
628 data->des_omega = new_des_omega;
642 return data->controller;
665 data->controller = new_controller;
680 return data->controller_thread_name;
704 strncpy(data->controller_thread_name, new_controller_thread_name,
sizeof(data->controller_thread_name)-1);
705 data->controller_thread_name[
sizeof(data->controller_thread_name)-1] = 0;
713 if ( strncmp(
"SetMotorStateMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
715 }
else if ( strncmp(
"AcquireControlMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
717 }
else if ( strncmp(
"ResetOdometryMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
719 }
else if ( strncmp(
"SetOdometryMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
721 }
else if ( strncmp(
"DriveRPMMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
723 }
else if ( strncmp(
"GotoMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
725 }
else if ( strncmp(
"TransMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
727 }
else if ( strncmp(
"RotMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
729 }
else if ( strncmp(
"TransRotMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
731 }
else if ( strncmp(
"OrbitMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
733 }
else if ( strncmp(
"LinTransRotMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_) == 0 ) {
737 "message type for this interface type.",
type);
748 const MotorInterface *oi = dynamic_cast<const MotorInterface *>(other);
753 memcpy(data, oi->data,
sizeof(MotorInterface_data_t));
775 data_size =
sizeof(SetMotorStateMessage_data_t);
778 data = (SetMotorStateMessage_data_t *)
data_ptr;
780 data->motor_state = ini_motor_state;
786 data_size =
sizeof(SetMotorStateMessage_data_t);
789 data = (SetMotorStateMessage_data_t *)
data_ptr;
808 data = (SetMotorStateMessage_data_t *)
data_ptr;
822 return data->motor_state;
844 data->motor_state = new_motor_state;
870 data_size =
sizeof(AcquireControlMessage_data_t);
873 data = (AcquireControlMessage_data_t *)
data_ptr;
875 data->controller = ini_controller;
876 strncpy(data->controller_thread_name, ini_controller_thread_name, 64-1);
877 data->controller_thread_name[64-1] = 0;
884 data_size =
sizeof(AcquireControlMessage_data_t);
887 data = (AcquireControlMessage_data_t *)
data_ptr;
907 data = (AcquireControlMessage_data_t *)
data_ptr;
922 return data->controller;
945 data->controller = new_controller;
959 return data->controller_thread_name;
983 strncpy(data->controller_thread_name, new_controller_thread_name,
sizeof(data->controller_thread_name)-1);
984 data->controller_thread_name[
sizeof(data->controller_thread_name)-1] = 0;
1007 data_size =
sizeof(ResetOdometryMessage_data_t);
1010 data = (ResetOdometryMessage_data_t *)
data_ptr;
1028 data = (ResetOdometryMessage_data_t *)
data_ptr;
1057 data_size =
sizeof(SetOdometryMessage_data_t);
1060 data = (SetOdometryMessage_data_t *)
data_ptr;
1064 data->odometry_orientation = ini_odometry_orientation;
1072 data_size =
sizeof(SetOdometryMessage_data_t);
1075 data = (SetOdometryMessage_data_t *)
data_ptr;
1096 data = (SetOdometryMessage_data_t *)
data_ptr;
1168 return data->odometry_orientation;
1188 data->odometry_orientation = new_odometry_orientation;
1215 data_size =
sizeof(DriveRPMMessage_data_t);
1218 data = (DriveRPMMessage_data_t *)
data_ptr;
1220 data->front_right = ini_front_right;
1221 data->front_left = ini_front_left;
1222 data->rear = ini_rear;
1230 data_size =
sizeof(DriveRPMMessage_data_t);
1233 data = (DriveRPMMessage_data_t *)
data_ptr;
1254 data = (DriveRPMMessage_data_t *)
data_ptr;
1266 return data->front_right;
1286 data->front_right = new_front_right;
1296 return data->front_left;
1316 data->front_left = new_front_left;
1346 data->rear = new_rear;
1377 data = (GotoMessage_data_t *)
data_ptr;
1381 data->phi = ini_phi;
1382 data->time_sec = ini_time_sec;
1394 data = (GotoMessage_data_t *)
data_ptr;
1416 data = (GotoMessage_data_t *)
data_ptr;
1508 data->phi = new_phi;
1518 return data->time_sec;
1538 data->time_sec = new_time_sec;
1564 data_size =
sizeof(TransMessage_data_t);
1567 data = (TransMessage_data_t *)
data_ptr;
1577 data_size =
sizeof(TransMessage_data_t);
1580 data = (TransMessage_data_t *)
data_ptr;
1600 data = (TransMessage_data_t *)
data_ptr;
1690 data = (RotMessage_data_t *)
data_ptr;
1692 data->omega = ini_omega;
1701 data = (RotMessage_data_t *)
data_ptr;
1720 data = (RotMessage_data_t *)
data_ptr;
1752 data->omega = new_omega;
1779 data_size =
sizeof(TransRotMessage_data_t);
1782 data = (TransRotMessage_data_t *)
data_ptr;
1786 data->omega = ini_omega;
1794 data_size =
sizeof(TransRotMessage_data_t);
1797 data = (TransRotMessage_data_t *)
data_ptr;
1818 data = (TransRotMessage_data_t *)
data_ptr;
1910 data->omega = new_omega;
1937 data_size =
sizeof(OrbitMessage_data_t);
1940 data = (OrbitMessage_data_t *)
data_ptr;
1944 data->omega = ini_omega;
1952 data_size =
sizeof(OrbitMessage_data_t);
1955 data = (OrbitMessage_data_t *)
data_ptr;
1976 data = (OrbitMessage_data_t *)
data_ptr;
2068 data->omega = new_omega;
2095 data_size =
sizeof(LinTransRotMessage_data_t);
2098 data = (LinTransRotMessage_data_t *)
data_ptr;
2102 data->omega = ini_omega;
2110 data_size =
sizeof(LinTransRotMessage_data_t);
2113 data = (LinTransRotMessage_data_t *)
data_ptr;
2134 data = (LinTransRotMessage_data_t *)
data_ptr;
2226 data->omega = new_omega;
2262 const DriveRPMMessage *m4 = dynamic_cast<const DriveRPMMessage *>(message);
2266 const GotoMessage *m5 = dynamic_cast<const GotoMessage *>(message);
2270 const TransMessage *m6 = dynamic_cast<const TransMessage *>(message);
2274 const RotMessage *m7 = dynamic_cast<const RotMessage *>(message);
2278 const TransRotMessage *m8 = dynamic_cast<const TransRotMessage *>(message);
2282 const OrbitMessage *m9 = dynamic_cast<const OrbitMessage *>(message);
2287 if ( m10 != NULL ) {
~TransMessage()
Destructor.
void set_des_vx(const float new_des_vx)
Set des_vx value.
size_t maxlenof_motor_state() const
Get maximum length of motor_state value.
void set_vy(const float new_vy)
Set vy value.
OrbitMessage()
Constructor.
virtual Message * clone() const
Clone this message.
~ResetOdometryMessage()
Destructor.
void set_omega(const float new_omega)
Set omega value.
void * data_ptr
Pointer to memory that contains local data.
SetMotorStateMessage Fawkes BlackBoard Interface Message.
float vx() const
Get vx value.
static const uint32_t DRIVE_MODE_LINE_TRANS_ROT
DRIVE_MODE_LINE_TRANS_ROT constant.
virtual Message * clone() const
Clone this message.
virtual Message * clone() const
Clone this message.
float px() const
Get px value.
size_t maxlenof_omega() const
Get maximum length of omega value.
DriveRPMMessage()
Constructor.
virtual Message * clone() const
Clone this message.
RotMessage Fawkes BlackBoard Interface Message.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
static const uint32_t MOTOR_ENABLED
MOTOR_ENABLED constant.
size_t maxlenof_controller() const
Get maximum length of controller value.
float odometry_position_x() const
Get odometry_position_x value.
uint32_t controller() const
Get controller value.
size_t maxlenof_omega() const
Get maximum length of omega value.
virtual Message * clone() const
Clone this message.
void set_rear(const float new_rear)
Set rear value.
float vy() const
Get vy value.
static const uint32_t DRIVE_MODE_RPM
DRIVE_MODE_RPM constant.
virtual Message * clone() const
Clone this message.
void set_omega(const float new_omega)
Set omega value.
void set_vx(const float new_vx)
Set vx value.
TransRotMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_x() const
Get maximum length of x value.
float front_left() const
Get front_left value.
size_t maxlenof_odometry_position_x() const
Get maximum length of odometry_position_x value.
void set_hash(unsigned char *ihash)
Set hash.
void set_odometry_position_y(const float new_odometry_position_y)
Set odometry_position_y value.
float omega() const
Get omega value.
uint32_t controller() const
Get controller value.
~AcquireControlMessage()
Destructor.
Fawkes library namespace.
~SetOdometryMessage()
Destructor.
size_t maxlenof_rear_rpm() const
Get maximum length of rear_rpm value.
size_t maxlenof_vx() const
Get maximum length of vx value.
TransMessage()
Constructor.
void set_controller(const uint32_t new_controller)
Set controller value.
Timestamp data, must be present and first entries for each interface data structs!...
float y() const
Get y value.
void set_vy(const float new_vy)
Set vy value.
float vx() const
Get vx value.
void set_y(const float new_y)
Set y value.
int32_t left_rpm() const
Get left_rpm 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.
float odometry_path_length() const
Get odometry_path_length value.
SetOdometryMessage()
Constructor.
virtual Message * create_message(const char *type) const
Create message based on type name.
~TransRotMessage()
Destructor.
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.
ResetOdometryMessage()
Constructor.
virtual Message * clone() const
Clone this message.
float x() const
Get x value.
OrbitMessage Fawkes BlackBoard Interface Message.
void set_motor_state(const uint32_t new_motor_state)
Set motor_state value.
size_t maxlenof_front_left() const
Get maximum length of front_left value.
uint32_t drive_mode() const
Get drive_mode value.
size_t maxlenof_right_rpm() const
Get maximum length of right_rpm value.
size_t maxlenof_phi() const
Get maximum length of phi value.
Base class for all Fawkes BlackBoard interfaces.
size_t maxlenof_controller() const
Get maximum length of controller value.
int32_t rear_rpm() const
Get rear_rpm value.
AcquireControlMessage()
Constructor.
size_t maxlenof_odometry_orientation() const
Get maximum length of odometry_orientation value.
void set_time_sec(const float new_time_sec)
Set time_sec value.
size_t maxlenof_motor_state() const
Get maximum length of motor_state value.
void set_omega(const float new_omega)
Set omega value.
size_t maxlenof_odometry_orientation() const
Get maximum length of odometry_orientation value.
size_t maxlenof_front_right() const
Get maximum length of front_right 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 vx() const
Get vx value.
void set_des_omega(const float new_des_omega)
Set des_omega value.
message_data_ts_t * data_ts
data timestamp aliasing pointer
float phi() const
Get phi value.
~SetMotorStateMessage()
Destructor.
ResetOdometryMessage Fawkes BlackBoard Interface Message.
unsigned int data_size
Size of memory needed to hold all data.
void set_odometry_path_length(const float new_odometry_path_length)
Set odometry_path_length value.
virtual Message * clone() const
Clone this message.
size_t maxlenof_drive_mode() const
Get maximum length of drive_mode value.
float odometry_orientation() const
Get odometry_orientation value.
float odometry_position_y() const
Get odometry_position_y value.
AcquireControlMessage Fawkes BlackBoard Interface Message.
LinTransRotMessage()
Constructor.
void add_messageinfo(const char *name)
Add an entry to the message info list.
float time_sec() const
Get time_sec value.
bool data_changed
Indicator if data has changed.
size_t maxlenof_px() const
Get maximum length of px value.
void set_des_vy(const float new_des_vy)
Set des_vy value.
float vy() const
Get vy value.
const char * type() const
Get type of interface.
size_t maxlenof_vy() const
Get maximum length of vy value.
void * data_ptr
Pointer to local memory storage.
static const uint32_t DRIVE_MODE_TRANS_ROT
DRIVE_MODE_TRANS_ROT constant.
void set_x(const float new_x)
Set x value.
~OrbitMessage()
Destructor.
void set_vy(const float new_vy)
Set vy value.
void set_phi(const float new_phi)
Set phi value.
void set_vx(const float new_vx)
Set vx value.
void set_omega(const float new_omega)
Set omega value.
float rear() const
Get rear value.
void set_py(const float new_py)
Set py value.
float omega() const
Get omega value.
static const uint32_t DRIVE_MODE_TRANS
DRIVE_MODE_TRANS constant.
float y() const
Get y value.
void set_omega(const float new_omega)
Set omega value.
size_t maxlenof_des_vy() const
Get maximum length of des_vy value.
void set_odometry_orientation(const float new_odometry_orientation)
Set odometry_orientation value.
size_t maxlenof_vx() const
Get maximum length of vx value.
void set_front_left(const float new_front_left)
Set front_left value.
float omega() const
Get omega value.
size_t maxlenof_y() const
Get maximum length of y value.
int32_t right_rpm() const
Get right_rpm value.
~LinTransRotMessage()
Destructor.
~DriveRPMMessage()
Destructor.
size_t maxlenof_rear() const
Get maximum length of rear value.
void set_controller_thread_name(const char *new_controller_thread_name)
Set controller_thread_name value.
LinTransRotMessage Fawkes BlackBoard Interface Message.
float vx() const
Get vx value.
GotoMessage()
Constructor.
void set_px(const float new_px)
Set px value.
float omega() const
Get omega value.
uint32_t motor_state() const
Get motor_state value.
SetMotorStateMessage()
Constructor.
size_t maxlenof_vx() const
Get maximum length of vx value.
size_t maxlenof_controller_thread_name() const
Get maximum length of controller_thread_name value.
char * controller_thread_name() const
Get controller_thread_name value.
char * controller_thread_name() const
Get controller_thread_name value.
virtual Message * clone() const
Clone this message.
float des_vx() const
Get des_vx value.
DriveRPMMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_omega() const
Get maximum length of omega value.
size_t maxlenof_y() const
Get maximum length of y value.
float vy() const
Get vy value.
void set_drive_mode(const uint32_t new_drive_mode)
Set drive_mode value.
void set_vx(const float new_vx)
Set vx value.
float front_right() const
Get front_right value.
virtual Message * clone() const
Clone this message.
void set_vx(const float new_vx)
Set vx value.
size_t maxlenof_vy() const
Get maximum length of vy value.
size_t maxlenof_vx() const
Get maximum length of vx value.
float des_omega() const
Get des_omega value.
virtual Message * clone() const
Clone this message.
static const uint32_t MOTOR_DISABLED
MOTOR_DISABLED constant.
void set_odometry_position_x(const float new_odometry_position_x)
Set odometry_position_x value.
float des_vy() const
Get des_vy value.
size_t maxlenof_omega() const
Get maximum length of omega value.
size_t maxlenof_left_rpm() const
Get maximum length of left_rpm value.
size_t maxlenof_odometry_position_y() const
Get maximum length of odometry_position_y value.
static const uint32_t DRIVE_MODE_ORBIT
DRIVE_MODE_ORBIT constant.
size_t maxlenof_controller_thread_name() const
Get maximum length of controller_thread_name value.
MotorInterface Fawkes BlackBoard Interface.
size_t maxlenof_time_sec() const
Get maximum length of time_sec value.
virtual const char * enum_tostring(const char *enumtype, int val) const
Convert arbitrary enum value to string.
float py() const
Get py value.
size_t maxlenof_des_omega() const
Get maximum length of des_omega value.
size_t maxlenof_odometry_path_length() const
Get maximum length of odometry_path_length value.
TransRotMessage()
Constructor.
float odometry_orientation() const
Get odometry_orientation value.
void add_fieldinfo(interface_fieldtype_t type, const char *name, size_t length, void *value, const char *enumtype=0, const interface_enum_map_t *enum_map=0)
Add an entry to the info list.
GotoMessage Fawkes BlackBoard Interface Message.
size_t maxlenof_des_vx() const
Get maximum length of des_vx value.
SetOdometryMessage Fawkes BlackBoard Interface Message.
~GotoMessage()
Destructor.
size_t maxlenof_omega() const
Get maximum length of omega value.
float x() const
Get x value.
size_t maxlenof_vy() const
Get maximum length of vy 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.
uint32_t motor_state() const
Get motor_state value.
32 bit unsigned integer field
size_t maxlenof_py() const
Get maximum length of py value.
static const uint32_t DRIVE_MODE_ROT
DRIVE_MODE_ROT constant.
virtual void copy_values(const Interface *other)
Copy values from other interface.
float vy() const
Get vy value.
size_t maxlenof_x() const
Get maximum length of x value.
TransMessage Fawkes BlackBoard Interface Message.
float omega() const
Get omega value.
size_t maxlenof_vy() const
Get maximum length of vy value.
void set_y(const float new_y)
Set y value.