2015年8月26日水曜日

手許のRaspberry Piに、インターネット経由でアクセスする

いや〜〜、気持ちいいです。

Raspberry Piに、インターネット経由でmac proからアクセスしています。

Macから、sshでRaspberry Piに入っています。

Macの画面とディスプレーは、Mac横のRaspberry Pi の /home/pi を ls -al した結果。
いや〜、気持ちいい(^^)v

Peace!!




Raspberry Piで、L-03Dを使ってOCN ONEに接続するYo!

Raspberry Piで、ルータ作りたいのですが、その前に

L-03DにOCNの格安SIMを挿入して、Raspberry Piからダイアルアップ接続する。


$ sudo apt-get install usb-modeswtich
$ sudo apt-get install wvdial

$ sudo vi /dev/wvdial.conf

[Dialer Defaults]
Init1 = ATZ
Init2 = ATH
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Dial Attempts = 3
Stupid Mode = 1
Modem Type = Analog Modem
Dial Command = ATD
Stupid Mode = yes
Baud = 460800
New PPPD = yes
APN = lte-d.ocn.ne.jp
Modem = /dev/ttyUSB2
ISDN = 0
Phone = *99***1#
Password = <password>
Username = <username>

Carrier Check = no

Remote Name = CHAP

お味噌は、Init2 = ATH
これが無いと、L-03Dでは、通信できない。Yo!!

$ sudo wvdial
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATH
ATH
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Modem initialized.
--> Sending: ATD*99***1#
--> Waiting for carrier.
ATD*99***1#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Wed Aug 26 01:49:48 2015
--> Pid of pppd: 2402
--> Using interface ppp0
--> local  IP address 153.155.245.13
--> remote IP address 10.64.64.64
--> primary   DNS address 222.146.35.1

--> secondary DNS address 221.184.25.1

やめる時は、Ctrl-C

$ ifconfig ppp0
ppp0      Link encap:Point-to-Point Protocol  
          inet addr:153.251.24.70  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:23 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 

          RX bytes:1430 (1.3 KiB)  TX bytes:1469 (1.4 KiB)

これで、OK
ping で確認してね。(^^)

Peace!!

2015年8月24日月曜日

A installation of version 4.8 gcc and g++ on Raspberry Pi2

Raspberry Pi 2のCPU coreはCortex-A7ベース。

NEONというSIMD命令が使用できるようになっている。

其のためには、version 4.8 のgcc, g++が必要となる。

現時点では、4.6

そのインストールと置換

$ sudo apt-get install gcc-4.8 g++-4.8
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 20
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50


Peace!!

Install OpenCV3 on Raspberry Pi2

次に、Raspberry Pi2に、OpenCV3をインスールします。

1.事前準備
どーんと!!!

$ sudo apt-get -y install build-essential cmake cmake-qt-gui pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools
$ sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev pkg-config
$ sudo apt-get install libswscale-dev

2.Buildの準備
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.0.0/opencv-3.0.0.zip
$ unzip opencv-3.0.0.zip
$ cd opencv-3.0.0
$ mkdir build
$ cd build

ここからが、お味噌
Raspberry Piは、armv7です。
このまま、ビルドするとarmv6のコードになります。
もっと良い、方法があると思うけど、さくっと片付けたいので、、、

まずは、コンパイラーを4.8にします。

$ sudo apt-get install gcc-4.8 g++-4.8
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 20
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50

で、armv7を指定して実行すると、、、
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_VFPV3=ON -D ENABLE_NEON=ON -D BUILD_DOCS=OFF -D BUILD_TESTS=off -D BUILD_PERF_TESTS=OFF -D BUILD_TBB=ON -D BUILD_opencv_apps=OFF -D BUILD_opencv_gpu=OFF -D WITH_OPENCL=off -D WITH_1394=off -D WITH_CUDA=OFF -D WITH_CUFFT=OFF -D WITH_GIGEAPI=OFF -D WITH_OPENCLAMDBLAS=off -D WITH_OPENCLAMDFFT=off -D WITH_TBB=ON -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..

これは、失敗になります。こんなエラーがでます。
../../lib/libopencv_imgproc.so.3.0.0: undefined reference to `tbb::task_group_context::cancel_group_execution()'

で、 armv6で当面します。

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON

$ make -j 4
$ sudo make install
$ sudo ldconfig
$ cd bin
./cpp-example-facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../../samples/data/lena.jpg

で、makeは、1時間位かかります。


Peace!!

----------------------------------------------------
これは、Raspberry Pi2用 メモ!!
-Wall -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7-a

g++ tesp.cpp -o test -L/path/to/the/relevant/library/ -lnameoflib

where nameoflib would be eg. tbb if the actual shared library is named libtbb.so

Mac (OSX 10.10.x Yosemite) に、OpenCV3をソースコードからC++環境 buildする (^^)

ロボットの開発に使うので、C++環境を構築します。
OpenCV3では、Cはインターフェースはありますが、メンテナンスされないとの事(泣)
Pythonインターフェースは、後で、、、
CUDAも使わない。サクッと、今回はしたいのです。
あと、自分でビルドするのは、サンプルプログラムとかを確認したいので、
本当は、もっとよい方法があるかもです。

1.環境整備

OpenCV3インストールの為に、brewを使うべく、
Macportを削除して、Homebrewをインストールします。

1.1  Macport アンインストール

sudo port -fp uninstall --follow-dependents installed
Error: No ports matched the given expression
エラーは、無視。

$sudo rm -rf /opt/local /Applications/DarwinPorts /Applications/MacPorts /Library/LaunchDaemons/org.macports.* /Library/Receipts/DarwinPorts*.pkg /Library/Receipts/MacPorts*.pkg /Library/StartupItems/DarwinPortsStartup         /Library/Tcl/darwinports1.0 /Library/Tcl/macports1.0 ~/.macports

これで、Macportを削除完了

1.2 Homebrewのインストール

1.2.1 Command Line Tools for Xcodeのインストール

xcode-select --install
xcode-select: note: install requested for command line developer tools
画面のダイアログに従ってインストールする。

1.2.2 Homebrewのインストール

Homebrewのホームページにインストールコマンドが書いてあるので、それをターミナルにコピペ
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
あとは、画面の指示に従う。5分位もかからないYo.
ちゃんとインストール出来たかは、
brew doctor
で確かめるよ。(^^)
Unexpected dylibs:
    /usr/local/lib/JPKIPKCS11.dylib

    /usr/local/lib/JPKIServiceAPI.dylib

って、メッセージでたので、とりあえずmvした。で、、、
$brew doctor
Your system is ready to brew.

となった。
それから、追加でインストール
$ brew install cmake
$ brew install pkg-config

1.2.3 opencv サックとインストール

これは、参考までです。

$ brew tap homebrew/science
$ brew install opncv3

でいろいろ処理して、こんな感じで終了でします。
This formula is keg-only, which means it was not symlinked into /usr/local.

opencv3 and opencv install many of the same files.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/opencv3/lib
    CPPFLAGS: -I/usr/local/opt/opencv3/include

If you need Python to find bindings for this keg-only formula, run:
  echo /usr/local/opt/opencv3/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/opencv3.pth
==> Summary
🍺  /usr/local/Cellar/opencv3/3.0.0: 246 files, 103M

1.2.4 opencv3 ビルドとインストール

ここからが本番。
CUDAは、使いません。念の為に

$ mkdir ~/lib
$ git clone https://github.com/Itseez/opencv.git
$ cd opencv
$ git checkout tags/3.0.0
$ mkdir build
$ cd build
$ cmake -D WITH_CUDA=OFF -D CMAKE_INSTALL_PREFIX=~/opencv/build -D CMAKE_BUILD_TYPE=RELEASE ..
$ make
$ make install
$ cp lib/pkgconfig/opencv.pc /usr/local/lib/pkgconfig/opencv3.pc
$ vi ~/.bashrc
    export DYLD_LIBRARY_PATH=$HOME/lib/opencv/build/lib:$DYLD_LIBRARY_PATH
編集して、保存

$ source ~/.bashrc


1.2.5 opencv3 テスト

これで、とりあえず完了
で、テストをする。

$ cd ../samples/cpp

$ g++ -ggdb `pkg-config --cflags --libs opencv3` facedetect.cpp -o /tmp/test && /tmp/test
はい、完成!!

Peace!!