MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

ロボティクスにおける経路計画(Path planning and Motion planning)技術の概要

目次

  • 目次
  • はじめに
  • 経路計画 (Path Planning or Motion Planning)の各アルゴリズム
    • Geometric Analytic Approach
      • Spline Planning
      • Voronoi Diagram Planning
      • Dubins Path Planning
      • Reed-sheep Planning
    • Graph Search Approach
      • ダイクストラ法
      • A*
    • Dynamic Window Approach
    • State Lattice Approach
      • Model Predictive Trajectory Optimization
      • State Lattice Local planning
    • Randomized Approach
      • RRT
      • RRT *
      • Closed RRT
    • Model Predictive Control
  • 各経路生成アルゴリズムの利点と欠点
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボットの自律移動技術の中で、

重要なものの一つに、

経路計画(Path planning and Motion planning)があります。

(その他の自律移動技術に関しては下記を参照ください

myenigma.hatenablog.com)

  

今回の記事では、

ロボットの経路計画問題における代表的な技術の分類と

その詳細やサンプルコードの記事のリンクをまとめておきます。

加えて、それぞれの技術の利点と欠点を

あるサーベイ論文を元にまとめました。

 

続きを読む

State Lattice Plannerの概要とPythonサンプルコード

目次

  • 目次
  • はじめに
  • State Lattice Planner
    • Uniform Polar sampling
    • Biased Polar sampling
    • Lane sampling
  • State Lattice Planningの利点と欠点
    • 利点
    • 欠点
  • State Lattice PlannerのPythonサンプルプログラム
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、

ロボティクスの境界問題を解くパスプランニングの手法として、

Model Predictive Trajectory Generatorを紹介しました。

myenigma.hatenablog.com

 

今回はこの手法と

効率的な目標状態のサンプリング手法を組み合わせた

State Lattice Plannerという

有名なパスプランニングアルゴリズムの概要と

そのサンプルPythonコードを紹介したいと思います。

 

続きを読む

VimユーザのためのPythonのIDE PyCharm入門

目次

  • 目次
  • はじめに
  • PyCharmとは?
  • インストール方法
  • 初期設定
    • テーマを変える
    • PyCharmでVimキーバインドを使う
    • pep8の警告レベルをWarningにし、一行の文字数を79字に
    • 各プロジェクトのPythonのインタープリターの設定
    • Editerで開いたファイルを、Project viewでも自動で開く
    • マウスオーバーでdocstringを表示する
    • ツールバーを表示&カスタマイズする
  • ショートカットキー
  • デバッガ
  • import文補完と関数実装補完
  • live template (スニペット)
  • Git操作
  • Jupyter notebookモード
  • IDEの設定を同期する
  • Vimユーザへの注意点まとめ
    • 注意点1 ファイル名やフォルダ名を変更する場合
    • 注意点2 ファイルエクスプローラーを復活させる
    • 同じディレクトリのpythonモジュールを認識してくれない
  • Vimユーザとして素晴らしいなと思った所
  • Vimユーザとして少し残念な所
  • 最後に
  • 参考資料
  • MyEnigma Supporters

はじめに

久しぶりに、

プログラマが知るべき97のことを読んでいたら、

プログラマが知るべき97のこと

プログラマが知るべき97のこと

  • 発売日: 2010/12/18
  • メディア: 単行本(ソフトカバー)

下記の記事が目にとまりました。

 

自分はこれまでほとんどVimのみでプログラミングをしてきたので、

確かにそろそろIDEを使ってみようかなと思い立ちました。

 

まず手始めに、

最近多くのPythonプログラマが素晴らしいと褒め称えている

Python用IDEであるPyCharmを使ってみることにしました。

今回はこのPyCharmの基礎的な設定や

Vimユーザへの注意点をまとめておきたいと思います。

 

続きを読む

Model Predictive Trajectory Generationの概要とPythonサンプルコード

目次

  • 目次
  • はじめに
  • Model Predictive Trajectory Generationの概要
  • Model Predictive Trajectory Generation による2状態空間のパス生成Pythonプログラム
  • Model Predictive Trajectory Generation による初期制御パラメータ推定用Lookup Table生成Pythonプログラム
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボットのパスプランニングにおいて、

有名な問題の一つに境界問題(Boundary Problem)という問題があります。

 

これは、2つの状態量

(二次元平面では、ロボットの位置x,y,そして方位yaw)

が与えられた時に、障害物は考慮せず、

その2つの状態量を結ぶパスを生成するという問題です。

 

この2つの問題を解くための手法として、

以前紹介したDubins-pathや、

myenigma.hatenablog.com

Reeds-Shepp pathがありますが、

myenigma.hatenablog.com

両方とも、非常にシンプルなモデルを使用していたり、

パスが最大曲率の円と直線で構成されているなど、

いくつか技術的な課題がありました。

 

そこで今回は

非線形運動モデルを利用した状態で、

パスの形状を規定すること無く、

境界問題を解くことができる、

Model Predictive Trajectory Generation

という技術を紹介しようと思います。

 

続きを読む

海外旅行でホテル費用を少し安く済ませる方法

目次

  • 目次
  • はじめに
  • 海外旅行でホテル費用を少し安く済ませる方法
  • Ebatesの良い所
    • 便利なスマートフォンアプリがある
    • 便利なChrome拡張がある
  • 参考資料
  • MyEnigma Supporters

はじめに

自分の趣味の一つが海外旅行なのですが、

海外旅行の大きな費用の一つにホテル代があると思います。

 

最近知ったこととして、

海外旅行でホテルを予約する時に、

少し作業を加えることで、

若干安くホテルを予約できる方法を見つけたので、

紹介したいと思います。

続きを読む

ロボティクスにおける自己位置推定(Localization)技術の概要

目次

  • 目次
  • はじめに
  • 自己位置推定でよく使用されるセンサ
    • GPS (Global Positioning System)
    • ジャイロセンサ(Gyro Sensor)
    • 地磁気センサ (Magnetometric sensor)
    • 加速度センサ (Accelerometer)
    • 慣性計測装置 (inertial measurement unit)
    • タイヤパルスセンサ(Wheel Odometry, Dead Reckoning)
    • レーザセンサ (LIDAR)
    • レーダセンサ (RADAR)
    • カメラセンサ (Image Sensor)
  • 確率的センサ統合手法
    • 拡張カルマンフィルタ (Extended Kalman Filter)
    • Unscented カルマンフィルタ
    • Histogram Filter
    • Particle Filter
  • Simultaneous Localization And Mapping (SLAM) 関連技術
    • Iterative Closest Point (ICP) アルゴリズム
    • EKF SLAM
  • その他自律移動技術の概要
  • 参考資料
  • MyEnigma Supporters

 

はじめに

自己位置推定(Localization)は、

ロボット自身が今何処にいるのか,

またはどちらの方向を向いているのか, 

どれぐらいの速度で走行しているのかなど、

現在のロボットの状態を

各種のセンサデータを使用して推定することです.

 

後述の通り、

ロボットの自己位置推定用のセンサは色々ありますが、

それぞれ一長一短であるため、

一般的に自己位置推定のシステムでは、

複数のセンサ情報や

ロボットの運動モデルを統計的・確率的に表現し,

それらを統計的・確率的に統合することにより,

高精度なロボットの位置を安定して推定するという手法が

一般的に使用されています.

 

今回の記事では、

自己位置推定に使用される一般的なセンサの概要と、

それらを確率的に統合する技術の概要と、

説明記事のリンクをまとめておきたいと思います。

 

各技術の詳細に関しては、

こちらの資料を参照ください。

 

続きを読む

Autonomous Navigation (自律移動)技術の分類と各種技術説明リンク

目次

  • 目次
  • Autonomous Navigation (自律移動)とは,
  • 自己位置推定 (Localization)
  • 周辺環境認識 (Mapping)
    • 地図構築用外界認識センサ
    • Grid Mapを利用した地図構築
    • クラスタリング、分類技術
    • 衝突チェック技術
  • 経路計画 (Path Planning or Motion Planning)
  • 経路追従 (Path Following)
  • 最後に
  • 参考資料
  • MyEnigma Supporters

Autonomous Navigation (自律移動)とは,

Autonomous Navigation (自律移動)とは,

人間からの詳細な命令無しに,

ロボット自身が様々な判断をし,

指定されたゴールまで

ロボットが安全に移動する技術のことを指します.

 

もう少し詳しく言うと,

人間のマクロな命令に対して

(どこそこに行け,など)

ロボット自身がその命令を行うために,

ロボット自身の状態と,

周辺環境の状況などを考慮して

行動を決定する必要があります。

 

現在,

様々なロボットが産業分野で実用化されていますが,

それらの大半は,行う作業に対する

人間の詳細な命令(教育)が必要です.

 

しかし,この自律移動(自律作業)の能力がより強化されば,

マクロな命令を与えるだけで,

その命令に対する細かい命令をすること無しに,

ロボットは様々な場所で活躍することができます。

 

この目標を解決するために,

自律移動では、

一般的には以下の4つの項目を

ロボット自身が正確に行う必要があります。

  • 1 自己位置推定 (Localization)

  • 2 周辺環境認識 (Mapping)

  • 3 経路計画 (Path Planning)

  • 4 経路追従 (Path Following)

今回の記事では、

上記の4つの自律移動技術分野の概要と、

それに関連する本ブログの記事をまとめておきたいと思います。

 

続きを読む

ロボティクスのための衝突チェック(Collision Check)技術

 

目次

  • 目次
  • はじめに
  • 円の内外判定
  • Grid MapとDistanse Transformによる円の内外判定の高速化
  • ロボットの複数円近似
  • 多角形の内外判定
  • ポリゴン同士の衝突チェック
  • 階層チェックによるパス衝突チェックの高速化
    • 1. Global Rectangle Collision Check
    • 2. Circle Collision Check
    • 3. Polygon Collision Check
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボティクスの技術の中で、

Collision checkは一見地味ですが、

かなり重要な技術です。

 

主にパスプランニングの際に、

静的物体や他の移動物体に

衝突しないかどうか判断するのに使われます。

myenigma.hatenablog.com

 

一般的に、

周辺環境の障害物の表現には

Grid Mapを使うことが多いようですが、

myenigma.hatenablog.com

周辺環境の変化に対応するために、

比較的高周期でパスを生成&衝突チェックをしないといけないことを考えると、

衝突チェックはかなり計算量の負荷が大きい処理です。

 

これまで高速に衝突チェックを実施する技術は、

色々提案されてきたのですが、

今回はその中でも代表的な技術について概要を説明したいと思います。

 

続きを読む

毎日の荷物を減らすためにモバイルバッテリーとUSB充電器が一緒になったAnker PowerCore Fusion 5000が良かった話

目次

  • 目次
  • はじめに
  • Anker PowerCore Fusion 5000
  • Anker PowerCore Fusion 5000の良い所と改善して欲しい所
    • 良いところ1: 小さくて、まあまあ軽い
    • 良いところ2: バッテリー容量も十分
    • 良いところ3: USB充電器として使うと、スマホ充電が優先される
    • 良いところ4: USB給電ポートが2つ付いている。
    • 良いところ5: 値段が手頃
    • 改善して欲しい所: サイズの割にちょっと重い
  • 参考資料
  • MyEnigma Supporters

はじめに

旅行が趣味で、

荷物の量を減らすことができるものに

目が無いのですが、

今回、いつも持ち歩いているモバイルバッテリーを、

Anker PowerCore Fusion 5000に買い替えた所、

かなりよかったので簡単に紹介したいと思います。

続きを読む

常微分方程式における数値積分の基礎とPythonサンプルコード

目次

  • 目次
  • はじめに
  • Euler 法 (オイラー法)
  • オイラー法における刻み距離の影響
  • Runge-Kutta法(4次)
  • Runge-Kutta法における刻み距離の影響
  • 比較用コード(Jupyter Notebook)
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボティクスで使われる技術では、

しばしば数値積分を実施する必要があります。

 

例えば、ロボットの運動モデルが下記の式のように

ある微分方程式で得られる場合、

f:id:meison_amsl:20170630040518p:plain

そのロボットの将来の動きを予測するために

上記の微分方程式を数値積分して予測を実現します。

 

この数値積分は、未来を予測するモデル予測制御や、

myenigma.hatenablog.com

位置計測手法である推測航法(Dead Reckoning)などでしばしば利用されます。

myenigma.hatenablog.com

 

上記の微分方程式の数値積分には、

いくつか代表的な手法がありますが、

今回はそれらの概要と

簡単なPythonサンプルコードによる比較結果を

を紹介したいと思います。

 

続きを読む