Skip to content

Manato18/Lab_Bayesian

Repository files navigation

コウモリのエコロケーション(反響定位)ベイジアンシミュレーション

ファイル構成と関連性

main.py

プログラムのエントリーポイントです。以下のクラスをインスタンス化し、シミュレーションを実行します:

  • Worldクラス:環境設定(壁、障害物など)
  • Bayesianクラス:ベイズ推論の実装
  • Agentクラス:コウモリの動作と状態管理
  • BatVisualizerクラス:シミュレーション結果の可視化

実行フローは以下の通りです:

  1. 各クラスの初期化
  2. ステップごとのシミュレーション実行
  3. 結果の可視化とGIFアニメーション生成

world.py

Worldクラスを定義しています。シミュレーション環境の管理を担当します。

主な機能

  • 壁の座標設定と管理
  • 障害物(ポール)の座標読み込みと管理
  • 環境の境界設定

主なメソッド

  • __init__:環境パラメータの初期化
  • _setup_walls:壁の座標を設定
  • _real_obs:CSVファイルから障害物の位置データを読み込み

agent.py

Agentクラスを定義しています。コウモリの動作と状態を管理します。

主な機能

  • コウモリの位置と方向の管理
  • 実験データからの飛行経路読み込み
  • 各ステップでのシミュレーション実行

主なメソッド

  • __init__:コウモリの初期状態設定
  • one_step:1ステップのシミュレーション実行
  • _real_flight:実験データからコウモリの飛行経路情報を読み込み

bayesian.py

Bayesianクラスを定義しています。ベイズ推論によるマップ更新を担当します。

主な機能

  • 事前確率分布の管理
  • 尤度計算
  • ベイズ更新による事後確率計算

主なメソッド

  • __init__:ベイズ推論パラメータの初期化
  • Init:事前確率分布の初期化
  • dB_trans:データをデシベルスケールに変換
  • new_likelyhood_2D:2次元空間上の尤度計算
  • update_belief:ベイズ更新による信念(確率分布)の更新

calc.py

シミュレーションに必要な様々な計算関数を提供します。

主な機能

  • 座標変換(デカルト座標⇔極座標)
  • 音波の減衰計算
  • エコー検出判定
  • 超音波の往復距離計算

主な関数

  • round_angle:角度の正規化
  • XY_to_r_theta_calc:デカルト座標から極座標への変換
  • dist_attenuation:距離による音波減衰計算
  • direc_attenuation:方向による音波減衰計算
  • real_dist_goback:超音波の往復距離計算
  • calc:メインの計算関数(各ステップでの計算を統合)

visualize.py

BatVisualizerクラスを定義しています。シミュレーション結果の可視化を担当します。

主な機能

  • シミュレーション状態のプロット
  • フレームごとの画像生成
  • GIFアニメーション作成

主なメソッド

  • __init__:可視化パラメータの初期化
  • plot_frame:単一フレームのプロットと保存
  • create_gif_from_frames:フレーム画像からGIFアニメーション作成

データフロー

  1. Worldクラスが環境(壁と障害物)を初期化
  2. Agentクラスがコウモリの初期位置と飛行経路を設定
  3. Bayesianクラスが事前確率分布を初期化
  4. 各ステップで以下が実行されます:
    • Agent.one_stepがステップ実行を開始
    • calc関数がエコー信号を計算
    • Bayesian.update_beliefがベイズ更新を実行
    • BatVisualizer.plot_frameが結果を可視化
  5. 全ステップ完了後、BatVisualizer.create_gif_from_framesがGIFアニメーションを作成

パラメータの受け渡し

  • WorldクラスからAgentクラスへ:環境設定(X, Y座標系)、マージン空間
  • WorldクラスからBayesianクラスへ:格子点数、空間サイズ
  • AgentクラスからBayesianクラスへ:試行回数
  • Agent.one_stepからcalc関数へ:コウモリの位置と方向
  • calc関数からAgent.one_stepへ:エコー信号、観測点座標
  • Agent.one_stepからBayesian.update_beliefへ:エコー信号、距離行列
  • Bayesian.update_beliefからAgent.one_stepへ:更新された確率分布
  • Agent.one_stepからBatVisualizer.plot_frameへ:シミュレーション状態データ

実行方法

python main.py

実行すると、シミュレーションが1ステップずつ進行し、各ステップの状態が可視化されます。最終的にGIFアニメーションが生成されます。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages