File sine_torque_control.hpp

Copyright

Copyright (c) 2018-2020, New York University and Max Planck Gesellschaft, License BSD-3-Clause

namespace blmc_drivers

This namespace is the standard namespace of the package.

class SineTorqueControl

This is a basic PD controller to be used in the demos of this package.

Public Functions

inline SineTorqueControl(std::vector<SafeMotor_ptr> motor_list)

Construct a new SineTorqueControl object.

Parameters:

motor_slider_pairs

inline ~SineTorqueControl()

Destroy the SineTorqueControl object.

inline void start_loop()

This method is a helper to start the thread loop.

void stop_loop()

Stop the control and dump the data.

Private Functions

void loop()

this is a simple control loop which runs at a kilohertz.

it reads the measurement from the analog sensor, in this case the slider. then it scales it and sends it as the current target to the motor.

Private Members

std::vector<SafeMotor_ptr> motor_list_

This is list of motors.

real_time_tools::RealTimeThread rt_thread_

This is the real time thread object.

bool stop_loop_

managing the stopping of the loop

unsigned memory_buffer_size_

memory_buffer_size_ is the max size of the memory buffer.

std::vector<std::deque<double>> encoders_

Encoder data.

std::vector<std::deque<double>> velocities_

Velocity data.

std::vector<std::deque<double>> currents_

current data

std::vector<std::deque<double>> control_buffer_

control_buffer_

Private Static Functions

static inline THREAD_FUNCTION_RETURN_TYPE loop(void *instance_pointer)

this function is just a wrapper around the actual loop function, such that it can be spawned as a posix thread.