ifw-fcf 8.0.2
 
Loading...
Searching...
No Matches
motorBaseLcsIf.hpp
Go to the documentation of this file.
1
7
8#ifndef FCF_DEVMGR_DEVICE_MOTOR_BASE_IF_HPP
9#define FCF_DEVMGR_DEVICE_MOTOR_BASE_IF_HPP
10
11#include <unordered_map>
12
13#include <yaml-cpp/yaml.h>
14
19
20#include <Fcfif.hpp>
21#include <rad/mal/publisher.hpp>
22
23
25
34 public:
37
38 inline double GetActualPos() const;
39 inline void SetActualPos(double position);
40 inline double GetPosError() const;
41 inline void SetPosError(double pos_error);
42 inline double GetActualVel() const;
43 inline void SetActualVel(double velocity);
44 inline double GetTargetPos() const;
45 inline void SetTargetPos(double position);
46 inline double GetTargetVel() const;
47 inline void SetTargetVel(double velocity);
48 inline std::string GetUserUnit() const;
49 inline void SetUserUnit(const std::string& unit);
50 inline virtual std::string GetSubstateStr() const;
51
52 private:
53 double m_target_pos {};
54 double m_actual_pos {};
55 double m_pos_error {};
56 double m_actual_vel {};
57 double m_target_vel {};
58 double m_scale_factor {1};
59 std::string m_user_unit {""};
60
61 };
62
77 {
78 public:
79 enum {
93 };
94
95 public:
96
105 MotorBaseLcsIf(std::shared_ptr<ifw::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() const;
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}; // NOLINT(misc-non-private-member-variables-in-classes)
211 double m_mot_actual_enc {0.0}; // NOLINT(misc-non-private-member-variables-in-classes)
212 double m_mot_actual_si {0.0}; // NOLINT(misc-non-private-member-variables-in-classes)
213 std::string m_mot_target_name {""}; // NOLINT(misc-non-private-member-variables-in-classes)
214 std::string m_mot_actual_name {""}; // NOLINT(misc-non-private-member-variables-in-classes)
215 double m_mot_target_pos {0.0}; // NOLINT(misc-non-private-member-variables-in-classes)
216 double m_mot_pos_error {0.0}; // NOLINT(misc-non-private-member-variables-in-classes)
217 double m_mot_target_vel {0.0}; // NOLINT(misc-non-private-member-variables-in-classes)
218 double m_mot_actual_vel {0.0}; // NOLINT(misc-non-private-member-variables-in-classes)
219 double m_mot_scale {1.0}; // NOLINT(misc-non-private-member-variables-in-classes)
220 bool m_mot_initialised {false}; // NOLINT(misc-non-private-member-variables-in-classes)
221 std::string m_mot_user_unit {""}; // NOLINT(misc-non-private-member-variables-in-classes)
222
223
224 private:
225 log4cplus::Logger m_logger;
226
227
228 };
229
230}
231
232#include "motorBaseLcsIf.ipp"
233
234#endif //FCF_DEVMGR_DEVICE_MOTOR_BASE_IF_HPP
Definition dataContext.hpp:86
Definition deviceLcsIf.hpp:91
std::optional< double > GetTargetInUserUnits(double value)
Definition motorBaseLcsIf.cpp:67
bool m_mot_initialised
Definition motorBaseLcsIf.hpp:220
double m_mot_actual_enc
Definition motorBaseLcsIf.hpp:211
MotorBaseLcsIf(std::shared_ptr< ifw::fcf::devmgr::common::IDeviceConfig > config, ifw::fcf::devmgr::common::DataContext &data_ctx)
MotorLcsIf constructor.
Definition motorBaseLcsIf.cpp:58
double m_mot_actual_pos
Definition motorBaseLcsIf.hpp:210
std::string m_mot_user_unit
Definition motorBaseLcsIf.hpp:221
bool IsInPosition() const
Check if motor is in position.
Definition motorBaseLcsIf.cpp:263
double m_mot_scale
Definition motorBaseLcsIf.hpp:219
void MoveEncAbs(int encoders)
Executes the MoveAbs RPC.
Definition motorBaseLcsIf.cpp:140
void MoveEncRel(int encoders)
Executes the MoveRel RPC.
Definition motorBaseLcsIf.cpp:153
void MovePos(double position, double velocity, std::string move_type=RPC_MOVE_ABS)
Definition motorBaseLcsIf.cpp:184
virtual ~MotorBaseLcsIf()
Default destructor.
Definition motorBaseLcsIf.hpp:111
bool IsMoving() const
Check if motor is moving.
Definition motorBaseLcsIf.cpp:238
void MoveVel(double velocity)
Executes the MoveVel RPC.
Definition motorBaseLcsIf.cpp:213
void SetTargetNamedPosition(const std::string named_position)
Definition motorBaseLcsIf.cpp:292
double m_mot_actual_vel
Definition motorBaseLcsIf.hpp:218
std::string m_mot_target_name
Definition motorBaseLcsIf.hpp:213
double m_mot_target_vel
Definition motorBaseLcsIf.hpp:217
virtual bool IsDisabling() const
Check if controller is disabling the motor.
Definition motorBaseLcsIf.cpp:205
double m_mot_target_pos
Definition motorBaseLcsIf.hpp:215
std::string m_mot_actual_name
Definition motorBaseLcsIf.hpp:214
void MoveByName(std::string namedpos)
Executes the MovePos RPC.
Definition motorBaseLcsIf.cpp:166
void MoveRel(double position, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveRel RPC.
Definition motorBaseLcsIf.cpp:113
void MoveAbs(double position, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveAbs RPC.
Definition motorBaseLcsIf.cpp:87
double m_mot_pos_error
Definition motorBaseLcsIf.hpp:216
bool IsStandstill() const
Check if motor is on.
Definition motorBaseLcsIf.cpp:253
const std::string GetTargetNamedPosition()
Definition motorBaseLcsIf.cpp:299
double m_mot_actual_si
Definition motorBaseLcsIf.hpp:212
@ STAT_INITIALISED
Definition motorBaseLcsIf.hpp:90
@ STAT_STATE
Definition motorBaseLcsIf.hpp:83
@ STAT_HW_STATUS
Definition motorBaseLcsIf.hpp:82
@ STAT_ACTUAL_VEL
Definition motorBaseLcsIf.hpp:88
@ STAT_USER_UNIT
Definition motorBaseLcsIf.hpp:91
@ STAT_TARGET_VEL
Definition motorBaseLcsIf.hpp:89
@ STAT_SUBSTATE
Definition motorBaseLcsIf.hpp:84
@ STAT_ACTUAL_POS
Definition motorBaseLcsIf.hpp:85
@ STAT_POS_ERROR
Definition motorBaseLcsIf.hpp:87
@ STAT_LOCAL
Definition motorBaseLcsIf.hpp:80
@ STAT_TARGET_POS
Definition motorBaseLcsIf.hpp:86
@ STAT_MOTOR_BASE_END
Definition motorBaseLcsIf.hpp:92
@ STAT_ERROR
Definition motorBaseLcsIf.hpp:81
bool IsMovingInRightDirection() const
Check if motor is moving in the right direction.
Definition motorBaseLcsIf.cpp:277
Motor class source file.
Definition motor.hpp:18
constexpr auto RPC_MOVE_ABS
Definition motorBaseConfig.hpp:45
The DeviceControllerData struct.
Definition deviceLcsIf.hpp:49
virtual ~MotorBaseControllerData()
Definition motorBaseLcsIf.cpp:53
void SetUserUnit(const std::string &unit)
MotorBaseControllerData()
Definition motorBaseLcsIf.cpp:41