41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
/*
|
||
* 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_ */
|