MyEnigma

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

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サンプルコードによる比較結果を

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

 

続きを読む

Model Predictive Controlによる倒立振子制御Pythonプログラム

目次

  • 目次
  • はじめに
  • Model Predictive Controlによる倒立振子制御Pythonプログラム
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで何度か

モデル予測制御(Model Predictive Control:MPC)に

関する記事を書きましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

これらの記事を元に、

倒立振子の制御プログラムを書かれた方がいらっしゃいました。

qiita.com

 

自分も実際に倒立振子の制御シミュレーションをしてみたいと

思ったので、

今回はそのシミュレーションコードの紹介をしたいと思います。

 

続きを読む

LINEで自作画像をスタンプのように無料でやりとりする方法

目次

  • 目次
  • はじめに
  • LINEで自作画像をスタンプのように無料でやりとりする方法
  • この手法の残念な所
  • 参考資料
  • MyEnigma Supporters

はじめに

LINEは日本人には

必需品のようになっていますが、

自分が利用したいスタンプが無い場合に、

自作したい人もいるかと思います。

 

しかし、現状LINEではスタンプは

LINEのチェックを通貨し、

商用として公開されたものしか、

スタンプとして利用できません。

 

そこで、自作した画像データを、

簡単にスタンプのように使える方法を紹介したいと思います。

続きを読む

Rear wheel position feedbackによる経路追従とPythonサンプルコード

目次

  • 目次
  • はじめに
  • Rear wheel position feedbackによる経路追従
  • Pythonシミュレーションコード
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、

Pure pursuitアルゴリズムによる、

経路追従アルゴリズムを紹介しましたが、

myenigma.hatenablog.com

このアルゴリズムは、下記のような問題があります。

  • コース曲率を考慮してない

  • 車両の現在の速度を考慮していない。

そのためパラメータのチューニングが難しかったり、

複雑なコースで、制御が不安定になるという問題があります。

 

今回は、Pure pursuitアルゴリズムの問題を解決することができる、

Rear wheel position feedbackというアルゴリズムを紹介し、

そのPythonシミュレーションコードを紹介したいと思います。

 

続きを読む