/*!
  \page controller_idea_page アイディア

  \section controllelr_idea_command 走行コマンドについて

  \subsection controllelr_idea_command_style コマンド構成について

  - 並進速度と回転速度を指定するコマンドは、完全に分ける
    - 経路の指定を並進速度を指定するコマンド(経路コマンド)で行い
    - 移動の開始と停止を並進速度を指定するコマンド(移動コマンド)で行う


  \subsection controllelr_idea_command_style_ideal 実現したいこと

  - 経路の指定と、障害物での停止などを分離できるコマンドシステム
  - 経路を作成する GUI アプリとの親和性が高いコマンドシステム


  \subsection controllelr_idea_command_actual 実現方法

  - 走行経路は、走行経路の直線と円弧を指定する経路コマンドを用意し、コマンドを切替えるタイミングを取得できるようにする
    - 経路コマンドを発行後は "前回発行した走行経路のゴールまでの距離" を返す関数を呼び出し、走行経路の切替えを行う

  \code
  while (次の経路コマンドが残っているか()) {
      次の経路コマンド();
      移動開始コマンド()
      while (前回発行した走行経路のゴールまでの距離() < ある閾値) {
          delay(100);
      }
  }
  移動開始コマンド(目標上で停止するよう指示); \endcode

  この構成だと、前回に発行したコマンドのみが実行できればよい。 \n
  そこで、前回に発行した経路コマンドを再発行するコマンドを用意する。

  \code
  前回発行した経路コマンドを同じパラメータで再度発行する(); \endcode

  今回の経路コマンドは、ゴールまでの距離という概念があるため、直線経路と円弧経路には、それぞれ目標位置がある。

  \image html controller_idea_path_line.jpg 直線の指定と目標位置 (stop line)

  \image html controller_idea_path_circle.jpg 円弧の指定と目標位置 (stop line)

  移動コマンドは、現在走行中の経路の目標位置で停止できるようにする。


  \section controllelr_idea_implementation 実装について

  - C 言語の関数を提供する
  - C++ 実装は C 言語の実装をラップして作る
*/
