41 lines
973 B
C++
41 lines
973 B
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_ */
|