Category Archives: Linux

Developing Realsense Application on UP Squared Board

Install Ubuntu 16.04:

Flash the image on a USB stick and install on Up2 Board.

Update the system:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

At this point I received some errors like:

W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

I installed the missing firmware files which I downloaded from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915.

sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915 
sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915

 

sudo update-grub && sudo reboot

# verify that you have a supported kernel version (4.4.0-.., 4.8.0-.., 4.10.0-.. , 4.13.0-..or 4.15.0-.. as of May 2018)
uname -r

 

Install CMake

Download the source code from https://cmake.org/download/.

./bootstrap
make
make install

 

Install OpenCV

# To build
sudo apt-get install build-essential 
sudo apt-get install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

# To process images:
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

# To process videos:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

# For GUI:
sudo apt-get install libgtk-3-dev

# For optimization
sudo apt-get install libatlas-base-dev gfortran pylint

# To build for Python2 and Python3
sudo apt-get install python2.7-dev python3.5-dev
wget https://github.com/opencv/opencv/archive/3.4.0.zip -O opencv-3.4.0.zip

wget https://github.com/opencv/opencv_contrib/archive/3.4.0.zip -O opencv_contrib-3.4.0.zip

sudo apt-get install unzip
unzip opencv-3.4.0.zip
unzip opencv_contrib-3.4.0.zip

cd  opencv-3.4.0
mkdir build
cd build

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules -DOPENCV_ENABLE_NONFREE=True ..


# Build
# Up2 Board has 2 cores
make -j2

# Install in the location /usr/local using command
sudo make install

# Reinitialize static libs using the following command
sudo ldconfig

Build librealsense

sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev

git clone https://github.com/IntelRealSense/librealsense

cd librealsense
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ 
sudo udevadm control --reload-rules && udevadm trigger 

# patch the kernel
./scripts/patch-realsense-ubuntu-lts.sh

# Build
mkdir build && cd build
cmake ../ -DBUILD_EXAMPLES=true -DBUILD_CV_EXAMPLES=true

sudo make uninstall
make clean
make -j2
sudo make install

Install QtCreator:

wget http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run

chmod +x qt-opensource-linux-x64-5.7.0.run
./qt-opensource-linux-x64-5.7.0.run

sudo apt-get install libfontconfig1

Launch Qt Creator

 

Resources:

 

TODO:

  • Check why OpenCV was not built for Python3.
  • Configure QtCreator

Python Shell’de Otomatik Tamamlama

~/.pythonrc adında yeni bir dosya oluşturun:

# ~/.pythonrc
# enable syntax completion
try:
    import readline
except ImportError:
    print("Module readline not available.")
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

~/.bashrc dosyasının sonuna da şunu ekleyin:

export PYTHONSTARTUP=~/.pythonrc

Ubuntu 16.04’te OpenCV Derlemek

Anaconda’nın içindeki Python’ı kullanmak istediğimde hata aldım. Ubuntu ile gelen Python’ı kullandım.

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local  \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D BUILD_EXAMPLES=ON \
    -D PYTHON_INCLUDE_DIR=~/anaconda3/include/python3.6m \
    -D PYTHON_LIBRARY=~/anaconda3/lib/libpython3.6m.so \
    -D PYTHON2_EXECUTABLE=/usr/bin/python2.7 \
    -D PYTHON2_INCLUDE_PATH=/usr/lib/python2.7/dist-packages \
    -D PYTHON2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ../

make -j4
sudo make install
sudo ldconfig

Kaynak: http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/

Intel CPU’lar için Optimize Tensorflow Derlemek

Makine Öğrenmesi, Derin Öğrenme çalışmalarımı Linux (Ubuntu 16.04) dizüstü bilgisayarımda Anaconda üzerinde Python ile yapıyorum. Intel ve Google’ın yakın zamanda yayınladıkları güncellemeler sayesinde Tensorflow CPU’lar üzerinde çok daha hızlı çalışabiliyor. (bkz. https://software.intel.com/en-us/articles/tensorflow-optimizations-on-modern-intel-architecture) Tensorflow’un güncel kodlarını çekip derlemek için aşağıdaki adımları uyguladım.

 

 

 

 

Öncelikle yeni bir Anaconda’yı güncelledim:

$conda create -n

Yeni bir Anaconda ortamı yarattım:

$conda create -n tensorflow35cpu python=3.5 anaconda

Yeni yarattığım ortama geçiş yaptım:

$source activate tensorflow35cpu

Tensorflow’u derlerken kullanacağım Bazel yüklü olmadığı için öncelikle onu yüklemem gerekti

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -

sudo apt-get update && sudo apt-get install bazel

sudo apt-get upgrade bazel

Github’dan Tensorflow’un kaynak kodlarını indirdim:

$git clone https://github.com/tensorflow/tensorflow

Bu klasöre girip ayarları başlattım. Bu aşamada Intel MKL kullanma seçeneği seçilmeli, configure betiği güncel Makine Öğrenmesi için Intel MKL kütüphanesini tensorflow/third_party/mkl/mklml klasörüne indirecek. Diğer seçenekleri ön tanımlı halleriyle bıraktım:

$cd tensorflow
$ ./configure

Optimize Tensorflow pip paketini oluşturdum:

$bazel build --config=mkl --copt="-DEIGEN_USE_VML" -c opt //tensorflow/tools/pip_package:build_pip_package

Ve son olarak bu paketi yükledim:

$bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/path_to_save_wheel
pip install --upgrade --user ~/path_to_save_wheel /wheel_name.whl
Tagged

Bütün Docker Container’larını Durdurmak ve Kaldırmak

List all containers (only IDs)

docker ps -aq

Stop all running containers

docker stop $(docker ps -aq)

Remove all containers

docker rm $(docker ps -aq)

Remove all images

docker rmi $(docker images -q)
Tagged

Ubuntu üzerinde MQTT (Mosquitto)

MQTT IoT uygulamalarında çok yaygın kullanılan bir iletişim protokolüdür. HTTP’den farklı olarak istemci-sunucu (client-server) mekanizmasıyla değil, abone-yayınlayıcı (subscribe-publish) mekanizmasıyla çalışır. Veri göndermek isteyen cihazlar bu veriyi bir konu adıyla broker’a gönderirler. Broker da bu veriyi daha önce bu konuya abone olmuş cihazlara dağıtır (yayınlar).

Ubuntu üzerinde açık kodlu MQTT broker’ı Mosquitto’yu yüklemek için aşağıdaki adımlar uygulanabilir.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential libwrap0-dev libssl-dev libc-ares-dev uuid-dev xsltproc

## Broker yüklemek için
sudo adduser mosquitto
sudo apt-get install mosquitto
sudo service mosquitto status

## İstemci yüklemek için
sudo apt-get install libmosquitto-dev
sudo apt-get install mosquitto-clients

## Test
# Abone olmak için
mosquitto_sub -h localhost -t "sicaklik" -v

# Mesaj yayınlamak için
mosquitto_pub -h localhost -t "sicaklik" -m "Sensor verisi: 1,5"

 

 

Tagged ,

Bitbake ile Intel Edison için Yocto İmajı Hazırlamak

Intel Edison Yocto Linux yüklü gelmektedir. Edison için Yocto imajını Intel’in sitesinden indirmek mümkün olduğu gibi kendimiz de yeni imaj hazırlayabiliriz. Bunun için Bitbake kullanılır.

Continue reading

Tagged , , , ,

Git deposuna farklı bir porttan bağlanmak

Git deposuna (varsayılan port 22’de) farklı bir port üzerinden bağlanmanız gerekiyorsa şöyle yapabilirsiniz:

git clone ssh://[email protected]:1234/myproject/myproject.git

 

Bütün OpenWrt paketlerini tek komutta güncellemek

opkg list-upgradable | awk -F ' - ' '{print $1}' | xargs opkg upgrade

 

   _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M

Systemctl ile Systemd Servislerini Yönetmek

Bir ilklendirme sisteminin (init system) amacı Linux kerneli ayağa kalktıktan (boot ettikten) sonra başlatılması gereken bileşenleri ilklendirmektir. İlklendirme sistemi, sistem başladıktan sonra herhangi br zamanda servisleri ve arka planda çalışan programları (daemon) kontrol etmek için de kullanılır.

systemd Linux dağıtımları arasında hızla yaygınlaşan bir ilklendirme sistemi ve sistem yöneticisidir. Ubuntu da 16.04 versiyonunda eskiden kullandığı Upstart’ı systemd ile değiştirdi. systemctl komutu ise systemd’yi kontrol etmeye yarayan temel komuttur.

Continue reading