フリーセグメントとターニングポイントアルゴリズムを用いた既知の環境における障害物を回避するロボット経路計画

概要

現在、経路計画問題は自律ロボティクスにおいて最も研究されているトピックの一つである。 そのため、移動ロボットの雑然とした環境で安全な道を見つけることは、そのような移動ロボットプロジェクトの成功のための重要な要件です。 本研究では,静的環境におけるロボット経路計画の問題を解決するための自由セグメントとターニングポイント戦略に基づくアルゴリズムを開発した。 ターニングポイントアプローチの目的は,移動ロボットの安全な経路を探索し,ロボットを障害物に当たらずに開始位置から目的地位置に移動させることである。 提案したアルゴリズムは,経路安全性と経路長の二つの異なる目的を扱う。 さらに,自律移動ロボットの安定化を制御して所望の軌道を追跡するためのスライディングモード制御と呼ばれるロバスト制御則を提案した。 シミュレーションの結果,開発したアプローチは適切な経路を得るための良い代替であり,移動ロボットのロバスト追跡のための提案した制御則の効率を実証することを示した。

1. はじめに

今日では、ロボットは社会の重要な要素として考えられています。 これは、基本的かつ危険な活動におけるロボットによる人間の置き換えによるものです。 しかし、移動ロボットの効率的なナビゲーション戦略を設計し、その有価証券を確保することは、自律ロボット工学における最も重要な問題である。

したがって、経路計画問題は最も興味深く研究されたトピックの一つです。 ロボット経路計画の目的は,移動ロボットの安全な経路を探索することである。 また、パスは最適である必要があります。 この意味で、経路計画問題に取り組むいくつかの研究が文献に提案されている。 これまで,移動ロボットの経路計画には多くの方法が用いられてきた。 これらの戦略の中で、人工ポテンシャル場、Agoraphobicアルゴリズム、ベクトル場ヒストグラムなどの幾何学空間法が挙げられる。 これらの方法は、障害物を回避するための見出し角度を与える。 動的ウィンドウの戦略は、で使用されています。 このアプローチは,移動ロボットの最適な衝突のない速度を計算する速度ベースのローカルプランナーである。 移動ロボットが障害物にぶつからずに回転する点を見つけることからなるターニングポイント探索アルゴリズムと呼ばれる方法もある。

一方で、車輪付き移動ロボットの追跡制御に関するいくつかの研究が文献で注目されています。 非ホロノミック系は非線形性と不確実性の問題に苦しんでいる。 この不確実性のために、車輪付き移動ロボットの軌道誤差は常に生成されており、排除することはできない。 この意味で,比例積分導出(PID)制御器として多くの追跡法が文献で提案されているが,この制御器はセンサ感度の影響を受けると不安定になる。 さらに,ファジィ論理制御器を用いたが,この制御則は計算が重いため応答時間が遅い。 他の作品は、様々なアプリケーションでスライディングモードコントローラを使用しました。 この制御システムの目標の利点は安定性、強さ、速い応答およびよい一時的のための保険である。

開発された戦略の目的は、ロボットが二つの障害物の間に位置しているときに、二つの障害物の間の距離が衝突せずに目標に到達するのに十分安全であることをロボットがどのように検出できるか、そして障害物を回避し、最短経路で二つの障害物の間を移動するかという問題を解決することである。 そのため、この作業は、まず障害物に邪魔された環境で安全な自由なセグメントを選択することに基づいています。 その後,開発したターニングポイント探索アルゴリズムを適用して,最短経路を与える安全な自由セグメントの終点を決定した。 この戦略は、JinpyoとKyihwanによって与えられたアプローチから触発されています。 実際には、で提示された戦略は、二つの基本的な目標を処理します:パスの長さとパスの安全性。 このアプローチは、まず、最短経路を与える自由セグメントの端点を検索することに焦点を当てています。 したがって、選択された自由セグメントの距離がロボットの直径よりも大きい場合、端点はターニングポイントとみなされます。 そうでない場合は、アルゴリズムを再生して、空きセグメントの新しいエンドポイントを検索する必要があります。 この戦略の欠点は,まず安全性を考慮せずに最短経路を見つけることに焦点を当て,その後,広範かつ重い計算につながり,移動ロボットの適切な経路を計画するためにより多くの時間を必要とする安全な経路ナビゲーションを確保することに焦点を当てていることである。 これらの欠点を克服するために,開発したアルゴリズムは,最も安全なフリーセグメントを選択することにより,最初にパスの安全性を確保するのに役立つ。 次に、最短パスを与える最も安全な空きセグメントの端点を決定することによって、パス長を検索します。 この戦略を使用して、我々は迅速に最も安全で最短のパスを決定することができます。 さらに,経路が計画されると,スライディングモードコントローラに基づく追跡則がロボットが設計された軌道に従うために使用される。

私たちの貢献は、静的な障害物回避を伴うロボット経路計画の問題を解決するための新しいアルゴリズムを開発することです。 静的経路計画とも呼ばれるこの計画は、経路の安全性と短さを確保するという利点を示しています。 さらに,提案したアルゴリズムは,衝突のない軌道と滑らかな経路を見つけるための反応挙動によって特徴付けられる。 反対側では、移動ロボットは障害物と衝突することなく軌道を追跡する必要があります。 そこで,ロバスト性,安定性,反応性を保証するためのスライディングモード制御を提案した。

この論文の残りの部分は以下のように構成されています。 第2節では、この作業で使用される移動ロボットモデルを紹介します。 パス計画の目的のために提案されたアルゴリズムの異なるステップは、セクション3で詳細に説明されています。 セクション4では、滑走モード制御装置が軌道追跡のために使用される。 最後に、シミュレーション結果と結論は、それぞれセクション5と6で提示され、分析されます。

2. 移動ロボットモデル

自律航法のためのいくつかの研究は、異なるタイプの移動ロボットに適用されている。 本研究では,各車輪の速度に作用することによってプラットフォームの向き付けと指揮を担当する二つの独立した駆動輪を有するKheperaiv移動ロボットを考察した。 このように、車輪付き移動ロボットKhepera IVの概略モデルを図1に示します。

フィギュア1
Khepera IVの模式図.

非ホロノミック移動ロボットの運動学的モデルは,(,)はロボットのデカルト座標,ロボットの方向と軸の間の角度,それぞれロボットの左右の車輪速度,二つの車輪の間の距離である。

3. パス計画アルゴリズム

パス計画問題を解決するために、自由セグメントの転換点を見つけることに基づくアルゴリズムが提案されています。

3.1. 提案されたアルゴリズムの原理

自由セグメントは、二つの異なる障害物の二つの端点間の距離とみなされます(図2参照)。 これは、移動ロボットが障害物に当たらずにこの点を回る安全なセグメントの終点を検索します。

フィギュア2
ナビゲーションのフレームワーク。

障害物がない場合、経路計画の問題は発生しません。 実際には、ロボットは最短経路とみなされる直線で初期位置から目標位置に移動します。 しかし、図2に示すように移動ロボットが障害物に遭遇した場合、ロボットは障害物と衝突することなく旋回する必要があります。 したがって、主な問題は、静的環境で開始点から目標点までの適切なパスをどのように決定するかです。 この問題を解決するために,最短経路を与え,ロボットが障害物を回避することを可能にする安全な自由セグメントのターニングポイントを探索するためのアルゴリズムを提案した。 転換点が見つかると、半径のある危険な円がこの点に固定されます。 この場合,提案した戦略は,ロボットが安全に回転する安全な自由セグメントのターニングポイントを探索することを目的としている。 安全性を確保するために、距離()がロボットの直径よりも大きいセグメントを選択し、セキュリティ()に余裕を持って選択します。 一方、ロボットの直径よりも距離が小さいセグメントは危険セグメントとみなされます(図2参照)。 この作業では、安全なセグメントのみを考慮し、危険なセグメントは無視されます。 さらに,最短経路を決定するために,最短経路を与える最も安全なセグメントの点を決定した。 次に、この時点で危険な円が固定され、ロボットは回転し、この円の接線方向に向かって移動します。 提案したアルゴリズムは,危険問題がある場合でも,ロボットが障害物を回避して目標に到達できるように反応する。 この場合、ロボットは決定された転換点を予約し、障害物との衝突を避けるために新しい転換点を検索する。 私たちの戦略をより明確にするために、アルゴリズムの異なる概念を図2に組み込み、基本原理を図3に示すフローチャートにまとめました。

フィギュア3
提案されたアルゴリズム。

3.2. 静的パス計画手順

このセクションの目的は、できるだけ短い安全なパスを見つけることです。 このアプローチでは、探索されたターニングポイントに位置する円に対する接線方向を有する経路として定義される。

3.2.1. 安全な道の選択

安全な道は、環境の障害物にぶつかることなくロボットが目標に到達するのを助ける自由な道を見つけることを目指しています。 安全なセグメントを選択するには、次の手順を実行する必要があります。(i)ステップ1:環境のすべての空きセグメントを確認します(図4参照)。 式(2)および(3)は、点を結ぶ距離および点を結ぶ距離の値を決定する方法を示しており、ここで、(、)(=2。.5)自由セグメントの端点の座標に対応します。(ii)ステップ2:距離が(安全なセグメントと見なされるよりも大きいセグメント。 ただし、距離がより小さいセグメントは危険セグメントとみなされます。 この作業の残りの部分については、安全なセグメントのみが考慮されます。 番号が指定されている危険セグメントは無視されます。 このステップでは、安全セグメントの数を次のように定義します安全基準が処理されると、次のセクションでは最短経路を決定します。

フィギュア4
自由な区分の決定(安全危険)。

3.2.2. 最短経路の決定

ロボットが目標位置に到達するときは、できるだけ最短経路で行うことが重要です。 最短経路を決定する目的は、次の3つのステップに分けることができます。(i)ステップ1: 安全なフリーセグメントを考慮して、ロボットとターゲットとの間の距離と距離を計算します(図5参照)。 これらの距離は、次のように計算する必要があります:(ii)ステップ2:それは、移動ロボットが障害物を回避するために回転する周りの点として定義されているターニングポイントの決定に関係します;プロセスは、距離を比較した後に達成されます. 最短経路を与える安全なフリーセグメントの終点は、図5に示すように、検索されたターニングポイントに対応します。(iii)ステップ3:それは危険な円の配置に関係しています。 ターニングポイントが決定されると、図6に示すように、半径を持つ危険な円がこの時点で固定されます。

フィギュア5
最短パスの決定。

フィギュア6
危険なサークルの配置。

3.3. 問題検査

適切な経路が決定されても、その結果ロボットが損傷し、障害物を避けることができないいくつかの問題が持続する可能性があります。 この作業ではいくつかの問題事例が強調されています。

3.3.1. 衝突危険問題

パス計画問題は、パスが衝突せずに通過するのに十分安全でなければならないことを意味します。 しかし、衝突の危険性の問題は、いくつかのケースで持続することができます:(i)ケース1:ロボットと障害物との間に交差点がある場合。 問題をより具体化するために、図7が与えられています:パス1は、それが障害物によって捕捉され、それを避けることができない移動ロボットの例を ロボットパスと障害物との衝突を取り除くために、パス2が提示され、半径を持つ第二の危険な円の周りに回転します。 したがって、パス2は、ロボットが衝突することなく目的地に行くのに十分安全であると結論づけることができます。(ii)ケース2:危険な円の線接線と障害物の端点(図8参照)との間の距離がロボットの半径()よりも小さい場合、ターニングポイントアルゴリズムが適用され、危険な円は適切なターニングポイントを中心としている(図9参照)。

フィギュア7
衝突の危険性の問題-ケース1。

フィギュア8
衝突危険問題-ケース2.

フィギュア9
ターニングポイントの配置。

3.3.2. 極小値の問題

すべてのセグメントが危険であるか、ロボットが障害物に閉じ込められている場合、極小値の問題が存在する可能性があります。 このような状況から脱出するために、ロボットは目標に到達するまでそれらの障害物から遠くに行きます(図10参照)。

フィギュア10
ローカル最小値問題の解決。

4. スライディングモード制御

ロボットKhepera IVの経路を計画した後、堅牢な追跡軌道()のためのスライディングモード制御装置が提案されている。 この戦略では、図11に示すように、二つの位置を知る必要があります: 到達すべき所望の位置として定義される所望の位置=()および現在のロボット位置=この時点での実際の位置として定義される。 さらに、基準位置と現在位置との差を追跡誤差位置=(,,)と呼ぶ。 の式は、式(7)で以下のように定義される:

フィギュア11
追跡エラー。

追跡軌道は、適切な制御ベクトル(車輪付き移動ロボットの線形速度であり、その角速度である)を見つけることとして導入することができる。 誤差位置が漸近的にゼロに収束するようにする。 自律移動ロボットは、スライディングモードコントローラを設計するプロセスに従って制御され、二つのステップに分けられる:(i)ステップ1:摺動面の選択:制御は、スイッチングの側面にその符号を切り替えるので、スイッチング機能として定義される。 したがって、最初のスイッチング関数では=0が選択されます。 =0のとき、リアプノフ候補関数は次のように定義されます。 そして、我々はVの時間微分を決定する:我々はそれに気づくので。 スイッチング候補関数として定義した。 (Ii)ステップ2:制御則の決定:スライディングモードコントローラの設計は、状態がスライディングモードに向かって移動し、到達する適切な条件の解析的表現を確立する必要があります。 しかし、チャタリング現象は、計算の有限の時間遅延と制御の制限によって引き起こされる可能性があります。 そのため、スイッチング関数は飽和関数として定義されます。 制御則は,到達制御システムが到達条件を確立するだけでなく,スイッチング機能の動的を指定することができることに留意されたいので定義されている。 式(10)で定義された摺動面のベクトルを微分することにより、where

5が得られます。 シミュレーション結果

移動ロボットナビゲーションでは、環境の構築が運動計画操作を行うために不可欠な問題と考えられています。 ここでは,提案したアルゴリズムの基本的な能力を実証するために,いくつかのシミュレーション結果を示した。 すべてのシミュレーションでは、任意の方法で配置された七つの障害物を含む環境の結果を提示します(図12参照)。 表1は、静的障害物の初期中心座標を示しています。

障害物
障害物1 550 100
障害物2 640 400
障害物3 640 600
障害物4 400 500
障害物5 70 680
障害物6 100 400
障害物7 150 130
テーブル1
障害物の中心座標。

フィギュア12
環境マッピング。

ロボットの位置が変化している間に目標座標(,)が固定されている場合についてシミュレーションを行った。

ここでは、図13(a)および図13(b)に示すように、ロボットが初期位置(,)=(0,0)および(,)=(400,0)から開始した場合を示します。 ロボットは適切なターニングポイントに位置する円を回り,ロボット位置の修正ごとに目標に到達することに気づいた。

(a)安全な区分との運行((, )=(0, 0)).
(a)安全セグメントによるナビゲーション((, )=(0, 0)).
(b)安全な区分との運行((, )=(400, 0)).
(b)安全セグメントによるナビゲーション((, )=(400, 0)).
(c)安全な、危険の区分との運行((, )=(0, 0)).
(c)安全セグメントと危険セグメントを備えたナビゲーション((, )=(0, 0)).
(d)安全な、危険の区分との運行((, )=(400, 0)).
(d)安全セグメントと危険セグメントを備えたナビゲーション((, )=(400, 0)).

(a)安全な区分との運行((, )=(0, 0)).
(a)安全セグメントによるナビゲーション((, )=(0, 0)).(b)安全セグメントによるナビゲーション((, )=(400, 0)).
(b)安全セグメントによるナビゲーション((, )=(400, 0)).(c)安全セグメントと危険セグメントによるナビゲーション((, )=(0, 0)).
(c)安全セグメントと危険セグメントを備えたナビゲーション((, )=(0, 0)).(d)安全セグメントと危険セグメントによるナビゲーション((, )=(400, 0)).
(d)安全セグメントと危険セグメントを備えたナビゲーション((, )=(400, 0)).

フィギュア13
パス計画((, )=(250, 750)).

障害物中心であっても、表2に示すように位置が変化し、危険セグメントの出現により、図13(c)および図13(d)に経路ナビゲーションの変化が示されています。

障害物
障害物1 550 100
障害物2 640 400
障害物3 640 600
障害物4 400 500
障害物5 200 550
障害物6 150 420
障害物7 150 300
テーブル2
障害物の中心座標((, )=(250, 750)).

図16は、安全セグメントと危険セグメントを使用した移動ロボットのナビゲーションを示しています。 そのロボットは異なる初期位置から始まります(, )=(0, 0) (図14(a)および図14(c)を参照)および図14(a)および図14(c)を参照(, )=(400, 0) (図14(b)および図14(d)を参照)。 障害物の中心座標は、表3に記載されています。

障害物
障害物1 550 100
障害物2 640 400
障害物3 640 600
障害物4 400 500
障害物5 240 550
障害物6 100 420
障害物7 150 250
テーブル3
障害物の中心座標((, )=(500, 750)).

(a)安全な区分との運行((, )=(0, 0)).
(a)安全セグメントによるナビゲーション((, )=(0, 0)).
(b)安全な区分との運行((, )=(400, 0)).
(b)安全セグメントによるナビゲーション((, )=(400, 0)).
(c)安全な、危険の区分との運行((, )=(0, 0)).
(c)安全セグメントと危険セグメントによるナビゲーション((, )=(0, 0)).
(d)安全な、危険の区分との運行((, )=(400, 0)).
(d)安全セグメントと危険セグメントを備えたナビゲーション((, )=(400, 0)).

(a)安全な区分との運行((, )=(0, 0)).
(a)安全セグメントによるナビゲーション((, )=(0, 0)).(b)安全なセグメントを持つナビゲーション((, )=(400, 0)).
(b)安全セグメントによるナビゲーション((, )=(400, 0)).(c)安全セグメントと危険セグメントによるナビゲーション((, )=(0, 0)).
(c)安全セグメントと危険セグメントによるナビゲーション((, )=(0, 0)).(d)安全セグメントと危険セグメントによるナビゲーション((, )=(400, 0)).
(d)安全セグメントと危険セグメントを備えたナビゲーション((, )=(400, 0)).

フィギュア14
パス計画((, )=(500, 750)).

別のシミュレーション結果では、すべての自由セグメントが安全である場合が示されています(図15(a)および15(b)を参照)。 ロボットは、所望の目標に到達するまで、危険な円の周りになります。 表4に示すように障害物の中心を変更することにより、危険なセグメントの外観に注目します。 ロボットは、自由なセグメントだけを考慮に入れ、安全な経路を移動します(図15(c)および15(d)を参照)。

障害物
障害物1 550 230
障害物2 630 450
障害物3 540 500
障害物4 400 500
障害物5 70 680
障害物6 160 400
障害物7 150 130
テーブル4
障害物の中心座標((, )=(750, 750)).

(a)安全な区分の運行((, )=(0, 0)).
(a)ケースセーフセグメントのナビゲーション((, )=(0, 0)).
(b)安全な区分の運行((, )=(400, 0)).
(b)ケースセーフセグメントのナビゲーション((, )=(400, 0)).
(c)安全で危険な区分の運行((, )=(0, 0)).
(c)安全かつ危険なセグメントの場合のナビゲーション((, )=(0, 0)).
(d)安全で危険な区分の運行((, )=(400, 0)).
(d)安全かつ危険なセグメントの場合のナビゲーション((, )=(400, 0)).

(a)安全な区分の運行((, )=(0, 0)).
(a)ケースセーフセグメントのナビゲーション((, )=(0, 0)).(b)安全なセグメントの場合のナビゲーション((, )=(400, 0)).
(b)ケースセーフセグメントのナビゲーション((, )=(400, 0)).(c)安全かつ危険なセグメントの場合のナビゲーション((, )=(0, 0)).
(c)安全かつ危険なセグメントの場合のナビゲーション((, )=(0, 0)).(d)安全かつ危険なセグメントの場合のナビゲーション((, )=(400, 0)).
(d)安全かつ危険なセグメントの場合のナビゲーション((, )=(400, 0)).

フィギュア15
パス計画((, )=(750, 750)).

(a)安全な区分との運行((, )=(0, 0)).
(a)安全セグメントによるナビゲーション((, )=(0, 0)).
(b)安全な区分との運行((, )=(400, 0)).
(b)安全セグメントによるナビゲーション((, )=(400, 0)).
(c)危険セグメントとのナビゲーション((, )=(0, 0)).
(c)危険セグメント付きナビゲーション((, )=(0, 0)).
(d)危険セグメントとのナビゲーション((, )=(400, 0)).
(d)危険セグメント付きナビゲーション((, )=(400, 0)).

(a)安全な区分との運行((, )=(0, 0)).
(a)安全セグメントによるナビゲーション((, )=(0, 0)).(b)安全なセグメントを持つナビゲーション((, )=(400, 0)).
(b)安全セグメントによるナビゲーション((, )=(400, 0)).(c)危険セグメントを持つナビゲーション((, )=(0, 0)).
(c)危険セグメント付きナビゲーション((, )=(0, 0)).(d)危険セグメントを持つナビゲーション((, )=(400, 0)).
(d)危険セグメント付きナビゲーション((, )=(400, 0)).

フィギュア16
パス計画((, )=(800, 500)).

図16(a)および図16(b)は、移動ロボットが異なる障害物を回避して目的地に到達することを保証することを示しています。 中央の障害物の位置を表5に示します。 この場合、局所最小値問題があることを確認します。 したがって、ロボットは障害物から遠く離れてターゲットに直接移動します(図16(c)および図16(d)を参照)。

障害物
障害物1 550 240
障害物2 550 400
障害物3 540 510
障害物4 400 510
障害物5 200 560
障害物6 150 430
障害物7 150 260
テーブル5
障害物の中心座標((, )=(800, 500)).

すべてのシミュレーション結果から,ロボットがロボットと目標位置の各修正および安全セグメントと危険セグメントの存在下で障害物回避を達成するため,開発された戦略は非常に反応性があることが明らかである。

最も安全で最短の経路を計画した後、移動ロボットはスライディングモードコントローラに基づいて基準軌道を追跡する必要があります。 図17は、移動ロボットが常に基準軌道に従うことを示しています。

(a)図15(a)の計画パスの追跡。
(a)図15(a)の追跡計画パス。
(b)図16(b)の計画パスの追跡。
(b)図16(b)の追跡計画パス。

(a)図15(a)の計画パスの追跡。
(a)図15(a)の追跡計画パス。(b)図16(b)の追跡計画パス。
(b)図16(b)の追跡計画パス。

フィギュア17
計画されたパスを追跡します。

スライディングモードコントローラの性能、エラー位置、およびケースのホイールの二つの速度(右と左)をより説明するために。 図15(a)および図16(b)は、図18および図19に示されています。 図18は、追跡誤差がゼロになる傾向があることを示しており、提案された制御則システムが良好な追跡軌道を提供すると結論づけることができます。

(a)図15(a)の場合。
(a)図15(a)の場合。
(b)図16(b)の場合。
(b)図16(b)の場合。

(a)図15(a)の場合。
(a)図15(a)の場合。(b)図16(b)の場合。
(b)図16(b)の場合。

フィギュア18
エラーの追跡(,,)。

(a)図15(a)の場合。
(a)図15(a)の場合。
(b)図16(b)の場合。
(b)図16(b)の場合。

(a)図15(a)の場合。
(a)図15(a)の場合。(b)図16(b)の場合。
(b)図16(b)の場合。

フィギュア19
二つの速度(右と左)の進化。

これに加えて、図19は車輪の2つの速度(右と左)の進化を示しています。 例えば、図19(b)の場合、最初は移動ロボットは両車輪に対して同じ速度で前進します。 障害物1が検出されるとすぐに、制御システムは、左車輪速度に比べてより大きな右車輪速度を提供する。 障害物1を通過した後、ロボットが目標に到達するまで、二つの速度は等しくなります。 障害物2が検出されるとすぐに、コントローラシステムは左車輪速度よりも大きな右車輪速度を提供する。 障害物2を通過した後、左の車輪の速度が右の車輪よりも大きいことに気付きます。 これは、移動ロボットを目標位置に回すためです。 ロボットが目標に向かって配向されると、ロボットが目標に到達するまで、二つの速度は等しくなります。

6. 結論

本稿では、自由セグメントに基づいてターニングポイントを検索するアルゴリズムを提示します。 安全なパスとパスの長さ:それは二つの異なる目的を処理します。 開発したアルゴリズムの利点は,ロボットが障害物の形状や既知の環境における目標位置の変化にかかわらず,安全にだけでなく,最短経路上でも常に初期位置から目標位置に移動できることである。 反対側では,提案したスライディングモード制御はシステムに対処するための重要な方法である。 このコントローラは,ロバスト性,安定性,高速応答などの良好な追跡性能を示した。 シミュレーション結果をプラットフォームKheperaiv上で行い,提案した方法が経路計画と軌道追跡問題を解決するための良い代替法であることを示した。

今後の作業として、動的環境でパスを決定することは興味深いかもしれません。

データ可用性

コメントを残す

メールアドレスが公開されることはありません。