#ifndef __AMR_SUBCRIBER_H_INCLUDED_
#define __AMR_SUBCRIBER_H_INCLUDED_

#include <ros/ros.h>
#include <robot/robot.h>
#include <geometry_msgs/PoseStamped.h>
#include <nav_msgs/Odometry.h>
#include <move_base_core/navigation.h>
#include <memory>
#include <string>

namespace amr_control
{
  class AmrSubscriber
  {
  public:
    AmrSubscriber(ros::NodeHandle &nh, robot::move_base_core::BaseNavigation::Ptr move_base_ptr);
    virtual ~AmrSubscriber();

  private:
    void moveBaseSimpleCallback(const geometry_msgs::PoseStamped::ConstPtr &msg);
    void odometryCallback(const nav_msgs::Odometry::ConstPtr &msg);
    
    ros::NodeHandle nh_;
    ros::Subscriber move_base_simple_sub_;
    ros::Subscriber odometry_sub_;
    robot::move_base_core::BaseNavigation::Ptr move_base_ptr_;
  };
} // namespace amr_control

#endif // __AMR_SUBCRIBER_H_INCLUDED_