MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

ロボティクスにおける自己位置推定(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 カルマンフィルタ
    • Particle Filter
    • Iterative Closest Point (ICP) アルゴリズム
    • EKF SLAM
  • 参考資料
  • MyEnigma Supporters

 

はじめに

自己位置推定(Localization)は、

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

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

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

現在のロボットの状態を

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

 

後述の通り、

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

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

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

複数のセンサ情報や

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

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

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

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

 

今回の記事では、

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

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

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

 

続きを読む

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

The DARPA Urban Challenge: Autonomous Vehicles in City Traffic (Springer Tracts in Advanced Robotics)

The DARPA Urban Challenge: Autonomous Vehicles in City Traffic (Springer Tracts in Advanced Robotics)

目次

  • 目次
  • 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シミュレーションコードを紹介したいと思います。

 

続きを読む

Macでの生産性向上のためにクリップボード管理アプリClipyが便利という話

生産性―――マッキンゼーが組織と人材に求め続けるもの

生産性―――マッキンゼーが組織と人材に求め続けるもの

目次

  • 目次
  • はじめに
  • Clipyとは
  • インストール
  • 使い方
  • 参考資料
  • MyEnigma Supporters

はじめに

これまでMacのクリップボード管理は、

ClipMenuを使ってきたのですが、

最近急にアプリが暴走することがありました。

 

そこで調べてみた所、

Clipyという新しいアプリが開発されていたので、

そちらに乗り換えてみた所、非常に便利だったので、

概要をまとめておきたいと思います。

 

続きを読む

PythonによるClosed Loop RRT*パスプランニングサンプルプログラム

The DARPA Urban Challenge: Autonomous Vehicles in City Traffic (Springer Tracts in Advanced Robotics)

The DARPA Urban Challenge: Autonomous Vehicles in City Traffic (Springer Tracts in Advanced Robotics)

目次

  • 目次
  • はじめに
  • Closed Loop RRTとは
  • PythonによるClosed Loop RRT*パスプランニングサンプルプログラム
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、RRT*とReed Sheppパスを使った

パスプランニングアルゴリズムを紹介しましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

このアルゴリズムには一つ問題があります。

 

それはReed Sheppパスが

実際の車両のモデルを忠実に表現していないことです。

Reed Sheppパスは、最大曲率(旋回半径)の条件は満たしたパスは作ってくれますが、

円弧と直線を繋ぐだけなので、曲率の不連続点があり、

ステアリングの切り角に制限があるロボットでは、

正確にトラッキングできません。

加えて、前後進の運動モデルを考慮していないため、

アクセルやブレーキの応答性が悪い車両では、

生成されたパスに追従できなくなります。

 

そこで今回はこの問題を解決するために

Closed Loop RRT*という

アルゴリズムを紹介したいと思います。

続きを読む