MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/driver/IEncoder.hh

41 lines
1.1 KiB
C++
Raw Normal View History

2024-06-07 11:12:56 +03:00
/*
* IEncoder.h
*
* Created on: 20 мар. 2019 г.
* Author: krugliy
*/
#ifndef SOURCE_DRIVER_IENCODER_H_
#define SOURCE_DRIVER_IENCODER_H_
#include <utility>
namespace driver {
//!Интерфейс взаимодействия с энкодерами.
struct IEncoder {
typedef float Turn;
typedef float Angle;
typedef std::pair<Turn, Angle> Position;
//!Функция возращает номер оборота.
virtual Turn getTurn() const = 0;
//!Функция возращает угол в радианах от 0 до 2*pi или NaN.
virtual Angle getAngle() const = 0;
//!Метод позволяет получить консистентные данные позиции энкодера в формате (оборот, угол).
virtual Position getPosition() const = 0;
static std::pair<Turn, Angle> delta( std::pair<Turn, Angle> point_0, std::pair<Turn, Angle> point_1 );
static Angle in_turn( std::pair<Turn, Angle> point, Turn base );
static std::pair<Turn, Angle> normalize( std::pair<Turn, Angle> point );
};
}
#endif /* SOURCE_DRIVER_IENCODER_H_ */