MyEnigma

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

SciPy 1.5.0がリリースされました


LAPACK利用の手引―行列計算パッケージ

目次

  • 目次
  • はじめに
  • Tweetまとめ
  • 参考資料
  • MyEnigma Supporters

はじめに

本日、

自分が開発者のメンバーとして参加している

SciPyの新しいバージョン1.5.0がリリースされました🎉

github.com

 

今回は、1.5.0の新機能や特徴を、

連続ツイートでまとめてみたので、

そちらを、あとから参照しやすいように

記事としてまとめておきます。

続きを読む

ロボティクスにおける最近傍点探索のためのscipy.spatial.cKDTree入門


NumPy&SciPy数値計算実装ハンドブック (Pythonライブラリ定番セレクション)

目次

  • 目次
  • はじめに
  • kdtreeとは
  • scipy.spatial.cKDTreeの使い方
    • kdtreeの作成
    • 最近傍点の探索
    • ある点から一定範囲の点を探索
    • 2つのkd-tree同士のある一定距離範囲内の点の探索
    • 1つのkd-tree内のある一定距離範囲内の点の探索
    • 2つのkd-treeの各点の距離を計算する
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボティクスにおいて、

最近傍点探索はよく使われる計算です。

例えば、衝突検知や、センサ情報の対応点探索などに

最近傍点探索は使われます。

 

最近傍点探索を使う時に、

一番よく問題になるのが、計算量です。

単純にbrute forceで最近傍点を探すと、

計算時間は探索する点の数に応じて増加してしまいます。

 

そこで、よく使われるのがkd-treeです。

en.wikipedia.org

このkd-treeを使うことで、大量のデータがあっても、

比較的、高速に最近傍点探索を計算することができます。

 

このkd-treeを使うには、

様々なライブラリがすでに存在しています.

例えば、以前紹介したFLANNも

kd-treeをデータ構造に利用しています。

myenigma.hatenablog.com

 

今回の記事では、

Pythonの科学技術計算のライブラリであるSciPyの中にある、

scipy.spatial.cKDTreeというモジュールの使い方を紹介したいと思います。

scipy.github.io

 

ちなみに、scipy.spatial.KDTreeというモジュールがありますが、

scipy.github.io

こちらは、純Pythonで実装されたkdtreeで、

cKDTreeがcythonで高速化されたバージョンのKDTreeです。

こちらのroadmapにある通り、将来的にはcKDTreeがKDTreeに

置き換えられる予定ですので、cKDTreeを紹介します。

scipy.github.io

 

現時点では、この移行のために、

KDTreeもcKDTreeもほぼ同じAPIをもっていますので、

現時点では、計算が高速なcKDTreeを使っておくのが良いと思います。

(また最近追加された機能はcKDTreeにしか追加されないようになっているため、

若干、cKDTreeのほうが多機能です。)

 

続きを読む

SpaceXの社員だけどなにか質問ある?


Spacex Tシャツ 半袖 メンズ ワンポイント カットソー 日常 マルネック 薄手 シンプル 防汗 伸縮性 通気

目次

  • 目次
  • はじめに
  • Twitterメモ
  • 参考資料
  • MyEnigma Supporters

はじめに

SpaceXのソフトウェアエンジニアの人たちがredditに降臨して、

すごく細かい内容について、色々答えていたので、

Twitterでメモしながら、呼んでみました。

そのメモ用記事です。

続きを読む

初心者のためのコンテナオーケストレーションツールKubernetes入門


しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識

目次

  • 目次
  • はじめに
  • Kubernetesとは?
  • Kubernetesによる専門用語
    • Pod
    • Node
    • Cluster
  • Kubernetesの基本機能
    • 複数の物理サーバやVMでのコンテナ管理
    • コンテナのデプロイ
    • コンテナ間のネットワーク管理
    • コンテナの負荷分散
    • コンテナの監視と自動復旧
    • コンテナのアップデート
  • 参考資料
  • MyEnigma Supporters

はじめに

Dockerなどのコンテナシステムを管理するシステムとして、

myenigma.hatenablog.com

コンテナオーケストレーションシステムがあります。

 

このコンテナオーケストレーションツールの中で、

ほぼデファクトスタンダードなのが、Kubernetesです。

kubernetes.io

ja.wikipedia.org

  

今回の記事では、こちらの書籍を元に

自分が、k8sについて学んだ内容をまとめておきたいと思います。


しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識

 

続きを読む

ロボティクスにおける幾何学処理のためのscipy.spatial.transform.Rotation入門


3次元回転: パラメータ計算とリー代数による最適化

目次

  • 目次
  • はじめに
  • scipy.spatial.transform.Rotationにおける三次元回転の表現方法
  • 三次元点の回転
  • 回転の掛け合わせ
  • 逆回転
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボティクスにおいて、幾何学処理、

特に三次元の回転は基本的な処理です。

myenigma.hatenablog.com

 

上記の記事で、ROSのtfを使った場合の三次元回転処理や、

C++のEigenを使った場合の三次元回転処理を紹介しましたが、

Pythonで三次元回転を扱う場合には、

scipy.spatial.transform.Rotationを使うのが便利です。

scipy.github.io

 

今回の記事では、

このscipy.spatial.transform.Rotationの使い方について

簡単に紹介したいと思います。

 

続きを読む

各プログラミング言語における変数名と変数の値を簡単に出力する方法まとめ


情熱プログラマー ソフトウェア開発者の幸せな生き方

目次

  • 目次
  • はじめに
  • Python
  • Julia
  • Shell script
  • C++
  • Java
  • IDEの機能を使う
  • 参考資料
  • MyEnigma Supporters

はじめに

先日の記事で、

Pythonにおけるロギングの方法を紹介しましたが、

myenigma.hatenablog.com

ロギングで一番よく実施するのが、

ある変数名と変数値を出力することです。

 

例えばPythonで、

あるxという変数があり、その変数の値が100である場合、

通常のprint関数を使うと、

100

と表示されます。

しかし、そのときにはその表示された値がxのものであることを覚えているため、

問題ありませんが、後日アプリケーションのデバックをするときには、

その出力がどの変数であるかはおそらく覚えていないので、

最低では、ログや標準出力には

x = 100

と表示させておきたくなります。

 

上記のような処理は、プログラミング中には大量にコーディングすることになるので、

できるだけ、簡単にコーディングしたいものです。

 

そこで、今回は自分がよく使用しているプログラミング言語において、

上記の内容を簡単に実施する方法をまとめておきたいと思います。

 

続きを読む

初心者のためのPythonにおけるlogging入門


The Python 3 Standard Library by Example: Pyth 3 Stan Libr Exam _2 (Developer's Library) (English Edition)

目次

  • 目次
  • はじめに
  • loggingモジュールの基本的な使い方
  • コマンドラインからログのレベル変更
  • モジュール毎のロガー設定とロギングレベルの変更
  • loggingのhandler
    • loggingで使えるhandler
  • loggingのfilter
  • 設定ファイルによるロガーの設定
  • 参考資料
  • MyEnigma Supporters

はじめに

自分以外の人に使用されるソフトウェアを開発している場合、

自分の手元では発生しない問題や、

たまにしか発生しない問題に悩まされることが多いと思います。

 

そんな場合は、手元で再現することができないので、

ソフトウェアにロガーを埋め込み、

その問題が発生した時のログファイルを元に

問題解決することになります。

 

そんな時に重要なのが、

元のソフトウェアを変更することなく、

必要な情報を得るためのロギング機能を実装することです。

 

今回の記事では、Pythonの標準ライブラリの一つである

ロギング機能用モジュールloggingの基本的な使い方や、

ユースケースに基づく、逆引きメモを紹介したいと思います。

docs.python.org

 

続きを読む

Pythonにおける型ヒント入門


Advanced Python Development: Using Powerful Language Features in Real-World Applications

目次

  • 目次
  • はじめに
  • Pythonの型ヒント
  • 型アノテーションの書き方
  • 静的型チェッカー mypy
    • インストール方法
    • ターミナル上での使い方
    • mypy.iniの作り方
  • PyCharm
    • PyCharmでの型入力
    • PyCharmでの型チェック
  • CI上でチェックする
  • 参考資料
  • MyEnigma Supporters

はじめに

Pythonは動的言語で、

型を指定する必要は無いのですが、

それが原因で、意図しない入力が関数が入力されたりして、

バグの温床になりがちです。

 

そこで、Python3.5あたりから、

型ヒント(型アノテーション)という機能が追加されました。

docs.python.org

これにより、変数や、関数の入出力に型情報を追加することができ、

意図しないコードの使用や状態を事前に検知することができます。

 

今回の記事では、

このPythonの型ヒントの概要について説明したいと思います。

 

続きを読む

Python3.7で導入されたdataclass入門


Python実践入門 ── 言語の力を引き出し、開発効率を高める (WEB+DB PRESS plusシリーズ)

目次

  • 目次
  • はじめに
  • 通常のclassとdataclassの比較
    • dataclassの良いところ
      • データを格納する箱であることを明確にできる。
      • クラス定義を短くかける
      • 型情報を書くことでデータ構造が見やすくなる。
      • Printしたときに、そのままオブジェクトの中身を表示できる。
      • asdict関数でdictに変換できる。(Dictから簡単にJSONにも変換できる)
      • Dict(JSON)からdataclassを作ることもできる
      • Frozen引数を使うことで、簡単にイミュータブルにもできる。
      • データが作られたときに、自動後処理機能を追加することができる。
    • dataclassの残念なところ
      • コレクションの初期化
  • 参考資料
  • MyEnigma Supporters

はじめに

C++ユーザやJuliaユーザがPythonを使っている時の不満の一つとして、

データを格納する目的のstructが無いことが上げられます。

 

もちろんPythonのclassを使って、データのみを格納することもできますが、

記述が冗長になりますし、コールドリーディングしているときに、

データを格納するためのclassなのか、

それともより汎用的なクラスなのかが、一見してわかりにくいことがあります。

 

そこでPython3.7から導入されたのが、dataclassです。

docs.python.org

これを使えば、Pythonでも明示的にデータ格納用のクラスを簡単に実装できます。

また、下記のツイートの通り、アプリケーションの設定データ管理として、

このdataclassを使うと非常に便利です。

 

今回の記事では、このdataclassの概要について説明したいと思います。

続きを読む

一歳以下の子育てに便利だったもの


はじめてママ&パパの育児―0~3才赤ちゃんとの暮らし 気がかりがスッキリ! (実用No.1シリーズ)

目次

  • 目次
  • はじめに
  • Google Home mini
  • Nature Remo mini
  • ベビーモニター
  • スマート体重計
  • デロンギ(DeLonghi) オイルヒーター
  • フィッシャープライス レインフォレスト ジャンパルー2
  • 参考資料
  • MyEnigma Supporters

はじめに

Next major version was released😆

今年、初めての子供が生まれて、

一年間、試行錯誤で子育てをしてきました。

 

最近、知り合いに子供が生まれて、

どんなものが便利だった?と聞かれたので

今後同じことを聞かれた時のために、

まとめておきます。

 

続きを読む