2014年12月27日土曜日

ブログにソースコードをのせる

ブログにソースコードを載せてみたかったりするので少し練習です。
#include <iosteram>
int main(){
    return 0;
}
こんな感じで載せられますね。 Syntax Highlighter Scripts Generatorを使ってスクリプトをテンプレートにコピペするだけ! 楽ちんですね(^_^) 今後なにかかければいいかな...。 

ではでは(・∀・)ノ

2014年9月20日土曜日

Ubuntuでdebファイルの依存関係をどうにかしたいときの話


久しぶりの更新です。今日は少し便利なコマンドを紹介します。

Ubuntuを使ってるとdebファイルからインストールしたい時って有りますよね。
いざやってみると"○○はxxに依存します"と言われて色々とインストールしないとダメなときがしばしば。
むむむ!っとapt-getでちまちま入れるのもいいですがそんな時は"gdebi"を使うと便利です。これはdebファイルの依存関係を確認して必要な物を一緒にインストールしてくれます。使うにはgdebiをapt-getします。

$ sudo apt-get install gdebi

インストールしたら使ってみましょう。
例えば、Linuxで使えるEvernoteの非公式クライアントソフトの"NixNote"をインストールしてみます。
URL: http://en.sourceforge.jp/projects/sfnet_nevernote/

$ gdebi nixnote-1.6_i386.deb

これだけです。楽です。

とまぁそれだけなんですがw
少しでも快適なUbuntuライフを!

そういえばJetsonでもPCLは使えました!

ではでは(・∀・)ノ

2014年6月15日日曜日

Jetson TK1がやってきた!〜ROS編〜


今回はJetson TK1にROSを導入していきましょう.
基本的にはROSのサイト(http://wiki.ros.org/indigo/Installation/Source)の手順で入ります.
ちょいちょい違うところがありますもでそのへん気をつけつつ.

ちなみにソースからコンパイルします(Installing from source).

全体的に時間かかります.とくにコンパイル.放置が良いかも笑
一応universeのリポジトリが使えるかの確認ということで
sudo apt-add-repository universe

all enable的なこと言われればおっけー.
で,ROSのリポジトリを追加します.

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -

キーを入れたらリポジトリをアップデートします.

sudo apt-get update

ここからインストールに入ります.
まずはビルドに必要なものを入れます.

sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential

sudo rosdep init
rosdep update

catkinのワークスペースを作成してソースファイルをとってきます.

mkdir ~/ros_catkin_ws
cd ~/ros_catkin_ws
rosinstall_generator desktop_full --rosdistro indigo --deps --wet-only --tar > indigo-desktop-full-wet.rosinstall
wstool init -j4 src indigo-desktop-full-wet.rosinstall

ここで/ros_catkin_wsにsrcってディレクトリができてますが,コンパイルができないパッケージがいくつかあります.
コンパイルできないパッケージをゴミ箱へポイ!
捨てるパッケージは以下.そのうちインストールできるようになるかもしれないけど,とりあえずいらなそうだし捨てる!笑

gazebo_ros_pkg
metapackage/simulators
pcl_conversions
perception_pcl
roslisp
rviz
visualization_tutorial
rqt_robot_plugin/rqt_rviz
robot_model/collada_urdf
robot_model/collada_parser
image_pipeline/depth_image_proc

捨てたら↓のコマンドでディペンデンシー関係を一気にインストール.
rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r

終わったらopt/ros/indigoにインストールしたいのでディレクトリを作ります.

sudo mkdir -p /opt/ros
sudo chmod a+w /opt/ros

で,コンパイルします.ここはかなり時間がかかります.

./src/catkin/bin/catkin_make_isolated —install —install-space /opt/ros/indigo

コンパイルが終わったらパスの設定.

echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc

roscoreコマンドで動けばインストール完了!


パッケージ消さなくてもコンパイルできたよ!って人がいたら是非コメントください!!
ご教授願います!笑

以上ROSインストール編でした.

ではでは(・∀・)ノ

<おまけ>
IP固定するとインターネット繋がらん!的なのになったのでIP固定の方法を書いておきます.

sudo vim /etc/network/interfaces
中身はこんなかんじに(自分の環境に合わせて変更してください)
_____________________________
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.111
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.254
_____________________________

で,DNSの設定
sudo vim /etc/resolv.conf
中身は↓ 好きなDNSサーバを書く.
nameserver 8.8.8.8

でリスタート.これでブラウザからつながります.
sudo /etc/init.d/networking restart

下のようなコメントが出てきて,pingができないときの対処法.
Ping: icmp open socket: Operation not permitted

sudo chmod u+s /bin/ping
でおっけー.

2014年6月14日土曜日

Jetson TK1がやってきた!〜SSD編〜


前回はOpenCVのビルドとかの話でしたが,今回は組み込みならではのストレージの少なさを解消しましょう.(ROSとかもインストールするし...^^)

てことで,"home","opt"のディレクトリをSSDに移動させちゃいましょう!

まずはSSDをフォーマット.
今回はubuntuのgpartedをつかってフォーマットしていきます.
gptのパーティションテーブルでext4でフォーマットします.

手持ちのSSDが120GBだったので,"home"に90GB,"opt"に30GBを割り当てます.
なのでパーティションは2つ.
それぞれラベルをつけましょう."home"用に"datahome","opt"用に"dataopt"としました.
このラベルをつけると後々fstabを書くときに楽になります^^

フォーマットができたらJetsonにSATAでつなぎます.
そしてfstabを書き換えてデフォルトでマウントするようにします.

sudo vim /etc/fstab

中身はこんな感じ.
LABEL=datahome /datahome ext4 defaults, 2 0
LABEL=dataopt /dataopt ext4 defaults, 2 0

書いたらrebootしてマウントします.
ubuntuが立ち上がったらマウントできてるか確認(マウントできてないと起動の時点で怒られるから,立ち上がれば概ね問題なし).

次はデータをコピーしていきます.て言ってもそんなにやることはないけど...w
マウントしたSSDにコピー.

sudo cp -a /home/* /datahome
sudo cp -a /opt/* /dataopt

optのコピーの時にファイルがないっていわれるかも.ないならないでokだと思います笑
コピーできたら一応権限とかの確認.

ls -ld /home
ls -ld /datahome
ls -ld /opt
ls -ld /dataopt

全部一緒ならおっけーです.

で,もっかいfstabの書き換えをします.この時にそれぞれ"home","opt"として読み込ませるようにします.

sudo vim /etc/fstab

中身は↓
LABEL=datahome /home ext4 defaults, 1 2
LABEL=dataopt /opt ext4 defaults, 1 2

注)ここ慎重に.間違えると起動しなくなるかも知れません!

で,起動した時にディレクトリ名が被らないように変更します.
それぞれ,適当な名前に変更.

sudo mv /home /home_old 
sudo mv /opt /opt_old 
ちなみに名前変えるといろいろ使えなくなる可能性有りなので,最後に書き換えましょう(記述の順にやってけば最後のはずだからあまり気にしなくてもいいかも).

で,rebootします.これでデスクトップが立ち上がればおっけーです!!
それぞれのディレクトリを確認しましょう.容量がちゃんと割り当て通りかも確認しておきましょう.

That's all:-) 

しばらく使って異常なさそうなら,"home_old","opt_old"は消しておきましょう.

これで容量が増えてROSのインストール準備完了!!

画像とか一切なくて分かりにくいかもしれませんが,わからないところは気軽にコメントにでも(^^ゞ

次回はいよいよROSのインストール編です.お楽しみに!笑


ではでは(・∀・)ノ

2014年6月11日水曜日

Jetson TK1がやってきた!〜OpenCV編〜





前回はいろいろなもののインストールやら設定やらを書きましたが,今回も雑多に書いていこうと思います.

まず,処理能力的なものを軽くチェックしてみましたのでそれから.
使ったPCはJetsonを入れて3台です.OSはすべてubuntuです.
SPEC:
jetson tk1(GPU-192core,CPU-Quad core,RAM-2GB)
iMac(GPU-384core,CPU-i7,RAM-16GB)
G-tune(GPU-768core,CPU-i7,RAM-16GB)

(1) OpenCVのサンプルを用いてHoGによる人検出.
jetson tk1→5.7[FPS]
iMac→12.7[FPS]
G-tune→22.7[FPS]

同様の処理をCPUにより行うと以下のようになります.
jetson tk1→1.2[FPS]
iMac→3.4[FPS]
G-tune→3.2[FPS]

(2) 行列(1024*1024)*(1024*1024),(512*512)*(512*512),(256*256)*(256*256)を計算させてみました.1024はCPUのみでも計算させました.
(1024*1024)
jetson tk1→0.32[sec]
iMac→0.044[sec]
G-tune→0.025[sec]

同様の処理をCPUにより行うと以下のようになります.
jetson tk1→81[sec]
iMac→6.4[sec]
G-tune→7.3[sec]

(512*512)
jetson tk1→0.163[sec]
iMac→0.0059[sec]
G-tune→0.0032[sec]

(256*256)
jetson tk1→0.0021[sec]
iMac→0.0011[sec]
G-tune→0.00044[sec]

うーん.CPUが弱い気はしますね...
ま,こんなもんでしょう笑
てことで色々やってみようと思ったのですが,ライブラリが足りてなかったり,OpenCVのビルドが気に食わなかったりしたのでOpenCVをビルドして入れなおしました!
↓こんなかんじでやっていきました.

とりあえず,ubuntuのuniversalのリポジトリが欲しい!ので追加.
sudo add-apt-repository universe
sudo apt-get update

で,OpenCVのビルドでccmake使うのでそのへんをインストール.あとはvideo関連とかも入れていきます.
sudo apt-get install build-essential cmake-curses-gui
sudo apt-get install libavformat-dev libavutil-dev libswscale-dev
sudo apt-get install libv4l-dev libglew1.6-dev libeigen3-dev libgtk2.0-dev
sudo apt-get install python-numpy python-scipy

こんなもんでどうでしょう.
で,OpenCVのダウンロード.2.4.9が最新?だと思うのでそれを.
wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.9/opencv-2.4.9.zip

好きなとこに解凍して
cd opencv-2.4.9
mkdir release
cd release
ccmake ..
cmakeの設定をします.
今回はCUDA,OpenMP,OpenGLをONにしました.
(他は良くわからないから...なんて言えない!)

ccmakeの設定画面での操作方法は前のGPUの記事に基本的には書いてあります.
http://tyokotabb.blogspot.jp/2013/04/ubuntu1204-fuertegpunvidiaoptimusg-tune.html

そしてジェネレイトからの...make!!!!.........ERROR...^^;
33%ぐらい進んだとこでnvccのarchitectureが怒られる.compute_11とかは使えないみたいですね...
てことでもっかいccmake ..
ARCHの2.0未満のやつは消しました笑

.......今度はちゃんと出来ました!!
あとはライブラリにぶち込んでオシマイです.(make長いよ...CPUがしょぼいよ...)

ちょっと放置してた期間はありましたが,これで本格的にRobot Visionに活用できそうです.購入したJetson TK1は全部で6枚ですが,残り5枚にとりかかる意欲が湧きませんw
まあ,おいおいでいいでしょう笑
(ちなみに放置期間はvimの設定に凝ったりしてましたww)


そういえば,apt-get でタブ補完が効かないんですが僕だけでしょうか?笑

ではでは(・∀・)ノ

2014年6月4日水曜日

Jetson TK1がやってきた!〜購入・OSインストール編〜


NVIDIAが発売した世界初の組み込みスーパーコンピュータ"Jetson TK1"

購入したので設定やらインストールやらをメモ代わりに書いてみます.
ボード本体です.


ケースは自作しました.NVIDIAカーラーでいい感じ.

ダウンロードするものもろもろはこちらから.

OSはARMベースのLinux for Tegraです.
インストールは↓にあるQuick Start Guideでできます.

Linuxの動くホストPCが必要ですが,自分はUbuntu12.04でやりました.
以下コマンドをつらつらと.
sudo tar xpf Tegra124_Linux_R19.2.0_armhf.tbz2
cd Linux_for_Tegra/rootfs
sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R19.2.0_armhf.tbz2
cd ../
sudo ./apply_binaries.sh

今回は内蔵のeMMC(16GB)にインストールします.
ホストPCとJetsonを付属のUSBケーブルで繋ぎます.
ここでJetsonをリカバリーモードに(RECOVORYを長押ししながらRESETボタンを押す)
そして書き込むコマンド."mmcblk0p1"の部分を変えるとHDDやSDカードにもインストールできます.(flash.shのなかに記述があります)
sudo ./flash.sh -S 8GiB jetson-tk1 mmcblk0p1
上記コマンドを打つと書き込みに約30分ぐらいかかります.

Guideには書き込み終了後にRebootされると書いてありましたが,自分の場合しなかったので手動でリブート.

ubuntuのログイン画面が立ち上がります.
user: ubuntu
pass: ubuntu
になっています.このへんは後で変更しましょう.ただし,変更は慎重に...

あとは,ifconfig でIPの固定をします.
sudo ifconfig eth0 <ip address> netmask <netmask> up
ex) sudo ifconfig eth0 192.168.0.111 netmask 255.255.255.0 up
こんな感じです.

で,今回eMMCにインストールしたので容量が不安ということで,SSDをマウントします.SATAでつなぎました.SSDのフォーマット時にラベルを付けておくとマウントするときの記述が楽になります.
起動時にマウントするようにするには/etc/fstabに書き加えます.
sudo vim /etc/fstab
   LABEL=<label name> /<mount name> <data format> defaults,2 0
   ex) LABEL=data /data ext4 defaults,2 0

再起動してマウントできたらそのディレクトリの権限をchownで変更しておきましょう.


次にCUDAのToolkitを入れます.
ちなみにディベロッパー登録しないとダウンロード出来ないかもです.

sudo dpkg -i cuda-repo-l4t-r19.2_6.0-42_armhf.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-6-0

.bashrcにcuda-6.0のPATHを記述します.
sudo vim .bashrc
   export PATH=/usr/local/cuda-6.0/bin:$PATH
   export LD_LIBRARY_PATH=/usr/local/cuda-6.0/lib:$LD_LIBRARY_PATH
あと,nvcc.profileにはcommon/incのパスを通してあげます.
sudo vim /usr/local/cuda-6.0/bin/nvcc.profile
   INCLUDEのところに
   “-I$(TOP)/samples/common/inc"
   を追加.
これでnvccコマンドが普通に使えるようになるはずです.

CUDAのサンプルはRead Onlyですが,下記コマンドでいじれるやつを任意の場所に作れます.

cuda-install-samples-6.0.sh <target dir>

cuda-6.0にパスが通っていればスクリプトが起動します.
で,makeしてやればOK.


次にOpenCV

sudo dpkg -i libopencv4tegra_2.4.8.2_armhf.deb
sudo dpkg -i libopencv4tegra-dev_2.4.8.2_armhf.deb

で完了.ヘッダとライブラリが入ります.
サンプルプログラムとかは普通にopencvダウンロードしてついてくるものや,cookbookなどから取ってこれます.

以上,こんな感じでJetsonでCUDAやらOpenCVやらが動きます.

全体的にコンパイルするときにもろもろのインクルードやらライブラリやらへの依存関係が面倒ですね.makefile書くのをおすすめします.
いままでROSに頼りきっていたことがわかりました...笑

あと,計算速度とかはやはり192コアなので微妙ですが,組み込みなのでご愛嬌.ゲーミングマシーンのほうが処理能力は数段高いです...


てことで,なにかミスってるところとかあればコメントしてくれると嬉しいです.


ではでは(・∀・)ノ


<追記>
コメントを見て気づきましたがOSはpre-installでしたね...
でも勉強になったから良し!笑


2014年5月22日木曜日

Macのアプリやら小技やら...。

久しぶりの更新です。

てことで普段Macで使っているアプリを羅列しておきます。
・TotalSpace2
・Alfred
・GoogleDrive
・Dropbox
・Spectacle
・Evernote
・Calendar
・Reeder
・GIMP
・Firefox
・Magican
・VLC
・NoSleep
・Airmail
・XnConvert
・The Unarchiver
・Transmission
・KeyRemap4MacBook
こんな感じ!

で、小技。 
Dockにフォルダを追加できる小技です。

手順としては、
①Dockに置きたいフォルダに".app"の拡張子をつける。
ex) folder→folder.app
②DockにDrag&Drop
③フォルダの拡張子を取る。
ex) folder.app→folder
これでDockに追加できちゃいます(・∀・)b

とまぁ今日はこんな感じ。メモ書きみたいになってしまいました...。

ではでは(・∀・)ノ

2014年4月25日金曜日

ubuntuでGPUを使おう!!その2


前に書いたubuntuでGPUを使えるようにする記事からcudaもアップデートがありまして、非常に簡単に使えるようになったので覚え書き程度に。環境によってはうまくいかないこともあるかもです。

もろもろの環境→ubuntu12.04,cuda-5.5,GPU→nvidia,PC→G-TUNE
(ubuntuのバージョンが古いのはご容赦くださいw)

今回はレポからインストール。
cuda-repo-ubuntu1204_5.5-0_i386.deb
をサイトからダウンロード。
最新版しかダウンロード出来ないかも...。
てことでcuda toolkitのアーカイブ↓
https://developer.nvidia.com/cuda-toolkit-archive
(なぜ5.5にこだわるのか!...気分ですw)

で、下記コマンドをターミナルで。

sudo dpkg cuda-repo-ubuntu1204_5.5-0_i386.deb
sudo apt-get update
sudo apt-get install cuda

That's all!!!!

か・ん・た・ん!!
たぶんcuda-6.0でも同じ方法で大丈夫だと思います。

で、optimus対応PCは前のと同じでbumblebeeを導入。

------------------------------------------------------------------------------------------------------------------------
optimusをハック!!

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia linux-headers-generic

sudo stop bumblebeed

sudo vim /etc/bumblebee/bumblebee.conf
で編集.以下変更点.
[bumblebee] section
Driver=nvidia
[driver-nvidia] section
KernelDriver=nvidia-current-updates
LibraryPath と XorgModulePath の nvidia-current を nvidia-current-updates に変更.

sudo start bumblebeed

書き換えたら、たぶん再起動しないとダメかな。

(ちなみに、↑nvidia-currentでもおっけー。その時はDriver=nvidiaだけ記述してあげれば大丈夫)

------------------------------------------------------------------------------------------------------------------------

SDKが統合されたからのでSDKのディレクトリはありません。
sampleとかは/usr/local/cuda-5.5/の下にあります。

で、sampleをmakeしたいところですが、read onlyなので
sudo chownで権限奪ってからmakeで、前のSDKみたいに
/usr/local/cuda-5.5/sample/bin/i686/linux/release/のなかに色々とできます。

直接いじるのやだな...て人は
cuda-install-sample-5.5.sh ターゲットディレクトリ
でターゲとディレクトリにコピーが作られるので、そこでmakeしてくださいね。

opencvで使えるようにするのはたぶん一緒かな。まだやってないからなんとも言えないけど...。
一応載せときます。

------------------------------------------------------------------------------------------------------------------------
<OpenCVでGPUを使おう>

最新のOpenCVをダウンロード.rosと一緒に入るのはGPUが使えない.
とりあえず,ホームフォルダに解凍.

cd opencv_VERSION
mkdir release

sudo apt-get install cmake-curses-gui

ccmake ..             ←cmakeの設定ができる.

cでコンパイルみたいなやつ.
tでアドバンスモード.
Enterで挿入モード

CUDA_CUDA_LIBRARYのとこを設定
not foundにってるから↓に書き換える(全部)
/usr/lib/nvidia-current-updates/libnvcuvid.so

cでコンパイルみたいなやつ
gで終了

cmake .
make
もっかいmake(make漏れがあるかも)

/opt/ros/fuerte/lib
の中に/libの中身をぶち込む.
所有権がない場合はchownで.

<実行方法>
適当なsampleを取ってくる(opencvのsampleのGPUから)
optirun rosrun pkg名 実行名 読み込む画像
ex)     optirun rosrun image_sample hog road.png
ex)     optirun rosrun image_sample --left tsucuba_left.png --right tsucuba_right.ping

optirunはGPUをハックして使うおまじない.

------------------------------------------------------------------------------------------------------------------------



そういえば、ubuntu 13.10以降はbumblebee入れなくても使えるようになるらしい...

ではでは(・∀・)ノ

2014年1月16日木曜日

Safariのページ内検索について

iPhoneで何か調べる時には多くの人が純正のSafariを使っていると思います。
しかし、検索したはいいがそのページのどこに求めるものがあるかわからない時があります。
そんな時はページ内検索をすると良いのですが、Safariのページ内検索は少々わかりづらい部分にあるので、ご紹介したいと思います。

目的のページにとんだ後、URLの部分をタッチします。


下のような画面に移行するので探したい単語を打ちます。すると、検索ボタンがあらわれます。


これをタッチすると…



このようにページ内検索をすることができます。

単純ですが、気付きにくいですね。
ぜひ活用してみてください。

ではでは(・∀・)ノ