Upgrade to Pro — share decks privately, control downloads, hide ads and more …

etrobo2022 Shiokara-z Model

azurata
October 02, 2022

etrobo2022 Shiokara-z Model

azurata

October 02, 2022
Tweet

More Decks by azurata

Other Decks in Programming

Transcript

  1. 113 公立はこだて未来大学 北海道 北海道函館市 塩辛ーズ モデルの構成 1. 機能モデル • 『「ブロック搬入(色一致)」の獲得』という目標の達成のため

    に、動作シナリオを作成し、基本系列とした。また、例外系列 として各系列で定めた系列終了の判定に加え、別の判定も加え ることによって信頼性を高めた。 2. 構造モデル • 上位パッケージではそれぞれ抽象クラスを作成し疎結合とした。 • 依存を一方向に向けることで、保守性を高めた。 • コンポジットパターンを用いることで、木構造の形でオブジェ クトを組み合わせることができるようになった。これにより、 複雑な状態遷移をオブジェクト構造のみで表わせるようになっ た。 3. 振舞いモデル • ガレージカードが赤でなかった時の振る舞いについて、状態遷 移について記載した。 • コンポジットノード内の動作ノードがどのような振る舞いをす るのかシーケンス図を用いて記載した。 • 相互作用を用いて判定の振る舞いを分けることで、相対的に判 定するような判定オブジェクトの複雑な振る舞いを、相互作用 により分割してわかりやすく記述した。 4. 工夫点 • 走行体のヨー角度を2つの方法で計算し、計算結果を指定の比 率で混ぜることにより、正確なヨー角度の推定を目指した。 チーム紹介、目標、意気込み 1. チーム紹介 塩辛ーズは、公立はこだて未来大学の2年生6名、1年生 2名によって構成チームです。 2. 目標 目標は「地区大会総合優勝」です。 3. 意気込み 昨年度は様々な面で悔しい思いをしましたが、今年は目標 を達成できるよう全力を尽くしました。 モデルの概要 【選択課題】ブロックを搬⼊する 【目標】「ブロック搬入(色一致)」の獲得 • 状態管理を木構造のようなオブジェクト構造で行うこととした。 これにより、途中まで同じ動作でもそれ以前で分岐を作るなど、 構造による振る舞いの作成に関して自由度が高まった。 • 走行体のヨー角が正確に推定できることで信頼性が向上するた め、走行体のヨー角を正確に推定できるように、ジャイロセン サとオドメトリを組み合わせて使用することとした。
  2. 塩辛ーズ 図1.1 ミスユースケース図 1. 機能モデル 1.1 ⾛⾏戦略 『「ブロック搬入(色一致)」の獲得』という目標のために動作シナリオを作成し、表1.1に示した。なお、各シナリオにて用いている「右」「左」という方向は、走行体進行方向を前方としている。また、これらはレフ トコースでの方向であり、ライトコースの場合はそのまま左右を入れ替えて読み替える必要がある。 シナリオ番号

    内容 1 スラローム通過後、ラインに復帰してラインが青い区間の終了までライントレースを行う。 2 左に90°旋回して、前方のボーナスブロックが設置されたベースサークルに接続するラインまで直進する。 3 右に約110°旋回して、灰色を検知するまでライントレースする。 - ガレージカードが赤以外の場合 ガレージカードが赤の場合 4 右に約180°旋回して、進行方向前方の青色の交点マーカーまで直進する。 左に約65°旋回して、走行体進行方向先のラインまで直進する。 5 右に約20°旋回して、走行体前方の青色のラインまで直進する。 黒色を検知したら、先程と同じ方向に90°旋回して、ラインが青い区間のガレージ側までライントレースする。 6 右に90°旋回して、ガレージマーカーによって指定された色を検知するまで直進する。 指定距離まで直進し、左に90°旋回した後赤色を検知するまで直進する。 1.2 機能抽出 表1.1で示した動作シナリオを基に、ミスユース ケース図による機能の導出とリスクへの対応 策の検討の結果を図1.1に示した。ネガティブ アクタ、ミスユースケースは灰色、緩和ユース ケースは緑色である。 また、ユースケース『「ブロック搬入(色一致)」を 達成する』のユースケース記述を表1.2に示し た。 表1.1 動作シナリオ ユースケース 「ブロック搬入(色一致)」を達成する 概要 指定されたボーナスブロックを取得し ブロック搬入領域へ入れた後、駐車 領域へ駐車する。 アクタ 競技者 事前条件 スラローム通過後、ラインに復帰して いる。 事後条件 最大計測時間内に走行体が駐⾞領 域に入っており、ボーナスブロックが ガレージカードにより指定されたブ ロック搬入領域内に入っている。 基本系列 表1.1を参照 例外系列 「<色>を検知するまで」という系列で、 色やラインを検知できなかった場合、 事前に指定した距離直進していたら 該当系列を終了する。 表1.2 ユースケース記述 1.4 仕様定義 表1.2のユースケース記述や、図1.2, 図1.3の動作イメージを満たすアクティビ ティを図1.2のアクティビティ図に示した。 なお、紙面の都合上、各系列は類似のアルゴリズムでまとめているため、各系 列によって開始ノードと終了を各パーティションごとについている。また、各系列 ごとに「指定角度」などのパラメタも異なることに注意すること。例えば、パーティ ション「基本系列2, 4」は、アルゴリズムは同じであるが、「指定角度」「指定距 離」といったパラメタが系列2と4で異なる。 図1.4 仕様のアクティビティ図 1.3 仕様定義 表1.1をもとに、動作イメー ジを策定した。なお、紙面 の都合上ガレージカードが 赤の際の基本系列4, 5, 6 の動作イメージは省略して いる。 図1.2 基本系列1, 2, 3の動作イメージ 図1.3 ガレージカードが赤以外の際の基本系列4, 5, 6の動作イメージ
  3. 塩辛ーズ 2. 構造モデル 2.1 パッケージ構造 パッケージ図を図2.1に示す。ノードパッケージ、判定パッケージ を上位パッケージ、ev3apiラッパーパッケージ、ev3apiパッケー ジを下位パッケージと呼称する。上位パッケージでは下位パッ ケージの構造に依存することはあっても、実装に依存しないた め、プログラムの保守性が高い。

    また、表2.1に各パッケージの責務を示す。 パッケージ 責務 ノード 状態管理 判定 ノードの終了判定 Ev3apiラッパー ev3apiを上位パッケージで扱いやすくする ev3api EV3RT公式のデバイスドライバ 表2.1 各パッケージの責務 図2.1 パッケージ図 2.3 クラス構造 クラス図を図2.2に示す。2.2で述べた通り、コンポジットノードによって木構造のオブジェクト構造を作成できるようにしている。 なお、HRP3のタスクもしくはサイクラはステレオタイプ「HRP3」で表わしている。 2.2 ⽊構造による状態管理 本システムでは、状態管理のために木構造型のオブジェクト構 造を採用している。 図2.2では、図1.2のアクティビティ図をもとに、基本系列2の最初 までのノード例をオブジェクト図を用いて表わしている。 図2.2 オブジェクト図 図2.3 クラス図
  4. 塩辛ーズ 3. 振舞いモデル 3.1 状態遷移 ステートマシン図を図3.1に示す。直進状態と回転状態はそれぞれ指定角度と指定距離をパラ メタとして持つが、図が煩雑になるため省略する。また、ガレージカードが赤の際の状態遷移 も同様の理由で省略している。 図3.1 ステートマシン図

    3.2 システム全体の振る舞い シーケンス図をそれぞれ図3.2と図3.3に示す。図3.2では、基本系列1の最初について、システム全体の振る舞いを示している。また、 図3.3では、判定に関するオブジェクトの振る舞いに加え、2.3で述べた「相対的な値を用いて評価する」について振る舞いを記述した。 図3.2 全体のシーケンス図 図3.3 判定のシーケンス図
  5. 塩辛ーズ ヨー角の推定を、ジャイロセンサとオドメトリの2つの方法で求め、それぞれ比率をかけて足すこととし た。 オドメトリによるヨー角𝜃推定の式は下の通りである。それぞれ、𝐸! (𝑡)は𝑡秒時点の左モータの瞬間の 速さ、𝐸" は𝑡秒時の右モータの瞬間の速さ、𝑊は走行体のトレッド幅を表わす。 𝜔 𝑡 =

    𝐸" 𝑡 − 𝐸! 𝑡 𝑊 𝜃 𝑡 = * # $ 𝜔 𝜏 𝑑𝜏 𝑡秒時のジャイロセンサによるヨー角の推定値を- 𝜃% (𝑡)、オドメトリによるヨー角の推定値を- 𝜃& (𝑡)といた とき、ヨー角の推定値を . 𝜃(𝑡)とすると、 . 𝜃(𝑡)を比率𝑎(0 ≤ 𝑎 ≤ 1)を用いて下式のように定義した。 . 𝜃 𝑡 = 𝑎- 𝜃% 𝑡 + 1 − 𝑎 - 𝜃& 𝑡 4. 工夫点 4.1 課題設定 図1.1のユースケース図では「走行体のヨー角度を正確に推定する」というユースケースを導出した。 ヨー角が正確に推定できていこれは、旋回時の終了条件と、ヨー角を固定する制御のためである。こ こで問題となってくるのが、ヨー角の推定が正確にできているかどうかである。 なければ、走行にずれが生じ、正常に目標を達成できない。そのため、ヨー角の推定は正確でなけれ ばならない。 4.3 対策 4.2 分析 まず、カルマンフィルタの導入を考えた。カルマンフィルタは、観測方程式と状態方程式からノイズを取 り除くための手法である。しかし、カルマンフィルタでは実装のために新たに勉強が必要であるなど、 工数がかかるという問題点があった。そのためカルマンフィルタを実装しているライブラリを調べたが、 依存している別のライブラリがあったため、組込み向けではないとして導入を断念した。 次に、ジャイロセンサにローパスフィルタをつけて誤差を減らすことを考えた。しかし、ローパスフィルタ は瞬間の微小部分の補正はできても、累積する誤差を減らすことは難しいとして導入を断念した。 最後に、いくつかのセンサを組み合わせることを考えた。ヨー角を計測できるのは、ジャイロセンサと オドメトリによる計算で計測できることがわかった。更に、オドメトリは検討時点で既に実装していたた め、これを採用することとした。