読者です 読者をやめる 読者になる 読者になる

tyokota.lab

適当に綴ります

TX1にswap領域追加

PCL-1.8のビルド中に"internal compiler error"になってしまいました。
この時になってやっと気づきましたが、swapがないじゃないですか!!
ビルド中のメモリ使用量を監視してみたらMain Memoryの4GB超えちゃってますね笑

てことで、swap領域を確保します。
前回接続したSSDにswap領域を確保したいと思います(eMMCの容量って16GBが目一杯なんですかね)
パーティションラベル等は自分の環境に合わせてください

まずは、前回パーティション振り分けちゃったのでgparted使って領域を確保します
確保した領域のフォーマットは"linux_swap"でOKです
(swapの容量はMain Memoryの2倍ぐらいが目安らしいですが、リソース的に余裕があれば多めに積んどいたほうが良いそうです)

sudo mkswap /dev/nvme0n1p5

上記コマンドでUUIDとか情報が表示されるのでコピーしておきます

sudo swapon /dev/nvme0n1p5

最後に起動時にも反映できるように"fstab"を書き換え

sudo vim /etc/fstab

"UUID=0000000000000000000 none swap sw 0 0"

システムモニタを見ると追加されているのがわかります
以上で完了です
ちなみにswapはファイルとして持っていてもOKらしいです

やり方はほとんど変わらないのですが、

sudo fallocate -l 4G /swapfile
sudo shmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

OKです
fstabの書き換えを忘れずに...

TX1のkernelをビルドしてJ120の PCIeSSDをつかえるようにする

kernelのrebuild
Build TX1 Kernel and Modules - NVIDIA Jetson TX1 - JetsonHacks

git clone https://github.com/jetsonhacks/buildJetsonTX1Kernel.git
cd buildJetsonTX1Kernel
./getKernelSources.sh

この時に起動するconfigureGUIで"CONFIG_BLK_DEV_NVME=y"にしてビルドするとJ120のPCIeSSDが使える
User mode SPI device driver support=yでSPIデバイスが使えるはずでしたが...他のところも変えないといけなさそう

./patchAndBuildKernel.sh
./copyImage.sh 
sudo reboot

これでnvmeが見えるようになりました

このあと/home, /usr, /var, /optをSSDに移行して、容量の問題は解決


SSDをgparted等でフォーマット(ext4

パーティションをマウントして、データをコピー

sudo cp -a /home/* /media/ubuntu/data_home
sudo cp -a /opt/* /media/ubuntu/data_opt
cd /usr
sudo tar cpvf - . | sudo tar xpvf - -C /media/ubuntu/data_usr
cd /var 
sudo tar cpvf - . | sudo tar xpvf - -C /media/ubuntu/data_var

fstabを書き換えてDone

あとはROS, Oencv-3.1, Opencv-3.2, PCL-1.8, ZED関連をいれてセットアップ完了

tyokotabb.blogspot.jp

tyokota.hatenablog.com

OpenCVとかPCLのライブラリでバージョン違いを共存させる方法

バージョン違いで保持していたい時の備忘録
(ZEDがopencv3.1.0依存だったので...)

OpenCVもPCLもやり方は同じ

今回はOpenCV-3.1.0とOpenCV-3.2.0の共存です。

それぞれGitで取ってくる(名前は変えておくこと)
gitでopencvのバージョンを3.2から3.1に下げる場合は

git reset --hard 92387b1ef8fad15196dd5f7fb4931444a68bc93a

でリビジョン下げる

cd /home/username/libs
cd opencv-3.1.0
mkdir release
cd release
mkdir installed
ccmake ..

cmakeの設定
CMAKE_INSTALL_PREFIX=/home/username/libs/opencv-3.1.0/release/install

opencv3.1.0とcuda8.0の組み合わせの場合、
GraphCut deprecated in CUDA 7.5 and removed in 8.0 by jet47 · Pull Request #6510 · opencv/opencv · GitHub
上記場所を書き換え

cmake.
make -j8
make install

opencv-3.2.0でも同じようにする(ソースの書き換えは不要)


次にパスを通す

通常利用はopencv-3.2.0を使って欲しいので.bashrcに3.2を後に書き込んでおく

CV_LIB_PATH=~/libs/opencv-3.1.0/release/installed/lib
export PKG_CONFIG_PATH=$CV_LIB_PATH/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$CV_LIB_PATH:$LD_LIBRARY_PATH

CV_LIB_PATH=~/libs/opencv-3.2.0/release/installed/lib
export PKG_CONFIG_PATH=$CV_LIB_PATH/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$CV_LIB_PATH:$LD_LIBRARY_PATH

これでまずopencv-3.2.0を見に行って、なければopencv-3.1.0を見に行くようになる。
順番大事。

ホントはコンパイルごとにスクリプト起動のほうが良いけど、いちいちめんどうなのでこれで。

参考:http://d.hatena.ne.jp/taksei/20160903/1472875112

PC setting ubuntu 16.04 ROS kinetic

PCのセッティング備忘録

環境:ubuntu 16.04, ROS kinetic, cuda 8.0, GPU TITAN X(Pascal)

ubuntuを入れたところから始めます

■ cuda 8.0のインストール
CUDA Toolkit | NVIDIA Developer

自分の環境に合うものをダウンロードしてインストールします

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
vim ~/.bashrc

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

sudo reboot

※cudaを入れる場合はsecure bootはオフにしておきます.BIOSの設定にあると思います

■ ROS kineticのインストール
ROSwiki参照
kinetic/Installation/Ubuntu - ROS Wiki

■ catkin_makeのalias
.bashrcをvimで開いて

function cmk(){
    currentpath=$(pwd)
    cd ~/ros_catkin_ws
    catkin_make
    cd $currentpath
}

■ Deep Learning関連(chainer, caffe, tensolflow)のインストール
・cuDNN(v5.0)
NVIDIA cuDNN | NVIDIA Developer

tar -zxf cudnn-8.0-linux-x64-v5.0-ga.tgz
cd cuda
sudo cp lib64/libcudnn* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo apt-get update

・chainer
Chainer: A flexible framework for neural networks

sudo apt-get install -y python-pip
sudo pip install --upgrade pip
sudo pip install chainer

・caffe
GitHub - BVLC/caffe: Caffe: a fast open framework for deep learning.

sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev 
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
cp Makefile.config.example Makefile.config

OPENCV_VERSION := 3
PYTHON_INCLUDE := /usr/include/python2.7 /usr/lib/python2.7/dist-packages/numpy/core/include
WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5_serial.so.(version) libhdf5.so
sudo ln -s libhdf5_serial_hl.so.(version) libhdf5_hl.so
cd python
for req in $(cat requirements.txt); do sudo pip install $req; done
vim ~/.bashrc

export PYTHONPATH=(caffe内のpythonがあるディレクトリ):$PYTHONPATH

cd .. (caffe master dir)
make all -j8
make test
make runtest
make pycaffe
make distribute

・tensorflow
Download and Setup  |  TensorFlow

export TF_BINARY_URL=(select the correct binary to install)
sudo pip install --upgrade $TF_BINARY_URL

■ PCL-1.8
GitHub - PointCloudLibrary/pcl: Point Cloud Library (PCL)

sudo apt-get install cmake-curses-gui
cd pcl
mkdir release
cd release
ccmake ..

with_cuda=ON

cmake .
make -j8
make
make install

■ OpenCV3.2
GitHub - opencv/opencv: Open Source Computer Vision Library

sudo apt-get install cmake-curses-gui
cd opencv
mkdir release
cd release
ccmake ..

with_cuda=ON

cmake .
make -j8
make
make install

ROSのcatkin_makeがめんどうなのでaliasを書く

ROSのkineticを使っているのですが、catkin_makeをするときにいちいちワークスペースに移動するのが面倒なのでaliasを作ってみました
このやり方が良い方法なのかはよくわかりませんが...
ちなみに私はalias関連は ".bash_aliases" にまとめて読み込むようにしています

function cmk(){
    catkinpath=$(pwd)
    cd ~/ros_catkin_ws
    catkin_make
    cd $catkinpath
}

これでどんなとこからでもcatkin_makeができるようになりました

めでたしめでたし

Method of resolving dependencies for deb files

It is updated after a long time. Today I will introduce a convenient little command.

If you are using Ubuntu, I think when you want to install application from deb files. However, warning from compiler "○○ depends on xx" when you installing use "dpkg".

It is convenient to use such a command "gdebi" in this case. It makes it installed with what you need to check the dependencies of deb file. You can apt-get the gdebi To use. 

 

$ sudo apt-get install gdebi

 

Let's use it after installing.
For example, you try to install the "NixNote" informal Evernote client software that can be used on Linux.
URL: http://en.sourceforge.jp/projects/sfnet_nevernote/

 

$ gdebi nixnote-1.6_i386.deb

 

This is the only. It's easy.

A comfortable life Ubuntu even a little!(^^)!

 

P.S. Jetson was even used to PCL!