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でしたね...
でも勉強になったから良し!笑