6 #ifndef MOTORCORTEX_LIB_DRIVE_SIM_BASE_H
7 #define MOTORCORTEX_LIB_DRIVE_SIM_BASE_H
20 explicit DriveBasic(
unsigned int num_channels = 1) : num_channels_(num_channels) {
21 target_position_ =
new T[num_channels_]{};
22 target_torque_ =
new T[num_channels_]{};
23 target_torque_offset_ =
new T[num_channels_]{};
25 position_value_ =
new T[num_channels_]{};
26 torque_value_ =
new T[num_channels_]{};
27 torque_sensor_value_ =
new T[num_channels_]{};
29 position_value_init_ =
new T[num_channels_]{};
31 drive_on_ =
new bool[num_channels_]{};
35 delete[] target_position_;
36 delete[] target_torque_;
37 delete[] target_torque_offset_;
39 delete[] position_value_;
40 delete[] torque_value_;
41 delete[] torque_sensor_value_;
43 delete[] position_value_init_;
50 static constexpr
unsigned int init_cycles_ = 100;
54 bool initPhase1_()
override {
55 addParameter(
"targetPosition", mcx::parameter_server::ParameterType::INPUT, target_position_, num_channels_);
56 addParameter(
"targetTorque", mcx::parameter_server::ParameterType::INPUT, target_torque_, num_channels_);
57 addParameter(
"targetTorqueOffset", mcx::parameter_server::ParameterType::INPUT, target_torque_offset_,
59 addParameter(
"driveOn", mcx::parameter_server::ParameterType::INPUT, drive_on_, num_channels_);
60 addParameter(
"positionValueInit", mcx::parameter_server::ParameterType::INPUT, position_value_init_, num_channels_);
61 addParameter(
"positionValue", mcx::parameter_server::ParameterType::OUTPUT, position_value_, num_channels_);
62 addParameter(
"torqueValue", mcx::parameter_server::ParameterType::OUTPUT, torque_value_, num_channels_);
63 addParameter(
"torqueSensorValue", mcx::parameter_server::ParameterType::OUTPUT, torque_sensor_value_,
68 bool initPhase2_()
override {
72 bool startOp_()
override {
76 bool stopOp_()
override {
82 memcpy(position_value_, position_value_init_, num_channels_ *
sizeof(T));
84 for (
unsigned int cnt = 0; cnt < num_channels_; ++cnt) {
86 position_value_[cnt] = target_position_[cnt];
89 torque_value_[cnt] = target_torque_[cnt] + target_torque_offset_[cnt];
90 torque_sensor_value_[cnt] = torque_value_[cnt];
95 torque_value_[cnt] = 0;
96 torque_sensor_value_[cnt] = 0;
103 const unsigned int num_channels_;
106 T* position_value_init_;
110 T* target_torque_offset_;
114 T* torque_sensor_value_;