imu_ros_i.h
Go to the documentation of this file.
1 #ifndef PHIDGETS_IMU_IMU_ROS_I_H
2 #define PHIDGETS_IMU_IMU_ROS_I_H
3 
6 #include <phidgets_api/imu.h>
7 #include <ros/ros.h>
8 #include <ros/service_server.h>
9 #include <sensor_msgs/Imu.h>
10 #include <sensor_msgs/MagneticField.h>
11 #include <std_msgs/Bool.h>
12 #include <std_srvs/Empty.h>
13 
14 #include <memory>
15 #include <mutex>
16 
17 namespace phidgets {
18 
19 const float G = 9.80665;
20 const float MAX_TIMEDIFF_SECONDS = 0.1;
21 
22 class ImuRosI final : public Imu
23 {
24  typedef sensor_msgs::Imu ImuMsg;
25  typedef sensor_msgs::MagneticField MagMsg;
26 
27  public:
28  explicit ImuRosI(ros::NodeHandle nh, ros::NodeHandle nh_private);
29 
30  bool calibrateService(std_srvs::Empty::Request &req,
31  std_srvs::Empty::Response &res);
32 
33  private:
40 
44  std::shared_ptr<diagnostic_updater::TopicDiagnostic>
46 
47  // diagnostics
51 
54 
55  ImuMsg imu_msg_;
56  MagMsg mag_msg_;
57 
59 
60  // params
61 
62  std::string frame_id_;
63  int period_; // rate in ms
64 
69 
70  // compass correction params (see
71  // http://www.phidgets.com/docs/1044_User_Guide)
72  double cc_mag_field_;
73  double cc_offset0_;
74  double cc_offset1_;
75  double cc_offset2_;
76  double cc_gain0_;
77  double cc_gain1_;
78  double cc_gain2_;
79  double cc_T0_;
80  double cc_T1_;
81  double cc_T2_;
82  double cc_T3_;
83  double cc_T4_;
84  double cc_T5_;
85 
86  void calibrate();
87  void initDevice();
88  void dataHandler(const double acceleration[3], const double angularRate[3],
89  const double magneticField[3], double timestamp) override;
90  void attachHandler() override;
91  void detachHandler() override;
92  void errorHandler(int error) override;
93 
100 };
101 
102 } // namespace phidgets
103 
104 #endif // PHIDGETS_IMU_IMU_ROS_I_H
ros::ServiceServer cal_srv_
Definition: imu_ros_i.h:39
std::string frame_id_
Definition: imu_ros_i.h:62
double cc_offset2_
Definition: imu_ros_i.h:75
const float MAX_TIMEDIFF_SECONDS
Definition: imu_ros_i.h:20
ImuRosI(ros::NodeHandle nh, ros::NodeHandle nh_private)
Definition: imu_ros_i.cpp:5
ros::NodeHandle nh_
Definition: imu_ros_i.h:34
double target_publish_freq_
Definition: imu_ros_i.h:50
ros::Time time_zero_
Definition: imu_ros_i.h:58
double cc_gain0_
Definition: imu_ros_i.h:76
ros::Publisher imu_publisher_
Definition: imu_ros_i.h:36
double linear_acceleration_stdev_
Definition: imu_ros_i.h:66
sensor_msgs::MagneticField MagMsg
Definition: imu_ros_i.h:25
sensor_msgs::Imu ImuMsg
Definition: imu_ros_i.h:24
void attachHandler() override
Definition: imu_ros_i.cpp:313
bool calibrateService(std_srvs::Empty::Request &req, std_srvs::Empty::Response &res)
Definition: imu_ros_i.cpp:203
void errorHandler(int error) override
Definition: imu_ros_i.cpp:336
double cc_gain2_
Definition: imu_ros_i.h:78
ros::Time last_published_time_
Definition: imu_ros_i.h:52
std::shared_ptr< diagnostic_updater::TopicDiagnostic > imu_publisher_diag_ptr_
Definition: imu_ros_i.h:45
double magnetic_field_stdev_
Definition: imu_ros_i.h:67
const float G
Definition: imu_ros_i.h:19
double angular_velocity_stdev_
Definition: imu_ros_i.h:65
void phidgetsDiagnostics(diagnostic_updater::DiagnosticStatusWrapper &stat)
Main diagnostic method that takes care of collecting diagnostic data.
Definition: imu_ros_i.cpp:343
ros::NodeHandle nh_private_
Definition: imu_ros_i.h:35
double cc_offset1_
Definition: imu_ros_i.h:74
double cc_offset0_
Definition: imu_ros_i.h:73
ros::Publisher cal_publisher_
Definition: imu_ros_i.h:38
double cc_mag_field_
Definition: imu_ros_i.h:72
ros::Publisher mag_publisher_
Definition: imu_ros_i.h:37
diagnostic_updater::Updater diag_updater_
updater object of class Update. Used to add diagnostic tasks, set ID etc. refer package API...
Definition: imu_ros_i.h:43
void detachHandler() override
Definition: imu_ros_i.cpp:329
void dataHandler(const double acceleration[3], const double angularRate[3], const double magneticField[3], double timestamp) override
Definition: imu_ros_i.cpp:231
double cc_gain1_
Definition: imu_ros_i.h:77


phidgets_imu
Author(s): Ivan Dryanovski
autogenerated on Fri Apr 9 2021 02:56:04