File pd_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.

Typedefs

typedef std::shared_ptr<blmc_drivers::AnalogSensor> Slider_ptr

This is a simple shortcut.

typedef std::pair<SafeMotor_ptr, Slider_ptr> PairMotorSlider

This is a simple shortcut.

class PDController
#include <pd_control.hpp>

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

Public Functions

inline PDController(std::vector<PairMotorSlider> motor_slider_pairs)

Construct a new PDController object.

Parameters:

motor_slider_pairs

inline ~PDController()

Destroy the PDController object.

inline void start_loop()

This method is a helper to start the thread loop.

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<PairMotorSlider> motor_slider_pairs_

This is a pair of motor and sliders so that we associate one with the other.

real_time_tools::RealTimeThread rt_thread_

This is the real time thread object.

bool stop_loop

managing the stopping of the loop

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.