ifw-fcf  4.1.0-pre2
motorBaseLcsIf.hpp
Go to the documentation of this file.
1 
9 #ifndef FCF_DEVMGR_DEVICE_MOTOR_BASE_IF_HPP
10 #define FCF_DEVMGR_DEVICE_MOTOR_BASE_IF_HPP
11 
12 // System headers
13 #include <unordered_map>
14 
15 // Third party headers
16 #include <yaml-cpp/yaml.h>
17 
21 
22 #include <Fcfif.hpp>
23 #include <rad/mal/publisher.hpp>
24 
25 namespace fcf::devmgr::motor {
26 
35  public:
37  virtual ~MotorBaseControllerData();
38 
39  inline double GetActualPos() const;
40  inline void SetActualPos(double position);
41  inline double GetPosError() const;
42  inline void SetPosError(double pos_error);
43  inline double GetActualVel() const;
44  inline void SetActualVel(double velocity);
45  inline double GetTargetPos() const;
46  inline void SetTargetPos(double position);
47  inline double GetTargetVel() const;
48  inline void SetTargetVel(double velocity);
49  inline virtual std::string GetSubstateStr() const;
50 
51  protected:
52  double m_target_pos {};
53  double m_actual_pos {};
54  double m_pos_error {};
55  double m_actual_vel {};
56  double m_target_vel {};
57  double m_scale_factor {1};
58 
59  };
60 
75  {
76  public:
77  enum {
90  };
91 
92  public:
93 
102  MotorBaseLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
104 
108  virtual ~MotorBaseLcsIf() {};
109 
116  void MoveAbs(double position);
117 
125  void MoveEncAbs(int encoders);
126 
133  void MoveRel(double position);
134 
142  void MoveEncRel(int encoders);
143 
151  void MoveByName(std::string namedpos);
152 
160  void MoveVel(double velocity);
161 
166  virtual bool IsDisabling();
167 
172  bool IsMoving() const;
173 
178  bool IsStandstill() const;
179 
184  bool IsInPosition() const;
185 
186  void SetTargetNamedPosition(const std::string named_position);
187  const std::string GetTargetNamedPosition();
188 
189  protected:
190  void MovePos(double position, double velocity, std::string move_type=RPC_MOVE_ABS);
191 
192 
193 
194  protected:
195 
196  //std::unique_ptr<rad::cii::Publisher<fcfif::MotorPositionTopic>> m_motor_publisher;
197  //std::unique_ptr<rad::cii::Publisher<TOPIC_TYPE>> m_publisher;
198 
199  double m_mot_actual_pos {0.0};
200  double m_mot_actual_enc {0.0};
201  std::string m_mot_target_name {""};
202  std::string m_mot_actual_name {""};
203  double m_mot_target_pos {};
204  double m_mot_pos_error {};
205  double m_mot_actual_vel {};
206  double m_mot_scale {1.0};
207  bool m_mot_initialised {false};
208 
209 
210  private:
211  log4cplus::Logger m_logger;
212 
213 
214  };
215 
216 }
217 
218 #include "motorBaseLcsIf.ipp"
219 
220 #endif //FCF_DEVMGR_DEVICE_MOTOR_BASE_IF_HPP
fcf::devmgr::motor::MotorBaseLcsIf::STAT_TARGET_POS
@ STAT_TARGET_POS
Definition: motorBaseLcsIf.hpp:84
fcf::devmgr::motor::MotorBaseControllerData::GetTargetVel
double GetTargetVel() const
fcf::devmgr::motor::MotorBaseControllerData::SetTargetPos
void SetTargetPos(double position)
fcf::devmgr::motor::MotorBaseControllerData::m_pos_error
double m_pos_error
Definition: motorBaseLcsIf.hpp:54
dataContext.hpp
DataContext class header file.
fcf::devmgr::motor::MotorBaseControllerData::MotorBaseControllerData
MotorBaseControllerData()
Definition: motorBaseLcsIf.cpp:4
fcf::devmgr::motor::MotorBaseLcsIf::STAT_ACTUAL_VEL
@ STAT_ACTUAL_VEL
Definition: motorBaseLcsIf.hpp:86
fcf::devmgr::motor::MotorBaseLcsIf::STAT_TARGET_VEL
@ STAT_TARGET_VEL
Definition: motorBaseLcsIf.hpp:87
fcf::devmgr::motor::MotorBaseLcsIf::STAT_STATE
@ STAT_STATE
Definition: motorBaseLcsIf.hpp:81
fcf::devmgr::motor
Definition: motor.hpp:20
fcf::devmgr::motor::MotorBaseControllerData::~MotorBaseControllerData
virtual ~MotorBaseControllerData()
Definition: motorBaseLcsIf.cpp:16
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_target_name
std::string m_mot_target_name
Definition: motorBaseLcsIf.hpp:201
fcf::devmgr::motor::MotorBaseLcsIf::IsInPosition
bool IsInPosition() const
Check if motor is in position.
Definition: motorBaseLcsIf.cpp:206
fcf::devmgr::motor::MotorBaseLcsIf::MoveEncRel
void MoveEncRel(int encoders)
Executes the MoveRel RPC.
Definition: motorBaseLcsIf.cpp:72
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_actual_pos
double m_mot_actual_pos
Definition: motorBaseLcsIf.hpp:199
fcf::devmgr::motor::MotorBaseControllerData::GetPosError
double GetPosError() const
fcf::devmgr::motor::MotorBaseControllerData::SetPosError
void SetPosError(double pos_error)
fcf::devmgr::motor::MotorBaseLcsIf::STAT_POS_ERROR
@ STAT_POS_ERROR
Definition: motorBaseLcsIf.hpp:85
fcf::devmgr::motor::MotorBaseControllerData::m_actual_vel
double m_actual_vel
Definition: motorBaseLcsIf.hpp:55
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_pos_error
double m_mot_pos_error
Definition: motorBaseLcsIf.hpp:204
fcf::devmgr::motor::MotorBaseLcsIf::STAT_SUBSTATE
@ STAT_SUBSTATE
Definition: motorBaseLcsIf.hpp:82
fcf::devmgr::motor::MotorBaseControllerData::SetActualPos
void SetActualPos(double position)
fcf::devmgr::motor::MotorBaseControllerData::SetTargetVel
void SetTargetVel(double velocity)
fcf::devmgr::motor::MotorBaseControllerData::m_actual_pos
double m_actual_pos
Definition: motorBaseLcsIf.hpp:53
fcf::devmgr::motor::MotorBaseLcsIf::STAT_HW_STATUS
@ STAT_HW_STATUS
Definition: motorBaseLcsIf.hpp:80
fcf::devmgr::motor::MotorBaseLcsIf::STAT_MOTOR_BASE_END
@ STAT_MOTOR_BASE_END
Definition: motorBaseLcsIf.hpp:89
fcf::devmgr::motor::MotorBaseLcsIf::IsMoving
bool IsMoving() const
Check if motor is moving.
Definition: motorBaseLcsIf.cpp:181
fcf::devmgr::motor::MotorBaseControllerData::GetActualPos
double GetActualPos() const
fcf::devmgr::motor::MotorBaseLcsIf::~MotorBaseLcsIf
virtual ~MotorBaseLcsIf()
Default destructor.
Definition: motorBaseLcsIf.hpp:108
fcf::devmgr::motor::MotorBaseControllerData::SetActualVel
void SetActualVel(double velocity)
deviceLcsIf.hpp
deviceLcsIf class header file.
fcf::devmgr::motor::MotorBaseLcsIf::STAT_INITIALISED
@ STAT_INITIALISED
Definition: motorBaseLcsIf.hpp:88
fcf::devmgr::motor::MotorBaseLcsIf::STAT_ACTUAL_POS
@ STAT_ACTUAL_POS
Definition: motorBaseLcsIf.hpp:83
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_scale
double m_mot_scale
Definition: motorBaseLcsIf.hpp:206
fcf::devmgr::motor::MotorBaseLcsIf::STAT_ERROR
@ STAT_ERROR
Definition: motorBaseLcsIf.hpp:79
fcf::devmgr::motor::MotorBaseLcsIf::MoveAbs
void MoveAbs(double position)
Executes the MoveAbs RPC.
Definition: motorBaseLcsIf.cpp:33
fcf::devmgr::common::DataContext
Definition: dataContext.hpp:90
fcf::devmgr::motor::MotorBaseControllerData::GetSubstateStr
virtual std::string GetSubstateStr() const
fcf::devmgr::motor::MotorBaseLcsIf::STAT_LOCAL
@ STAT_LOCAL
Definition: motorBaseLcsIf.hpp:78
fcf::devmgr::common::DeviceLcsIf
Definition: deviceLcsIf.hpp:77
fcf::devmgr::motor::MotorBaseLcsIf::MoveEncAbs
void MoveEncAbs(int encoders)
Executes the MoveAbs RPC.
Definition: motorBaseLcsIf.cpp:59
fcf::devmgr::motor::MotorBaseLcsIf::IsStandstill
bool IsStandstill() const
Check if motor is on.
Definition: motorBaseLcsIf.cpp:196
fcf::devmgr::motor::MotorBaseControllerData
The MotorBaseControllerData struct.
Definition: motorBaseLcsIf.hpp:34
fcf::devmgr::motor::MotorBaseLcsIf::MoveRel
void MoveRel(double position)
Executes the MoveRel RPC.
Definition: motorBaseLcsIf.cpp:46
fcf::devmgr::motor::MotorBaseControllerData::m_target_pos
double m_target_pos
Definition: motorBaseLcsIf.hpp:52
fcf::devmgr::motor::MotorBaseLcsIf::MotorBaseLcsIf
MotorBaseLcsIf(std::shared_ptr< fcf::devmgr::common::IDeviceConfig > config, fcf::devmgr::common::DataContext &data_ctx)
MotorLcsIf constructor.
Definition: motorBaseLcsIf.cpp:21
fcf::devmgr::motor::RPC_MOVE_ABS
constexpr auto RPC_MOVE_ABS
Definition: motorBaseConfig.hpp:53
fcf::devmgr::motor::MotorBaseLcsIf
Motor Local Control System (LCS) Interface (IF) class.
Definition: motorBaseLcsIf.hpp:75
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_initialised
bool m_mot_initialised
Definition: motorBaseLcsIf.hpp:207
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_target_pos
double m_mot_target_pos
Definition: motorBaseLcsIf.hpp:203
fcf::devmgr::motor::MotorBaseLcsIf::GetTargetNamedPosition
const std::string GetTargetNamedPosition()
Definition: motorBaseLcsIf.cpp:228
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_actual_name
std::string m_mot_actual_name
Definition: motorBaseLcsIf.hpp:202
fcf::devmgr::motor::MotorBaseLcsIf::SetTargetNamedPosition
void SetTargetNamedPosition(const std::string named_position)
Definition: motorBaseLcsIf.cpp:221
fcf::devmgr::motor::MotorBaseLcsIf::MoveVel
void MoveVel(double velocity)
Executes the MoveVel RPC.
Definition: motorBaseLcsIf.cpp:148
fcf::devmgr::motor::MotorBaseControllerData::GetTargetPos
double GetTargetPos() const
fcf::devmgr::motor::MotorBaseLcsIf::MovePos
void MovePos(double position, double velocity, std::string move_type=RPC_MOVE_ABS)
Definition: motorBaseLcsIf.cpp:103
fcf::devmgr::motor::MotorBaseLcsIf::IsDisabling
virtual bool IsDisabling()
Check if controller is disabling the motor.
Definition: motorBaseLcsIf.cpp:140
fcf::devmgr::motor::MotorBaseControllerData::GetActualVel
double GetActualVel() const
fcf::devmgr::motor::MotorBaseControllerData::m_scale_factor
double m_scale_factor
Definition: motorBaseLcsIf.hpp:57
fcf::devmgr::common::DeviceControllerData
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:36
fcf::devmgr::motor::MotorBaseControllerData::m_target_vel
double m_target_vel
Definition: motorBaseLcsIf.hpp:56
fcf::devmgr::motor::MotorBaseLcsIf::MoveByName
void MoveByName(std::string namedpos)
Executes the MovePos RPC.
Definition: motorBaseLcsIf.cpp:85
motorBaseConfig.hpp
MotorConfig class header file.
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_actual_enc
double m_mot_actual_enc
Definition: motorBaseLcsIf.hpp:200
fcf::devmgr::motor::MotorBaseLcsIf::m_mot_actual_vel
double m_mot_actual_vel
Definition: motorBaseLcsIf.hpp:205