Windowsを使って組み込みっぽい案件をやった話
組み込みっぽい案件とは
ここでの「組み込み」とは「単一の機能を実現する」の意味合いです。
- 単一の機能を実行する
- PCに電源を入れたときに起動し機能し続ける
「何故,DOSなのか」などはout of controlなので聞かないでください。
Intel NUC Celeron搭載 小型PC BOXNUC6CAYSAJR【Win10/ 2GB DDR3L/ 32GB eMMC プレインストール】
- 出版社/メーカー: インテル
- 発売日: 2017/03/08
- メディア: Personal Computers
- この商品を含むブログを見る
Windows Embedded とかIoTとかあるらしいですがよくわからんし時間的な問題でいろいろと諦めました。各所との連携とか難しいですね。 Windows 10 IoT Enterprise/Windows Embedded OSのサポートと供給期間|Microsoft|製品情報|東京エレクトロンデバイスEmbedded Solution
やったこと
そもそもいろいろガバですがこんな感じに進めました。
Pythonスクリプトをbatから実行
Anacondaで環境作ってましたが,単一動作しかしないので結局Anacondaフォルダ以下のpython.exeとScriptsフォルダにパスを通してしまいました。 batファイルは非常に簡単で以下のものを作成します。
@echo off python XXX.py
管理者権限が必要な操作をbatでやる例
netshでIPアドレスを固定化したかったのですがこのコマンドは管理者権限でやる必要があります。 WindowsのnetshコマンドでTCP/IPのパラメータを設定する:Tech TIPS - @IT
こんな感じのbatファイルを管理者権限で実行する必要があるわけです。
@echo off netsh interface ip set address "イーサネット" static 172.16.1.101 255.255.255.0 172.16.1.1
以下のブログにあるように,powershellを使ってやりました。 管理者権限でbatを実行したい時にやッた事
@echo off powershell start-process 実行対象.bat -verb runas
このbatを実行するときには管理者権限が必要とされます。つまり,クリックでOKを選択する必要があることに注意。 電源を入れただけでは実行出来ないのです。
Boot時に特定のプログラムを実行する
「組み込み」なので電源を入れさえすればプログラムが勝手に動き出すようにしてほしいです。
Boot時に特定のプログラムを起動する方法はいくつかありますが,管理者権限の必要不要に応じて2つの方法を紹介します。
管理者権限が不要の時
以下のフォルダにショートカットファイルを置けば起動時に実行してくれるようです。
C:\Users[ユーザ名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Debian系なら.bashrcの他に/etc/rc.localに置くことに該当します。 linux起動時に自動的に実行するコマンド(プログラム)の設定
管理者権限が必要の時
上記の管理者権限をKickするbatファイルを実行するときに必要です。 タスクスケジューラを使うようですが,今回は結局やりませんでした。 管理者権限が必要な常駐アプリはタスクスケジューラでスタートアップさせる
一応メモとして。
その他の作業
UltraVNCを用いたファイル操作
あと,物理的な接続なしでwifiで今後の作業を進める必要があったので,Winscpのようにファイル転送できるUltraVNCというソフトをインストールしました。 UltraVNCでコンピュータをリモート制御する(サーバ編):Tech TIPS - @IT
Windowsの自動更新をOFF
Windows10が勝手に自動更新をかけてきます。組み込みでいきなり例の青画面が続くのは心臓に悪いので確実に息の根を止めます。
IPアドレスを固定化
IPアドレスを固定化します。
感想
もっと賢くできないですか…ね????
MATLABでGPSデータから距離を計算
GPSの緯度経度の行列から移動距離を計算するアルゴリズムがmatlab公式に用意されてないので自分で書きました。 探せばあるのかもしれません。
今回の手法ではヒュベニの公式というのを使います。 詳細な説明等はここのサイトがよいです。
画像も借りてきました。
関数は以下の通り。整備したらGithubにでも投げます。
function D = calcGPS_dist(LON,LAT) len = length(LON); D = 0; for i = 1:len-1 D = D+hubeny([LON(i),LAT(i)],[LON(i+1),LAT(i+1)]); end end function d = hubeny(L1,L2) % input: pair of [LON,LAT] % output : distance [m] % e2 = 0.00669437999019758; a = 6378137; b = 6356752.314140; e2 = (a^2 - b^2) / a^2; mu_y = (L1(2) + L2(2))/2; W = sqrt(1-e2*(sind(mu_y))^2); M = a*(1-e2)/(W^3); N = a/W; dx = (L1(1)-L2(1))/180*pi; dy = (L1(2)-L2(2))/180*pi; d = sqrt( (dy*M)^2+(dx*N*cosd(mu_y))^2 ); end
ハマリポイントは角度をradに変換するのを忘れていたところです。
matlabのコマンドウィンドウでGitを使う
matlabコードをGitで管理していますがコマンドウィンドウからもgitを叩けるのをこのサイト見て知ったのでメモします。
外部コマンドの実行の仕方
じつは”!”を事前につけるとコマンドプロンプトのコマンドが実行できるようです。ipconfigなども打てました。
一連のgit操作
一連のGitの操作に!を前置すれば済みます
!git add . !git commit -m "AutoMaticUpdate" !git push origin master
なんとこれをmファイルでまとめて実行させることもできます。mファイルでシェル芸ができます。
これって脆弱性なんじゃないか…
注意点・エラー
git commitでメッセージを指定しないと通常vim等のエディタが出ますが上記の文字化けと組まれると非常にきついです。メッセージ指定しようね。
gitのversionが古いとpush時に以下のようなメッセージが出ます。(文字化け含む)
fatal: AggregateException encountered. 1 縺、莉・荳翫�繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆縲 bash: /dev/tty: No such device or address error: failed to execute prompt script (exit code 1) fatal: could not read Username for 'https://github.com': Invalid argument
ここの記事にある通り公式から最新のverをインストールすることで解決します。
自動でGitでpushする関数
で,やっぱりこういうのは関数化したいわけで, GitComiiter関数を作成しました。evalを使っている邪悪なプログラムですが引数にCommit Messageを受けて動きます。 なお,デフォルト引数としてMessageがないときは自動的に適当なコメントをつけてくれます。
function GitComiiter(message) if nargin < 1 message = 'AutoMaticUpdate' end !git add . eval(['!git commit -m "',message,'"']) !git push origin master end
脆弱性とかよくわかんないので詳しい方のご指摘・ご助言お待ちしております。
RICOHのTHETA SCを買ってきた所感
ストレスが溜まるとなんかしらのガジェットを買ってしまう病にかかってしまいました。 そしてこれもその成果物です。
RICOH 360度カメラ RICOH THETA SC (ブルー) 全天球カメラ 910743
- 出版社/メーカー: リコー
- 発売日: 2016/10/28
- メディア: エレクトロニクス
- この商品を含むブログを見る
スペック詳細
すでに詳しいことを書いてくれているサイト様がいるので以下を参照ください。 aozora-ref.com
記事作成時点の2018年9月では上位種のTHETA Vまたは,THETA Sというのが出ています。
RICOH THETA V 360度カメラ 全天球 910725 メタリックグレー
- 出版社/メーカー: リコー
- 発売日: 2017/09/15
- メディア: エレクトロニクス
- この商品を含むブログ (4件) を見る
価格比較は以下の様になっています。
- THETA V:5万くらい
- THETA S:3万強
- THETA SC:2万弱
本製品の利点は2万円弱とそこそこの値段で本格的な360°カメラが手に入るという点でしょうか。
公式の写真には以下のようなサンプル画像があります。パノラマ画像である点を除いても現在使用しているiPhoneSEではおそらく撮れないですね。
Milky Way from an Norikura Observatory in Mt. Marishiten-dake, Japan - Spherical Image - RICOH THETA
本製品の利点・欠点
カメラとして見たときの本商品の良い点は, - 撮影者を含めて全員を確実にフレームに収めることができる - 露光やISO等の調整ができる - ダイナミックレンジがそこそこ高い という点です。画素数は控えめですが総じてスマホのカメラで手の届きにくい需要に刺さっているというのが本製品の良い点です。
欠点 - 動画撮影の質が残念 - 本体からスマホに画像を送って確認するのがやや手間 - PCからの制御ができない(追記)
動画や高度なことをしたいとなるとエントリー機であるためスペックの低さが厳しいです。 写真をすぐ確認できないのもちょっと不満ではあります。
余談ですがレンズは結構頑丈で何回か落としたことがありますが撮像で目立った傷は出なかったです。
上位モデルを買うべき理由(追記)
ノリでThetaSCを買いましたがキチンと上位モデルを買うべきだったと反省しています。 理由はUSBを介した動画のストリーム受信(Webカメラとして使うこと)がSCでは対応していないからです。
したがって下の記事の様にUSBカメラのように用いたりが出来なくなっています。 THETA S + Raspberry Pi 2でライブストリーミングしてみた
一応Wifi接続してAPIを叩けば640*480の画像が手に入るらしいのですが,正直使用には耐えない感じがあります。 360度カメラは動的な部品なしに全方位観測できるのでいろいろ応用できそうなのでそういったつもりのある方はなるべくS以上の上位モデルを買うべきでしょう。
マニュアル撮影で夜景をキレイに撮影
オートで某所の夜景を撮影すると以下のようになります。
オートでの撮影Test - Spherical Image - RICOH THETA
手で持っているので少しブレるのとノイズが入ってしまうのがわかります。 そこらのスマホよりはキレイですけどね。
そこでマニュアルモードから露光とISOを調整してキレイにとっていきます。(露光2秒 ISO200)
露光1秒,ISO200 - Spherical Image - RICOH THETA
露光時間またはISO感度の数値を上げることで暗い箇所を明るく撮ることができます。 ISOは平たく言うと電気信号の増幅率です。Nikonの説明がわかりやすくていいんじゃないでしょうか。
ISOは信号を増幅するためノイズが乗りやすくなりますので僕のお気に入りはISOを下げて露光時間で調節する方法です。 風景などの静物を撮る際に非常に綺麗にとれるようになります。
ヨセミテで撮った写真ですがこのときはISOを100にして30秒くらい露光しました。ワクワクしますね。なお車の上で取りました。
Post from RICOH THETA. - Spherical Image - RICOH THETA
相性の良い製品
三脚類
真下と真上以外のほぼ全球を撮れるという特性上どうしても自分の腕や手などが入ってしまうことがあります。景色にフォーカスしたい時など特にそうですが細長い三脚があると良いでしょう。
Smatree GoPro Hero2018/Fusion/Hero6/Hero5,4,3,1/4ネジ穴コンパクトカメラRICOH THETA V/S 対応一脚兼簡易三脚自撮り棒 防水 (QS)
- 出版社/メーカー: Smatree
- メディア: ホーム&キッチン
- この商品を含むブログ (1件) を見る
ケース
普段遣いのケースは付属の布製のもので良いです。耐久性が心配ならメガネケースなどがサイズてきにちょうどよいです。
それでもお金が無限にあればほしいのが耐水ケース。水中の世界を360°で撮るとめちゃくちゃキレイです。南国に持っていきたいくらい。
Okinawa-2 (Using Underwater Housing TW-1) Kiyotaka Kitajima - Spherical Image - RICOH THETA
とんでもなくほしいですが本体と同じくらいの値段するんですよね。タカイヨー
Instaのカメラのケースは7000円なのに…
- 出版社/メーカー: リコー
- 発売日: 2017/11/24
- メディア: Camera
- この商品を含むブログ (1件) を見る
なお,筆者はカバーとして以下のシリコンケースを買いましたが手触りと滑りにくさ改善した以外は特に恩恵を感じなかったので本体が傷つくのを厭わなければまずは三脚を買うのをオススメします。
Aobelieve RICOH THETA S、THETA SC 360度 全天球 カメラ用 シリコン カバー レンズ キャップ 保護 ケース、ブラック
- 出版社/メーカー: Aobelieve
- メディア: エレクトロニクス
- この商品を含むブログを見る
ストラップ
本製品は意外と頑丈ですがそれでもレンズがむき出しですしいろいろと怖いのでストラップなんかをつけておくと良いでしょう。 私も買いましたが落としそうなところでは心強かったです。
- 出版社/メーカー: ハクバ
- メディア: Camera
- この商品を含むブログを見る
でもね,筆者はまずは三脚を(略
所感
都会ではあんまり用途がないですが,旅行で非常に役立つのでなどにぜひ持っていきたいですね。 GrobalWifi等でWifiを借りる際に一緒に借りれるのでそちらの方で試してから見当というのもありです。
要はたーのしー!と。そういうことです。
LogoMakerの無料ロゴ作成サービスが楽しくて30分溶かした話
雑記事ばっか書いてると思われますが,まぁ遊んでいってくださいや。
使用に際する要項などが特にないっぽいのでスクリーンショットで回収しちゃっても良さそうですが,そこは個人の倫理観に任せます。
選択事項は, - ジャンル(Tec向け,子供向け,スポーツ…) - シチュエーション? - 用途(ブログ,名刺用 - ロゴイニシャル などです。
こんな感じにロゴが出来ていきます。
そのうち1つを選ぶとフォントや色等の微調整ができるっぽいです。
なお,画像のダウンロードにメールアドレスを打ち込む必要があるのはちょっと抵抗があるかもしれません。 正方形のロゴ画像だけでなく,各種SNSに合わせたいくつかのパターンを用意してくれるので自作exeソフトのアイコンとかにしても良さそうです。
Texで脚注をつける in 電気学会
電気学会での作法
電気学会では脚注は*か+を使えと言われます。 出展:http://www.iee.jp/wp-content/uploads/honbu/31-doc-honb/50-01-1-0-2.pdf
Latexでこれを実現するには以下の様に書きます。
\renewcommand\thefootnote{*\arabic{footnote}} \footnotetext[注釈番号]{テキスト}
こんな感じになるわけです。
+印にしたければ上の\arabicの前の*を+に変えれば良いです。
また,記号だけにしたければfnsymbolが使えます。 追記:ただし,fnsymbolは環境によって挙動が違うかもしれません。
私の環境ではダガーマークを並べる表記になりました。 以下のように設定すれば5つまで†を並べられます。
\renewcommand\thefootnote{\dag\fnsymbol{footnote}} \footnotetext[0]{†1つ} \footnotetext[1]{†2つ} \footnotetext[2]{†3つ} \footnotetext[3]{†4つ} \footnotetext[4]{†5つ}
Caption に Footnoteをつける
Caption に 脚注を入れるとエラーが出ます。
\footnotemarkというコマンドを使いますが,エラーが出ることがあるので\protectを前置すると良いでしょう。 tex.stackexchange.com
\caption{ここに脚注 \protect \footnotemark} \footnotetext[番号]{文章}
Latexでの引用符の書き方注意
毎回指摘するのも疲れるしここに書いておきます。
Latexでの引用符の書き方
論文のタイトルなどの引用符は表記上は基本的に""(ダブルクォーテーション)を用います。
しかし,Texでそのまま書いてもあんまり良い結果になりません。 正しくは`(@のところにいるやつ)と’(7のところにいるやつ)を使います。
"Smart Electricity Meter Data Intelligence for Future Energy Systems: A Survey"
ではなく,
``Smart Electricity Meter Data Intelligence for Future Energy Systems: A Survey''```
と書くのです。
結果はそれぞれ と のようになります。
余談
Texを使っているならBibtexを使わない手はないのでよっぽど小規模な文書出ない限り出番がないかもしれませんね。 まだの人ははやくMendeleyとかと連携してBibtexを使いましょう。