str/apps/include/Navigation.h (26 lines of code) (raw):
/**
* @file Navigation.h
* @brief 2点間を結ぶ仮想直線をライントレースするクラスのヘッダファイル
* @author Futa HIRAKOBA
*/
#ifndef __NAVIGATION__
#define __NAVIGATION__
#include <cmath>
#include "LineTracerWalker.h"
#include "SelfLocalization.h"
/*! @class Navigation Navigation.h "Navigation.h"
* @brief 2点間を結ぶ仮想直線をライントレースするクラス
*
* このクラスはLineTracerWalkerクラスを継承しています。
*/
class Navigation: public LineTracerWalker {
public:
/** コンストラクタ */
Navigation(std::int32_t, std::int32_t, bool isSave=true);
/** 仮想線を定義する関数
* @param スタートのX座標
* @param スタートのY座標
* @param ゴールのX座標
* @param ゴールのY座標
* @return 正常にラインを引けたか */
bool setLine(float, float, float, float);
/** 走行体から仮想線までの最短距離を取得する関数
* @param 現在地のX座標
* @param 現在地のY座標
* @return 走行体から仮想線までの最短距離 */
float getDiffLine(float, float);
/** 仮想線を走破したかどうかをチェックする関数
* @return ラインを走破したかどうか */
bool checkEndOfLine();
/** 実際の前進値と回転値を計算して格納する関数
* @return ラインを走破したかどうか */
bool calculateValue(std::int32_t, std::int32_t, bool);
bool calculateAngle(std::int32_t, std::int32_t, bool);
void calculate_line_angle(bool);
SelfLocalization sl;
int goal_angle;
/** 0.1sで進んだ距離[mm/0.1s] */
public:
/** スタートのX座標 */
float start_x;
/** スタートのY座標 */
float start_y;
/** ゴールのX座標 */
float goal_x;
/** ゴールのY座標 */
float goal_y;
/** 現在のX座標 */
float current_x;
/** 現在のY座標 */
float current_y;
/** ラインまでの距離 */
float diff_line;
};
#endif