Numpy Center of Mass,行列の重心点を求める
簡単なプログラムですがこれがなかなか見つからないので残しておきます。
重心点は中心からの距離を測っています。
中心点から見た重心
def CenterOfGravity(mat): hei,wid = mat.shape Tile=np.arange(wid,dtype=float)-(wid-1.0)/2.0 Tx = np.tile(Tile,[hei,1]) # Ty = Tx.T Sum = np.sum(mat) Ax = np.sum(mat*Tx)/Sum Ay = np.sum(mat*Tx.T)/Sum return [Ay,Ax]
端からみた重心(0スタート)
def CenterOfGravity(mat): hei,wid = mat.shape Tile=np.arange(wid,dtype=float) Tx = np.tile(Tile,[hei,1]) # Ty = Tx.T Sum = np.sum(mat) Ax = np.sum(mat*Tx)/Sum Ay = np.sum(mat*Tx.T)/Sum return [Ay,Ax]
メモ
np.arrangeで0,1,2,,,みたいな行列を作成。
np.tileで並べる。
補足
コメントより。
2値の場合の重心なら以下のようによりシンプルに求めることができます。
def getCenter(binimg): ys, xs= np.where(binimg == 255) x = np.average(xs) y = np.average(ys) return [x, y]
DesignCutsのデザインセットを購入してみた
注意:当記事にはクリスマスを想起する表現が多々含まれています。耐性の無い方や思う所のある方は引き返してください。
フォント&デザインセットがお得
セールという言葉に弱いおじさんなので以下の記事に興味を持ちました。
coliss.com
買った
なんとなくクレカ情報を入力したくなかったのでPaypalに登録してそこを介して支払いました。
ZIPが解凍できない問題
実はZIPのファイルの容量がある程度大きくなると(4GBくらい?)ZIP64という形式になるので,
Lhaplusなどでは解答できない問題があります。
大容量のzipを展開(解凍)できない bad CRCなどのエラーが発生する場合の対処法 - Qiita
結局どう使うのか
とりあえず買って満足しましたが使い方がわからないものもちらほら。
分かった順に使用感を書き足していきます。
ていうか多すぎなので誰か用途一覧を作って。
画像素材系 : PNG JPG
画像の素材系は主に背景に用いるようなJPGと透過素材のPNGに別れます。
PNGは透過情報があるため例えばもらった画像にちょっとだけ書き足したりができます。
Windows10のDefaultではGIMPが使えますが技術屋ならPPTやIncscapeでお絵かきができるでしょう。
例:「Artistmef」雪の透過画像
例えば雪の透過画像があったりします。
- 私が作ったクソポスター(ちなみに集まった人はいない)もこのように情緒ある感じに。
例:「7th Avenue Designs」クリスマスっぽいかわいい背景画像
背景画像の幾つかはきちんと縦横がループする仕様になっているので適当な箇所で切り抜いてそれをコピペで並べると
マスキングテープ風の帯がつくれます。
フォント系 .otf .ttf などなど
フォント系はTTFやOTFというファイルで入っています。OpenType,TrueTypeなどの訳語です。
導入の方法は簡単でファイルを右クリックして「インストール」をクリックするだけです。
とりあえず,幾つかのフォントの存在を確認しています。
neublaでさっきの画像を加工するとこんな感じ
背景:「Greta Ivy」
フォント: 上から「neubra」,「Brixton TC」,「Spectrum」
完全に素材に物を言わせて作ってもそれっぽい感じになります。
なお,このカードのEventは実際に開催されません。かなC。
イラストレータ用ファイル? : .ai
aiファイルはイラストレーターで使える拡張子のようですがAdobeReaderでも開けるそうです。
aiファイル イラストレータがなくても開く方法 - NAVER まとめ
PPTに変換する事もできるっぽいですがイラレ使えという結論になりそう。
illustratorのファイルをPowerPointに編集可能な状態で変換する方法
「Everyday Tuesday」
毎日が火曜日。キツイっすね。
一応Adobeで開けますがこの形だとちょっと使いづらいと思います。
[F: id: ossyaritoori: 20171216170535p: plain]
Photoshop用ファイル:PSD
「Offset」や「Original Mockups」のなかにはいってます。未確認。
どうもGIMPで開けるっぽいです。
ferret-plus.com
未調査:LRTEMPLATEファイル
「BETO」の中に入っているのがこれになります。なんだこれ?
メモ
ペンギン好きのための素材「Marish」
かわいい。
Slackのプロフィールにした。
Kicadを使ってコネクタ変換基板を作りたい(導入編)
いつか触ろうと思っていたKicadがどうも必要になったぽいので記事書きます。
現在未完。
回路作成ソフトについて
ユニバーサル基板で細々作るのもいいですが見た目の綺麗さや配線のめんどくささを加味すると回路作成ソフトに手を出す理由は十二分に存在します。
個人でも使えるプリント基板業者 - NAVER まとめ
今や基盤作成を外注して届けてくれるサービスも多々あるのでこれらと連携するイメージです。
自分の中では主に2種類が有名なのかなって思ってます。
作りたい物
3M社の100極コネクタからそれぞれ別々の信号線を取り出してDsub15ピンやBNCケーブルに出力したいです。
弊研究室では伝統的に空中配線とかユニバーサル基板を介して作成とかやってましたが100ピンは流石に無理&保守性を考えて基板実装を目指します。
必要物
Kicadをインストールしましょう。
素子の情報(フットプリントとか?)
一般的な素子はKicad内に既にデータがありますが,
一般的でない素子の場合は自分で作る必要があります。
作り方はこちら。
KiCadの回路記号&フットプリントを作る方法|一日体験!プロの基板作り|記事サポート | トランジスタ技術
ただ,既に有志が作ってくれている場合も多く,例えば僕の場合は探せば見つかりました。
102A0-6212PC - 3M - PCB Footprint & Symbol Download
やったぜ。
Library Loader からモデルをダウンロード
Library Loaderというソフトをダウンロードします。
PCB Library Modelの使い方
PCB Part Library 使い方 (KiCad編)
このサイトの流れに沿って行きます。
ただ,ここにあるようにCドライブの直下に作ると権限のないソフトがファイルを作成できなくなるので
Documentの何処かに SamacSysのLibフォルダを作ると良いです。
Kicad流れ
大まかにはこんな感じでしょうか。進んだら記事書きます。
- 回路図作成 結線
- 部品の配置
- 自動配線
- 指定の書式で出力
自動配線ツール
さて,下のような部品群になりましたが正直いちいち配線したくないです。
こういうのはプログラミングの出番でしょう?
ということで自動配線ツールが次のサイトで紹介されています。
kerikeri.top
MATLAB グラフの色をうまいこと調整する関数
MATLABのplot関数で作成した図の色にいつも困っているので関数作成。
デフォルトのr g b c m y などで決める色はいつも微妙に感じるのでそれらを変えてみようという試みです。
テスト用データ作成
これをプロットしていきます。
t = 0:0.01:3; y = [sin(t);sin(t+0.1);sin(t+0.2);sin(t+0.3);sin(t+0.4);sin(t+0.5);sin(t+0.6);sin(t+0.7)];
Defaultカラー抽出
MATLABのデフォルトカラーはそこそこいい感じです。
RGB values for 2014b default colors - MATLAB Answers - MATLAB Central
次のコマンドでデフォルトカラーを確認できます。
get(groot,'DefaultAxesColorOrder')
先程のデータをプロットしましょう。
後ろの方は微妙ですが最初の4つくらいは普通に使える良い色合いだと思います。
RGB値は以下の通り。
0 0.4470 0.7410 % 青 0.8500 0.3250 0.0980 % 赤 0.9290 0.6940 0.1250 % 山吹色 0.4940 0.1840 0.5560 % 紫 0.4660 0.6740 0.1880 % 緑 0.3010 0.7450 0.9330 % シアン 0.6350 0.0780 0.1840 % 茶色
どんな色がいいか?
さて,そのうちどのような色を用いればいいかですが,matlabの設定はまぁ悪くないかなぁと思っています。
青b,赤r,黄色y,後紫pは採用かなぁ。緑gはちょっと考えます。
あと,使えそうな色はオレンジoでしょうか。
どんな色がいいかとかは論文が幾つかありますがこんなの読んでいる場合じゃねぇ。
http://www.perceptualedge.com/articles/visual_business_intelligence/rules_for_using_color.pdf
色変更
plotする時にRGBで色を指定するには以下のように書けばよいですが,正直言ってこんなの絶対書きたくない。
plot(t,y,'Color',[1., 0.5, 0.])
一方で,Figureハンドルを入手していれば次のように代入形式で後付けで色を変更できます。
自動化が出来そうな兆しが見えてきましたね。
fig=plot(t,y) fig(5).Color = [0,0.7,0] fig(6).Color = [1., 0.5, 0.]
これで緑を強めにしてオレンジを追加しました。
後は関数化するだけや。
http://oxon.hatenablog.com/entries/2010/11/19
自動色つけ関数
仕様:グラフハンドルと色ハンドルを同時に渡してその色に対応するようにグラフを変えるsetfigcolor()関数を作成。
setfigcolor(fig,'gbryo')
このように入れたい色を十番通り文字で指定すれば次のように変更可能ということ
なお,2つ目の色指定を全くしなければ関数内部で自動設定したデフォルトの色になります。
関数本体
function setfigcolor(hfig,colors,presetcolor) glen = size(hfig,1); colorcode = ['b';'r';'y';'p';'g';'o';'c';'k']; if nargin == 2 presetcolor = [0 0.4470 0.7410; % 青 0.8500 0.3250 0.0980; % 赤 0.9290 0.6940 0.1250; % 山吹色 0.4940 0.1840 0.5560; % 紫 0.4660 0.6740 0.1880; % 緑 1. 0.5, 0. ; % Orange 0.6350 0.0780 0.1840; % chacole 0 0 0]; %black elseif nargin == 1 presetcolor = [0 0.4470 0.7410; % 青 0.8500 0.3250 0.0980; % 赤 0.9290 0.6940 0.1250; % 山吹色 0.4940 0.1840 0.5560; % 紫 0.4660 0.6740 0.1880; % 緑 1. 0.5, 0. ; % Orange 0.6350 0.0780 0.1840; % chacole 0 0 0]; %black colors = colorcode'; end len=length(colors); % set colors for i=1:min(glen,len) n = find(colorcode== colors(i)); hfig(i).Color = presetcolor(n,:); end end
色盲用colormap
[ Wong,2011 ]の論文に依ると次のカラーマップが色盲用には見やすいようです。
Points of view: Color blindness | Nature Methods
presetcolor = [ 0,0,0; 230,159,0; 86,180,233; 0,158,115; 240,228,66; 0,114,178; 213,94,0; 204,121,167]/255.0;
plotは以下のようになりますが,黒がTopなのは賛否両論ありそうです。
順番変えてもいいのかなぁ。
USB英字キーボードを英語配列へと変更
HHKBのLite2を買いました。
PFU Happy Hacking Keyboard Lite2 英語配列 USBキーボード ブラック PD-KB200B/U
- 出版社/メーカー: PFU
- 発売日: 2001/08/01
- メディア: Personal Computers
- 購入: 2人 クリック: 185回
- この商品を含むブログ (28件) を見る
思ったよりずっしり重いですがうち心地はとても良いです。キーが少ないのも英字配列にしている限りは気にならないです。
英字配列キーボードとして認識
Windowsにそのまま挿すと日本語配列として認識されるので幾つか物理的に召喚できないキーが生じます。
¥とか打てないのでTexでもTerminalでも困りまくるため英字配列として読み込みます。
ここを参照して直しましょう。
d.hatena.ne.jp
変更箇所
この後再起動。
Delete キー交換
流石にBackSpaceを多用するのでDeleteKeyには引っ込んでもらいました。
タイプミスが減ったらもとに戻すのを考えます。
MATLAB 位相遅れなし微分 (4次精度)
メモ。
導出はTaylor展開してtにh,2hを代入して解きます。
4次精度の微分はこう。
(f(x - 2h) - 8 f(x - h) + 8 f(x + h) - f(x + 2h))/(12h) + O(h⁴)
function V = deriv4(Etime,Epos) em2 = Epos(1:end-4); em1= Epos(2:end-3); %Epos(3:end-2) ep1 = Epos(4:end-1); ep2 = Epos(5:end); V = ( 2/3*(ep1-em1)+1/12*(em2-ep2))/(Etime(2)-Etime(1)); end
Web文献
ヤホー
1階微分の4次精度中心差分の導出を教えて下さい df/dx=の形でお願いします ... - Yahoo!知恵袋
丁寧なサイトだが正負が違う。訂正をお願いしたいが連絡が取れないのがな。
4次精度・6次精度の微分公式の導出とFORTRAN90を用いた数値微分
jetson TX2 のセットアップ
私費で買いました。公費とか研究費でお願いしても良かったのですが,
学生だと安く手に入るしこの際私物に買っちゃおうと思って買いました。Switchを買う資金が消えました。
最小セットアップ
必要と思われる周辺環境
- HDMI入力を受け付けるディスプレイ
- マウス,キーボード
- USBハブ
- 箱(むき出しは怖いため)
特に注意するのがディスプレイまわり。
jetsonの出力はHDMIのみなのでHDMI入力を受け付けるディスプレイが必要です。
また,HDMI出力はそれほどパワーが無いので質の悪いケーブルや変換ケーブルは出力ができないという問題を抱えている場合があります。
変換ケーブルを使う場合は外部電源で信号強度を増幅できるものにすると良いでしょう。
箱は入っていたダンボール箱とクリアファイルで改造してなんとかしました 。
一応電子部品が詰まっているのでむき出しは辞めておいた方がいいでしょう。
ぼくのかんがえたさいきょうのかんきょう
据え置きで使わない場合ポータブルディスプレイが良いです。この場合電源はUSB規格の5Vで駆動できるかバッテリー駆動ができるとかなり重宝するでしょう。
Diginnos DG-NP09D 8.9インチ バッテリー内蔵モバイルモニター 最新ファーム適用モデル
コスパ的にこれがほしいです。
AOC 15.6インチ USB接続 モニター ( 1366 x 768 / TN / 8ms ) E1659FWU-GP4R
USBバスパワーならこいつ。
TechRise金メッキ高速1080P HDMI オス to VGAメスビデオ変換アダプタケーブル オーディオとマイクロUSBケーブル付き
ケーブルは外部電源を使用可能に。
GPUボードとしての動作をするための準備
まずは公式の手順をきちんと確認しましょう。
NVIDIA JetPack Documentation
まぁだいたいここの通りに動くつもりです。
JetsonTX2初期セットアップ(Jetpack)からサンプルのコンパイルまでの手順 - Qiita
Jetpackを起動
chmod +xを用いてスクリプトを実行可能にします。
ダブルクリックするとエディタが起動して面倒なので気をつけて。
chmod +x JetPack-L4T-3.1-linux-x64.run ./JetPack-L4T-3.1-linux-x64.run
途中までぽちぽちすすめていきます。
OSをflashしてインストール
今回はFlashing OSの設定を変更せずに行いました。
途中でインストール方法の2択を迫られます。私は前者を選択しました。
次に,以下の画面が出ます。これはjetsonと同じネットワークに乗っているデバイスを選ぶ必要があります。
ifconfigを打って確かめましょう。
ここで付属のUSB-MicroUSB変換ケーブルを用います。
1. Jetson本体の電源を落とし,電源プラグも抜く。
2. USB-MicroUSBを接続する。
3. 電源を入れ,リカバリーモードにするため電源ボタンまわりで特殊な操作を行う。
リカバリー動作は
〇〇〇◎ 電源ボタンを押す。 |
◎〇◎〇 リカバリーボタンを押しながらリセットボタンを2秒押す。 |
〇〇◎〇 リセットボタンを離し, |
〇〇〇〇 リカバリーボタンも離す。 |
4. USBが繋がっているUbuntu側でlsusbを打ってNvidia CorpとしてJetsonTX2が認識されていることを確認。
5. 先程の黒いターミナル画面へ行きEnter。Jetsonが起動する。(ケーブルは抜かない!!)
全体で5分に満たないです。
最終的に
Finished Flasing OS Determining the IP address of target...
と出ればOSの更新は完了です。計3GBくらいです。
次にjetsonにいろいろ入れていくのですがこの際にJetsonのIPがわかっている必要があります.
有線接続の場合はそのまま実行できるかとおもいますが,無線の場合は接続し直すという作業が必要なのでSecond Challengeが必要でした。
一旦プログラムをCtrl+Cで停止させます。
jetsonTX2側の設定(2回目の実施)
インストーラを実行します.2回目です.
OSに変更を加えず?にインストールを行うため下の手順に従うのが良いでしょう。
NVIDIA Jetson TX2を買ったのでセットアップ - パン屋になりたい
以下の画面を選択するときにFlashing OSという箇所を「no action」へと変更します。
ifconfigで調べて実行しましょう。
接続が完了したら後は放置です。ケーブルはOSを入れるときだけっぽいので抜いてもいいんでしょうが,通信が始まっているときに抜く自信がなくて結局つなぎっぱにしました。
反省
VisionWorksというソフトをインストールする設定をcheckしたためインストールに長い時間をかけすぎました。大体2時間強かかっています。
VisionWorks | NVIDIA Developer
みてみたところそんなに必須でもなさそうなので要領の限られているJetsonではこういう不要なパッケージは削除してよかったでしょう。
トータルで10.5GB/27GB うーんキツイ。
この後,ROS周りで2Gくらい,OpenCV3.Xの実行ファイル群で1G,カーネルのコンパイルで1G~は最低で食うので本当に余裕がないですね。
評価ボードから外さない用途ならSSDを買ってきてその上にもう一度環境構築しても良さそうです。
カーネルの変更
Lidarセンサの為にカーネルの変更を後で試そうと思います。
こういう重大な変更は先にやっておくにこしたことないでしょう。
ossyaritoori.hatenablog.com
RPlidarを用いるために,
CP210xまたはC2102ドライバを入れます。
その他のドライバに関しては動画になんとなく沿って入れているので必須か?と言われるとそうじゃなさそう。
有志のツールを用いてカーネル修正
2017年11月現在ではTegra 28が最新ですので以下のページに準拠します。
Build Kernel and ttyACM Module – NVIDIA Jetson TX2 | JetsonHacks
初めてやる方は「必ずYoutubeの動画を見ながら」作業しましょう。
英語を読まずに適当にコマンドだけホイホイ入力しても意味が無いので。
ダウンロードとconfigの変更
git clone https://github.com/jetsonhacks/buildJetsonTX2Kernel.git cd buildJetsonTX2Kernel ./getKernelSources.sh
この後,次のような画面が開きます。
[:w=500]
ここで追加モジュールを選択してチェックを入れます。
1つ目
「General Setup」から「Local version」をダブルクリック
- jetsonbot-v0.1と入力。
3つ目
同様に検索窓で「CH341」を検索。
出て来るものにチェックを入れる。
4つ目
CP210xのドライバを入れます。
同様です。
カーネルのmakeとコピー
./makeKernel.sh
と打ってしばらく待ちます。長いです。
終わった後に
./copyImage.sh
とうってmakeしたファイルを適当なファイルへとコピーします。
なお,この行程で追加で5GBくらいの容量を食います。うげぇ。
/usr/src以下にこれに使ったソースがあるので適宜削除していいそうな。
/usr/src/kernel/kernel4-4
と/usr/src/sources等を他のUSBに移しました。
これで3GB くらい節約できます。
パスワード変更
sudo passwd
で管理者のパスワードを変更可能です。
私はよく使うアレにしました。(メモ。本当はよくないがデフォルトよりマシでしょう)
Rebootしたらこの設定は消え失せました。デフォルトのpassから変更できないようです。
https://devtalk.nvidia.com/default/topic/1017208/jetson-tx2-password/?offset=1
リモートデスクトップ有効化
xrdpを採用。
Windows10からUbuntu16(jetsonTX1)へとリモートデスクトップ接続 - 粗大メモ置き場
必須セットアップのお供に。
リモートデスクトップのUbuntuのTab補間を有効化 - 粗大メモ置き場