Motion Master
Loading...
Searching...
No Matches
system_identification.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4
5#include "cia402_drive.h"
6#include "motion-master.pb.h"
7#include "si_unit_velocity.h"
8#include "util.h"
9
11 public:
13 uint32_t device_address, Cia402Drive& cia402_drive,
14 TuningParameters tuning_params,
15 const std::function<void()>& started_callback = {},
16 const std::function<void(motionmaster::MotionMasterMessage::Status::
17 SystemIdentification::Warning::Code,
18 std::string)>& warning_callback = {},
19 bool skip_chirp_signal = false);
20
22
31 std::variant<MotionMasterError, PlantModel> start();
32
33 private:
34 uint32_t device_address_;
35 Cia402Drive& cia402_drive_;
36
37 TuningParameters tuning_params_;
38 SystemParameters system_params_;
39
40 const std::function<void()>& started_callback_;
41 const std::function<void(motionmaster::MotionMasterMessage::Status::
42 SystemIdentification::Warning::Code,
43 std::string)>& warning_callback_;
44
45 SiUnitVelocity si_unit_velocity_;
46
47 bool skip_chirp_signal_ = false;
48
49 double gear_ratio_ = 1.0;
50 double feed_constant_ = 1.0;
51
57 MotionMasterError init();
58
66 MotionMasterError save_plant_model_to_flash(PlantModel m);
67
76 MotionMasterError check_input_signal_amplitudes(
77 const std::vector<int32_t>& torques,
78 const std::vector<double>& velocities);
79
85 MotionMasterError set_integral_limits();
86
94 std::vector<double> convert_velocity_q15_to_si(
95 const std::vector<int32_t>& q15_velocities);
96
105 static std::vector<double> convert_torque_to_si(
106 const std::vector<int32_t>& raw_torques, uint32_t nominal_torque);
107
118 static bool check_model_stability(const PlantModel& m);
119
120 static void write_sys_id_csv(const std::string& filename,
121 const std::vector<double>& torques_si,
122 const std::vector<double>& velocities_si);
123};
struct TuningParametersClass TuningParameters
struct SystemParametersClass SystemParameters
Definition cia402_drive.h:120
Definition motion_master_error.h:6
Definition si_unit_velocity.h:11
~SystemIdentification()
Definition system_identification.cc:42
std::variant< MotionMasterError, PlantModel > start()
Run system identification.
Definition system_identification.cc:44
SystemIdentification(uint32_t device_address, Cia402Drive &cia402_drive, TuningParameters tuning_params, const std::function< void()> &started_callback={}, const std::function< void(motionmaster::MotionMasterMessage::Status::SystemIdentification::Warning::Code, std::string)> &warning_callback={}, bool skip_chirp_signal=false)
Definition system_identification.cc:26
Definition util.h:28