GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

AtsushiSakai

PythonRobotics – ロボットアルゴリズム用のPythonサンプルコード

投稿日:

ロボットアルゴリズム用のPythonサンプルコード。 https://atsushisakai.github.io/Python…

PythonRobotics

ロボットアルゴリズム用のPythonコード。

目次

これは何ですか?

これは、ロボットアルゴリズム、特に自律ナビゲーションのPythonコードコレクションです。

特徴:

  1. 広く使用され実用的なアルゴリズムが選択される。

  2. 最小の依存性。

  3. 各アルゴリズムの基本的な考え方を理解するための読みやすい。

要件

  • Python 3.6.x

  • 貧弱

  • サイキー

  • matplotlib

  • パンダ

  • cvxpy 0.4.x

使い方

  1. 必要なライブラリをインストールします。

  2. このレポをクローンしてください。

  3. 各ディレクトリにpythonスクリプトを実行します。

  4. あなたが好きなら、このレポにスターを追加してください 😃

ローカリゼーション

拡張カルマンフィルタのローカリゼーション

これは、拡張カルマンフィルタ(Extended Kalman Filter、EKF)を用いたセンサ融合位置特定である。

青い線は真の軌道であり、黒い線は推測航法の軌道であり、

緑色の点は測位観測(例:GPS)で、赤色の線はEKFで推定された軌道です。

赤い楕円は、EKFを持つ推定共分散楕円です。

Ref:

高感度カルマンフィルタローカリゼーション

これは、Unscented Kalman Filter(UKF)を用いたセンサ融合ローカリゼーションです。

線と点はEKFシミュレーションと同じ意味です。

Ref:

パーティクルフィルタのローカリゼーション

これはParticle Filter(PF)を用いたセンサー核融合である。

青い線は真の軌道であり、黒い線は推測航法の軌道であり、

赤線はPFで推定軌道である。

ランドマーク(RFID)からの距離を測定することができると仮定する。

この測定値は、PFのローカリゼーションに使用されます。

Ref:

ヒストグラムフィルタのローカリゼーション

これは、ヒストグラムフィルタを使用した2Dローカライゼーションの例です。

赤い十字は真の位置です、黒い点はRFIDの位置です。

青いグリッドは、ヒストグラムフィルタの位置確率を示します。

このシミュレーションでは、x、yは未知であり、yawは既知である。

このフィルタは、RFIDからの速度入力および距離観測をローカライゼーション用に統合します。

初期の位置は必要ありません。

Ref:

マッピング

ガウスグリッドマップ

これは、2Dガウスグリッドマッピングの例です。

レイキャストグリッドマップ

これは、2Dレイキャスティンググリッドマッピングの例です。

k-はオブジェクトのクラスタリングを意味する

これは、k-meansアルゴリズムによる2次元オブジェクトクラスタリングです。

円形フィッティングを用いた物体形状認識

円フィッティングを使用したオブジェクト形状認識です。

青い円は真のオブジェクトの形です。

赤い十字は測距センサからの観測値です。

赤い円は、サークルフィッティングを使用して推定されたオブジェクトの形状です。

SLAM

同時ローカリゼーションとマッピング(SLAM)の例

反復最近接点(ICP)マッチング

これは、特異値分解を伴う2D ICPマッチングの例です。

回転行列とポイント間の平行移動ベクトルを計算できます。

Ref:

EKF SLAM

これは拡張カルマンフィルタに基づくSLAMの例です。

青い線は真実であり、黒い線は推測航法であり、赤い線はEKF SLAMによる推定された軌道である。

緑の十字は、推定ランドマークです。

Ref:

FastSLAM 1.0

これは、FastSLAM 1.0を使用した機能ベースのSLAMの例です。

青い線はグラウンドトゥルース、黒い線はデッドレコニング、赤い線はFastSLAMの推定軌道です。

赤い点はFastSLAMの粒子です。

黒い点はランドマーク、青い十字はFastSLAMによるランドマークの推定位置です。

Ref:

FastSLAM 2.0

これは、FastSLAM 2.0を使用した機能ベースのSLAMの例です。

アニメーションは、FastSLAM 1.0と同じ意味を持ちます。

Ref:

グラフベースのSLAM

これはグラフベースのSLAMの例です。

青い線は地面の真実です。

黒い線は推測航法です。

赤線は、グラフベースのSLAMによる推定軌跡です。

黒い星は、グラフのエッジ生成のランドマークです。

Ref:

パス計画

動的ウィンドウアプローチ

これは、動的ウィンドウアプローチを使用した2Dナビゲーションサンプルコードです。

グリッドベース検索

ダイクストラアルゴリズム

これは、Dijkstraのアルゴリズムによる2次元グリッドベースの最短経路計画です。

アニメーションでは、シアンポイントが検索されたノードです。

A *アルゴリズム

これは、星型アルゴリズムを用いた2次元格子ベースの最短経路計画である。

アニメーションでは、シアンポイントが検索されたノードです。

ヒューリスティックなのは2次元ユークリッド距離です。

潜在的なフィールドアルゴリズム

これは、ポテンシャルフィールドアルゴリズムを用いた2Dグリッドベースの経路計画です。

アニメーションでは、青いヒートマップが各グリッドの潜在的な価値を示しています。

Ref:

モデル予測軌道生成器

これは、モデル予測軌道生成器上の経路最適化サンプルである。

このアルゴリズムは、状態格子計画のために使用される。

パス最適化サンプル

ルックアップテーブル生成サンプル

Ref:

州立格子計画

このスクリプトは、状態格子計画を持つパス計画コードです。

このコードは、モデル予測軌道生成器を使用して境界問題を解決します。

Ref:

一様極座標サンプリング

バイアスされた極サンプリング

レーンサンプリング

確率的ロードマップ(PRM)計画

このPRMプランナはグラフ検索にDijkstra法を使用します。

アニメーションでは、青い点はサンプリングされた点であり、

シアンクロスとはダイクストラ法で検索したポイントを意味し、

赤い線はPRMの最終パスです。

Ref:

ボロノイロードマッププランニング

このVoronoiの道路地図プランナーは、Dijkstra法をグラフ検索に使用します。

アニメーションでは、青い点はボロノイ点、

シアンクロスとはダイクストラ法で検索したポイントを意味し、

赤い線はVornoi Road-Mapの最終経路です。

Ref:

急速に探索するランダムツリー(RRT)

基本RRT

これは、Rapidly-Exploring Random Trees(RRT)を使用した簡単なパス計画コードです。

黒丸は障害物、緑色の線は探索木、赤い十字は開始点とゴール位置です。

RRT *

これは、RRT *を持つパス計画コードです。

黒丸は障害物、緑色の線は探索木、赤い十字は開始点とゴール位置です。

Ref:

ダブリンパス付きRRT

RRTとdubinsパスプランナーを備えた車のロボットのための経路計画。

ダブリンパス付きRRT *

RRT *とdubinsパスプランナを備えた車のロボットの経路計画。

Reeds-Sheep Pathを持つRRT *

RRT *と葦の経路プランナーを備えた車のロボットの経路計画。

通知されたRRT *

これは、Informed RRT *を持つパス計画コードです。

シアン楕円は、有形RRT *のヒューリスティックなサンプリングドームインです。

Ref:

バッチ通知RRT *

これは、バッチ通知RRT *を使用したパス計画コードです。

Ref:

閉ループRRT *

閉ループRRT *を用いた車両モデルベースの経路計画。

このコードでは、純粋追跡アルゴリズムがステアリング制御に使用され、

PIDは速度制御に使用されます。

Ref:

LQR-RRT *

これは、LQR-RRT *を使用したパスプランニングシミュレーションです。

LQRローカルプランナには、二重積分器運動モデルが使用されます。

Ref:

立方体スプライン計画

3次経路計画のサンプルコード。

このコードは、3次スプライン付きのxyウェイポイントに基づいて曲率連続パスを生成します。

各点の方位角も解析的に計算することができる。

Bスプライン計画

これは、Bスプライン呪いを伴う経路計画です。

ウェイポイントを入力すると、B-Splineカーブで滑らかなパスが生成されます。

最後のコースは最初と最後のウェイポイントにあるべきです。

Ref:

ベジェパスの計画

ベジエパス計画のサンプルコード。

これは、4つの制御点Beierパスに基づいています。

開始点と終了点からオフセット距離を変更すると、

あなたは別のBeizerコースを得ることができます:

Ref:

五分多項式計画

五次多項式による運動計画。

これは、五次多項式に基づいて、2Dパス、速度、および加速度プロファイルを計算することができます。

Ref:

Dubinsパスプランニング

Dubinsパス計画のサンプルコード。

Ref:

リード・シェップ計画

Reeds Sheppパスプランニングのサンプルコード。

Ref:

LQRベースのパス計画

二重積分器モデルにLQRベースのパス計画を使用したサンプルコード。

Frenetフレームにおける最適軌道

これはFrenetフレームにおける最適な軌道生成である。

シアンラインは目標コースであり、黒い十字は障害物です。

赤い線は予測される経路です。

Ref:

パストラッキング

純粋追跡追跡

純粋な追尾ステアリング制御とPID速度制御による軌道追従シミュレーション。

赤い線は目標コース、緑の十字は純粋な追跡制御の目標点を意味し、青線は追跡である。

Ref:

スタンレー制御

Stanleyステアリング制御とPID速度制御による軌道追従シミュレーション

Ref:

後輪フィードバック制御

後輪フィードバックステアリング制御とPID速度制御による経路追従シミュレーション。

Ref:

リニア二次レギュレータ(LQR)ステアリング制御

LQRステアリング制御とPID速度制御による軌道追従シミュレーション

Ref:

リニア二次レギュレータ(LQR)速度とステアリング制御

LQR速度とステアリング制御による軌道追従シミュレーション。

Ref:

モデル予測速度とステアリング制御

反復線形モデルの予測速度とステアリング制御を用いた経路追跡シミュレーション

このコードでは、cvxpyを最適化モデリングツールとして使用します。

Ref:

ライセンス

MIT

貢献

バグ修正のような小さなPRは大歓迎です。

あなたのPRが複数回マージされた場合、あなたのアカウントを著者リストに追加します。

サポート

このプロジェクトは、Patreonを通じて財政的にサポートできます。

後援を受けている場合は、コードに関する電子メール技術サポートを受けることができます。

PayPalの寄付も歓迎します。

著者







-AtsushiSakai
-, , , , , , , , , , , , ,

執筆者: