2018年12月31日月曜日

A Setting of serial communication between Raspberry Pi 3 and device.

Raspberry Pi 3と、他のデバイスをSerial 通信する設定

ネットでいろいろ書いてあるのだけど、

結局、次の2ステップでOK

$ sudo raspi-config  > 5. Interfacing Options > P6 Serial > No > Yes


$ sudo vi /boot/config.txt

dtoverlay=pi3-disable-bt
 
この一行を加える。Bluetooth に割り当てられている serial を開放する。

OSのインストール直後の状態で確認した。

raspi-config の設定だけではダメで、config.txtへの追加が必要。


Peace!!

2018年12月30日日曜日

An Installation of lighttpd(1.4.52) on Raspberry Pi

Raspberry Piをコントローラに使っている自律走行系などのロボットのhttp通信は、lighttpdを使っているわけで

1.4.52をインストール

いろいろ試行錯誤してきたけど

aptでインストールできるバーションが、1.4.45になっているので素直に居れてバーションアップする方法が一番良いという事になってきた。

以前は、数年もメンテされていなかったlighttpdだけど最近はメンテが計画的に行われているようで安心して使える。

特に、Apatchに比べて早いし、柔軟性もあるので僕はlighttpdをロボット用では使う予定。


インストールの大まかな手順

・標準インストール ( sudo apt install lighttpd )
・lighttpd のページから最新版をdownloadしてmakeする
・環境設定

・エラーが起こった

追加:
違うRaspberry Piに、この手順でインストールしたら標準インストール、バージョンアップもエラー無しにできました。
最初のマシンの固有の問題かしら、、、

(1) 標準インストール

$ sudo apt install lighttpd

で、、、思いもよらないエラー


● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Sun 2018-12-30 09:55:42 JST; 28ms ago
  Process: 684 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=255)

$ ls -la /etc/lighttpd

drwxr-xr-x   2 root root  4096 Dec 30 09:55 conf-available
drwxr-xr-x   2 root root  4096 Jan 15  2017 conf-enabled

アレ? lighttpd.conf が無い

???  以前、lighttpd インストールしてremove したから、、、

sudo apt-get purge lighttpd
sudo apt-get autoremove lighttpd


それから、

sudo apt install lighttpd

ls /etc/lighttpd
ls /etc/lighttpd/conf*

systemctl status lighttpd 

● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset:
   Active: active (running) since Sun 2018-12-30 10:10:00 JST; 8min ago
 Main PID: 2250 (lighttpd)
   CGroup: /system.slice/lighttpd.service
           mq2250 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

Dec 30 10:10:00 rcpm-r51 systemd[1]: Starting Lighttpd Daemon...
Dec 30 10:10:00 rcpm-r51 systemd[1]: Started Lighttpd Daemon.

ls -al /var/www
drwxr-xr-x  2 root root 4096 Jan 15  2017 cgi-bin
drwxr-xr-x  2 root root 4096 Dec 30 10:09 html

ブラウザーにアクセスしても、、、


という事で、標準インストールは、OK

(2) 最新版のビルド

最初にbuildに必要なモジュールのインストール

sudo apt-get install libpcre3-dev bzip2 libbz2-dev

https://www.lighttpd.net/    からダウンロード。因みに1.4.52でした。

展開し、ディレクトリーに入って

./configure
make
sudo make install

sudo systemctl restart lighttpd

念の為に、、、、え???

$ lighttpd -v
lighttpd/1.4.45 (ssl) - a light and fast webserver
Build-Date: Jan 14 2017 21:07:19

$ cat /lib/systemd/system/lighttpd.service
[Unit]
Description=Lighttpd Daemon
After=network.target

[Service]
Type=simple
ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf
ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target

make install でインストールされる場所は、
/usr/local/sbin

buildした定義は

[Unit]
Description=Lighttpd Daemon
After=network-online.target

[Service]
Type=simple
PIDFile=/var/run/lighttpd.pid
ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf
ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
ExecReload=/bin/kill -USR1 $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

という事で、最初のlighttpd.serviceを使うとして
/usr/sbinを/usr/local/sbinに変更

$ sudo systemctl daemon-reload
$ sudo systemctl restart lighttpd

$ lighttpd -v
lighttpd/1.4.45 (ssl) - a light and fast webserver
Build-Date: Jan 14 2017 21:07:19

???

$ /usr/local/sbin/lighttpd -v
lighttpd/1.4.52 - a light and fast webserver

意味不明なので、、、

残骸を消して
$ sudo rm r- /usr/lib/lighttpd

$ sudo reboot

$ lighttpd -v
lighttpd/1.4.52 - a light and fast webserver

本当に意味不明、、、、、でも時間が無いのでよし!

(3) 環境設定

/etc/lighttpd/lighttpd.conf

これはそのまま、、、

$ cd /etc/lighttpd/conf-available

$ vi 10-cgi.conf
$ cat 10-cgi.conf
# /usr/share/doc/lighttpd/cgi.txt

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( "" => "" )
}
$HTTP["url"] =~ "^/api/" {
        cgi.assign = ( "" => "" )
}

## Warning this represents a security risk, as it allow to execute any file
## with a .pl/.py even outside of /usr/lib/cgi-bin.
#
#cgi.assign      = (
#       ".pl"  => "/usr/bin/perl",
#       ".py"  => "/usr/bin/python",
#)

$ cd ../conf-enabled
$ sudo ln -s ../conf-available/10-cgi.conf
$ ls -al
10-cgi.conf -> ../conf-available/10-cgi.conf

$ sudo mkdir /var/www/api

・エラーが起こった

さぁこれで!  アドレスにアクセスするとエラー
動いていない

$ systemctl status lighttpd

Dec 30 13:57:21 rcpm-r51 systemd[1]: Starting Lighttpd Daemon...
Dec 30 13:57:21 rcpm-r51 systemd[1]: Started Lighttpd Daemon.
Dec 30 13:57:21 rcpm-r51 lighttpd[863]: 2018-12-30 13:57:21: (server.c.748) opening errorlog '/var/log/lighttpd/error.log' failed: No such file or directory
Dec 30 13:57:21 rcpm-r51 lighttpd[863]: 2018-12-30 13:57:21: (server.c.1454) Opening errorlog failed. Going down.
Dec 30 13:57:21 rcpm-r51 systemd[1]: lighttpd.service: Main process exited, code=exited, status=255/n/a
Dec 30 13:57:21 rcpm-r51 systemd[1]: lighttpd.service: Unit entered failed state.
Dec 30 13:57:21 rcpm-r51 systemd[1]: lighttpd.service: Failed with result 'exit-code'.
Dec 30 13:57:21 rcpm-r51 systemd[1]: lighttpd.service: Service hold-off time over, scheduling restart.
Dec 30 13:57:21 rcpm-r51 systemd[1]: Stopped Lighttpd Daemon.

つまり、/var/log/lighttpd/error.log が無い

$ sudo mkdir /var/log/lighttpd
$ sudo chown www-data:www-data /var/log/lighttpd
$ sudo chmod 750  /var/log/lighttpd

でも、なんでかなぁ、、、

$ sudo systemctl restart lighttpd
$ sudo systemctl status lighttpd
$ systemctl status lighttpd

● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset:
   Active: active (running) since Sun 2018-12-30 14:15:08 JST; 9min ago
  Process: 1343 ExecStartPre=/usr/local/sbin/lighttpd -tt -f /etc/lighttpd/light
 Main PID: 1351 (lighttpd)
   CGroup: /system.slice/lighttpd.service
           mq1351 /usr/local/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

Dec 30 14:15:08 rcpm-r51 systemd[1]: Starting Lighttpd Daemon...
Dec 30 14:15:08 rcpm-r51 systemd[1]: Started Lighttpd Daemon.

Peace!!













2018年12月27日木曜日

Centos7 mariDB インストールと設定

CentOS7にMariDBをインストールと設定

本当に書きたいことは、一番したなんだけどメモとして、、、

# yum install mariadb mariadb-server
#  vi /etc/my.cnf
    character-set-server=utf8
追加する

# systemctl enable mariadb.service
# systemctl start mariadb.service
# mysql_secure_installation

rootのパスワード入力以外はすべて、enter のみ

で、ここが問題で、

# [root@xxxxxxx~]]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

それで、パスワードをコマンドラインで続けて入力するとOKという落ち(笑)

[root@xxxxxxx~]# mysql -u root -pPASSWORD
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Peace!!

2018年12月1日土曜日

Lidar

手頃な価格のLidarが見つかりテスト

性能も、程々、、、
僕の用途では、十分な性能


もちろん、Raspberry Piで制御

Peace!!

展示会出展した

11月20日から22日まで、東京ビックサイトの
鳥獣害・ジビエ展の社団法人 猟協のブースで展示した。

低重心、フラットクローラ型


まだ、プロトタイプだけど、大きな反響いただきました。
傾斜地などの、足場の悪いところで、安全にモノを運ぶ
クローラ型の自律搬送ロボットです。
12月のイベントに向けて、更にブラッシュアップ。

もちろん、制御はRaspberry Piです。

Peace!!

2018年10月5日金曜日

最近の忙しいこと

な、、、なんと

倉庫管理システムを開発しているわけで、、、

サーバーはRaspberry Pi 3+

クライアントは、Android

いろいろあったけど、なんとか動き始めてきたきた

Androidでの、アプリは初めて、いきなりGoogleのmlkitも使い

Androidの作法も知らずに、大苦戦。

友人に頼んで、半日、ご紹介頂いたプロのレクチャーを受けて、

神を崇めるような、最高のレクチャーで、、、

僕も開眼できそうで、、、これからもAndroid開発続けようと

端末は、SONY Xperia XZ2 snapdragon 845

これが、また、爆速で、、、以前のAndroidモッサリ感がなくて、、、

Android 9developer previewを入れて、、、

9って、IOS的な操作になっていて、、、

でも、mlkitの重たい処理もはずも、サクサク

いよいよ、iPhoneはどんどん高くなるし、

業務系は、Androidだなぁと実感。

倉庫管理システムは、当然、自動搬送ロボットと連動するわけで、

そのロボットも10月末までにデモしなければ、、、

忙しいのか、何なのか、わからない状態で、、、

でも、一歩一歩進んでいるかなぁ、、、 

でも、昨日は、mariaDBにハマり。

今日は突破するぞ、、、

Peace!!

2018年9月18日火曜日

地方創生を妨げる、地方のプライドと意識

最近、某県でロボットを活用した地域創生の取組をしているけど、、、

やはり、地域の意識ってのが邪魔するなぁと、、、

「まぁ、これまでは何とかやってこれたから、

将来は解らないけど、ここしばらくは大丈夫」

これが、根底にある企業や人が、多いかも

企業は、昭和思考が抜けきれず、、、

特に、地方を代表する企業が、、、

言い方変えれば、その地方でしか活動できない企業

こういう企業が、「昭和の牛歩思考」で Unbelievable


良いも悪いも日本は、東京中心の政治や大企業で動いているわけで

チャンスを掴むには、それなりのやり方が必要

そして、スピード、、、


地方創生がうまくいかないのは、

「地方の鏡で、日本を写すから」

その鏡は、明日も、明後日も変わらないで居て欲しいという

見たい所しか見えないもの。

見たくない事を、見て認識しないと、チャンスは訪れない。


でも、みんなやっぱり自分の鏡で見たいわけで、、、

衰退する地方ほど、自分の鏡を離さない。

Peace!!


2018年8月30日木曜日

MEMO: Android Studio 3.2 RC2 "Application Installation Failed"

Android Studio 3.2 RC2 を使って、SONY Xperia XZ2のアプリケーション開発しているけど、、、


が突然でて、、、
おおおって事で、
Root化して消せばいいのねと思ったけど、
最新機種のためか、いくつかのroot化アプリケーション使ってもダメで
途方に暮れていたら、
世の中には、優しい人が居て、それに従って "Instant Run" という
Android Studioの
鳴り物入りの機能を使わなければ、大丈夫だと、、、

その手順のメモです。
因みに、Xperiaにインストールできた後に、
"Instant Run" enableにしたけど、
同じエラー、、、
こりゃ、バクだなぁと、、、

できればいいので、

Peace!!






2018年8月28日火曜日

追随型搬送ロボットは生産性Upしないし、危険

最近、搬送ロボットの問合せが多いのですが、

「追随できますか?」

当たり前だろう、、、もう3年前の話、

でも、僕は、最初から自律を目指していたし、

人と協調して動く時は、ロボットは前

これって、当たり前で、、、

この当たり前が、解らない人は、ロボットに手を出さない方がよい。

今日も、商社から人が来たけど、追随は意味が無い事をよく理解したみたい

搬送ロボットは

(1) 自律走行が基本

(2) 人と協調する時は、前を動く

(3) 複数の人と複数のロボットが協調して作業をする

という事、、、

当たり前の事、、、

特に、(3)は最初から考えていて、だからRDCSを開発したんだ



Peace!!

久しぶり、、、

まぁ、久しぶりにブログ

深層学習、Android、またまたいろいろ取り組み中ですが、

休みたいですね。

Raspberry Pi 2B を動かしていたSDカードを、そのまま

Raspberry Pi 3 に突っ込んだら、動かないわけで、、、

おまじない、、、どこにでも書いてあることだけど、、、

sudo apt-get update
sudo apt-get dist-upgrade
sudo rpi-update
sudo reboot

しかし、Peace じゃないなぁ、、、(-_-)

2018年6月11日月曜日

フューチャアグリ株式会社の5年 まとめてみた

僕が、ロボット開発をするために創業した会社

フューチャアグリ株式会社は、2013年4月1日に設立した会社

元々は、自分の農場で使うロボットを開発する為に作った会社

だから、こじんまりと、楽しくするはずだった。

で、、、いろいろ起こり、あああああって感じで、6年目に入ったわけです。

通常、創業の5年でつぶれる会社がほとんどと言われる中、

難とか持ちこたえて、相変わらずロボット開発をしてるわけで、、、

いろいろやってきました。

上手くいくこともあれば、問題もありーの、、、

苦しい事が多かった5年だけど、、、

なんとか、ある分野では、日本の最先端かもという、

変な位置づけもありーーーの

今の5年の取組まとめたものがこれ!、、、

人間、一歩踏み出せば、何とかなるんですね。

僕の大好きな言葉、そんな感じの5年間、そしてこれからも、、、

All it needs is courage, imagination, and a little dough.

Peace!



2018年6月9日土曜日

memo: Building an Intel Movidius on Raspberry pi

これもメモ

まず、ここを見る

https://movidius.github.io/ncsdk/install.html

swapファイルを、ページに従って1024MBに拡張する。

$ sudo nano /etc/dphys-swapfile

$ sudo /etc/init.d/dphys-swapfile restart

後は、

$ git clone -b ncsdk2 http://github.com/Movidius/ncsdk && cd ncsdk && make install

で、swapファイルを、元の100MBに戻す。
で終わり、、、(^^)

Peace!

memo: Building OpenCV 3.4.1 using cmake-gui

サクッとbuild するなら、、、

cmake-gui 使って、赤い部分がなくなるまで Configure して

Generate して、make すればいい。

という、当たり前のメモ、、、

Peace!

2018年5月26日土曜日

TensorFlow 1.8.0 update

いつもの通りこんな感じ

$ wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.8.0/tensorflow-1.8.0-cp35-none-linux_armv7l.whl

$ sudo pip3 install tensorflow-1.8.0-cp35-none-linux_armv7l.whl

すでにインストールされている1.7.0は、uninstallされてinsatallされる

Peace

2018年5月12日土曜日

2018年4月8日日曜日

OpenCV3.4.1 ERROR ocv_append_source_files_cxx_compiler_options

このエラーは、opencv contrib moduleのメンテナンス版で発生している。

datasetのCmakefile.txt内の構文のエラー

OpenCV3.4.1 公開当時の contribでは、発生しない。


新しいのは、、、

set(the_description "datasets framework")

set(filter_srcs "${CMAKE_CURRENT_LIST_DIR}/src/tinyxml2/tinyxml2.cpp")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  ocv_append_source_files_cxx_compiler_options(filter_srcs "-Wno-suggest-override")  # GCC
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  ocv_append_source_files_cxx_compiler_options(filter_srcs "-Wno-inconsistent-missing-override")  # Clang
endif()

ocv_define_module(datasets opencv_core opencv_imgcodecs opencv_ml opencv_flann OPTIONAL opencv_text WRAP python)

ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4267) # flann, Win64


メンテ前は、、、

set(the_description "datasets framework")
ocv_define_module(datasets opencv_core opencv_imgcodecs opencv_ml opencv_flann OPTIONAL opencv_text WRAP python)

ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4267) # flann, Win64


という事で、古いもので、、、

Contribは、うまくいったものを保存しておく必要があるということかぁ、、、

因みに、cmakeのパラメータは、、、
QTとOpenGLは取った
あと、contribのパスは確認する事 opencv_contrib-masterになっているかも

cmake -D CMAKE_BUILD_TYPE=RELEASE \
                        -D CMAKE_INSTALL_PREFIX=/usr/local \
                        -D INSTALL_PYTHON_EXAMPLES=ON \
                        -D PLANTUML_JAR=/usr/share/java/plantuml.jar \
                        -D ENABLE_NEON=ON \
                        -D WITH_TBB=ON -D BUILD_TBB=ON \
                        -D WITH_QT=ON -D WITH_OPENGL=ON \
                        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules \
                        -D BUILD_EXAMPLES=ON ..

あっ、、、これも、、、でも、TBBは止めた

sudo apt-get install libtbb-dev


Peace!!

2018年3月14日水曜日

OpenCVのビルド整理

ここらで、OpenCV buildの整理。いままで、ザクっとやっていたので、、、

1.必須モジュール
build-essential cmake pkg-config cmake-qt-gui mesa-utils libgl1-mesa-dri
cmake-qt-gui は、UIでパラメータの設定をしなければ不要

2.基本演算系
libatlas-base-dev gfortran libeigen3-dev

3.画像、動画モジュール
libjpeg-dev libtiff5-dev  libpng12-dev libjasper-dev
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libv4l-dev

4.OpenCVのGUIモジュール
libgtk2.0-dev libgtk-3-dev

5.3Dモデル表示モジュール
libvtk5-dev libvtk5-qt4-dev  python-vtk tcl-vtk 
libqt4-core libqtgui4 libqt4-test libqt4-opengl-dev (Qt系が必要なら)

6.python
python3-dev     2系は使わないので、、、

7.深層学習
libprotobuf-dev protobuf-compiler

8.ドキュメント系
sphinx-common doxygen
でも、インストールしない

9.PlantUML
http://plantuml.com/download からダウンロードして、リネームかシンボリックリンク
cd /usr/share/java  にコピーする
sudo ln -s plantuml.8048.jar plantuml.jar


10. cmake 設定
contrib不要の場合
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D PLANTUML_JAR=/usr/share/java/plantuml.jar \
    -D ENABLE_NEON:BOOL=ON \
    -D WITH_TBB=ON -D BUILD_TBB=ON \
    -D WITH_QT=ON -D WITH_OPENGL=ON \
    -D BUILD_EXAMPLES=ON ..

contribを含める場合
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D PLANTUML_JAR=/usr/share/java/plantuml.jar \
    -D ENABLE_NEON=ON \
    -D WITH_TBB=ON -D BUILD_TBB=ON \
    -D WITH_QT=ON -D WITH_OPENGL=ON \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules \
    -D BUILD_EXAMPLES=ON ..

一発shellはこれ(^^)

#! /bin/bash

date;

if [[ `lsb_release -d` =~ .*Raspbian.* ]]
then
        echo "";
        read -p " Continue installing OpenCV (y/n) ? " CONTINUE
        if [[ "$CONTINUE" == "y" || "$CONTINUE" == "Y" ]]; then
                echo "";
                echo "Installing OpenCV";
                echo "";
#                sudo apt-get update -y && sudo apt-get upgrade -y
#                sudo apt-get install -y build-essential cmake pkg-config
#                sudo apt-get install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
#                sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
#                sudo apt-get install -y libxvidcore-dev libx264-dev
#                sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
#                sudo apt-get install -y libatlas-base-dev gfortran
#                sudo apt-get install -y python2.7-dev python3-dev

                  sudo apt-get install -y build-essential cmake pkg-config cmake-qt-gui mesa-utils libgl1-mesa-dri
                  sudo apt-get install -y libatlas-base-dev gfortran libeigen3-dev
                  sudo apt-get install -y libjpeg-dev libtiff5-dev  libpng12-dev libjasper-dev
                  sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libv4l-dev
                  sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
                  sudo apt-get install -y libvtk5-dev libvtk5-qt4-dev  python-vtk tcl-vtk
                  sudo apt-get install -y libqt4-core libqtgui4 libqt4-test libqt4-opengl-dev
                  sudo apt-get install -y python3-dev
                  sudo apt-get install python-dev python-pip
                  sudo apt-get install -y libprotobuf-dev protobuf-compiler
                  sudo apt-get install -y sphinx-common doxygen

                cd ~
                wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.1.zip
                unzip opencv.zip
                wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/master.zip
                unzip opencv_contrib.zip
                                mv ~/opencv_contrib-master ~/opencv_contrib-3.4.1
                cd ~/opencv-3.4.1/
                mkdir build
                cd build

#                cmake -D CMAKE_BUILD_TYPE=RELEASE \
#                      -D CMAKE_INSTALL_PREFIX=/usr/local \
#                      -D INSTALL_PYTHON_EXAMPLES=OFF \
#                      -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.0/modules \
#                      -D BUILD_EXAMPLES=OFF ..

                 cmake -D CMAKE_BUILD_TYPE=RELEASE \
                        -D CMAKE_INSTALL_PREFIX=/usr/local \
                        -D INSTALL_PYTHON_EXAMPLES=ON \
                        -D PLANTUML_JAR=/usr/share/java/plantuml.jar \
                        -D ENABLE_NEON=ON \
                        -D WITH_TBB=ON -D BUILD_TBB=ON \
                        -D WITH_QT=ON -D WITH_OPENGL=ON \
                        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules \
                        -D BUILD_EXAMPLES=ON ..

                make
                sudo make install
                sudo ldconfig
        else
                echo "";
                echo "Skipping OpenCV installation";
                echo "";
        fi
else
        echo "Installing opencv python for non-Raspbian";
        sudo -H pip3 install opencv-python
        sudo -H pip3 install opencv-contrib-python
fi
date;

2018年3月12日月曜日

Raspberry Pi /tmpをメモリー上に確保する

SDカードは、各込み速度が遅くて, いろいろ処理速度を高めようとすると
「データ量の見積もりが可能」であれば
/tmpをメモリー上に取る事が有効なはず
古典的な手法だけど、その手順

(1) メモリー上に/tmpを設定、最後に追記する
sudo vi /etc/fstab

tmpfs     /tmp            tmpfs    defaults,size=84m,noatime,mode=1777      0       0
tmpfs     /var/tmp        tmpfs    defaults,size=16m,noatime,mode=1777      0       0
tmpfs     /var/log        tmpfs    defaults,size=32m,noatime,mode=0755      0       0

(2) /etc/rsyslog.confの編集

sudo vi /etc/rsyslog.conf


(3) /etc/rc.local

sudo vi /etc/rc.local
cat /etc/rc.local

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi


# create folder on ram disk

mkdir -p /var/log/ConsoleKit
mkdir -p /var/log/samba
mkdir -p /var/log/fsck
mkdir -p /var/log/apt
mkdir -p /var/log/ntpstats
mkdir -p /tmp/motion
chown root.ntp /var/log/ntpstats
chown root.adm /var/log/samba
touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp
chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp

exit 0

(4) sudo reboot

(5) 確認   ホスト名が違うのは、ご愛敬(^^)/
before


after

Peace!!

2018年3月1日木曜日

Setup PiTFT3.5 on Stretch

ロボットのUIは、タッチパネルがなんといってもダントツに良い。
紆余曲折があり、Adafruit PiTFT3.5を一点だけ除けば満足して使っている。
一番の良いのは、タッチパネルで使っているGPIO以外が使える事。
だから、I2Cなどのセンサが活用できる。これは、以外に重要なポイントなんです。

一点だけ除くと書いたのは、Easy InstallのモジュールがJessieって事。
ところが、、、
なんと、Device Treeの導入でStretchでも動くとな、、、
「感謝の記事」は、こちら、、、

https://qiita.com/hishi/items/bdd630666277e4f8162a

おかげで、こんな感じで使えるようになりました。



注意点(1)
この説明と違うの所は、僕が使っているのは3.5inchなので/boot/config.txtのこの設定。

dtoverlay=pitft35-resistive,rotate=90,speed=62000000,fps=25

画面も90度回転して電源が下になり、これも良し!
満足満足、、、
この数値の説明は、下記Adafruitページの中ほど、、、

https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/help-faq

注意点(2)
sudo rmmod stmpe_ts; sudo modprobe stmpe_ts

のあとは、sudo rebootが必要

ただ、ちょっと不明な点が多くて、安定しないかも、、、

Peace!!

2018年2月24日土曜日

いつも隣に、死がある

20代で余命宣言されて、、、

いろいろあり、

まずは、40まで生きる事

そして、次は60まで生きる事

そんな人生を僕は送って来た

ただ、予感は60

だから、どう考えても、それ以降が

脳みそのなかでデッドロック状態

バカでかいコンクリートブロックが、思考を進ませない

でも、常に死を意識していたから、何気に納得しているかも、、、

世の中で、絶対は、生きている人間には、死だけ

母が言っていた

絶対の世界に、行くのは確実

残された人が困らないように、

かたずけが、この半年の仕事

2018年2月7日水曜日

memo : Repeat on the command line

個人的なメモ、、、
コマンドラインで繰り返し処理をする。


while true; do date; sleep 1s; done
i=1; while [ $i -le 10 ]; do echo $i; i=$(expr $i + 1);done
watch -n 1 date

Peace!!

2018年2月6日火曜日

An installation of opencv2.4.13.5 on raspberry Pi

raspberry piでopencv 通常にインストール(apt-get) すると
なんと、2.4.9という4年前のモノ

なんでなんだろう。。。

そんな事より、都合で2.4.X使いたいので、buildしてインストールする。
現時点は、2.4.13.5。

いろいろ面倒な事をしたくなので、通常通りにインストール
sudo apt-get -y install libopencv-dev

これにかぶせる形で、インストールする
C言語だけしか使わないので余計なものはインストールしない
とは言っても、最初の通常インストールは意味なかったりして。
wget https://github.com/opencv/opencv/archive/2.4.13.5.zip
unzip 2.4.13.5.zip

cd opencv-2.4.13.5
mkdir build
cd build

sudo apt-get install -y build-essential git cmake pkg-config cmake-qt-gui mesa-utils  libgl1-mesa-dri libjpeg-dev libtiff5-dev libpng12-dev libjasper-dev  libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk2.0-dev libprotobuf-dev protobuf-compiler  libatlas-base-dev gfortran libeigen3-dev libv4l-dev python3-dev libqtgui4 libqt4-test libqt4-opengl-dev libvtk6-dev

cmake -D CMAKE_BUILD_TYPE=RELEASE      -D CMAKE_INSTALL_PREFIX=/usr/local      -D INSTALL_PYTHON_EXAMPLES=OFF       -D ENABLE_NEON=ON      -D WITH_TBB=OFF -D BUILD_TBB=OFF       -D WITH_QT=OFF -D WITH_OPENGL=OFF      -D BUILD_opencv_freetype=OFF      -D BUILD_EXAMPLES=OFF -D WITH_VTK=ON ..

make -j4
sudo ldconfig

例の如く小一時間





2.4.13.5 だす
cd samples/c
./build_all.sh
./facedetect  --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ./lena.jpg


Peace!!

2018年2月1日木曜日

A setting realvnc server

今まで、気が付かなったけどVNCサーバが標準でインストールされている。
使う使わないは、raspi-config  で設定
ただ、デフォルトの画面サイズだと、拒否感満載
画面サイズのは変更方法
因みに新たにインストールする時は、、、
    sudo apt-get install realvnc-vnc-server
     sudo systemctl enable vncserver-x11-serviced.service
     sudo systemctl start vncserver-x11-serviced.service

https://elinux.org/RPiconfig#Video_mode_options

ここを参考に下記リストを参照して /boot/config.txt に赤字を追加する
画面の大きさは、hdmi_modeで設定
hdmi_mode=82 1080p 60 Hz

hdmi_mode=42   1400x1050  60 Hz
160206追記はじめ
OpenGLのドライバーを有効にすると、画面サイズがデフォルト画面になってしまう。従って、RealVNCを使うときは、OpenGLドライバーとdisableする。
赤字部分。下のconfig.txtの下記部分を比較して設定する事。
画面の感じは、85番が一番よいかも。。。

hdmi_ignore_edid=0xa5000080
hdmi_group=2
# RealVNC setting
# when  use RealVNC, OpenGL driver disable as below
# dtoverlay=vc4-kms-v3d
# 16 1024x768  60Mhz
# 42 1400x1050 60Mhz
# 82 1080
# 85 720p
hdmi_mode=85

160206追記終わり

sudo vi /boot/config.txt
cat /boot/config.txt
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=85

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
#dtparam=audio=on
# dtoverlay=i2s-mmap
dtoverlay=googlevoicehat-soundcard
# dtoverlay=googlevisionbonnet-myriad
# dtoverlay=aiy-io
# dtoverlay=aiy-leds
start_x=1
gpu_mem=128
# dtoverlay=dwc2

Peace!!


2018年1月30日火曜日

Google AIY Project Voice Kit (Photo only)

2台購入したので、さっそく組立、、、20分位/台
まだ動かないけど、写真だけアップ

意外と小さい

Peace!!



2018年1月17日水曜日

Learning sed for bash cgi processing

開発時には、何回も”ちょっとテスト”必要ですが、、、
今回は、sed使ってcurlで投げた引数の処理
curlで投げた先が、bashというのはご愛敬で、、、

あまりにも、久しぶりのsedを使った処理だったので、メモとして記録

端末側からは、、、

curl -X POST -d "qq=123&aaa=222" http://www.workrobot.co.jp/api/rdcs/v2/mng/robot/net/net_setting

実行結果は、、、
POST
14

key1: qq  value1: 123
key2: aaa  value2: 222

success command

サーバ側のスクリプトは、、、
#!/bin/bash

#touch `/bin/hostname`

#cat - > qq
#cat -  > qq
read STRING

echo $REQUEST_METHOD
echo  $CONTENT_LENGTH
echo
value=`echo "${STRING}" | sed -e "s/.*=\(.*\)/\1/"`
str=`echo "${STRING}" | sed -e "s/\(.*\)=.*/\1/"`
key=`echo "${str}" | sed -e "s/.*&\(.*\)/\1/"`

#echo $str
str2=`echo "${str}" | sed -e "s/\(.*\)&.*/\1/"`
value1=`echo "${str2}" | sed -e "s/.*=\(.*\)/\1/"`
key1=`echo "${str2}" | sed -e "s/\(.*\)=.*/\1/"`
echo "key1:" ${key1} " value1:" ${value1}
echo "key2:" ${key} " value2:" ${value}
echo
echo "success command"

sedの呪文の世界(笑)

Peace!!