Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(readme): add japanese documents #1638

Open
wants to merge 3 commits into
base: tier4/main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 129 additions & 35 deletions README.md

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions common/README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# Common
# 共通

## Getting Started
## はじめに

The Autoware.Universe Common folder consists of common and testing libraries that are used by other Autoware components, as well as useful plugins for visualization in RVIZ2.
Autoware.Universe Commonフォルダは他のAutowareコンポーネントで使用される一般的でテスト用のライブラリのほか、RVIZ2における視覚化に便利なプラグインで構成されています。

!!! note

In addition to the ones listed in this folder, users can also have a look at some of the add-ons in the `autoware_tools/common` documentation [page](https://autowarefoundation.github.io/autoware_tools/main/common/mission_planner_rviz_plugin/).
このフォルダに記載されているもののほかに、ユーザーは `autoware_tools/common` のドキュメント [ページ](https://autowarefoundation.github.io/autoware_tools/main/common/mission_planner_rviz_plugin/) のアドオンも閲覧できます。

## Highlights
## ハイライト

Some of the commonly used libraries are:
一般的に使われているライブラリを以下に示します。

1. `autoware_universe_utils`
2. `autoware_motion_utils`
2 changes: 1 addition & 1 deletion common/autoware_ad_api_specs/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# autoware_adapi_specs

This package is a specification of Autoware AD API.
このパッケージは、Autoware AD APIの仕様です。
6 changes: 3 additions & 3 deletions common/autoware_component_interface_tools/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# autoware_component_interface_tools
## autoware_component_interface_tools

This package provides the following tools for component interface.
このパッケージでは、コンポーネント・インターフェイスに関する次のツールを提供します。

## service_log_checker

Monitor the service log of component_interface_utils and display if the response status is an error.
`component_interface_utils`のサービスログを監視し、レスポンスステータスがエラーかどうかを表示します。
4 changes: 2 additions & 2 deletions common/autoware_geography_utils/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# geography_utils

## Purpose
## 目的

This package contains geography-related functions used by other packages, so please refer to them as needed.
このパッケージには、その他の package で使用される地理関連関数があります。必要に応じて参照してください。
57 changes: 27 additions & 30 deletions common/autoware_grid_map_utils/README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,48 @@
# Grid Map Utils
# グリッドマップユーティリティ

## Overview
## 概要

This packages contains a re-implementation of the `grid_map::PolygonIterator` used to iterate over
all cells of a grid map contained inside some polygon.
このパッケージには、ポリゴン内にあるグリッドマップのすべてのセルを反復処理するために使用される `grid_map::PolygonIterator` の再実装が含まれます。

## Algorithm
## アルゴリズム

This implementation uses the [scan line algorithm](https://en.wikipedia.org/wiki/Scanline_rendering),
a common algorithm used to draw polygons on a rasterized image.
The main idea of the algorithm adapted to a grid map is as follow:
この実装では、ラスタライズされた画像にポリゴンを描画するために使用される一般的なアルゴリズムである [走査線アルゴリズム](https://ja.wikipedia.org/wiki/%E8%B5%B0%E6%9F%A5%E7%B7%9A%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%B6%E3%83%B3) を使用します。
このアルゴリズムをグリッドマップに適用した主な考え方は次のとおりです。

- calculate intersections between rows of the grid map and the edges of the polygon edges;
- calculate for each row the column between each pair of intersections;
- the resulting `(row, column)` indexes are inside of the polygon.
- グリッドマップの行とポリゴン端の交点を計算します。
- 各行について、各交点のペア間の列を計算します。
- 結果の `(行、列)` インデックスはポリゴン内にあります。

More details on the scan line algorithm can be found in the References.
走査線アルゴリズムの詳細については、リファレンスを参照してください。

## API

The `autoware::grid_map_utils::PolygonIterator` follows the same API as the original [`grid_map::PolygonIterator`](https://docs.ros.org/en/kinetic/api/grid_map_core/html/classgrid__map_1_1PolygonIterator.html).
`autoware::grid_map_utils::PolygonIterator` は、元の [`grid_map::PolygonIterator`](https://docs.ros.org/en/kinetic/api/grid_map_core/html/classgrid__map_1_1PolygonIterator.html) と同じ API に従います。

## Assumptions
## 前提

The behavior of the `autoware::grid_map_utils::PolygonIterator` is only guaranteed to match the `grid_map::PolygonIterator` if edges of the polygon do not _exactly_ cross any cell center.
In such a case, whether the crossed cell is considered inside or outside of the polygon can vary due to floating precision error.
`autoware::grid_map_utils::PolygonIterator` の動作が `grid_map::PolygonIterator` と一致するのは、ポリゴンの端がどのセルの中心とも _完全に_ 交差しない場合のみです。
このような場合、交差したセルがポリゴンの内側と外側のどちらと見なされるかは、浮動小数点の精度誤差によって異なる場合があります。

## Performances
## パフォーマンス

Benchmarking code is implemented in `test/benchmarking.cpp` and is also used to validate that the `autoware::grid_map_utils::PolygonIterator` behaves exactly like the `grid_map::PolygonIterator`.
`test/benchmarking.cpp` にベンチマークコードを実装しており、`autoware::grid_map_utils::PolygonIterator` `grid_map::PolygonIterator` とまったく同じように動作することを検証するためにも使用しています。

The following figure shows a comparison of the runtime between the implementation of this package (`autoware_grid_map_utils`) and the original implementation (`grid_map`).
The time measured includes the construction of the iterator and the iteration over all indexes and is shown using a logarithmic scale.
Results were obtained varying the side size of a square grid map with `100 <= n <= 1000` (size=`n` means a grid of `n x n` cells),
random polygons with a number of vertices `3 <= m <= 100` and with each parameter `(n,m)` repeated 10 times.
次の図は、このパッケージ (`autoware_grid_map_utils`) の実装と元の (`grid_map`) 実装のランタイムを比較したものです。
測定した時間は、イテレータの構築とすべてのインデックスの反復処理を含み、対数スケールで示しています。
結果は、側辺長が `100 <= n <= 1000` の正方形グリッドマップ (サイズ=`n` は、`n x n` セルのグリッドを表します) で、頂点数が `3 <= m <= 100` のランダムなポリゴンでばらつきがあり、各パラメーター `(n,m)` は 10 回繰り返して取得されました。

![Runtime comparison](media/runtime_comparison.png)
![ランタイムの比較](media/runtime_comparison.png)

## Future improvements
## 今後改善予定

There exists variations of the scan line algorithm for multiple polygons.
These can be implemented if we want to iterate over the cells contained in at least one of multiple polygons.
複数のポリゴンに対する走査線アルゴリズムのバリエーションがあります。
これらは、複数のポリゴンのいずれかに含まれるセルを反復処理する場合に実装できます。

The current implementation imitate the behavior of the original `grid_map::PolygonIterator` where a cell is selected if its center position is inside the polygon.
This behavior could be changed for example to only return all cells overlapped by the polygon.
現在の実装は、中心点がポリゴン内にある場合にセルが選択される、元の `grid_map::PolygonIterator` の動作を模倣しています。
例えば、この動作は、ポリゴンに重なるセルのみを返すように変更できます。

## References
## 参考資料

- <https://en.wikipedia.org/wiki/Scanline_rendering>
- <https://ja.wikipedia.org/wiki/%E8%B5%B0%E6%9F%A5%E7%B7%9A%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%B6%E3%83%B3>
- <https://web.cs.ucdavis.edu/~ma/ECS175_S00/Notes/0411_b.pdf>
56 changes: 27 additions & 29 deletions common/autoware_interpolation/README.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,40 @@
# Interpolation package
# 補間パッケージ

This package supplies linear and spline interpolation functions.
このパッケージでは、線形およびスプライン補間関数が提供されます。

## Linear Interpolation
## 線形補間

`lerp(src_val, dst_val, ratio)` (for scalar interpolation) interpolates `src_val` and `dst_val` with `ratio`.
This will be replaced with `std::lerp(src_val, dst_val, ratio)` in `C++20`.
`lerp(src_val, dst_val, ratio)`(スカラー補間用)は、`ratio`を使用して`src_val``dst_val`を補間します。
これは`C++20`で`std::lerp(src_val, dst_val, ratio)`に置き換えられます。

`lerp(base_keys, base_values, query_keys)` (for vector interpolation) applies linear regression to each two continuous points whose x values are`base_keys` and whose y values are `base_values`.
Then it calculates interpolated values on y-axis for `query_keys` on x-axis.
`lerp(base_keys, base_values, query_keys)`(ベクトル補間用)は、x値が`base_keys`で、y値が`base_values`である2つの連続点それぞれに線形回帰を適用します。
その後、x軸の`query_keys`に対してy軸の補間値を計算します。

## Spline Interpolation
## スプライン補間

`spline(base_keys, base_values, query_keys)` (for vector interpolation) applies spline regression to each two continuous points whose x values are`base_keys` and whose y values are `base_values`.
Then it calculates interpolated values on y-axis for `query_keys` on x-axis.
`spline(base_keys, base_values, query_keys)`(ベクトル補間用)は、x値が`base_keys`で、y値が`base_values`である2つの連続点それぞれにスプライン回帰を適用します。
その後、x軸の`query_keys`に対してy軸の補間値を計算します。

### Evaluation of calculation cost
### 計算コストの評価

We evaluated calculation cost of spline interpolation for 100 points, and adopted the best one which is tridiagonal matrix algorithm.
Methods except for tridiagonal matrix algorithm exists in `spline_interpolation` package, which has been removed from Autoware.
100点に対するスプライン補間の計算コストを評価し、3対角行列アルゴリズムという最良のものを採用しました。
3対角行列アルゴリズム以外の方法は`spline_interpolation`パッケージに存在しますが、Autowareからは削除されています。

| Method | Calculation time |
| --------------------------------- | ---------------- |
| Tridiagonal Matrix Algorithm | 0.007 [ms] |
| Preconditioned Conjugate Gradient | 0.024 [ms] |
| Successive Over-Relaxation | 0.074 [ms] |
| 手法 | 計算時間 |
| ---------------------- | ---------- |
| 三対角行列アルゴリズム | 0.007 [ms] |
| 前処理共役勾配法 | 0.024 [ms] |
| 逐次過剰緩和法 | 0.074 [ms] |

### Spline Interpolation Algorithm
### スプライン補間アルゴリズム

Assuming that the size of `base_keys` ($x_i$) and `base_values` ($y_i$) are $N + 1$, we aim to calculate spline interpolation with the following equation to interpolate between $y_i$ and $y_{i+1}$.
`base_keys` ($x_i$) `base_values` ($y_i$) のサイズが $N + 1$ であると仮定すると、以下の式でスプライン補間を計算し、$y_i$ $y_{i+1}$ の間に補間します。

$$
Y_i(x) = a_i (x - x_i)^3 + b_i (x - x_i)^2 + c_i (x - x_i) + d_i \ \ \ (i = 0, \dots, N-1)
$$

Constraints on spline interpolation are as follows.
The number of constraints is $4N$, which is equal to the number of variables of spline interpolation.
スプライン補間の制約条件は以下のとおりです。制約条件の数は $4N$ であり、これはスプライン補間の変数の数と等しいです。

$$
\begin{align}
Expand All @@ -48,7 +47,7 @@ Y''_{N-1} (x_N) & = 0
\end{align}
$$

According to [this article](https://www.mk-mode.com/rails/docs/INTERPOLATION_SPLINE.pdf), spline interpolation is formulated as the following linear equation.
[この記事](https://www.mk-mode.com/rails/docs/INTERPOLATION_SPLINE.pdf) によると、スプライン補間は次の線形方程式として定式化されます。

$$
\begin{align}
Expand All @@ -67,7 +66,7 @@ $$
\end{align}
$$

where
ここで、

$$
\begin{align}
Expand All @@ -76,22 +75,21 @@ w_i & = 6 \left(\frac{y_{i+1} - y_{i+1}}{h_i} - \frac{y_i - y_{i-1}}{h_{i-1}}\ri
\end{align}
$$

The coefficient matrix of this linear equation is tridiagonal matrix. Therefore, it can be solve with tridiagonal matrix algorithm, which can solve linear equations without gradient descent methods.
この線形方程式の係数行列は三対角行列です。そのため、降下勾配法を使用せずに線形方程式を解くことができる三対角行列アルゴリズムで解くことができます。

Solving this linear equation with tridiagonal matrix algorithm, we can calculate coefficients of spline interpolation as follows.
三対角行列アルゴリズムを使用してこの線形方程式を解くと、スプライン補間の係数を次のように計算できます。

$$
\begin{align}
a_i & = \frac{v_{i+1} - v_i}{6 (x_{i+1} - x_i)} \ \ \ (i = 0, \dots, N-1) \\
b_i & = \frac{v_i}{2} \ \ \ (i = 0, \dots, N-1) \\
c_i & = \frac{y_{i+1} - y_i}{x_{i+1} - x_i} - \frac{1}{6}(x_{i+1} - x_i)(2 v_i + v_{i+1}) \ \ \ (i = 0, \dots, N-1) \\
d_i & = y_i \ \ \ (i = 0, \dots, N-1)
\end{align}
$$

### Tridiagonal Matrix Algorithm
### 三対角行列アルゴリズム

We solve tridiagonal linear equation according to [this article](https://www.iist.ac.in/sites/default/files/people/tdma.pdf) where variables of linear equation are expressed as follows in the implementation.
線形方程式は[こちら](https://www.iist.ac.in/sites/default/files/people/tdma.pdf)の記事に従い、三対角行列アルゴリズムで解いていきます。実装上は、線形方程式の変数は以下のようになります。

$$
\begin{align}
Expand Down
6 changes: 3 additions & 3 deletions common/autoware_kalman_filter/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# kalman_filter

## Purpose
## 目的

This common package contains the kalman filter with time delay and the calculation of the kalman filter.
この共通パッケージには、時差付きカルマンフィルタとカルマンフィルの計算が含まれます。

## Assumptions / Known limits
## 想定 / 既知の制限

TBD.
Loading
Loading