MyEnigma

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

ネットワーク初心者のためのssh入門

目次

  • 目次
  • はじめに
  • sshとは
  • sshの基本的な使い方とオプション
    • あるIPアドレスにログインする場合
    • ポートを指定
    • ログインアカウントを指定
    • 秘密鍵を指定してログイン
    • クライアント側のIPアドレスを指定
    • sshのバージョンを表示する
    • X11のGUIをssh越しに使う
  • sshポートフォワーディング
  • sshサーバを立てて、外部から処理をする
    • Macの場合
  • sshで対話的なコマンド入力を自動化する
  • .ssh/config
  • 参考資料
  • MyEnigma Supporters

はじめに

おそらく、

ターミナルで生活するエンジニアにとって、

sshは最も利用するツールの一つだと思います。

 

今回は、

ネットワーク技術初心者である

自分のような人のために、

sshの各種オプションなどの使い方をまとめました。

 

続きを読む

高速最近傍点探索ライブラリFLANNを使ってみる

目次

  • 目次
  • はじめに
  • 最近傍点探索とは
  • FLANN (Fast Library for Approximate Nearest Neighbors)
  • インストール方法
  • C++でFLANNを使う
  • Radius Searchによる最近傍点探索
  • 参考資料
  • MyEnigma Supporters

はじめに

あるデータ群の中で、

最も近いデータを選ぶ

最近傍探索は、

様々なアルゴリズムで使用されますが、

それを高速に実現するには、

データ構造から工夫する必要があります。

 

今回は、上記の目的を達成するための

C++ライブラリFLANNを紹介したいと思います。

 

続きを読む

自作サーバに個人用GitHubを作れるgitbucket入門

目次

  • 目次
  • はじめに
  • GitBucket
  • インストール前にGitbucketを試す。
  • インストール
    • Javaのランタイムを使う
      • UbuntuにJava8をインストールする
    • docker を使う
  • Gitbucketのアップデート
  • 基本的な使い方
  • Jenkinsとの連携
  • gitbucketに関する質問
  • 参考資料
  • MyEnigma Supporters

はじめに

GitHubは最高ですが、

公開したくないコードなどをGitHubで利用するには、

有料プランに入る必要があります。

 

月7ドルなので払ってもいいのですが、

すでに自宅サーバなどを運用している人には、

いわゆるGitHubクローンと言われるソフトを使うことで、

無料で自作サーバに個人用GitHubを立てることができます。

 

GitHubクローンとして有名なものに、

GitLabと

Gitbucketがありますが、

github.com

GitLabはインストールが大変そうだったのと、

見た目があまりGitHubに似てないこと、

そして、GitLabのキャラクターがあまり可愛くないことから、

Gitbucketを今回試してみることにしました。

 

下記で、基本的な使い方や注意点などを紹介したいと思います。

 

続きを読む

ロボティクスにおける地磁気センサの基礎知識

目次

  • 目次
  • はじめに
  • 地磁気センサとは
  • 地磁気センサのデータの単位
  • 地磁気センサの種類
  • 2軸地磁気センサにおける方位計算の方法
  • 3軸地磁気センサにおける方位計算の方法
  • 参考資料
  • MyEnigma Supporters

 

はじめに

これまで

様々なロボット用センサの基礎情報をまとめてきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

今回は、

ロボットや車両の方位推定にしばしば利用される、

地磁気センサの基礎的知識についてまとめたいと思います。

 

続きを読む

Pythonにおける並列処理プログラミング入門

目次

  • 目次
  • はじめに
  • subprocessによる複数子プロセス処理
  • concurrent.futuresによるマルチプロセス処理
  • Queueによる並行プログラミング
  • 最後に
  • 参考資料
  • MyEnigma Supporters

はじめに

元々Pythonは、

そこまで処理速度が早い言語ではないので、

システムの処理速度を最適化したい場合は、

C++などで書き直した方が良いのかもしれませんが、

Pythonシステムをあと少し早くしたい時には、

並行処理プログラミングをしてみると、

効果があるかもしれません。

 

最近のコンピューターはマルチコアで、

かつハイパースレッディングなどに対応しているため、

複数の処理を同時並行で処理させることで、

処理時間を早くすることはできます。

 

他の言語では、スレッドなどを使って

比較的カンタンに並列処理を実現することができますが、

実はPythonはグローバルインタープリタロック(GIL)という仕組みがあるので、

普通にマルチスレッドのプログラミングをしても、

一つのスレッドづつしか実行されず、

処理が早くならないことが多いようです。

 

そこで、そんなPythonにおいても

上手く並行処理を実施する方法がいくつかあるので、

これらの手法について

簡単にまとめようと思います。

 

詳しいPythonにおける

並行処理のプログラミングについては、

下記の書籍が詳しいため参照下さい。

 

続きを読む

Effective Pythonを読んで心に響いたこと

目次

  • 目次
  • はじめに
  • Pythonのランタイムの種類
  • プライベート属性はアンダーバーを2つ先頭におく
  • リストや文字列の空判定にlenなどは使わない
  • mapやfilterよりもリスト内包表記を使う
  • rangeよりはenumarateを使う
  • オプションのキーワード引数は、位置ではなくキーワードで与えるとコードが読みやすい
  • どんなクラスオブジェクトでも__dict__ですべてのフィールド辞書にアクセスできる
  • Pythonコードのプロファイルを取るにはcProfileを使うと便利
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、C++の名著Effective C++を読んで

心に響いたことを記事にまとめました。

myenigma.hatenablog.com

 

実はこのEffectiveシリーズは、

様々なプログラミング言語で発売されており、

PythonバージョンのEffective Pythonも発売されています。

Effective Python ―Pythonプログラムを改良する59項目

Effective Python ―Pythonプログラムを改良する59項目

 

今回もこのEffective Pythonを読んで、

心に響いたことをメモとして

残しておきたいと思います。

続きを読む

PythonによるRapidly-Exploring Random Trees (RRT)パスプランニングサンプルプログラム

animation.gif (640×480)

目次

  • 目次
  • はじめに
  • Rapidly exploring random tree:RRTとは?
  • RRTの利点と欠点
    • 利点
    • 欠点
  • RRTによるパスプランニングPythonサンプルプログラム
    • シンプルなRRTパスプランニング (Goal biased sampling)
    • パスのスムージング後処理付きRRTプランニング
    • 車両ロボット用RRTプランニング
  • RRTのパス収束の高速化の手法
    • Goal Bias Sampling
    • Goal Zone Sampling
  • RRTの問題点
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、A*やダイクストラ法、Dynamic Window Approachによる

パスプランニングシステムのサンプルプログラムを公開しましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

ロボティクスの分野で、

よく使用されるパスプランニングアルゴリズムとして、

Rapidly exploring random tree (RRT)

というアルゴリズムがあります。

今回は、このRRTのアルゴリズムの概要と、

PythonによるRRTパスプランニングの

サンプルプログラムを紹介したいと思います。

 

続きを読む

一週間イタリアを旅行して、事前に知っておくと便利だと思ったこと

目次

  • 目次
  • はじめに
  • 複数の都市を回るなら、電車がいい
  • ベネチアから空港に行く場合は直通の水上バスが便利
  • 英語がどこでも通じる
  • ベネチアは水上バスを使わなくても、十分歩きで回れる
  • 街のそこら中でネットが使える
  • 水は圧倒的にスーパーが安い
  • イタリアにおける免税(税金の払い戻し, Tax Refund,Tax Free)
    • 1 購入店で免税書類をもらう
    • 2 空港の税関でスタンプをもらう
    • 3. 払い戻しをする。
  • イタリアへの旅行パック
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、イタリアを一週間旅行してきたのですが、

事前に知っていたら、

もっと充実した旅行になっていたなと思ったことが

いくつかあったので、メモとして残しておこうと思います。

(ローマ→フィレンチェ→ベネチアというコース)

 

ちなみにイタリアは、

食事も旨いし、

交通機関も整備されているし、

英語も通じるし、非常に旅行しやすかったのでおすすめです。

 

コロッセオに来た。事前にグラディエーター見てくればよかった。

フィレンツェの街並みを見下ろして

ゴンドラも乗ってみた

本場のピザうまい。生地に味がある気がした。

ダビンチの絵も初めてこの目で見た

 

続きを読む

Python製のフィルタリングツールpercolを使って、bashとROS生活を快適にする方法

目次

  • 目次
  • はじめに
  • 初期設定の方法
  • bashのhistoryをインタラクティブに検索して、入力する
  • rostopic listからpercolで選んで、rostopic echoする方法
  • 参考資料
  • MyEnigma Supporters

はじめに

Pythonにはpercolという、

標準出力のデータを、

簡単に選択してフィルタリングできるツールがあります。

github.com

 

このツールを使うと、

bashでの開発や、

ROSのCUIツールを便利にすることができたので、

いくつか紹介したいと思います。

 

続きを読む

ロボティクスのためのGoogle TestによるC++コードユニットテスト

目次

  • 目次
  • はじめに
  • Google Test
  • Google Testのインストール方法と実行方法(Linux, Mac)
  • Google Testによるテストコードの書き方
    • 二種類のアサーション
    • アサーションコード
  • 最も簡単なテストコード
  • 複数のテストで共通のコードを使う方法
  • 再帰的にテストコードを検索し、テストを実行するPythonスクリプト
  • モックとスタブ
  • 参考資料
  • MyEnigma Supporters

はじめに

下記のツイートのように、

最先端のロボットのシステムは非常に複雑なので、

きちんとソースコードのユニットテストを作成し、

CI(Continuous Integration)で自動テストをすることが、

当たり前になっているようです。

 

自分も、複雑なシステムですが、

きちんと機能するロボットシステムを構築したいので、

ユニットテストをきちんとかけるように、

勉強をすることにしました。

 

今のところ、自分はC++とPythonを使用しているので、

今回は、ROSでも採用されている

C++のテストフレームワークである

Google Testを使ったC++コードのテスト方法について

説明しようと思います。

github.com

 

Pythonにおけるユニットテストの作成方法は、

下記の記事を参考にしてください。

myenigma.hatenablog.com

 

続きを読む