MyEnigma

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

アメリカの運転免許をレンタカーで取得するまでの注意点とおおまかな流れ

目次

  • 目次
  • はじめに
  • アメリカの運転免許の取得フロー
  • 筆記試験
    • 筆記試験の必要なもの
    • 筆記試験の流れ
      • 1. アポイントを入れたDMVに行き、アポイント有りの人用の受付に並ぶ
      • 2 受付でアポイントがある旨を伝えると免許の申請書(DL44)がもらえるので記入する
      • 3 受付の人に記入用紙を手渡す。そうすると番号札がもらえるので呼ばれるまで待つ
      • 4 呼ばれる際には、番号と一緒に窓口も指定されるので、その窓口に向かう。
      • 5 窓口では、パスポートの確認などが行われた後、視力検査が行われる。
      • 6 別のブースで免許証用の写真撮影が行われる。
      • 7 筆記試験を行う場所に移動する。
      • 8 結果を担当者に渡す
      • 9 筆記試験に合格後、その場で仮免許証を受け取る
    • 筆記試験勉強用資料
    • アメリカ特有の運転ルール
      • 赤信号でも右折できる
      • 路肩の色
      • 速度制限
      • Carpool or HOV〔High Occupancy Vehicle〕Lane
  • 実車試験(behind-the-wheel driving test)
    • 実車試験の予約
    • 実技試験に必要なもの
    • レンタカーで実車試験を受ける
    • 実車試験当日の流れ
      • 1 DMVに到着したら、アポイント有り用の受付に並ばずに、直接実技試験の窓口に行く
      • 2 窓口でアポイントがある旨を伝えると、仮免許証や同乗者の運転免許証などの確認がある。
      • 3 DMV玄関前の実技試験の列に車で並ぶ
      • 4 順番がきたら試験官に書類を手渡す
      • 5 試験官の指示に従い、車の正常動作確認のための操作をします。
      • 6 路上で実技試験を行う
      • 7. 試験が終了したらDMVに戻ってきて、その場で合否を試験官から伝えられる。
  • 最後に
  • 参考資料
  • MyEnigma Supporters

はじめに

アメリカは車社会と言われますが、

最近は、UberやRiftなどのタクシー配車サービスや、

myenigma.hatenablog.com

Zipcarや

www.zipcar.ca

car2goなどのカーシェアリングを使うと、

car2go US

場所によっては意外と、自家用車を持たずに生活できます。

 

しかし、国際免許は1年で切れてしまいますし、

また結構大きくて邪魔なので、

カーシェアリングを使うために

アメリカの免許を取っておくと便利です。

myenigma.hatenablog.com

 

そこで実際にレンタカーを使って

アメリカの運転免許をとってみたので、

その手法をメモしておきたいと思います。

 

続きを読む

等式制約下の凸二次計画法をソルバーを使わずにPythonで解いてみた

目次

  • 目次
  • はじめに
  • 等式制約下の凸二次計画法の数学的解法
  • Pythonサンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、凸最適化の概要を紹介しましたが、

myenigma.hatenablog.com

一般的にこの凸最適化を解くためには、

既存のソルバーと呼ばれるライブラリを使うことが一般的です。

 

Pythonでは以前紹介したcvxoptというソルバーが有名です。

myenigma.hatenablog.com

 

しかし、別の言語で最適化システムを実装したいときなど、

このソルバーを使わずに凸最適問題を解きたい時もあります。

 

そこで、まず手始めに、

等式制約条件のみの凸二次計画法

(不等式制約は無し)

の解法を数学的に導出し、

それを元にPythonでソルバーを使わずに

凸二次最適化を解くサンプルコードを

作成したので紹介したいと思います。

 

続きを読む

Cコンパイラを知るための基礎知識まとめ

目次

  • 目次
  • はじめに
  • 抽象構文木 (Abstract Syntax Tree: AST)
  • アセンブラ(アセンブリ言語)とは?
  • 代表的なアセンブラ命令(ニーモニック)
    • MOV
  • 参考資料
  • MyEnigma Supporters

はじめに

コンピューターの基礎的な知識を得たいと思い、

シンプルなC言語コンパイラとして有名な8ccを写経しながら、

Cコンパイラの勉強をしています。

github.com

 

元々、情報系出身じゃないので、

色々知らない知識が出てきたので、

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

 

続きを読む

凸二次計画法を高速に解くc言語ソルバーを自動生成できるCVXGENの使い方

 

目次

  • 目次
  • はじめに
  • CVXGENとは?
  • CVXGENの特徴1: ライブラリフリーのcソルバーを自動生成できる
  • CVXGENの特徴2: 非常に高速なソルバーを生成できる
  • CVXGENの制約事項
  • CVXGENのライセンス
  • CVXGENの使い方
    • コメント
    • 各タグの意味
    • Parametersで使うことができる属性
  • C言語ソルバーの使い方
    • コードの実行方法
    • 最適化のデータ
    • ZERO_LIBRARY_MODE
    • 最適化の収束判定
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、凸最適化のモデリングツールとして、

MATLAB製のCVXや

myenigma.hatenablog.com

Python製のCVXPYを紹介しましたが、

myenigma.hatenablog.com

実際にロボットの制御などで凸最適化を利用したい場合、

高速に実行できるように、

C++などに最適化のコードを移植する必要があります。

しかし、モデリングの過程や、

ソルバーの中身はかなりブラックボックスなので、

移植は大変です。

 

そこで、モデリングツールでありながら、

モデリングした対象を実行するc言語ソフトを自動生成する

CVXGENというツールを使ってみたので

その時の使い方をメモしておきたいと思います。

 

続きを読む

Jenkinsで個人コードの自動テスト環境を作る方法

目次

  • 目次
  • はじめに
  • Jenkinsとは?
  • Jenkinsのインストール
    • Mac
    • Docker
  • 同じPC上のソフトの自動テスト環境の作り方
    • 1. Jenkins上で新規ジョブを登録する
      • 古いビルドを破棄する
      • gitリポジトリの設定
      • SCMのポーリングをオン
      • テストスクリプトの設定
      • E-Mail通知の設定
    • 2. gitのhookで下記のjenkinsのURLを叩くようにする
  • Pythonでテスト環境を作る時の注意点
    • ライブラリへのパスが通らない時
    • 複数のPython Versionを使う
  • Jenkins pipelineによる設定
    • JenkinsFileで、sshを使う
  • Jenkinsからメールを送る設定
  • Jenkinsにログイン出来なくなった時
  • Jenkinsでsudoを使いたい場合の対処法
  • 細かいTips
    • cmakeが使えない時のgtest
    • 新しいコンピュータにJenkinsサーバを移動する場合
    • JenkinsとGitbucketの連携
    • Jenkinsのログに色をつける
    • Jenkinsでビルド結果のバイナリや、実行ファイル、dockerイメージなどを作成する
    • ビルドのあとにGit操作する
    • コンソールアウトプットへのショートカット
    • Jenkinsの表示言語を変更したい
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、

C++とPythonのテストコードの書き方の概要を紹介しましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

ちゃんと定期的にテストを実行しないと、

結局、気づいた時には通らないテストだらけになり、

放置された状態になってしまいます。

 

そこでやはり利用したいのが、

自動テストシステム(CI)ですが、

GitHub上で公開していないコードに関しては、

Travis CIやCircle CIなどの外部サーバのシステムはすこし使いづらいです。

 

そこで、オンプレにインストールできる

Continuous Integration(CI)ソフトとして有名な

Jenkinsを自分の環境に入れて、

自動テストするように設定しました。

 

その時の設定方法をメモとして残しておきます。

続きを読む

体重, 体脂肪率, 筋肉量, 体水分量, 心拍数, 骨量, 脈波伝播速度を計測し、可視化してくれるIoT体重計 Withings Body Cardioを買った話

目次

  • 目次
  • はじめに
  • Withings社の IoT体重計 Body Cardioとは?
  • Body Cardioの購入
  • Body Cardioの良い所と気になる所
    • 良い所1: 非常に多くのデータを計測できる
    • 良い所2: USB充電で電池いらず
    • 良い所3 スマホのアプリとiOSのヘルスケアが連携できる
    • 良い所4: 現在地の天気や気温が見れる
    • 気になる所1: 結構重量がある
    • 気になる所2: アプリのグラフ表示のカスタマイズ性が低い
  • 参考資料

はじめに

以前から、

毎日体重を測る習慣はあったのですが、

その結果をグラフ化するために、

毎回iPhoneのアプリに計測結果を入力していました。

しかし、毎回入力するのが面倒だったり、

体脂肪もグラフ化できるといいなと思ってました。

 

そこで、それらの問題を解決するために、

IoT体重計であるWithings社の Body Cardioを

購入してみました。

 

今回は、このWithings Body Cardioの概要と

実際に使ってみての特徴を紹介したいと思います。

 

続きを読む

海外ではタクシー配車サービスUberとLyftが日本人にとってすごく便利という話

目次

  • 目次
  • はじめに
  • UberとLyftとは?
  • スマホアプリのインストール方法
    • Uber
    • Lyft
  • アプリの使い方
    • 1. 配車位置の指定
    • 2. 目的地を設定する
    • 3. 車種を選択する
    • 4. 配車を決定して車が来るのを待つ
    • 5. 車に乗り込んで、目的地で降りるだけ
  • タクシーと比べて、UberやLyftの何が日本人にとって良いのか?
    • 1. 英語を話す必要がほとんど無い
    • 2. 料金が安い
    • 3. タクシー配車の前に事前に目的地までの値段がわかる
    • 3. たまに水のボトルがもらえる
    • 4. 普通のタクシーを探すより、大抵早くタクシーに乗ることができる
    • 5. 領収書が自動でメールで送られてくる
    • 6. 英会話の練習にもなる
    • 7. ライドシェアを使うともっと安くなる
  • ドライバーの人の経験談
  • 最後に
  • 参考資料
  • MyEnigma Supporters

はじめに

アメリカに住みはじめて、

UberとLyftというタクシー配車サービスを

頻繁に使い始めました。

 

はじめはなんとなく利用するのを躊躇していたのですが、

一度使い始めると、

便利過ぎて今では最低週一回は利用しています。

 

UberやLyftのようなシステムは、

タクシーの規制のため、

日本では普及していませんが、

海外旅行をする時など、

事前に準備しておき、現地で利用すると

するとかなり便利ですので、

使い方等をまとめておきたいと思います。

 

続きを読む

pybind11を使ってPythonからC++コードを実行する方法

目次

  • 目次
  • はじめに
  • pybind11とは?
  • シンプルなサンプルコードの実行方法
    • 1. pybind11をDL
    • 2. c++のコードを書く
    • 3. pybind11のバインドc++コードを書く。
    • 4. C++コードをコンパイルする。
      • Macの場合
      • ubuntuの場合
    • 5. pythonコードで読み込ませる
  • デフォルト引数
  • C++コードの変数をpython側で利用する
  • C++クラスのバインディング
  • 継承
  • 関数のオーバーロード
  • Enum
  • STLのコンテナのやり取り
  • pybind11がサポートしているコンパイラ
  • サンプルコード
  • より詳しいPythonとCコードの連携方法を学びたい人は
  • 参考資料
  • MyEnigma Supporters

はじめに

Python Advent Calendar 2016の17日目の記事です。

 

何かのシステムを作る時に、

はじめはPythonでプロトタイプを作り、

pandasで入力データを流し込みつつ、

matplotlibで結果を確認しながら、

システムを作ることが多いです。

 

その後、そのシステムのより最適化するために、

C++に移植したりすることがあるのですが、

システムをいきなりPythonからC++に移植するのではなく、

システムの一部をC++に移植して、

残りのPythonシステムはそのままで実行したい時があります。

これにより、元のシステムからの移植の際に

バグが混入していないかが、確認しやすくなったり、

どの部分をC++に変えることで計算が早くなるのかが

わかりやすくなります。

 

そこで今回は

C++11のコードをPythonから利用できるようにする

pybind11というツールの概要と、

いくつかのサンプルを紹介したいと思います。

 

続きを読む

2011年からのVimのアドベントカレンダーの記事約600件の中のおすすめの記事

目次

  • 目次
  • はじめに
  • Big Sky :: モテる男のVim script短期集中講座
  • Vimステッカーを作ったお話 - Self Reference
  • vim-jpがつないだVimプラグイン開発者とVimパッチ職人、もしくはなぜ最近Vimコミュニティが活発になったのか - Humanity
  • 「Vimを使い始めようと思うんですけど、おすすめを教えてください」 - ぼっち勉強会
  • Macを購入したら絶対に導入したい!私が3年間で厳選した超オススメアプリ10選! - かなりすごいブログ
  • vimrc アンチパターンを自動でチェックする
  • 【Vim入門】ノーマルVimで使えると便利かもなコマンド10つ
  • あんまり見かけない気がする Vim の Tips 11 + 1 選
  • 『実践Vim』を読んで学んだ、おすすめVimデフォルト機能33個
  • 参考資料
  • MyEnigma Supporters

はじめに

Vim Advent Calendar 2016 の 10 日目の記事です。

 

年末になると、

Vimのアドベントカレンダーの記事を読んで、

最新の機能を試してみたり、

使っていないvimrcの機能を削除したりするのが、

自分の中で恒例の年末行事になっています。

 

調べてみたところ、

2011年からVimのアドベントカレンダーが始まっており、

(2012年には、アドベントカレンダーなのに、

何故か一年間記事のリレーが行われています笑)

下記が2015年までのVim Advent Calenderのリンクです。

 

今回、自分のVimの復習のために、

2011年から2015年までのアドベントカレンダーの記事を

流し読みし、その中で新たな発見があった記事を紹介したいと思います。

 

自分のようにVimの基礎から再復習したい人の参考になれば幸いです。

 

続きを読む

制御初心者のための線形・非線形, 連続・離散システム入門

目次

  • 目次
  • はじめに
  • 非線形システムの線形化
  • 連続システムから離散システムへの変換
    • オイラー法
    • Zero-Order Hold: ZOH法
    • Pythonによる連続システムから離散システム変換関数
  • システムの安定性
    • 線形システムの安定性
    • 非線形システムの安定性
  • 参考資料
  • MyEnigma Supporters

はじめに

個人的な感覚ですが、

制御技術を学んでいると、

線形・非線形、連続・離散というのは、

なんとなく理解できますが、

実際に制御システムを設計したい時に、

具体的にどのようにすればいいかというのは、

わかりにくいと感じていました。

 

今回、

実際に制御システムを設計する上で必要な、

線形、非線形、連続・離散システム関連の

基礎的な内容をまとめておきたいと思います。

 

続きを読む