Cartサブシステム仕様.

Slides:



Advertisements
Similar presentations
ロボット制御のソフトウェ ア: シミュレータ試作 情報理工学部 情報知能学科 H 207051 中谷聡太郎.
Advertisements

マイクロマウス ソフトウェア要求仕様書 第2.2版 2006年12月17日 冨山 隆志
視線に基づくサブゴールを用いた 歩行者の行動モデル
コリオリ力の復習資料 見延 庄士郎(海洋気候物理学研究室)
Post Source Decay: PSDとは?
第四回 VB講座 画像とタイマー.
シミュレーション論 Ⅱ 第12回 強化学習.
ライントレーサ e1336 松葉俊信.
ブロック線図によるシミュレーション ブロック線図の作成と編集 ブロック線図の保存と読込み ブロック線図の印刷 グラフの印刷
異種センサを用いた人の行動検知 研究概要 研究の独自性 isi担当 高汐グループ成果 スライド到着待ち yasu担当.
システム開発実験No.7        解 説       “論理式の簡略化方法”.
PIC制御による赤外線障害物 自動回避走行車
第5回 統計処理(2) 塩浦 昭義 東北大学全学教育科目 情報基礎 A 1セメスター 木曜1,3講時 経済学部・法学部
大域的データフロー解析 流れグラフ 開始ブロック 基本ブロックをnodeとし、 基本ブロック間の制御関係をedgeとするグラフを、
2.伝送線路の基礎 2.1 分布定数線路 2.1.1 伝送線路と分布定数線路 集中定数回路:fが低い場合に適用
Android端末によるロボット制御とその評価
シミュレーション論 Ⅱ 第12回 様々なシミュレーション手法(3) 強化学習.
ステッピングモータを用いた 移動ロボットの制御
河川工学 -流出解析その1- 合理式と単位図法
合成伝達関数の求め方(1) 「直列結合 = 伝達関数の掛け算」, 「並列結合 = 伝達関数の足し算」であった。
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
Line Tracer ~~ PIC の 軌跡 ~~ e1317.
複数の移動ロボットによる 協調的な行動: 情報共有に基づく お片づけロボットのシステム開発
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
からくり機構を用いた風船割りレース 11班 中山武也 日野朝人
マルチホーミングを利用した Proxy Mobile IPv6の ハンドオーバー
メンバー 梶川知宏 加藤直人 ロッケンバッハ怜 指導教員 藤田俊明
マイクロマウス ソフトウェア要求仕様書 初版 2006年10月28日 冨山 隆志
早わかりアントコロニー最適化 (Ant Colony Optimization)
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
星形成時間の観測的測定 東大天文センター M2 江草芙実 第4回 銀河shop 2004/10/19.
アクションゲームにおけるプレイヤのレベルに応じたマップの自動生成手法の研究
GPSを使わないBebop Droneの 自動飛行
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
動力学(Dynamics) 力と運動方程式 2008.6.10
ロボットの協調動作の研究: マップ作成とマップ情報を利用した行動計画
LEGOを用いた倒立振子の 制御系設計に関する研究
桐蔭横浜大学工学部ロボット工学科 箱木研究室 T20R022 山下 晃
2003/04/14(Mon) 15:00- 早稲田大学マイクロマウスクラブ(WMMC) 4年 原 耕司
プログラミングを 体験しよう 選択情報⑧.
or-4. モンテカルロシミュレーション (オペレーションズリサーチを Excel で実習するシリーズ)
移動ロボットの速度制御 桐蔭横浜大学 箱木研究室 T20R001 あべ松雄太.
倒立振子の制御 T22R007 山岡 由尚.
円板の転がり運動により発生する音と振動 鳥取大学 工学部 応用数理工学科 生体システム解析学研究室 目的 実験方法 (3次元解析)
JAVAバイトコードにおける データ依存解析手法の提案と実装
チューリングマシン 0n1nを受理するチューリングマシン 入力テープ b b b b 状態遷移機械.
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
シミュレーション論 Ⅱ 第1回.
システムコントローラ仕様.
プログラミングⅡ 第2回.
8方向補間ブロックマッチングの実装 福永研究室 数理科学コース 学部4年 能城 真幸.
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
リバーシ 06a1056 藤田将義.
マイクロマウス ソフトウェア要求仕様書 第2版 2006年11月8日 冨山 隆志
ライントレーサ 2E20.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
プログラミング演習I 数値計算における計算精度と誤差
オートマトンって? (Turing machine).
情報数理Ⅱ 第10章 オートマトン 平成28年12月21日.
プログラミング 平成28年10月25日 森田 彦.
振幅は 山の高さ=谷の深さ A x A.
高計数率ビームテストにおける ビーム構造の解析
専門教育入門セミナー 2016/10/31.
情報処理 ADコンバータの基礎 アナログ電圧値をディジタル・データとして取 り込む
アルゴリズム ~すべてのプログラムの基礎~.
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
Presentation transcript:

Cartサブシステム仕様

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

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

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

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

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

Nブロックを走行するための加減速 速度 時間 Lacc = (Vhigh + Vlow) Tacc / 2 前壁チェック 速度 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

Lacc = (Vhigh + Vlow) Tacc / 2 ∴ Tacc = 2 Lacc / (Vhigh + Vlow) 加速時間を求める 巡航時間を求める 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) Vhigh = 600 [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]

加速テーブル 制御周期当たりの速度増分を求める式 Δv = (Vhigh – Vlow) / Tacc ×Δt 上限速度 速度増分 加速距離 例) Δ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

スピンの加減速 速度 時間 Lr = Ll = θ・T/2 トレッド T 右車輪の移動距離 Lr 左車輪の移動距離 Ll スピン角度 θ 上限速度 加速距離 巡航距離 減速距離 下限速度 45° 0~90° 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]

Lacc = (Vhigh + Vlow) Tacc / 2 ∴ Tacc = 2 Lacc / (Vhigh + Vlow) 加速時間を求める 巡航時間を求める 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]

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

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