24#include <interfaces/IMUInterface.h>
26#include <core/exceptions/software.h>
65IMUInterface::IMUInterface() : Interface()
67 data_size =
sizeof(IMUInterface_data_t);
68 data_ptr = malloc(data_size);
69 data = (IMUInterface_data_t *)data_ptr;
70 data_ts = (interface_data_ts_t *)data_ptr;
71 memset(data_ptr, 0, data_size);
72 add_fieldinfo(IFT_STRING,
"frame", 32, data->frame);
73 add_fieldinfo(IFT_FLOAT,
"orientation", 4, &data->orientation);
74 add_fieldinfo(IFT_DOUBLE,
"orientation_covariance", 9, &data->orientation_covariance);
75 add_fieldinfo(IFT_FLOAT,
"angular_velocity", 3, &data->angular_velocity);
76 add_fieldinfo(IFT_DOUBLE,
"angular_velocity_covariance", 9, &data->angular_velocity_covariance);
77 add_fieldinfo(IFT_FLOAT,
"linear_acceleration", 3, &data->linear_acceleration);
78 add_fieldinfo(IFT_DOUBLE,
"linear_acceleration_covariance", 9, &data->linear_acceleration_covariance);
79 unsigned char tmp_hash[] = {0x9d, 0xf6, 0xde, 0x9d, 0x32, 0xe3, 0xf, 0x11, 0xac, 0xdc, 0x5d, 0x92, 0x27, 0x89, 0x27, 0x7e};
84IMUInterface::~IMUInterface()
96IMUInterface::frame()
const
106IMUInterface::maxlenof_frame()
const
118IMUInterface::set_frame(
const char * new_frame)
120 set_field(data->frame, new_frame);
130IMUInterface::orientation()
const
132 return data->orientation;
144IMUInterface::orientation(
unsigned int index)
const
147 throw Exception(
"Index value %u out of bounds (0..3)", index);
149 return data->orientation[index];
157IMUInterface::maxlenof_orientation()
const
169IMUInterface::set_orientation(
const float * new_orientation)
171 set_field(data->orientation, new_orientation);
182IMUInterface::set_orientation(
unsigned int index,
const float new_orientation)
184 set_field(data->orientation, index, new_orientation);
193IMUInterface::orientation_covariance()
const
195 return data->orientation_covariance;
207IMUInterface::orientation_covariance(
unsigned int index)
const
210 throw Exception(
"Index value %u out of bounds (0..8)", index);
212 return data->orientation_covariance[index];
220IMUInterface::maxlenof_orientation_covariance()
const
232IMUInterface::set_orientation_covariance(
const double * new_orientation_covariance)
234 set_field(data->orientation_covariance, new_orientation_covariance);
245IMUInterface::set_orientation_covariance(
unsigned int index,
const double new_orientation_covariance)
247 set_field(data->orientation_covariance, index, new_orientation_covariance);
256IMUInterface::angular_velocity()
const
258 return data->angular_velocity;
270IMUInterface::angular_velocity(
unsigned int index)
const
273 throw Exception(
"Index value %u out of bounds (0..2)", index);
275 return data->angular_velocity[index];
283IMUInterface::maxlenof_angular_velocity()
const
295IMUInterface::set_angular_velocity(
const float * new_angular_velocity)
297 set_field(data->angular_velocity, new_angular_velocity);
308IMUInterface::set_angular_velocity(
unsigned int index,
const float new_angular_velocity)
310 set_field(data->angular_velocity, index, new_angular_velocity);
319IMUInterface::angular_velocity_covariance()
const
321 return data->angular_velocity_covariance;
333IMUInterface::angular_velocity_covariance(
unsigned int index)
const
336 throw Exception(
"Index value %u out of bounds (0..8)", index);
338 return data->angular_velocity_covariance[index];
346IMUInterface::maxlenof_angular_velocity_covariance()
const
358IMUInterface::set_angular_velocity_covariance(
const double * new_angular_velocity_covariance)
360 set_field(data->angular_velocity_covariance, new_angular_velocity_covariance);
371IMUInterface::set_angular_velocity_covariance(
unsigned int index,
const double new_angular_velocity_covariance)
373 set_field(data->angular_velocity_covariance, index, new_angular_velocity_covariance);
382IMUInterface::linear_acceleration()
const
384 return data->linear_acceleration;
396IMUInterface::linear_acceleration(
unsigned int index)
const
399 throw Exception(
"Index value %u out of bounds (0..2)", index);
401 return data->linear_acceleration[index];
409IMUInterface::maxlenof_linear_acceleration()
const
421IMUInterface::set_linear_acceleration(
const float * new_linear_acceleration)
423 set_field(data->linear_acceleration, new_linear_acceleration);
434IMUInterface::set_linear_acceleration(
unsigned int index,
const float new_linear_acceleration)
436 set_field(data->linear_acceleration, index, new_linear_acceleration);
445IMUInterface::linear_acceleration_covariance()
const
447 return data->linear_acceleration_covariance;
459IMUInterface::linear_acceleration_covariance(
unsigned int index)
const
462 throw Exception(
"Index value %u out of bounds (0..8)", index);
464 return data->linear_acceleration_covariance[index];
472IMUInterface::maxlenof_linear_acceleration_covariance()
const
484IMUInterface::set_linear_acceleration_covariance(
const double * new_linear_acceleration_covariance)
486 set_field(data->linear_acceleration_covariance, new_linear_acceleration_covariance);
497IMUInterface::set_linear_acceleration_covariance(
unsigned int index,
const double new_linear_acceleration_covariance)
499 set_field(data->linear_acceleration_covariance, index, new_linear_acceleration_covariance);
503IMUInterface::create_message(
const char *type)
const
506 "message type for this interface type.", type);
519 type(), other->
type());
521 memcpy(data, oi->data,
sizeof(IMUInterface_data_t));
525IMUInterface::enum_tostring(
const char *enumtype,
int val)
const
536IMUInterface::message_valid(
const Message *message)
const
Base class for exceptions in Fawkes.
IMUInterface Fawkes BlackBoard Interface.
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.
Fawkes library namespace.