1 / 13

Cart サブシステム仕様

Cart サブシステム仕様. 責務. Pilot.  System Controler から走行開始命令を受け、ゴールに到達したら System Controler に到着を報告する。  Nagivator にゴールに到達するためのコマンド列を問い合わせ、コマンド列の実行を Cart に指示する。 Cart から報告されるコマンド列の実行結果と壁情報を使って、 Navigator に自車位置とマップの壁情報の更新を指示する。. Navigator. 迷路情報、自車位置を保持し、更新する。  目的地点(ゴール/スタート)に到達したかどうかを判定する。

rudolf
Download Presentation

Cart サブシステム仕様

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cartサブシステム仕様

  2. 責務 Pilot •  System Controlerから走行開始命令を受け、ゴールに到達したらSystem Controlerに到着を報告する。 •  Nagivatorにゴールに到達するためのコマンド列を問い合わせ、コマンド列の実行をCartに指示する。 • Cartから報告されるコマンド列の実行結果と壁情報を使って、Navigatorに自車位置とマップの壁情報の更新を指示する。 Navigator • 迷路情報、自車位置を保持し、更新する。 •  目的地点(ゴール/スタート)に到達したかどうかを判定する。 •  目的地点(ゴール/スタート)に到達するまでの最短経路を導出する。 •  現在の自車位置から目的地点(ゴール/スタート)に到達するためのコマンド列を生成する。 Cart (アクティブクラス) • 走行コマンド列を実行して、実行結果と移動したブロックごとの壁情報を報告する。 •  走行コマンドの実行にあたり、姿勢制御や衝突回避を行う。

  3. 探索走行時のコラボレーション System Controler • isGoal() • getNextCommand() Pilot Navigator 6. updateMap( responseQueue ) responseQueue 3. setCommand( commandQueue ) Navigator ドメインはパッシブにすることで、PC上でシミュレーションできるようにする。 Cart 4. getWall( ) Wall Sensor 5. setVelocity() Motor Cartサブシステム

  4. 走行コマンドの種類 2006年度版は こちらだけサポートする

  5. 前進1、壁=101 前進 3 前進1、壁=101 右スピン90 前進1、壁=111 前進 3 右90、壁=110 停止 継続不可 終了 前進1、壁=101 前進1、壁=101 前進1、壁=110 右90、壁=101 前進1、壁=101 前進1、壁=101 前進1、壁=110 停止、壁=101 正常終了 走行コマンドとレスポンス • 迷路の壁情報更新は、1ブロックずつ行いたい。 • しかし、1ブロック移動しては止まるというのは移動が遅くなるからやりたくない。 • 例えば5ブロック前進して、レスポンスとして5ブロック分の壁情報が得られるのが好ましい。 レスポンスをブロック単位に分解してしまう 走行コマンドを最後まで実行 途中で壁を検知して停止 走行コマンド列(入力)

  6. コマンド実行制御フロー 移動距離から加減速時間、巡航時間を決める。 速度区間設定 加速テーブルに従い、所定時間で加速する。 加速距離は0.5ブロック。 0.5ブロック移動するごとに前方の壁の有無をチェックする。0.5ブロック前方に壁を見つけたら減速に移る。 0.5ブロック移動するごとに前方の壁の有無をチェックする。壁を見つけたら減速に移る。 加速 一定速度 所定時間だけ、一定速度で走行する。 減速 加速テーブルを逆にたどって、所定時間で減速する。 減速距離は0.5ブロック。 レスポンス用に 1ブロックごとの 壁情報を取っておく 停止 前方に壁がある AD値と壁判定閾値を比較して、差が所定範囲内に収まるまでゆっくり一定速度で動く。 FALSE TRUE 距離補正 コマンド完了後は移動ブロックごとの壁情報をレスポンスとして返す。

  7. Nブロックを走行するための加減速 前壁チェック 速度 0.5ブロックごとに 前壁チェック 上限速度 前壁チェック 加速距離 巡航距離 減速距離 下限速度 0.5ブロック N-1ブロック 0.5ブロック 時間 加減速時間 加減速時間 巡航時間 調整時間 台形の面積を求める公式 上限速度 Vhigh 下限速度 Vlow 加速時間 Tacc 巡航時間 Tc 加速距離 Lacc 巡航距離 Lc 加速時間を求める 巡航時間を求める Lacc = (Vhigh + Vlow) Tacc / 2 ∴ Tacc = 2 Lacc / (Vhigh + Vlow) Lc = Vhigh Tc ∴ Tc = Lc / Vhigh

  8. 加速時間を求める 巡航時間を求める Lacc = (Vhigh + Vlow) Tacc / 2 ∴ Tacc = 2 Lacc / (Vhigh + Vlow) Lc = Vhigh Tc ∴ Tc = Lc / Vhigh 例1) Lacc = 90 [mm] Vhigh = 300 [mm/s] Vlow = 50 [mm/s] の場合 Tacc = 2 * 90 / (300 + 50) = 0.514 [sec] 例2) Lacc = 90 [mm] Vhigh = 600 [mm/s] Vlow = 50 [mm/s] の場合 Tacc = 2 * 90 / (600 + 50) = 0.277 [sec] 例1) 2区画前進, Vhigh = 300 [mm/s] Lc = 180×2 - 90×2 = 180 [mm] Tc = 180 / 300 = 0.6 [sec] 例2) 6区画前進, Vhigh = 300 [mm/s] Lc = 180×6 - 90×2 = 900 [mm] Tc = 900 / 300 = 3 [sec]

  9. 加速テーブル 例) Δt = 0.02 [s] Lacc = 90 [mm] Vhigh = 300 [mm/s] Vlow = 50 [mm/s] の場合 Tacc = 0.51 [ms] Δv = (300 – 50) / 0.51×0.02 = 9.8 [mm / s] 上限速度 速度増分 加速距離 下限速度 加減速時間 制御周期 • 制御周期当たりの速度増分を求める式 • Δv = (Vhigh – Vlow) / Tacc×Δt

  10. スピンの加減速 速度 上限速度 加速距離 巡航距離 減速距離 下限速度 0~90° 45° 45° 時間 加減速時間 加減速時間 巡航時間 調整時間 車輪の回転方向を逆にすれば、後は距離の管理で角度を管理できる。 Lr = Ll = θ・T/2 加減速時間、巡航時間はそれぞれ 直進時と同様に求めることができる。 トレッド       T 右車輪の移動距離 Lr 左車輪の移動距離 Ll スピン角度     θ T = 74 [mm], θ=45°のとき Lr = Ll = 45π/180×74/2 = 29.06 [mm] θ=45° のとき 29.06 [mm] θ= 90°のとき 58.12 [mm] θ=180°のとき116.24 [mm]

  11. 加速時間を求める 巡航時間を求める Lacc = (Vhigh + Vlow) Tacc / 2 ∴ Tacc = 2 Lacc / (Vhigh + Vlow) Lc = Vhigh Tc ∴ Tc = Lc / Vhigh 例1) Lacc = 29.06 [mm] Vhigh = 140 [mm/s] Vlow = 50 [mm/s] の場合 Tacc = 2 * 29.06 / (140 + 50) = 0.306 [sec] 例1) 180°スピン, Vhigh = 140 [mm/s] Lc = 116.24 - 29.06×2 = 58.12 [mm] Tc = 58.12 / 140 = 0.415 [sec] 45°加速 90°巡航 45°減速 で合計 1.00[sec] • 制御周期当たりの速度増分 • Δv = (Vhigh – Vlow) / Tacc×Δt Δv = (140 – 50)/0.306×0.02 = 5.88 [mm/s] θ=45° のとき 29.06 [mm] θ= 90°のとき 58.12 [mm] θ=180°のとき116.24 [mm]

  12. 直進時の姿勢制御 左に壁がある FALSE 右に壁がある FALSE TRUE 車体が左寄り 車体が左寄り FALSE FALSE TRUE 車体が 右寄り TRUE 車体が 右寄り FALSE FALSE TRUE TRUE 左車輪を 加速する 左車輪を 減速する 左車輪を 通常速度に戻す 左車輪を 加速する 左車輪を 減速する 左車輪を 通常速度に戻す 左車輪を 通常速度に戻す

  13. Cartクラス 仕組みはリングバッファでOK 1 setCommand(command) 3 execCommand(command) 2 put( command ) 4 get( &command) Cart CommandQueue コマンドキューのサイズはいくつあったら足りるだろうか? AccTable Motor 第21回の迷路で数えると、スタートからゴールまで最短で60コマンドくらい必要。 120コマンドまで入るようにすると 1コマンド1Byteで作って、120Byte必要。

More Related