ifw-fcf  5.0.0
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 std::string GetUserUnit() const;
50  inline void SetUserUnit(const std::string& unit);
51  inline virtual std::string GetSubstateStr() const;
52 
53  protected:
54  double m_target_pos {};
55  double m_actual_pos {};
56  double m_pos_error {};
57  double m_actual_vel {};
58  double m_target_vel {};
59  double m_scale_factor {1};
60  std::string m_user_unit {""};
61 
62  };
63 
78  {
79  public:
80  enum {
93  };
94 
95  public:
96 
105  MotorBaseLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
107 
111  virtual ~MotorBaseLcsIf() {};
112 
119  void MoveAbs(double position, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
120 
128  void MoveEncAbs(int encoders);
129 
136  void MoveRel(double position, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
137 
145  void MoveEncRel(int encoders);
146 
154  void MoveByName(std::string namedpos);
155 
163  void MoveVel(double velocity);
164 
169  virtual bool IsDisabling();
170 
175  bool IsMoving() const;
176 
181  bool IsStandstill() const;
182 
187  bool IsInPosition() const;
188 
193  bool IsMovingInRightDirection() const;
194 
195  void SetTargetNamedPosition(const std::string named_position);
196  const std::string GetTargetNamedPosition();
197 
198  std::optional<double> GetTargetInUserUnits(double value);
199 
200  protected:
201  void MovePos(double position, double velocity, std::string move_type=RPC_MOVE_ABS);
202 
203 
204 
205  protected:
206 
207  //std::unique_ptr<rad::cii::Publisher<fcfif::MotorPositionTopic>> m_motor_publisher;
208  //std::unique_ptr<rad::cii::Publisher<TOPIC_TYPE>> m_publisher;
209 
210  double m_mot_actual_pos {0.0};
211  double m_mot_actual_enc {0.0};
212  std::string m_mot_target_name {""};
213  std::string m_mot_actual_name {""};
214  double m_mot_target_pos {0.0};
215  double m_mot_pos_error {0.0};
216  double m_mot_target_vel {0.0};
217  double m_mot_actual_vel {0.0};
218  double m_mot_scale {1.0};
219  bool m_mot_initialised {false};
220  std::string m_mot_user_unit {""};
221 
222 
223  private:
224  log4cplus::Logger m_logger;
225 
226 
227  };
228 
229 }
230 
231 #include "motorBaseLcsIf.ipp"
232 
233 #endif //FCF_DEVMGR_DEVICE_MOTOR_BASE_IF_HPP
Definition: dataContext.hpp:90
Definition: deviceLcsIf.hpp:77
Motor Local Control System (LCS) Interface (IF) class.
Definition: motorBaseLcsIf.hpp:78
virtual bool IsDisabling()
Check if controller is disabling the motor.
Definition: motorBaseLcsIf.cpp:210
virtual ~MotorBaseLcsIf()
Default destructor.
Definition: motorBaseLcsIf.hpp:111
double m_mot_target_pos
Definition: motorBaseLcsIf.hpp:214
@ STAT_HW_STATUS
Definition: motorBaseLcsIf.hpp:83
@ STAT_TARGET_VEL
Definition: motorBaseLcsIf.hpp:90
@ STAT_INITIALISED
Definition: motorBaseLcsIf.hpp:91
@ STAT_STATE
Definition: motorBaseLcsIf.hpp:84
@ STAT_TARGET_POS
Definition: motorBaseLcsIf.hpp:87
@ STAT_LOCAL
Definition: motorBaseLcsIf.hpp:81
@ STAT_POS_ERROR
Definition: motorBaseLcsIf.hpp:88
@ STAT_ACTUAL_VEL
Definition: motorBaseLcsIf.hpp:89
@ STAT_MOTOR_BASE_END
Definition: motorBaseLcsIf.hpp:92
@ STAT_ERROR
Definition: motorBaseLcsIf.hpp:82
@ STAT_ACTUAL_POS
Definition: motorBaseLcsIf.hpp:86
@ STAT_SUBSTATE
Definition: motorBaseLcsIf.hpp:85
double m_mot_pos_error
Definition: motorBaseLcsIf.hpp:215
double m_mot_actual_pos
Definition: motorBaseLcsIf.hpp:210
std::string m_mot_target_name
Definition: motorBaseLcsIf.hpp:212
double m_mot_actual_enc
Definition: motorBaseLcsIf.hpp:211
void MovePos(double position, double velocity, std::string move_type=RPC_MOVE_ABS)
Definition: motorBaseLcsIf.cpp:173
bool IsInPosition() const
Check if motor is in position.
Definition: motorBaseLcsIf.cpp:278
void MoveEncRel(int encoders)
Executes the MoveRel RPC.
Definition: motorBaseLcsIf.cpp:142
MotorBaseLcsIf(std::shared_ptr< fcf::devmgr::common::IDeviceConfig > config, fcf::devmgr::common::DataContext &data_ctx)
MotorLcsIf constructor.
Definition: motorBaseLcsIf.cpp:47
std::optional< double > GetTargetInUserUnits(double value)
Definition: motorBaseLcsIf.cpp:56
std::string m_mot_user_unit
Definition: motorBaseLcsIf.hpp:220
void MoveAbs(double position, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveAbs RPC.
Definition: motorBaseLcsIf.cpp:76
void MoveByName(std::string namedpos)
Executes the MovePos RPC.
Definition: motorBaseLcsIf.cpp:155
std::string m_mot_actual_name
Definition: motorBaseLcsIf.hpp:213
void MoveRel(double position, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveRel RPC.
Definition: motorBaseLcsIf.cpp:102
bool m_mot_initialised
Definition: motorBaseLcsIf.hpp:219
double m_mot_actual_vel
Definition: motorBaseLcsIf.hpp:217
bool IsMoving() const
Check if motor is moving.
Definition: motorBaseLcsIf.cpp:253
bool IsStandstill() const
Check if motor is on.
Definition: motorBaseLcsIf.cpp:268
void SetTargetNamedPosition(const std::string named_position)
Definition: motorBaseLcsIf.cpp:307
double m_mot_target_vel
Definition: motorBaseLcsIf.hpp:216
double m_mot_scale
Definition: motorBaseLcsIf.hpp:218
void MoveEncAbs(int encoders)
Executes the MoveAbs RPC.
Definition: motorBaseLcsIf.cpp:129
void MoveVel(double velocity)
Executes the MoveVel RPC.
Definition: motorBaseLcsIf.cpp:218
bool IsMovingInRightDirection() const
Check if motor is moving in the right direction.
Definition: motorBaseLcsIf.cpp:292
const std::string GetTargetNamedPosition()
Definition: motorBaseLcsIf.cpp:314
DataContext class header file.
deviceLcsIf class header file.
MotorConfig class header file.
Definition: motor.hpp:18
constexpr auto RPC_MOVE_ABS
Definition: motorBaseConfig.hpp:51
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:36
The MotorBaseControllerData struct.
Definition: motorBaseLcsIf.hpp:34
virtual ~MotorBaseControllerData()
Definition: motorBaseLcsIf.cpp:42
MotorBaseControllerData()
Definition: motorBaseLcsIf.cpp:30
double m_actual_pos
Definition: motorBaseLcsIf.hpp:55
double m_pos_error
Definition: motorBaseLcsIf.hpp:56
double m_scale_factor
Definition: motorBaseLcsIf.hpp:59
void SetUserUnit(const std::string &unit)
double m_target_pos
Definition: motorBaseLcsIf.hpp:54
virtual std::string GetSubstateStr() const
std::string m_user_unit
Definition: motorBaseLcsIf.hpp:60
double m_target_vel
Definition: motorBaseLcsIf.hpp:58
double m_actual_vel
Definition: motorBaseLcsIf.hpp:57