MyEnigma

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

Pythonヒッチハイクガイドを読んで学んだこと

目次

  • 目次
  • はじめに
  • Can I use python3でライブラリがpython3で利用できるか確認できる
  • pythonのリポジトリの構成
  • with構文をうまく使う
  • コードのデバッグをするときはテストファイルを作る。
  • tkinterはバージョン8.0から外見が洗練された
  • ロギングが print より優れている理由
  • PythonのテストフレームワークにはNoseを使う
  • Python製のCIサーバ Buildbot
  • Pythonの並列処理にはconcurrent.futuresを使う
  • 参考資料
  • MyEnigma Supporters

はじめに

Pythonに詳しい方が、

下記のPythonヒッチハイクガイドという

Webの資料を紹介していたので、

一通り目を通してみて

知らなかったことをメモようにまとめておきたいと思います。

英語版

日本語版

 

続きを読む

ポートフォリオ最適化問題とJuliaによるサンプルコード

目次

  • 目次
  • はじめに
  • ポートフォリオ最適化問題
  • 線形制約のみのポートフォリオ最適化
  • Juliaによるポートフォリオ最大化問題解法サンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、凸最適化技術の基礎として、

線形計画法や、二次計画法の概要を説明し、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

凸最適化の有名な応用例である

ナップザック問題を解くシミュレーションを紹介しました。

myenigma.hatenablog.com

 

今回は同じく、凸最適化の応用例として有名な

ポートフォリオ最適化問題の概要と、

ポートフォリオフォリオ最適化問題を解く、

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

 

続きを読む

Juliaのコードを更に高速化する方法

目次

  • 目次
  • はじめに
  • Juliaを高速化するために注意すべきこと
    • グローバル変数を避ける
    • @timeでパフォーマンスを計測し、メモリアロケーションに注意を払うこと
    • パフォーマンス関連ツールを使う
    • 抽象型のコンテナは避ける
    • 型宣言
    • 抽象型のフィードを避ける
    • キーワード引数の型を宣言する
    • 関数を複数の定義に分ける
    • 型安定なコードを書く
    • 変数の型が変化しないようにする
    • コア関数を分ける
    • 配列はメモリの順番に列ベースでアクセスする
    • 返り値を事前にメモリ割り当てする
    • ドット演算子を使う
    • スライスのViewを使うことを検討する
    • I/Oに対する文字列補間を避ける
    • Depreciation Warningを修正する
    • 細かいTips
    • パフォーマンス向上のためのマクロ
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、

MATLABのコードの高速化手法や

myenigma.hatenablog.com

Pythonコードの高速化の手法を紹介しましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

今回は、下記の公式記事を元に、

Juliaのコードを高速化する方法をまとめたいと思います。

docs.julialang.org

 

Juliaは普通に使用しても十分高速ですが、

下記のTipsを利用することで、

より高速化することができます。

 

Juliaという言語そのものに関しては、

下記の記事を参照ください。

myenigma.hatenablog.com

  

続きを読む

オンライン上の数値演算・解析系のPythonチュートリアルScipy Lecture Notesを読んで学んだこと

目次

  • 目次
  • はじめに
  • ツールやワークフローを使った科学技術計算
  • プログラミング言語 Python
  • NumPy: 数値データの作成と処理
  • Scipy: 高水準の科学技術計算
    • scipy.io
    • scipy.optimize
    • scipy.interpolate
  • 参考資料
  • MyEnigma Supporters

はじめに

下記のScipy Lecture Noteという、

オンライン上の数値演算・解析系のPythonチュートリアルが

素晴らしかったので、

読んで心に残ったことをメモしておきたいと思います。

 

続きを読む

ロボティクスにおける経路追従(Path following)技術の概要

目次

  • 目次
  • はじめに
  • 経路追従(Path following)とは?
  • 制御技術の基礎
  • 最適化技術の基礎
  • ロボットの運動モデル
  • 経路追従の代表的なアルゴリズム
    • Pure pursuit
    • Rear wheel position feedback
    • 線形二次レギュレータ(LQR)
  • 参考資料
  • MyEnigma Supporters

はじめに

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

重要なものの一つに、

経路追従(Path following)技術があります。

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

myenigma.hatenablog.com)

 

今回の記事では、

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

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

 

続きを読む

Julia用おすすめVim設定&プラグイン

目次

  • 目次
  • はじめに
  • F5で現在編集中のコードを実行する
  • シンタックスハイライト用プラグイン: julia-vim
  • 静的解析ツール用プラグイン: julia.vim
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで、様々な言語における

おすすめVim設定とVImプラグインを紹介してきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

最近、Juliaという比較的新しい言語を勉強しているため、

myenigma.hatenablog.com

JuliaのコードをVimで書くためのおすすめ設定と、

プラグインを紹介したいと思います。

 

自分のすべての言語に共通したVimの設定ファイルは

下記のリポジトリで公開しています。

github.com

 

続きを読む

線形二次レギュレータ(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の周辺機器をまとめておこうと思います。

 

続きを読む