マイクロマウス向けの迷路探索C++ライブラリ
A maze solver C++ library for micromouse
迷路探索ロボット「マイクロマウス」の開発用に作成した,汎用迷路探索ライブラリです.
以下のような特徴があります.
- 同一の迷路に対して複数のグラフ表現を考慮できる
- 同一のグラフ表現に対して複数の最短経路ソルバを使用できる
- 標準よりも大きな迷路への拡張が容易である
また,組み込み環境での利用を想定して,以下の点に注意して実装しています.
- メモリはなるべく静的に確保する(壁の枚数やノードの個数はコンパイル時定数)
__attribute__((__packed__))の利用- 整数型のビット数の規定
Amazeは主に3つの基本クラスで構成されています.
Maze
迷路データを表すクラスです.テンプレート引数によって最大の迷路幅を指定できます.使用するメモリはコンパイル時に決定され,静的に確保されます.MazeGraph
Mazeクラスで表現された迷路の壁データをもとにグラフを構成します.MazeGraphは抽象クラスであり,FourWayStepMapGraph,SixWayWallNodeGraph,SixWayWallNodeTurnCostGraphが具体的に実装しています.Solver
MazeGraph上を探索するソルバです.迷路データであるMaze自身は参照せず,MazeGraphを通して迷路を解釈します.AStar,BFS,DStarLiteが具体的な実装を提供しています.
また,計算機上でのシミュレーションのためのヘルパークラスも用意しています.
AgentHelper
仮想的な壁のセンシングや状態管理を行うヘルパーです.
samples をご覧ください.
C++17に対応したコンパイラが必要です.
ビルド環境
- g++ 9.2 以降
MazeGraph, Solver を実装することで,独自の迷路のグラフ表現や最短経路ソルバを使用できます.