Program Listing for File kinematics_metrics.hpp

Return to documentation for file (cosm/kin/metrics/kinematics_metrics.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <boost/optional.hpp>

#include "rcppsw/metrics/base_metrics.hpp"
#include "rcppsw/math/vector3.hpp"
#include "rcppsw/spatial/euclidean_dist.hpp"
#include "rcppsw/types/type_uuid.hpp"
#include "rcppsw/metrics/context.hpp"

#include "cosm/cosm.hpp"
#include "cosm/kin/twist.hpp"
#include "cosm/kin/pose.hpp"

/*******************************************************************************
 * Namespaces
 ******************************************************************************/
namespace cosm::kin::metrics {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class kinematics_metrics : virtual public rmetrics::base_metrics {
 public:
  kinematics_metrics(void) = default;
  ~kinematics_metrics(void) override = default;

  virtual boost::optional<rspatial::euclidean_dist> traveled(
      const rmetrics::context& ctx) const = 0;

  virtual boost::optional<ckin::twist> twist(
      const rmetrics::context& ctx) const = 0;

  virtual ckin::pose pose(void) const = 0;


  virtual const rtypes::type_uuid& id(void) const = 0;
};

} /* namespace cosm::kin::metrics */