#ifndef ROS_NODE_H
#define ROS_NODE_H

#include <ros/ros.h>

#include <nav_msgs/Odometry.h>
#include <sensor_msgs/Imu.h>
#include <std_msgs/UInt32.h>
#include <std_msgs/Bool.h>
#include <std_srvs/SetBool.h>
#include <std_srvs/Trigger.h>
#include <std_srvs/Empty.h>
#include <tf/transform_broadcaster.h>
#include <geometry_msgs/Twist.h>

#include "qt_pi_msgs/GetBatteryInfo.h"
#include "qt_pi_msgs/GetBaudRate.h"
#include "qt_pi_msgs/GetEncoderData.h"
#include "qt_pi_msgs/GetPIDData.h"
#include "qt_pi_msgs/SetPIDData.h"
#include "qt_pi_params.h"
#include "serial_driver.h"

ros::Publisher imu_pub;
ros::Publisher odom_pub;

ros::ServiceServer get_batt_state;
ros::ServiceServer get_baudrate;

ros::ServiceServer get_pid_val;
ros::ServiceServer set_pid_val;

ros::ServiceServer get_encoder;
ros::ServiceServer reset_odom;
ros::ServiceServer en_odom;

ros::ServiceServer en_imu;
ros::Subscriber imu_tare;

ros::Subscriber move_cmd;

int16_t imu_offset[6];  //{-18, 117, -63, 29, -21, -17};

void init_node(ros::NodeHandle n);
void shutdown_node();

#endif
