24 #include <interfaces/ObjectPositionInterface.h>
26 #include <core/exceptions/software.h>
90 ObjectPositionInterface::ObjectPositionInterface() : Interface()
92 data_size =
sizeof(ObjectPositionInterface_data_t);
93 data_ptr = malloc(data_size);
94 data = (ObjectPositionInterface_data_t *)data_ptr;
95 data_ts = (interface_data_ts_t *)data_ptr;
96 memset(data_ptr, 0, data_size);
97 add_fieldinfo(IFT_UINT32,
"object_type", 1, &data->object_type);
98 add_fieldinfo(IFT_UINT32,
"flags", 1, &data->flags);
99 add_fieldinfo(IFT_BOOL,
"visible", 1, &data->visible);
100 add_fieldinfo(IFT_INT32,
"visibility_history", 1, &data->visibility_history);
101 add_fieldinfo(IFT_FLOAT,
"roll", 1, &data->roll);
102 add_fieldinfo(IFT_FLOAT,
"pitch", 1, &data->pitch);
103 add_fieldinfo(IFT_FLOAT,
"yaw", 1, &data->yaw);
104 add_fieldinfo(IFT_FLOAT,
"distance", 1, &data->distance);
105 add_fieldinfo(IFT_FLOAT,
"bearing", 1, &data->bearing);
106 add_fieldinfo(IFT_FLOAT,
"slope", 1, &data->slope);
107 add_fieldinfo(IFT_FLOAT,
"dbs_covariance", 9, &data->dbs_covariance);
108 add_fieldinfo(IFT_FLOAT,
"world_x", 1, &data->world_x);
109 add_fieldinfo(IFT_FLOAT,
"world_y", 1, &data->world_y);
110 add_fieldinfo(IFT_FLOAT,
"world_z", 1, &data->world_z);
111 add_fieldinfo(IFT_FLOAT,
"world_xyz_covariance", 9, &data->world_xyz_covariance);
112 add_fieldinfo(IFT_FLOAT,
"relative_x", 1, &data->relative_x);
113 add_fieldinfo(IFT_FLOAT,
"relative_y", 1, &data->relative_y);
114 add_fieldinfo(IFT_FLOAT,
"relative_z", 1, &data->relative_z);
115 add_fieldinfo(IFT_FLOAT,
"relative_xyz_covariance", 9, &data->relative_xyz_covariance);
116 add_fieldinfo(IFT_FLOAT,
"extent_x", 1, &data->extent_x);
117 add_fieldinfo(IFT_FLOAT,
"extent_y", 1, &data->extent_y);
118 add_fieldinfo(IFT_FLOAT,
"extent_z", 1, &data->extent_z);
119 add_fieldinfo(IFT_FLOAT,
"world_x_velocity", 1, &data->world_x_velocity);
120 add_fieldinfo(IFT_FLOAT,
"world_y_velocity", 1, &data->world_y_velocity);
121 add_fieldinfo(IFT_FLOAT,
"world_z_velocity", 1, &data->world_z_velocity);
122 add_fieldinfo(IFT_FLOAT,
"world_xyz_velocity_covariance", 9, &data->world_xyz_velocity_covariance);
123 add_fieldinfo(IFT_FLOAT,
"relative_x_velocity", 1, &data->relative_x_velocity);
124 add_fieldinfo(IFT_FLOAT,
"relative_y_velocity", 1, &data->relative_y_velocity);
125 add_fieldinfo(IFT_FLOAT,
"relative_z_velocity", 1, &data->relative_z_velocity);
126 add_fieldinfo(IFT_FLOAT,
"relative_xyz_velocity_covariance", 9, &data->relative_xyz_velocity_covariance);
127 unsigned char tmp_hash[] = {0x65, 0xac, 0x82, 0xde, 0xcd, 0x8b, 0x12, 0x81, 0x7b, 0xe6, 0x61, 0xdd, 0x30, 0x55, 0xd, 0x38};
132 ObjectPositionInterface::~ObjectPositionInterface()
144 ObjectPositionInterface::object_type()
const
146 return data->object_type;
154 ObjectPositionInterface::maxlenof_object_type()
const
166 ObjectPositionInterface::set_object_type(
const uint32_t new_object_type)
168 data_changed |=
change_field(data->object_type, new_object_type);
180 ObjectPositionInterface::flags()
const
190 ObjectPositionInterface::maxlenof_flags()
const
204 ObjectPositionInterface::set_flags(
const uint32_t new_flags)
214 ObjectPositionInterface::is_visible()
const
216 return data->visible;
224 ObjectPositionInterface::maxlenof_visible()
const
234 ObjectPositionInterface::set_visible(
const bool new_visible)
236 data_changed |=
change_field(data->visible, new_visible);
250 ObjectPositionInterface::visibility_history()
const
252 return data->visibility_history;
260 ObjectPositionInterface::maxlenof_visibility_history()
const
276 ObjectPositionInterface::set_visibility_history(
const int32_t new_visibility_history)
278 data_changed |=
change_field(data->visibility_history, new_visibility_history);
288 ObjectPositionInterface::roll()
const
298 ObjectPositionInterface::maxlenof_roll()
const
310 ObjectPositionInterface::set_roll(
const float new_roll)
322 ObjectPositionInterface::pitch()
const
332 ObjectPositionInterface::maxlenof_pitch()
const
344 ObjectPositionInterface::set_pitch(
const float new_pitch)
356 ObjectPositionInterface::yaw()
const
366 ObjectPositionInterface::maxlenof_yaw()
const
378 ObjectPositionInterface::set_yaw(
const float new_yaw)
391 ObjectPositionInterface::distance()
const
393 return data->distance;
401 ObjectPositionInterface::maxlenof_distance()
const
414 ObjectPositionInterface::set_distance(
const float new_distance)
416 data_changed |=
change_field(data->distance, new_distance);
427 ObjectPositionInterface::bearing()
const
429 return data->bearing;
437 ObjectPositionInterface::maxlenof_bearing()
const
450 ObjectPositionInterface::set_bearing(
const float new_bearing)
452 data_changed |=
change_field(data->bearing, new_bearing);
464 ObjectPositionInterface::slope()
const
474 ObjectPositionInterface::maxlenof_slope()
const
488 ObjectPositionInterface::set_slope(
const float new_slope)
502 ObjectPositionInterface::dbs_covariance()
const
504 return data->dbs_covariance;
518 ObjectPositionInterface::dbs_covariance(
unsigned int index)
const
521 throw Exception(
"Index value %u out of bounds (0..8)", index);
523 return data->dbs_covariance[index];
531 ObjectPositionInterface::maxlenof_dbs_covariance()
const
545 ObjectPositionInterface::set_dbs_covariance(
const float * new_dbs_covariance)
547 data_changed |=
change_field(data->dbs_covariance, new_dbs_covariance);
560 ObjectPositionInterface::set_dbs_covariance(
unsigned int index,
const float new_dbs_covariance)
562 data_changed |=
change_field(data->dbs_covariance, index, new_dbs_covariance);
573 ObjectPositionInterface::world_x()
const
575 return data->world_x;
583 ObjectPositionInterface::maxlenof_world_x()
const
597 ObjectPositionInterface::set_world_x(
const float new_world_x)
599 data_changed |=
change_field(data->world_x, new_world_x);
611 ObjectPositionInterface::world_y()
const
613 return data->world_y;
621 ObjectPositionInterface::maxlenof_world_y()
const
635 ObjectPositionInterface::set_world_y(
const float new_world_y)
637 data_changed |=
change_field(data->world_y, new_world_y);
649 ObjectPositionInterface::world_z()
const
651 return data->world_z;
659 ObjectPositionInterface::maxlenof_world_z()
const
673 ObjectPositionInterface::set_world_z(
const float new_world_z)
675 data_changed |=
change_field(data->world_z, new_world_z);
687 ObjectPositionInterface::world_xyz_covariance()
const
689 return data->world_xyz_covariance;
703 ObjectPositionInterface::world_xyz_covariance(
unsigned int index)
const
706 throw Exception(
"Index value %u out of bounds (0..8)", index);
708 return data->world_xyz_covariance[index];
716 ObjectPositionInterface::maxlenof_world_xyz_covariance()
const
730 ObjectPositionInterface::set_world_xyz_covariance(
const float * new_world_xyz_covariance)
732 data_changed |=
change_field(data->world_xyz_covariance, new_world_xyz_covariance);
745 ObjectPositionInterface::set_world_xyz_covariance(
unsigned int index,
const float new_world_xyz_covariance)
747 data_changed |=
change_field(data->world_xyz_covariance, index, new_world_xyz_covariance);
756 ObjectPositionInterface::relative_x()
const
758 return data->relative_x;
766 ObjectPositionInterface::maxlenof_relative_x()
const
778 ObjectPositionInterface::set_relative_x(
const float new_relative_x)
780 data_changed |=
change_field(data->relative_x, new_relative_x);
790 ObjectPositionInterface::relative_y()
const
792 return data->relative_y;
800 ObjectPositionInterface::maxlenof_relative_y()
const
812 ObjectPositionInterface::set_relative_y(
const float new_relative_y)
814 data_changed |=
change_field(data->relative_y, new_relative_y);
824 ObjectPositionInterface::relative_z()
const
826 return data->relative_z;
834 ObjectPositionInterface::maxlenof_relative_z()
const
846 ObjectPositionInterface::set_relative_z(
const float new_relative_z)
848 data_changed |=
change_field(data->relative_z, new_relative_z);
860 ObjectPositionInterface::relative_xyz_covariance()
const
862 return data->relative_xyz_covariance;
876 ObjectPositionInterface::relative_xyz_covariance(
unsigned int index)
const
879 throw Exception(
"Index value %u out of bounds (0..8)", index);
881 return data->relative_xyz_covariance[index];
889 ObjectPositionInterface::maxlenof_relative_xyz_covariance()
const
903 ObjectPositionInterface::set_relative_xyz_covariance(
const float * new_relative_xyz_covariance)
905 data_changed |=
change_field(data->relative_xyz_covariance, new_relative_xyz_covariance);
918 ObjectPositionInterface::set_relative_xyz_covariance(
unsigned int index,
const float new_relative_xyz_covariance)
920 data_changed |=
change_field(data->relative_xyz_covariance, index, new_relative_xyz_covariance);
929 ObjectPositionInterface::extent_x()
const
931 return data->extent_x;
939 ObjectPositionInterface::maxlenof_extent_x()
const
951 ObjectPositionInterface::set_extent_x(
const float new_extent_x)
953 data_changed |=
change_field(data->extent_x, new_extent_x);
963 ObjectPositionInterface::extent_y()
const
965 return data->extent_y;
973 ObjectPositionInterface::maxlenof_extent_y()
const
985 ObjectPositionInterface::set_extent_y(
const float new_extent_y)
987 data_changed |=
change_field(data->extent_y, new_extent_y);
997 ObjectPositionInterface::extent_z()
const
999 return data->extent_z;
1007 ObjectPositionInterface::maxlenof_extent_z()
const
1019 ObjectPositionInterface::set_extent_z(
const float new_extent_z)
1021 data_changed |=
change_field(data->extent_z, new_extent_z);
1031 ObjectPositionInterface::world_x_velocity()
const
1033 return data->world_x_velocity;
1041 ObjectPositionInterface::maxlenof_world_x_velocity()
const
1053 ObjectPositionInterface::set_world_x_velocity(
const float new_world_x_velocity)
1055 data_changed |=
change_field(data->world_x_velocity, new_world_x_velocity);
1065 ObjectPositionInterface::world_y_velocity()
const
1067 return data->world_y_velocity;
1075 ObjectPositionInterface::maxlenof_world_y_velocity()
const
1087 ObjectPositionInterface::set_world_y_velocity(
const float new_world_y_velocity)
1089 data_changed |=
change_field(data->world_y_velocity, new_world_y_velocity);
1099 ObjectPositionInterface::world_z_velocity()
const
1101 return data->world_z_velocity;
1109 ObjectPositionInterface::maxlenof_world_z_velocity()
const
1121 ObjectPositionInterface::set_world_z_velocity(
const float new_world_z_velocity)
1123 data_changed |=
change_field(data->world_z_velocity, new_world_z_velocity);
1135 ObjectPositionInterface::world_xyz_velocity_covariance()
const
1137 return data->world_xyz_velocity_covariance;
1151 ObjectPositionInterface::world_xyz_velocity_covariance(
unsigned int index)
const
1154 throw Exception(
"Index value %u out of bounds (0..8)", index);
1156 return data->world_xyz_velocity_covariance[index];
1164 ObjectPositionInterface::maxlenof_world_xyz_velocity_covariance()
const
1178 ObjectPositionInterface::set_world_xyz_velocity_covariance(
const float * new_world_xyz_velocity_covariance)
1180 data_changed |=
change_field(data->world_xyz_velocity_covariance, new_world_xyz_velocity_covariance);
1193 ObjectPositionInterface::set_world_xyz_velocity_covariance(
unsigned int index,
const float new_world_xyz_velocity_covariance)
1195 data_changed |=
change_field(data->world_xyz_velocity_covariance, index, new_world_xyz_velocity_covariance);
1204 ObjectPositionInterface::relative_x_velocity()
const
1206 return data->relative_x_velocity;
1214 ObjectPositionInterface::maxlenof_relative_x_velocity()
const
1226 ObjectPositionInterface::set_relative_x_velocity(
const float new_relative_x_velocity)
1228 data_changed |=
change_field(data->relative_x_velocity, new_relative_x_velocity);
1238 ObjectPositionInterface::relative_y_velocity()
const
1240 return data->relative_y_velocity;
1248 ObjectPositionInterface::maxlenof_relative_y_velocity()
const
1260 ObjectPositionInterface::set_relative_y_velocity(
const float new_relative_y_velocity)
1262 data_changed |=
change_field(data->relative_y_velocity, new_relative_y_velocity);
1272 ObjectPositionInterface::relative_z_velocity()
const
1274 return data->relative_z_velocity;
1282 ObjectPositionInterface::maxlenof_relative_z_velocity()
const
1294 ObjectPositionInterface::set_relative_z_velocity(
const float new_relative_z_velocity)
1296 data_changed |=
change_field(data->relative_z_velocity, new_relative_z_velocity);
1308 ObjectPositionInterface::relative_xyz_velocity_covariance()
const
1310 return data->relative_xyz_velocity_covariance;
1324 ObjectPositionInterface::relative_xyz_velocity_covariance(
unsigned int index)
const
1327 throw Exception(
"Index value %u out of bounds (0..8)", index);
1329 return data->relative_xyz_velocity_covariance[index];
1337 ObjectPositionInterface::maxlenof_relative_xyz_velocity_covariance()
const
1351 ObjectPositionInterface::set_relative_xyz_velocity_covariance(
const float * new_relative_xyz_velocity_covariance)
1353 data_changed |=
change_field(data->relative_xyz_velocity_covariance, new_relative_xyz_velocity_covariance);
1366 ObjectPositionInterface::set_relative_xyz_velocity_covariance(
unsigned int index,
const float new_relative_xyz_velocity_covariance)
1368 data_changed |=
change_field(data->relative_xyz_velocity_covariance, index, new_relative_xyz_velocity_covariance);
1372 ObjectPositionInterface::create_message(
const char *type)
const
1375 "message type for this interface type.", type);
1383 ObjectPositionInterface::copy_values(
const Interface *other)
1388 type(), other->
type());
1390 memcpy(data, oi->data,
sizeof(ObjectPositionInterface_data_t));
1394 ObjectPositionInterface::enum_tostring(
const char *enumtype,
int val)
const
1405 ObjectPositionInterface::message_valid(
const Message *message)
const
Base class for exceptions in Fawkes.
Base class for all Fawkes BlackBoard interfaces.
const char * type() const
Get type of interface.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
ObjectPositionInterface Fawkes BlackBoard Interface.
static const uint32_t FLAG_HAS_WORLD_VELOCITY
FLAG_HAS_WORLD_VELOCITY constant.
static const uint32_t FLAG_HAS_EULER_ANGLES
FLAG_HAS_EULER_ANGLES constant.
static const uint32_t TYPE_GOAL_BLUE
TYPE_GOAL_BLUE constant.
static const uint32_t TYPE_SELF
TYPE_SELF constant.
static const uint32_t TYPE_LINE
TYPE_LINE constant.
static const uint32_t TYPE_GOAL_YELLOW
TYPE_GOAL_YELLOW constant.
static const uint32_t FLAG_HAS_WORLD
FLAG_HAS_WORLD constant.
static const uint32_t TYPE_OTHER
TYPE_OTHER constant.
static const uint32_t FLAG_HAS_RELATIVE_CARTESIAN
FLAG_HAS_RELATIVE_CARTESIAN constant.
static const uint32_t TYPE_BALL
TYPE_BALL constant.
static const uint32_t FLAG_HAS_Z_AS_ORI
FLAG_HAS_Z_AS_ORI constant.
static const uint32_t TYPE_TEAMMEMBER
TYPE_TEAMMEMBER constant.
static const uint32_t FLAG_HAS_EXTENT
FLAG_HAS_EXTENT constant.
static const uint32_t FLAG_HAS_COVARIANCES
FLAG_HAS_COVARIANCES constant.
static const uint32_t TYPE_OPPONENT
TYPE_OPPONENT constant.
static const uint32_t FLAG_HAS_VOLUME_EXTENT
FLAG_HAS_VOLUME_EXTENT constant.
static const uint32_t FLAG_IS_FIXED_OBJECT
FLAG_IS_FIXED_OBJECT constant.
static const uint32_t FLAG_NONE
FLAG_NONE constant.
static const uint32_t FLAG_HAS_RELATIVE_POLAR
FLAG_HAS_RELATIVE_POLAR constant.
static const uint32_t FLAG_HAS_CIRCULAR_EXTENT
FLAG_HAS_CIRCULAR_EXTENT constant.
Fawkes library namespace.
bool change_field(FieldT &field, const DataT &value)
Set a field and return whether it changed.