MyEnigma

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

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)は、

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

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

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

現在のロボットの状態を

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

 

後述の通り、

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

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

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

複数のセンサ情報や

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

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

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

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

 

今回の記事では、

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

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

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

 

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

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

 

続きを読む

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

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

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

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

 

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

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

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

 

続きを読む