8#include <nlohmann/json.hpp>
16#include "motion-master.pb.h"
82#define JSON_TO_DOUBLE(jx) jx.is_number() ? static_cast<double>(jx) : 0.0
177const std::map<MotionMasterWarning, std::string>
181 "Slave profile: The amplitude is outside of the configured limits - "
182 "using a limit value as the new amplitude!"},
186 {0x2110,
"Short circuit/earth leakage (input)"},
187 {0x2120,
"Earth leakage (input)"},
188 {0x2121,
"Earth leakage phase L1"},
189 {0x2122,
"Earth leakage phase L2"},
190 {0x2123,
"Earth leakage phase L3"},
191 {0x2130,
"Short circuit (input)"},
192 {0x2131,
"Short circuit phases L1-L2"},
193 {0x2132,
"Short circuit phases L2-L3"},
194 {0x2133,
"Short circuit phases L3-L1"},
195 {0x2211,
"Internal current no.1"},
196 {0x2212,
"Internal current no.2"},
197 {0x2213,
"Over-current in ramp function"},
198 {0x2214,
"Over-current in the sequence"},
199 {0x2220,
"Continuous over current (device internal)"},
200 {0x2221,
"Continuous over current no.1"},
201 {0x2222,
"Continuous over current no.2"},
202 {0x2230,
"Short circuit/earth leakage (device internal)"},
203 {0x2240,
"Earth leakage (device internal)"},
204 {0x2250,
"Short circuit (device internal)"},
205 {0x2310,
"Continuous over current"},
206 {0x2311,
"Continuous over current no.1"},
207 {0x2312,
"Continuous over current no.2"},
208 {0x2320,
"Short circuit/earth leakage (motor-side)"},
209 {0x2330,
"Earth leakage (motor-side)"},
210 {0x2331,
"Earth leakage phase U"},
211 {0x2332,
"Earth leakage phase V"},
212 {0x2333,
"Earth leakage phase W"},
213 {0x2340,
"Short circuit (motor-side)"},
214 {0x2341,
"Short circuit phases U-V"},
215 {0x2342,
"Earth leakage phase V-W"},
216 {0x2343,
"Earth leakage phase W-U"},
217 {0x2350,
"Load level fault (I2t, thermal state)"},
218 {0x2351,
"Load level warning (I2t, thermal state)"},
219 {0x3110,
"Mains overvoltage"},
220 {0x3111,
"Mains overvoltage phase L1"},
221 {0x3112,
"Mains overvoltage phase L2"},
222 {0x3113,
"Mains overvoltage phase L3"},
223 {0x3120,
"Mains undervoltage"},
224 {0x3121,
"Mains undervoltage phase L1"},
225 {0x3122,
"Mains undervoltage phase L2"},
226 {0x3123,
"Mains undervoltage phase L3"},
227 {0x3130,
"Phase failure"},
228 {0x3131,
"Phase failure L1"},
229 {0x3132,
"Phase failure L2"},
230 {0x3133,
"Phase failure L3"},
231 {0x3134,
"Phase sequence"},
232 {0x3140,
"Mains frequency"},
233 {0x3141,
"Mains frequency too great"},
234 {0x3142,
"Mains frequency too small"},
235 {0x3210,
"DC link overvoltage"},
236 {0x3211,
"Overvoltage no. 1"},
237 {0x3212,
"Overvoltage no. 2"},
238 {0x3220,
"DC link undervoltage"},
239 {0x3221,
"Undervoltage no. 1"},
240 {0x3222,
"Undervoltage no. 2"},
241 {0x3230,
"Load error"},
242 {0x3310,
"Output overvoltage"},
243 {0x3311,
"Output overvoltage phase U"},
244 {0x3312,
"Output overvoltage phase V"},
245 {0x3313,
"Output overvoltage phase W"},
246 {0x3320,
"Armature circuit"},
247 {0x3321,
"Armature circuit interrupted"},
248 {0x3330,
"Field circuit"},
249 {0x3331,
"Field circuit interrupted"},
250 {0x4110,
"Excess ambient temperature"},
251 {0x4120,
"Too low ambient temperature"},
252 {0x4130,
"Temperature supply air"},
253 {0x4140,
"Temperature air outlet"},
254 {0x4210,
"Excess temperature device"},
255 {0x4220,
"Too low temperature device"},
256 {0x4300,
"Temperature drive"},
257 {0x4310,
"Excess temperature drive"},
258 {0x4320,
"Too low temperature drive"},
259 {0x4400,
"Temperature supply"},
260 {0x4410,
"Excess temperature supply"},
261 {0x4420,
"Too low temperature supply"},
263 {0x5110,
"Supply low voltage"},
264 {0x5111,
"U1 = supply ±15V"},
265 {0x5112,
"U2 = supply +24 V"},
266 {0x5113,
"U3 = supply +5 V"},
267 {0x5114,
"U4 = manufacturer-specific"},
268 {0x5115,
"U5 = manufacturer-specific"},
269 {0x5116,
"U6 = manufacturer-specific"},
270 {0x5117,
"U7 = manufacturer-specific"},
271 {0x5118,
"U8 = manufacturer-specific"},
272 {0x5119,
"U9 = manufacturer-specific"},
273 {0x5120,
"Supply intermediate circuit"},
275 {0x5210,
"Measurement circuit"},
276 {0x5220,
"Computing circuit"},
277 {0x5300,
"Operating unit"},
278 {0x5400,
"Power section"},
279 {0x5410,
"Output stages"},
281 {0x5430,
"Input stages"},
282 {0x5440,
"Contacts"},
283 {0x5441,
"Contact 1 = manufacturer-specific"},
284 {0x5442,
"Contact 2 = manufacturer-specific"},
285 {0x5443,
"Contact 3 = manufacturer-specific"},
286 {0x5444,
"Contact 4 = manufacturer-specific"},
287 {0x5445,
"Contact 5 = manufacturer-specific"},
292 {0x5454,
"S4 = manufacturer-specific"},
293 {0x5455,
"S5 = manufacturer-specific"},
294 {0x5456,
"S6 = manufacturer-specific"},
295 {0x5457,
"S7 = manufacturer-specific"},
296 {0x5458,
"S8 = manufacturer-specific"},
297 {0x5459,
"S9 = manufacturer-specific"},
298 {0x5500,
"Hardware memory"},
300 {0x5520,
"ROM/EPROM"},
302 {0x6010,
"Software reset (watchdog)"},
303 {0x6301,
"to 630Fh Data record no. 1 to no. 15"},
304 {0x6310,
"Loss of parameters"},
305 {0x6320,
"Parameter error"},
307 {0x7110,
"Brake chopper"},
308 {0x7111,
"Failure brake chopper"},
309 {0x7112,
"Over current brake chopper"},
310 {0x7113,
"Protective circuit brake chopper"},
312 {0x7121,
"Motor blocked"},
313 {0x7122,
"Motor error or commutation malfunction."},
314 {0x7123,
"Motor tilted"},
315 {0x7200,
"Measurement circuit"},
317 {0x7301,
"Tacho fault"},
318 {0x7302,
"Tacho wrong polarity"},
319 {0x7303,
"Resolver 1 fault"},
320 {0x7304,
"Resolver 2 fault"},
321 {0x7305,
"Incremental encoder 1 fault"},
322 {0x7306,
"Incremental encoder 2 fault"},
323 {0x7307,
"Incremental encoder 3 fault"},
325 {0x7320,
"Position"},
326 {0x7400,
"Computation circuit"},
327 {0x7500,
"Communication"},
328 {0x7510,
"Serial interface no. 1"},
329 {0x7520,
"Serial interface no. 2"},
330 {0x7600,
"Data storage (external)"},
331 {0x8300,
"Torque control"},
332 {0x8311,
"Excess torque"},
333 {0x8312,
"Difficult start up"},
334 {0x8313,
"Standstill torque"},
335 {0x8321,
"Insufficient torque"},
336 {0x8331,
"Torque fault"},
337 {0x8400,
"Velocity speed controller"},
338 {0x8500,
"Position controller"},
339 {0x8600,
"Positioning controller"},
340 {0x8611,
"Following error"},
341 {0x8612,
"Reference limit"},
342 {0x8700,
"Sync controller"},
343 {0x8800,
"Winding controller"},
344 {0x8900,
"Process data monitoring"},
346 {0xF001,
"Deceleration"},
347 {0xF002,
"Sub-synchronous run"},
348 {0xF003,
"Stroke operation"},
350 {0xFF03,
"Warning - Excess temperature device"},
351 {0xFF04,
"Pull brake voltage higher than measured on DC bus"},
352 {0xFF05,
"Hold brake voltage higher than measured on DC bus"},
353 {0xFF06,
"Open circuit: High FET in phase A"},
354 {0xFF07,
"Open circuit: Low FET in phase A"},
355 {0xFF08,
"Open circuit: High FET in phase B"},
356 {0xFF09,
"Open circuit: Low FET in phase B"},
357 {0xFF0A,
"Open circuit: High FET in phase C"},
358 {0xFF0B,
"Open circuit: Low FET in phase C"},
359 {0xFF0C,
"Commutation offset is missing"}};
361const std::map<int32_t, std::map<int32_t, int32_t>>
363 {8500, {{01, 20480}, {02, 24576}, {03, 16384}}},
364 {8501, {{01, 8192}, {02, 8192}, {03, 16384}}},
365 {8502, {{01, 20480}, {02, 24576}, {03, 16384}}},
366 {8503, {{01, 8192}, {02, 8192}, {03, 16384}}},
367 {8504, {{01, 20480}, {02, 24576}, {03, 16384}}},
368 {8505, {{01, 8192}, {02, 8192}, {03, 16384}}},
369 {9500, {{00, 32768}, {01, 32768}, {02, 32768}}},
370 {9501, {{01, 81920}, {02, 81920}}},
371 {9502, {{01, 16384}}},
372 {9506, {{01, 32768}}},
373 {9507, {{01, 81920}}},
374 {9508, {{01, 16384}}},
375 {9600, {{01, 32768}}},
376 {9601, {{01, 81920}}},
377 {9602, {{01, 16384}}},
378 {9606, {{01, 32768}}},
379 {9607, {{01, 81920}}},
380 {9608, {{01, 16384}}}};
382const std::map<int32_t, std::map<int32_t, int32_t>>
384 {8500, {{01, 40960}, {02, 49152}, {03, 32768}}},
385 {8501, {{01, 16384}, {02, 16384}, {03, 16384}}},
386 {8502, {{01, 40960}, {02, 49152}, {03, 32768}}},
387 {8503, {{01, 16384}, {02, 16384}, {03, 16384}}},
388 {8504, {{01, 40960}, {02, 49152}, {03, 32768}}},
389 {8505, {{01, 16384}, {02, 16384}, {03, 16384}}},
390 {9500, {{00, 32768}, {01, 32768}, {02, 32768}}},
391 {9501, {{01, 81920}, {02, 81920}}},
392 {9502, {{01, 16384}}},
393 {9506, {{01, 32768}}},
394 {9507, {{01, 81920}}},
395 {9508, {{01, 16384}}},
396 {9600, {{01, 32768}}},
397 {9601, {{01, 81920}}},
398 {9602, {{01, 16384}}},
399 {9606, {{01, 32768}}},
400 {9607, {{01, 81920}}},
401 {9608, {{01, 16384}}}};
441int32_t set_default_thread_priority();
454int32_t set_max_thread_priority();
476 std::map<int32_t, int32_t>& pdo_position_map);
487std::string execute_system_command(
const char* cmd);
510 return ((a ^ b) >> (
sizeof(T) * 8 - 1));
573std::vector<double>
linspace(
double lb,
double ub,
size_t n);
645 const std::vector<uint8_t>& csv_data);
667uint32_t
random_uint32(uint32_t min = 0, uint32_t max = UINT32_MAX);
843std::vector<uint8_t>
zip(
const std::string& file_name,
844 std::vector<uint8_t> data);
855std::vector<uint8_t>
unzip(
const std::vector<uint8_t>& data);
875std::list<std::string>
get_file_parts(std::list<std::string> file_list,
876 const std::string& file_name);
887 uint8_t encoder_ordinal);
898 T min_value = x[x.size() - 1];
900 for (int32_t i = x.size() - 2; i >= 0; i--) {
901 if (x[i] <= min_value) {
920 if (numbers.empty()) {
924 return std::accumulate(numbers.begin(), numbers.end(), 0.0) / numbers.size();
936 if (numbers.empty()) {
942 std::vector<double> tmp(numbers.size());
943 std::transform(numbers.begin(), numbers.end(), tmp.begin(),
944 [mean](
double x) { return x - mean; });
946 double sq_sum = std::inner_product(tmp.begin(), tmp.end(), tmp.begin(), 0.0);
947 return std::sqrt(sq_sum / (numbers.size() - 1));
962 std::vector<T> section(numbers.begin() + start, numbers.begin() + end);
964 if (section.empty()) {
968 return std::accumulate(section.begin(), section.end(), 0.0) / section.size();
981 v.erase(v.begin(), v.begin() + length);
982 v.erase(v.end() - length, v.end());
996 return f.wait_for(std::chrono::seconds(0)) == std::future_status::ready;
997 }
catch (std::future_error& e) {
1009template <
typename T>
1011 return static_cast<std::underlying_type_t<T>
>(e);
1022template <
typename T>
1023static std::vector<T> diff(std::vector<T> vector) {
1024 std::vector<T> result;
1025 result.reserve(vector.size() - 1);
1027 for (
size_t i = 1; i < vector.size(); i++) {
1028 result.push_back(vector[i] - vector[i - 1]);
1037template <
typename... Args>
1039 int size_s = std::snprintf(
nullptr, 0, format.c_str(), args...) +
1042 throw std::runtime_error(
"Error during formatting.");
1044 auto size =
static_cast<size_t>(size_s);
1045 std::unique_ptr<char[]> buf(
new char[size]);
1046 std::snprintf(buf.get(), size, format.c_str(), args...);
1047 return std::string(buf.get(),
1048 buf.get() + size - 1);
1067 std::deque<double> input_data_;
1068 std::deque<double> output_data_;
1069 double fc_, a0_, a1_, a2_, b0_, b1_, b2_;
1087 std::deque<double> input_data_;
1088 std::deque<double> output_data_;
1089 double fc_, a0_, a1_, a2_, a3_, a4_, b0_, b1_, b2_, b3_, b4_;
1095 const std::string& s2);
1113 const std::string& endpoint);
CirculoType get_circulo_type(int32_t hardware_id, uint8_t encoder_ordinal)
Get the encoder class of one encoder, from the hardware ID and the encoder ordinal.
Definition util.cc:1445
std::vector< uint8_t > unzip(const std::vector< uint8_t > &data)
Unzip data containing a single file.
Definition util.cc:1571
const std::map< int32_t, std::string > slave_error_map_
Definition util.h:185
ControllerGains get_position_controller_gains(Cia402Drive &cia402_drive)
Get the current position controller gains of a drive.
Definition util.cc:296
const char *const HARDWARE_DESCRIPTION_FILENAME
Definition util.h:21
const uint16_t kDefaultEthernetPort
Default port used for SPoE Ethernet endpoints when none is specified.
Definition util.h:1098
double compute_section_mean(const std::vector< T > &numbers, size_t start, size_t end)
Compute the mean of a section of a given vector of integers.
Definition util.h:960
bool has_uncharacterised_magnet_rings(int32_t hardware_id)
Check whether the hardware ID is a device whose magnetic rings have not been characterised for the ma...
Definition util.cc:1474
ControllerGains convert_auto_tuning_controller_gains(ControllerGains gains, uint32_t singleturn_resolution)
Convert gains to inc pos values and rpm velocity values.
Definition util.cc:1393
const std::map< int32_t, std::map< int32_t, int32_t > > adc_current_ratio_fw_v4_4_2_map
Definition util.h:383
uint64_t wait_for_signal(int signal_fd)
Wait for the system signal.
std::string controllerTypeToString(ControllerType ct)
Definition util.cc:166
uint32_t register_sync_signal()
Register a thread sync signal.
bool string_ends_with(const std::string &value, const std::string &ending)
Check if a string ends with another string.
Definition util.cc:463
const std::map< int32_t, std::map< int32_t, int32_t > > adc_current_ratio_fw_v4_4_1_map
Definition util.h:362
std::string generate_uuid(size_t length)
Generate a UUID of a custom length.
Definition util.cc:640
bool set_velocity_controller_gains(Cia402Drive &cia402_drive, const ControllerGains &gains)
Set the velocity controller gains.
Definition util.cc:398
semver::version get_firmware_version(Cia402Drive &cia402_drive)
Get the (semver) version of the used firmware.
Definition util.cc:924
std::pair< std::string, uint16_t > parse_ethernet_endpoint(const std::string &endpoint)
Parse an SPoE Ethernet endpoint of the form "ip" or "ip:port".
Definition util.cc:1795
std::string get_slave_error_message(int32_t error_code)
Return the appropriate error message.
Definition util.cc:48
int32_t find_local_min_index_from_right(std::vector< T > &x)
Find a local minimum (from right) in the supplied vector.
Definition util.h:897
struct AutoTuningDriveConfigurationClass AutoTuningDriveConfiguration
const char *const STACK_INFO_FILENAME
Definition util.h:22
bool validate_sii_data(const std::vector< uint8_t > &content, uint32_t device_id)
Validate an SII data before writing.
double compute_mean(const std::vector< T > &numbers)
Compute mean given a vector of numbers.
Definition util.h:919
bool opposite_signs(const T &a, const T &b)
Check if parameters have opposite signs.
Definition util.h:509
bool get_plant_model_from_flash(Cia402Drive &cia402_drive, PlantModel *m)
Get the plant model from the flash memory of the device.
Definition util.cc:973
const char *const ESI_FILENAME
Definition util.h:24
const std::map< MotionMasterWarning, std::string > motion_master_warning_to_message_map_
Definition util.h:178
void unregister_sync_signal(uint32_t signal_id)
Unregister a thread sync signal.
int32_t limit_int32_target(int64_t target)
Limit a target to integer 32 if necessary.
Definition util.cc:652
std::string run_env_info()
Get all sorts of run environment information.
Definition util.cc:672
const char *const CONFIG_FILENAME
Definition util.h:25
bool compareStringsCaseInsensitive(const std::string &s1, const std::string &s2)
Definition util.cc:1788
int32_t wrap_target_position(int32_t target, int32_t max_limit, int32_t min_limit)
Wrap the target position over limit.
std::vector< double > linspace(double lb, double ub, size_t n)
Generate equally spaced points inside an interval.
Definition util.cc:280
CirculoType
Definition util.h:57
@ kCirculo7
Definition util.h:59
@ kCirculo9Smm
Definition util.h:62
@ kCirculo7Smm
Definition util.h:60
@ kCirculo9
Definition util.h:61
@ kCirculo18Bit
Definition util.h:65
PositionControlStrategy
Definition util.h:169
@ kSimple
Definition util.h:169
@ kNone
Definition util.h:169
@ kCascaded
Definition util.h:169
ControllerType
Definition util.h:51
@ kPpi
Definition util.h:51
@ kPiP
Definition util.h:51
uint64_t wait_for_sync_signal(uint32_t signal_id)
Wait for the system sync signal.
std::string etg1004_unit_string(uint32_t etg1004_unit_value)
Convert ETG.1004 unit format to string.
Definition util.cc:102
EncoderLocation
Definition util.h:80
@ kMotorShaft
Definition util.h:80
@ kDrivingShaft
Definition util.h:80
MotionMasterWarning
Definition util.h:171
@ WAR_PROFILE_TARGET_LIMITED
Definition util.h:173
@ WAR_INTERNAL_LIMIT_REACHED
Definition util.h:174
@ WAR_NONE
Definition util.h:172
const char *const VARIANT_FILENAME
Definition util.h:27
std::vector< uint8_t > read_file_content(const std::string &path)
Read a file into a byte (uint8_t) vector.
Definition util.cc:471
uint8_t calculate_crc(const std::vector< uint8_t > &data)
Definition util.cc:601
uint32_t generate_od_entry_map_key(uint16_t index, uint8_t subindex)
Generate a map key for an OD entry using index/subindex.
Definition util.cc:1612
unsigned char random_char()
Generate a random character.
Definition util.cc:633
std::vector< uint8_t > zip(const std::string &file_name, std::vector< uint8_t > data)
Zip a single file.
Definition util.cc:1519
bool file_exists(const std::string &path)
Check if a file exists on the system where Motion Master is running.
Definition util.cc:886
std::string get_master_warning_message(MotionMasterWarning warning)
Return the appropriate warning message.
Definition util.cc:40
bool set_position_controller_gains(Cia402Drive &cia402_drive, const ControllerGains &gains)
Set the position controller gains.
Definition util.cc:350
bool check_gains(Cia402Drive &cia402_drive)
Check if the required gains are properly set.
Definition util.cc:420
CirculoEncoderType
Definition util.h:71
@ kCirculo7Inner
Definition util.h:73
@ kCirculo9Outer
Definition util.h:76
@ kCirculo18BitInner
Definition util.h:77
@ kUndefined
Definition util.h:72
@ kCirculo7Outer
Definition util.h:74
@ kCirculo9Inner
Definition util.h:75
bool abs_compare(float a, float b)
Compare absolute values of the input parameters.
Definition util.cc:217
void interruptable_wait(size_t seconds)
Blocks for the set amount of time, but allows to be interrupted.
Definition util.cc:219
uint32_t random_uint32(uint32_t min=0, uint32_t max=UINT32_MAX)
Generate a random unsigned 32-bit integer in a certain range.
Definition util.cc:626
double compute_standard_deviation(const std::vector< T > &numbers)
Compute the standard deviation given a vector of numbers.
Definition util.h:935
std::list< std::string > get_file_parts(std::list< std::string > file_list, const std::string &file_name)
Process the provided file list and find the file or its parts.
Definition util.cc:1616
std::vector< T > erase_edge_elements(std::vector< T > v, size_t length)
Remove a number of the first and last elements in the vector.
Definition util.h:980
int get_soem_slaves_responding()
Definition util.cc:1782
EncoderLocation get_encoder_location(Cia402Drive &cia402_drive, uint8_t encoder_ordinal)
Get the location of an encoder.
Definition util.cc:1660
int32_t get_pdo_id(uint16_t index, uint8_t subindex, std::map< int32_t, int32_t > &pdo_position_map)
Uses a special map and its keys to get the PDO array positions.
Definition util.cc:153
const char *const STACK_IMAGE_FILENAME
Definition util.h:23
std::string string_bytes_to_hex_array_string(const std::string &bytes)
Convert bytes (as string) to a string of hex values.
Definition util.cc:891
bool is_fw_based_on_v5(Cia402Drive &cia402_drive)
Check if the device requires the newer encoder configuration (FW >= v5 or FW >= v0....
Definition util.cc:1484
EcatSlaveFoeError
Definition util.h:403
@ kAccessDenied
Definition util.h:405
@ kNotBootstrap
Definition util.h:412
@ kProgramError
Definition util.h:414
@ kBootstrapOnly
Definition util.h:411
@ kNoRights
Definition util.h:413
@ kIllegal
Definition util.h:407
@ kAlreadyExists
Definition util.h:409
@ kNotFound
Definition util.h:404
@ kPacketNumberWrong
Definition util.h:408
@ kNoUser
Definition util.h:410
@ kDiskFull
Definition util.h:406
bool is_future_done(std::future< R > const &f)
Check if the future has finished executing.
Definition util.h:994
bool is_fw_at_least(Cia402Drive &cia402_drive, const std::string &version)
Check if the drive uses at least a certain FW version.
Definition util.cc:1504
struct TuningParametersClass TuningParameters
struct SystemParametersClass SystemParameters
const char *const PLANT_MODEL_FILENAME
Definition util.h:26
std::string get_firmware_version_string(Cia402Drive &cia402_drive)
Get the (string) version of the used firmware.
Definition util.cc:903
std::string string_format(const std::string &format, Args... args)
Format a string like printf()
Definition util.h:1038
auto to_integral(T e)
Return an integral type value of an enum class.
Definition util.h:1010
AutoTuningDriveConfiguration get_auto_tuning_drive_configuration(Cia402Drive &cia402_drive)
Get the configuration required for full auto-tuning.
Definition util.cc:1003
void set_csv_configuration(VirtualDevice *virtual_device, const std::vector< uint8_t > &csv_data)
Set the configuration parameter values from CSV data.
Definition util.cc:501
Definition cia402_drive.h:120
Holds position and velocity PID gains for a controller.
Definition standalone_autotuning.h:69
HighPassFilter(uint16_t cutoff_frequency, double ts)
Definition util.cc:1747
double filter(double value)
Definition util.cc:1768
double filter(double value)
Definition util.cc:1734
LowPassFilter(uint16_t cutoff_frequency, double ts)
Definition util.cc:1717
Definition virtual_device.h:23
uint8_t * value
Definition co_dictionary.h:9
uint16_t index
Definition co_dictionary.h:0
@ kUnspecified
Definition global.h:38
uint16_t notch_fw
Definition util.h:91
int32_t R
Definition util.h:96
int32_t L
Definition util.h:95
nlohmann::json to_json()
Definition util.h:107
double tc_kp
Definition util.h:99
uint16_t notch_fc
Definition util.h:92
int16_t vel_ff_gain
Definition util.h:93
uint16_t tc_st
Definition util.h:102
uint16_t tc_damping
Definition util.h:103
double max_vel_noise
Definition util.h:106
uint32_t vdc
Definition util.h:97
uint8_t vel_lp_type
Definition util.h:86
uint8_t switch_F
Definition util.h:101
uint32_t vel_lp_fc
Definition util.h:87
bool notch_en
Definition util.h:90
double tc_ki
Definition util.h:100
uint8_t pos_lp_type
Definition util.h:88
uint32_t pos_lp_fc
Definition util.h:89
std::string software_version
Definition util.h:104
unsigned int rated_torque
Definition util.h:105
uint16_t vel_ff_fc
Definition util.h:94
double current_ratio
Definition util.h:98
double end_frequency
Definition util.h:33
uint16_t torque_amplitude
Definition util.h:34
double start_frequency
Definition util.h:32
std::string bode_file_content
Definition util.h:48
std::vector< double > denominator
Definition util.h:31
uint8_t signal_type
Definition util.h:36
double duration_seconds
Definition util.h:35
nlohmann::json to_json()
Definition util.h:37
std::vector< double > numerator
Definition util.h:30
uint32_t nominal_torque
Definition util.h:137
double time_step
Definition util.h:136
uint32_t max_torque_mnm_
Definition util.h:138
uint32_t singleturn_resolution
Definition util.h:139
int16_t alpha_mult
Definition util.h:154
double end_frequency
Definition util.h:147
double warn_torque_const
Definition util.h:162
double cutoff_frequency
Definition util.h:148
double lb
Definition util.h:165
uint16_t torque_amplitude
Definition util.h:145
float velocity_loop_bandwidth
Definition util.h:158
float velocity_damping
Definition util.h:159
double start_frequency
Definition util.h:146
ControllerType controller_type
Definition util.h:151
double duration_seconds
Definition util.h:144
double position_damping
Definition util.h:153
double ub
Definition util.h:166
double settling_time
Definition util.h:152
uint8_t order
Definition util.h:155