MyEnigma

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

線形二次レギュレータ(LQR)による経路追従制御とPythonサンプルプログラム

目次

  • 目次
  • はじめに
  • LQRを使ったステアリング制御
  • LQRを使ったステアリング制御Pythonサンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、最適制御の手法として有名な

線形二次レギュレータ(LQR)の概要を説明しましたが、

myenigma.hatenablog.com

 

先日、中国の検索エンジン会社バイドゥが公開した

自動運転ソフトウェアApolloにおいて、

このLQRをステアリング制御に使用していました。

github.com

 

そこで今回、このLQRを使ったステアリング型ロボットの

経路追従の技術概要と

簡単なPythonサンプルコードを紹介したいと思います。

 

続きを読む

ラズベリーパイ(Raspberry Pi)にAirplayサーバーを立てる方法

目次

  • 目次
  • はじめに
  • 使ったもの
  • 初期セットアップ
  • shairport-syncのインストール
  • USBのスピーカーから音楽を流すようにする
  • 最後に
  • その他Raspberry Piの使い道
  • 参考資料
  • MyEnigma Supporters

はじめに

最近Amazon Musicで音楽を聞くことが多いのですが、

Chromecastを繋いだテレビからは流せないので、

すこしイライラしていました。

 

そこで自分の家にはAppleの商品が転がっており、

Amazon MusicはAirplayには対応しているので、

以前購入したRaspberry PiにAirplayサーバを立てて、

家のどこからでもApple製品から、

Raspberry Piに繋がったスピーカーに、

音を流せるようにしました。

今回はその方法について説明したいと思います。

続きを読む

Juliaにおける最適化モデリングライブラリJuMP入門

目次

  • 目次
  • はじめに
  • JuMPの特徵
    • 使いやすさ
    • 計算速度
    • ソルバーの独立利用のためのインターフェース
    • システムに組み込みやすい
    • ライセンスがMPL
  • インストール方法
    • GLPKのインストール
    • Clpのインストール
    • Cbcのインストール
    • Culpのインストール
    • ECOSのインストール
    • Ipoptのインストール
    • NLoptのインストール
    • Mosekのインストール
    • CPLEXのインストール
  • 各ソルバーのパラメータ設定
    • 最適化の標準出力を止める
    • 最適化計算時間に上限を設定する
    • その他のパラメータ
  • JuMPによるシンプルな線形計画問題の解法サンプルコード
  • 非線形最適化のサンプルコード
  • JuMPの最適化コードを静的コンパイルして高速化する方法
  • 参考資料
  • MyEnigma Supporters

 

はじめに

以前、Python製の最適化モデリングライブラリ

cvxpyを紹介しましたが、

myenigma.hatenablog.com

 

今回は、高速科学演算向け言語であるJuliaの

最適化モデリングツールであるJuMP (Julia for Mathematical Optimization)

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

JuMP — Julia for Mathematical Optimization — JuMP -- Julia for Mathematical Optimization 0.18 documentation

github.com

 

JuMPの詳細に関しては、下記の論文を参照ください。

 

プログラミング言語Juliaに関しては下記の記事を参照ください。

myenigma.hatenablog.com

 

続きを読む

Macbook Proを買って、USB-C対応と荷物を減らすために揃えたガジェット

目次

  • 目次
  • はじめに
  • USB-C拡張ドングル: HooToo USBハブ Type-C 3 3.0ポート HT-UC001 シルバー
  • USB充電器兼モバイルバッテリー: Anker PowerCore Fusion 5000
  • USB - A → USB - C ケーブル: Anker PowerLine+ USB-C & USB 3.0 ケーブル (1.8m)
  • USB-A → USB-C 変換アダプタ: AUKEY USB C to USB 3.0 変換アダプタ Type cコネクタ
  • AnkerのUSB-C充電器 + USB-C - USB-Cケーブル
  • Bluetooth イヤホン: Anker SoundBuds Slim Bluetoothイヤホン
  • HDMI VGA - USB-c ドングル
  • 今後買いたいもの
  • なぜTouchbar無しのMBPを買ったのか?
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、新しいコンピュータとして、

Macbook Pro (MBP)13.3インチ(タッチバー無し)を買いました。

新しい相棒来た😃

 

以前、使っていた2013年のMacbook Air 13インチと

重さは殆ど変わらないですし、

CPU, SSD, メモリすべてにおいてスペック倍増したので、

かなり快適です。

 

しかし、多くの人がご存知の通り、

現在のMBPはインターフェースとして、

USB-Cしか無いため、

かなりの周辺機器を追加で購入する必要がありました。

 

そこで、自分が購入して便利だった

MBPの周辺機器をまとめておこうと思います。

 

続きを読む

ロボティクスにおける経路計画(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)は、

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

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

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

現在のロボットの状態を

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

 

後述の通り、

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

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

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

複数のセンサ情報や

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

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

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

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

 

今回の記事では、

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

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

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

 

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

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

 

続きを読む