35 #include "sensor_msgs/Imu.h"    36 #include "novatel_oem7_msgs/CORRIMU.h"    37 #include "novatel_oem7_msgs/IMURATECORRIMU.h"    38 #include "novatel_oem7_msgs/INSSTDEV.h"    39 #include "novatel_oem7_msgs/INSCONFIG.h"    40 #include "novatel_oem7_msgs/INSPVA.h"    41 #include "novatel_oem7_msgs/INSPVAX.h"    43 #include <boost/scoped_ptr.hpp>    51   typedef unsigned int imu_type_t; 
    52   typedef int imu_rate_t; 
    54   const imu_type_t IMU_TYPE_UNKNOWN = 0;
    68     return degrees * M_PI / 180.0;
    94     void getImuParam(imu_type_t imu_type, 
const std::string& name, std::string& param)
    97       std::string param_name = ns + 
"/supported_imus/" + std::to_string(imu_type) + 
"/" + name;
   109       return std::stoi(rate);
   122       insconfig_pub_.
publish(insconfig);
   126         std::string imu_desc;
   134                        "IMU: '" << imu_desc << 
"', rate= " << imu_rate_);
   149       corrimu_pub_.
publish(corrimu_);
   169         imu->orientation = 
tf2::toMsg(tf_orientation);
   179         imu->orientation_covariance[0] = std::pow(insstdev_->pitch_stdev,   2);
   180         imu->orientation_covariance[4] = std::pow(insstdev_->roll_stdev,    2);
   181         imu->orientation_covariance[8] = std::pow(insstdev_->azimuth_stdev, 2);
   184       if(corrimu_ && imu_rate_ > 0)
   186         imu->angular_velocity.x = corrimu_->pitch_rate * 
imu_rate_;
   187         imu->angular_velocity.y = corrimu_->roll_rate  * 
imu_rate_;
   188         imu->angular_velocity.z = corrimu_->yaw_rate   * 
imu_rate_;
   190         imu->linear_acceleration.x = corrimu_->lateral_acc      * 
imu_rate_;
   191         imu->linear_acceleration.y = corrimu_->longitudinal_acc * 
imu_rate_;
   192         imu->linear_acceleration.z = corrimu_->vertical_acc     * 
imu_rate_;
   195         imu->angular_velocity_covariance[0]    = 1e-3;
   196         imu->angular_velocity_covariance[4]    = 1e-3;
   197         imu->angular_velocity_covariance[8]    = 1e-3;
   200         imu->linear_acceleration_covariance[0] = 1e-3;
   201         imu->linear_acceleration_covariance[4] = 1e-3;
   202         imu->linear_acceleration_covariance[8] = 1e-3;
   216       insstdev_pub_.
publish(insstdev_);
   234       imu_pub_.
setup<sensor_msgs::Imu>(                  
"IMU",        nh);
   235       corrimu_pub_.
setup<  novatel_oem7_msgs::CORRIMU>(  
"CORRIMU",    nh);
   236       insstdev_pub_.
setup< novatel_oem7_msgs::INSSTDEV>( 
"INSSTDEV",   nh);
   237       inspvax_pub_.
setup<  novatel_oem7_msgs::INSPVAX>(  
"INSPVAX",    nh);
   238       insconfig_pub_.
setup<novatel_oem7_msgs::INSCONFIG>(
"INSCONFIG",  nh);
   249       static const std::vector<int> MSG_IDS(
 boost::shared_ptr< novatel_oem7_msgs::INSSTDEV > insstdev_
 
void setRPY(const tf2Scalar &roll, const tf2Scalar &pitch, const tf2Scalar &yaw)
 
void handleMsg(Oem7RawMessageIf::ConstPtr msg)
 
void publishCorrImuMsg(Oem7RawMessageIf::ConstPtr msg)
 
double degreesToRadians(double degrees)
 
void publishInsPVAXMsg(Oem7RawMessageIf::ConstPtr msg)
 
#define ROS_LOG_STREAM(level, name, args)
 
#define ROS_WARN_THROTTLE(rate,...)
 
boost::shared_ptr< novatel_oem7_msgs::CORRIMU > corrimu_
 
const int INSCONFIG_OEM7_MSGID
 
Oem7RosPublisher inspvax_pub_
 
const int INSPVAX_OEM7_MSGID
 
std::map< std::string, std::string > imu_config_map_t
 
Oem7RosPublisher insconfig_pub_
 
boost::shared_ptr< novatel_oem7_msgs::INSPVA > inspva_
 
ROSCPP_DECL const std::string & getNamespace()
 
#define ROS_FATAL_STREAM(args)
 
const int INSPVAS_OEM7_MSGID
 
void getImuParam(imu_type_t imu_type, const std::string &name, std::string ¶m)
 
const std::vector< int > & getMessageIds()
 
Oem7RosPublisher corrimu_pub_
 
int getImuRate(imu_type_t imu_type)
 
imu_config_map_t imu_config_map
 
void publish(boost::shared_ptr< M > &msg)
 
#define ROS_DEBUG_STREAM(args)
 
PLUGINLIB_EXPORT_CLASS(novatel_oem7_driver::Oem7ConfigNodelet, nodelet::Nodelet)
 
void processInsConfigMsg(Oem7RawMessageIf::ConstPtr msg)
 
void initialize(ros::NodeHandle &nh)
 
const int IMURATECORRIMUS_OEM7_MSGID
 
void setup(const std::string &name, ros::NodeHandle &nh)
 
#define ROS_INFO_STREAM(args)
 
void MakeROSMessage(const Oem7RawMessageIf::ConstPtr &msg, boost::shared_ptr< T > &rosmsg)
 
const double DATA_NOT_AVAILABLE
Used to initialized unpopulated fields. 
 
bool getParam(const std::string &key, std::string &s) const 
 
Oem7RosPublisher insstdev_pub_
 
void publishInsStDevMsg(Oem7RawMessageIf::ConstPtr msg)
 
const int INSSTDEV_OEM7_MSGID
 
void getImuDescription(imu_type_t imu_type, std::string &desc)
 
const int CORRIMUS_OEM7_MSGID
 
Oem7RosPublisher imu_pub_
 
#define ROSCONSOLE_DEFAULT_NAME