理科系の勉強日記

Linux/Ubuntu/Mac/Emacs/Computer vision/Robotics

プログラミング

Karabiner-ElementsでVSCodeのキーバインド変更メモ

背景 VSCodeの素晴らしい拡張Awesome Emacs Keymap marketplace.visualstudio.com でVSCode上でもEmacs likeな操作感をエンジョイしています。ありがとうございます。ただ、MacでMetaキーがoptionに割り当てられていて微妙に押しにくいのと、他のOSで開発す…

Juliaで主成分分析

周りの人と読んでいる本(ベイズ推論による機械学習)の影響でJuliaをさわってみました。 まだあまりむずかしいことができないので、操作に慣れるために主成分分析をしてみました。 (主成分分析を一発で実行する関数もあるかもしれませんが、練習なので教科書…

セルオートマトンによる渋滞シミュレーション

はじめに 年末年始に渋滞学という本を読んだ。 車の渋滞だけではなく、緊急時の避難や蟻の行列、通信についても書かれていて勉強になった。渋滞学 (新潮選書)作者: 西成活裕出版社/メーカー: 新潮社発売日: 2006/09/21メディア: 単行本購入: 8人 クリック: 1…

シェルスクリプトで可変長データを読み取る

はじめに こんなデータに出くわした。data.txtとする。 1, hoge, foo, bar, piyo, [ID: 1; a; b; c; d;ID: 2; a; b; c; d;ID: 3; a; b; c; d;ID: 4; a; b; c; d;ID: 5; a; b; c; d;] 2, hoge, foo, bar, piyo, [ID: 1; a; b; c; d;] 3, hoge, foo, bar, piyo…

jediによるpythonコード補完 with Emacs on Windows

背景 年始なのでEmacsの設定を見直すことにした。大学時代に作った環境をずっと使っていたが、あれからpackage.elによるパッケージ管理が主流となり、自分の環境が時代遅れのものとなっていた。(auto-completeよりはcompany-modeがいいとか)pythonのコーデ…

線分と平面の交点を求める

線分の両端点(a, b)と平面の法線ベクトル(nv)と平面上の任意の点(p)から、線分と平面の交点を求めるC++のプログラム。線分abと平面の交点が線分abを内分する点となることから交点の座標を計算する。 #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <string> using namespac</string></opencv2/highgui/highgui.hpp></opencv2/opencv.hpp></iostream>…

LabelingクラスをOpenCVで利用

学生時代にも一度お世話になったラベリングクラスhttp://imura-lab.org/products/labeling/を久々に使いました。 OpenCVで使える関数を作ったのでメモ。2値化が大津の手法なので、琵琶湖の画像にしてみました。 素敵な写真はこちらから使わせていただきまし…

RANSACで多項式推定

RANdom SAmple Consensus:RANSACは、外乱を含む観測値から数学的モデルのパラメタを推定する手法のひとつである。インターネットで調べれば文献が出てくるが、サンプルプログラムを調べてみるとOpenCVのHomography行列の推定か直線の推定がおおいので、多項…

視差画像とV-disparity

背景 ステレオ視差画像から平面を抽出する一つの手法として、視差画像をV-disparity画像に変換するというものがある。今回は視差画像からV-disparity画像への変換の練習をしてみる。 結果 試みに視差画像のy方向にノイズを加えてみた。その結果がV-disparity…

sdfファイルをrviz上のRobotDescriptionで表示する(後半)

実行環境 Ubuntu14.04 Gazebo 2.2.3 sdf 1.4 ROS indigo (そろそろGazebo7に戻りたい…) 背景 前半編でsdfからurdfを生成してrobot_descriptionに登録する方法を学んだ。 今回は、collada(daeファイル)をrvizで見られるか確認ついでに、sdfからurdfを変換す…

sdfファイルをrviz上のRobotDescriptionで表示する(前半)

実行環境 Ubuntu14.04 Gazebo 2.2.3 sdf 1.4 ROS indigo 背景 sdfを使ってモデルを作ったのにrvizのRobotDescriptionがurdfしか対応してないと知ってショックを受けた。 調べてみると、pysdfというROSのパッケージを使ってsdf to urdfの変換ができるようだ。…

ATAM install on Ubuntu 14.04 LTS

基本的には公式[1]の通り。ただし、windowsでのインストールのみなので、メモを残す。まずOpenCV3.0を入れる。ROSと一緒に入ったOpenCVが2.4だったので、ソースを落としてきてcmakeした。 ググったらインストール方法はでてくる[2]が、non-freeをコンパイル…

ardrone simulatorでPTAM

環境: VM fusion 7 Ubuntu 14.04 LTS ROS IndigoROSのインストールについては公式参照。ardrone関係については、基本的にはここをみてインストールした。 http://wiki.ros.org/tum_ardronecatkinなので(?)、cloneしてきてcatkin_wsでcatkin_makeを繰り返…

awkでユーザ定義関数

awkには絶対値を返すabs()関数がないようだ。 ユーザ定義関数は以下のようにして定義可能。 seq 1 10 | awk '{print abs(-$1)} function abs(x){return (x>0)? x:-x}

Perlの2次元配列メモ

Perlで二次元配列を動的に生成する場合を考える. for( $i=0; $i<200; $i++){ for ($j=0; $j<@data1; $j++) { $data2[$i][$j] = $data1[$j]; } } このように書くだけで,動的に二次元配列とすることができる.ここで $j<@data1 は,@data1の要素数だけループ…

matlabのsparse行列

そもそもsparse行列の意味をよく理解していなかった.Wikipediaで調べたところ以下の様な解答を得た. 疎行列(そぎょうれつ)とは,成分のほとんどが零である行列のことをいう。スパース行列とも言う。ほとんどってなんだろう.過半数?matlabではsparse関…

Emacs Lispプログラミング

Emacsの関数を作る練習 (defun is-buffer (buffer) "practice of elisp" (interactive "BAppend to buffer:") (if (get-buffer buffer) (message "Exist") (message "Does not Exist") ) ) 引数に指定するバッファが存在するかどうかを判定する関数である. …

git

gitのことはここを見ればいいよ. http://r7kamura.hatenablog.com/entry/20110215/1297771813

WindowsでOpenCV2.20のcvCaptureFromAVIにバグ

タイトルの通りである.回避方法がわからなかったのでOpenCV2.30に乗換え.

macにportでboostをインストール

MacbookAirにboostを入れて外でも作業が出来るようにした.web上で仕入れた情報をもとにして $sudo port -d selfupdate $sudo port install jam $sudo port install boostとしたところ,下2つが一瞬で終わってしまった. 時間が掛かると言われていたが,バイ…

KLT tracker

KLT trackingの実装を拾ってきてmake. gcc -O3 -DNDEBUG -o sample02 sample02.cpp -L. -lklt -L/usr/local/lib -L/usr/lib -lm `pkg-config --cflags opencv` `pkg-config --libs opencv`でコンパイルできる. -L ./ -lkltを書いてなくてこけた.klt/の中…

vectorのsort

#include <iostream> #include <vector> #include <algorithm> #include <functional> int main(){ std::vector<int> data; for(int i=0; i<5; i++) data.push_back(i); // 昇順 std::sort(data.begin(),data.end()); //std::sort(&data[0],&data[5]); // 降順 std::sort(data.begin(),data.end(),std::grea</int></functional></algorithm></vector></iostream>…

メモ

void func(char* name[256], ... ){ ... string name_str = "hoge"; *name = (char*)(name_str.c_str());// 無理やり } c_str()はconst char*を返す. char*にstringをコピーしたい場合は一旦別の領域にコピーする. char *ch; string str = "ABC"; // 長さ…

Perl勉強メモ

第一歩 perl -e "print 'Hello world!';"'-e'オプションは""内をperlスクリプトとして実行する.以下のようなhello.plというファイルを用意して # hello.pl print "Hello World!! \n"; ターミナルで以下を実行. perl hello.pl 基本 $xx = 1; $yy = 3; $zz =…

OpenCVメモ

inline unsigned char getPixel(IplImage *image, int x, int y, int index) { return (uchar)image->imageData[y*image->widthStep + x*image->nChannels + index]; } IplImageの任意の画素にアクセスする関数.

Emacs設定ファイル

Emacsメモ 2012.03.02段階でEmacsに導入しているパッケージや設定 Undo-tree(パッケージ) C-x u で右側のバッファに入力の履歴をツリー状に表示してくれる. C-p, C-n, C-f, C-bで移動でき,qでバッファを閉じる. 便利だが少し動作が重い. ダウンロード…

マンデルブロ集合

突然マンデルブロー集合を図示したくなったので暇つぶしに. マンデルブロー集合とは という漸化式において,複素数Znがn→∞で発散しないような複素数cのことである. マンデルブロー集合はガウス平面上でフラクタルとして描画され,相似形の模様が様々なスケ…

CvMatについてメモ

cvCreateMat()とcvMat()の違い. CvMat* matrix1 = cvCreateMat(3, 3, CV_64F); double a[9]; CvMat matrix2 = cvMat(3, 3, CV_64F, a); 配列の先頭アドレスを渡せるのがcvMatということだった.配列の値を操作するだけでmatrix2の値も変わるので使いやすい…