Program Listing for File base_controller2D.hpp
↰ Return to documentation for file (cosm/controller/base_controller2D.hpp
)
#pragma once
/*******************************************************************************
* Includes
******************************************************************************/
#include <memory>
#include <string>
#include <typeindex>
#include <vector>
#include "rcppsw/math/vector2.hpp"
#include "cosm/controller/base_controller.hpp"
#include "cosm/spatial/metrics/dist2D_metrics.hpp"
#include "cosm/subsystem/subsystem_fwd.hpp"
/*******************************************************************************
* Namespaces
******************************************************************************/
namespace cosm::tv {
class irv_manager;
} /* namespace cosm::tv */
namespace cosm::controller {
/*******************************************************************************
* Class Definitions
******************************************************************************/
class base_controller2D : public base_controller,
public csmetrics::dist2D_metrics {
public:
base_controller2D(void) RCPPSW_COLD;
~base_controller2D(void) override RCPPSW_COLD;
base_controller2D(const base_controller2D&) = delete;
base_controller2D& operator=(const base_controller2D&) = delete;
/* swarm spatial distribution 2D metrics */
rmath::vector2d rpos2D(void) const override final RCPPSW_PURE;
rmath::vector2z dpos2D(void) const override final RCPPSW_PURE;
rmath::radians heading2D(void) const override final RCPPSW_PURE;
void sensing_update(const rtypes::timestep& tick,
const rtypes::discretize_ratio& ratio) override;
void sensing_update(const rtypes::timestep& tick) override;
void mdc_ts_update(void) const override final;
};
} /* namespace cosm::controller */