Skip to content

Commit

Permalink
update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
kerikun11 committed Jul 2, 2023
1 parent 482920a commit e2c6882
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 28 deletions.
16 changes: 7 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# MicroMouse Control Module

マイクロマウス制御の実装のうち、モジュール化できる部分をまとめたC++ライブラリ。
マイクロマウスの車体制御のうち、モジュール化できる部分をまとめたC++ライブラリ。

API リファレンスは[こちら](https://kerikun11.github.io/micromouse-control-module/)

--------------------------------------------------------------------------------

Expand All @@ -11,22 +13,18 @@
- 軌道追従制御器 (ctrl::TrajectoryTracker)
- フィードバック制御器 (ctrl::FeedbackController)

詳しくは[こちら](docs/structure.md)

--------------------------------------------------------------------------------

## マイコンでの使用方法

- このライブラリはC++ヘッダーファイルのみから構成されている。
- このリポジトリをダウンロードして `include` ディレクトリからソースコードを参照して使用する。
- このリポジトリの `include` ディレクトリからソースコードを参照して使用する。
- 必要に応じてコンパイルオプションに `-std=c++17` を設定する。

--------------------------------------------------------------------------------

## コンピュータでの使用例

詳しくは [こちら](docs/example.md)

--------------------------------------------------------------------------------

## ライブラリ構成

詳しくは [こちら](docs/structure.md)
詳しくは[こちら](docs/example.md)
33 changes: 18 additions & 15 deletions docs/example.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ cd build
# 初期化 (Makefile の生成); MSYS2 の場合 -G"MSYS Makefiles" オプションを付加
cmake .. ${MSYSTEM:+-G"MSYS Makefiles"}
# ビルド
make
make all
```

以降、コマンド `make` は、この `build` ディレクトリで実行すること。
Expand All @@ -94,22 +94,24 @@ make

## 曲線加速軌道の生成とプロット

[examples/accel/main.cpp](/examples/accel/main.cpp) の実行
`examples/accel/main.cpp` の実行

```sh
# 軌道 (accel_x.csv) の生成とプロット
make accel accel_plot
# 軌道 (accel_*.csv) の生成とプロット
make accel
make accel_plot
```

--------------------------------------------------------------------------------

### スラローム軌道の生成とプロット

[examples/slalom/main.cpp](/examples/slalom/main.cpp) の実行
`examples/slalom/main.cpp` の実行

```sh
# スラローム軌道 (slalom_x.csv) の生成とプロット
make slalom slalom_plot
# スラローム軌道 (slalom_*.csv) の生成とプロット
make slalom
make slalom_plot
```

--------------------------------------------------------------------------------
Expand All @@ -120,11 +122,10 @@ C++で実装されたPythonモジュール `ctrl` を使用してプロットす

```sh
# Python モジュール ctrl の生成とプロットスクリプトの実行
make ctrl pybind11_plot # calls ./pybind11/plot.py
make ctrl
make pybind11_plot # calls ./pybind11/plot.py
```

詳しくは[こちら](/pybind11)

--------------------------------------------------------------------------------

## リファレンスの生成
Expand All @@ -134,15 +135,16 @@ make ctrl pybind11_plot # calls ./pybind11/plot.py
```sh
# ドキュメントの自動生成
make docs
# ブラウザで開く (open コマンドは環境依存)
open docs/html/index.html
# 必要に応じてウェブサーバーを立ち上げる
python3 -m http.server -d docs/html 8080
# ブラウザで http://localhost:8080 にアクセスする
```

上記コマンドにより `build/docs/html/index.html` にリファレンスが生成される。

--------------------------------------------------------------------------------

### ユニットテスト
### 単体検証とカバレッジ

[GoogleTest](https://github.com/google/googletest) によるユニットテストと [LCOV](https://github.com/linux-test-project/lcov) によるカバレッジテストを実行する

Expand All @@ -153,8 +155,9 @@ make lcov_init
make test_run
# カバレッジ結果の収集
make lcov
# ブラウザでカバレッジ結果をみる (open コマンドは環境依存)
open test/html/index.html
# 必要に応じてウェブサーバーを立ち上げる
python3 -m http.server -d test/html 8080
# ブラウザで http://localhost:8080 にアクセスする
```

上記コマンドにより `build/test/html/index.html` にカバレッジ結果が生成される。
12 changes: 8 additions & 4 deletions examples/slalom/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,19 @@ void printCsv(const std::string& filebase, const slalom::Shape& ss,
float t = 0;
for (size_t i = 0; i < ticks.size(); ++i) {
of = std::ofstream(filebase + "_" + std::to_string(i) + ".csv");
// const float k_slip = 2e-5f;
const float k_slip = 0;
while (t < ticks[i])
st.update(s, t, Ts, 2e-5f), printCSV(of, t, s), t += Ts;
st.update(s, t, Ts, k_slip), printCSV(of, t, s), t += Ts;
}
}

int main(void) {
// static auto ss = slalom::Shape(Pose(45, 45, M_PI / 2), 40);
// static auto ss = slalom::Shape(Pose(90, 90, M_PI / 2), 75);
static auto ss = slalom::Shape(Pose(0, 90, M_PI), 90, 10);
const float PI = M_PI;
auto ss = slalom::Shape(Pose(45, 45, PI / 2), 40); //< S90
// auto ss = slalom::Shape(Pose(90, 45, PI / 4), 30); //< F45
// auto ss = slalom::Shape(Pose(45, 90, PI * 3 / 4), 80); //< F135
// auto ss = slalom::Shape(Pose(0, 90, PI), 90, 24); //< F180
std::cout << ss;
const AccelDesigner ad(ss.dddth_max, ss.ddth_max, ss.dth_max, 0, 0,
ss.curve.th);
Expand Down

0 comments on commit e2c6882

Please sign in to comment.