2020年8月31日 星期一

ubuntu 18 + vino (vnc) server

參考資料

https://askubuntu.com/questions/1112127/how-to-set-vinos-password-through-terminal

https://hollyqood.wordpress.com/2019/04/25/nvidia-agx-xavier%E9%81%A0%E7%AB%AF%E7%99%BB%E5%85%A5remote-by-vnc%E6%8C%89%E5%9C%96%E6%96%BD%E5%B7%A5%E4%BF%9D%E8%AD%89%E6%88%90%E5%8A%9F%E7%89%88%E6%9C%AC/


安裝dconf-editor

sudo apt-get install dconf-editor


開啟 dconf-editor, 然後選 /org/gnome/desktop/remote-access

把requre-encryption


接著設定密碼 (以下範例的密碼是 mypasswd

gsettings set org.gnome.Vino vnc-password $(echo -n 'mypasswd'|base64)


然後就可以用vnc遠端進來了 XD

2020年8月29日 星期六

Nvidia Jetson Xavier NX + D435 景深攝影機

Jetson 開發版的前置步驟就略過了 (抓image燒到SD卡裡面)

基本上都是參考這篇文章:
https://blog.cavedu.com/2020/02/11/jetson-nano-realsensed435-setup/


現在的swap設定都有自動化的腳本了, 真方便 0.0

git clone https://github.com/jetsonhacksnano/installSwapfile

cd installSwapfile

 ./installSwapfile.sh

sudo reboot 

 

然後抓realsense的資料下來

git clone https://github.com/jetsonhacksnano/installLibrealsense

cd installLibrealsense

./installLibrealsense.sh

./buildLibrealsense.sh

只是這份自動安裝腳本可能會遇到錯誤訊息, 需要自行解決

在buildLibrealsense.sh裡面, 有設定 NVCC_PATH=/usr/local/cuda-10.0/bin/nvcc

不過我的 NVCC_PATH 應該是 /usr/local/cuda-10.2/bin/nvcc 才對

修正後就安裝成功了


接著可以用 realsense-viewer 來看攝影機的資料, 這個GUI介面有提供錄製功能, 只是錄完的檔案是 .bag 檔

在安裝realsense時, 其實有內建一包tools資料夾, 裡面有個 rs-convert 可以用

(預設)路徑在: ~/librealsense/build/tools/convert 裡面, 有個執行檔 rs-convert

用這個 rs-convert 去讀取 .bag 檔, 參數可以參考官網說明
https://github.com/IntelRealSense/librealsense/tree/master/tools/convert

以下是我的讀取指令(範例):
./rs-convert -i 20200829_120022.bag -p png_folder/ -v csv_depth_folder/

.bag檔是錄製完的檔案; 當時有開兩個資料夾, 分別儲存png與csv景深資料

當終端機跑到100%時, 會回報處理了多少資料, 如下:

CSV converter

570 Depth frame(s) processed


PNG converter

562 Color frame(s) processed

570 Depth frame(s) processed


2020年6月2日 星期二

raspberry pi的cross compile

主要資料來源:
https://www.raspberrypi.org/documentation/linux/kernel/building.md

https://www.raspberrypi.com.tw/tag/cross-compiler/


後來在整理的時候, 發現兩邊的環境變數有點不同
一個是: ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/
另一個: ~/tools/arm-bcm2708/arm-linux-gnueabihf/bin/

裡面的東西看起來好像都一樣(!?

然後就寫個hello.c來測試一下

結果發現兩邊的arm-linux-gnueabihf-gcc編譯出來的檔案, 都可以在PI上面執行


那就視為是相同的好了(!?) XD

2020年5月29日 星期五

翻譯 XD

先期技轉金 的英文: early-stage technology transfer funds

資料來源: https://www.cc.ncku.edu.tw/rule/content.php?sn=567

作業上傳區 by Google Drive

https://www.playpcesor.com/2015/10/google-drive-upload-files.html
https://www.labnol.org/internet/receive-files-in-google-drive/19697/

差點忘了怎麼弄, 幸好有找到 XD


2020年5月28日 星期四

DNS-over-TLS

紀錄一下特殊用途(!?)

這邊整理很多
https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Test+Servers
https://github.com/curl/curl/wiki/DNS-over-HTTPS


感覺可以擋廣告的:
dns.adguard.com
dot-jp.blahdns.com
dns.oszx.co
dns.flatuslifir.is
dot.tiar.app
doh.li

主機在歐美的(?
dot.centraleu.pi-dns.com
dot.northeu.pi-dns.com
dot.westus.pi-dns.com
dot.eastus.pi-dns.com
dns.aaflalo.me:853

2020年5月23日 星期六

sony XZ1 關閉內建的服務

這個指令可以查詢已關閉的app:
adb shell pm list packages -d


最近無聊又關了一些:

adb shell pm disable-user --user 0 com.sonymobile.xperialounge.services
adb shell pm disable-user --user 0 com.sonymobile.entrance
adb shell pm disable-user --user 0 com.sonymobile.coverapp2
adb shell pm disable-user --user 0 com.sonyericsson.updatecenter
adb shell pm disable-user --user 0 com.sonymobile.retaildemo
adb shell pm disable-user --user 0 com.qualcomm.wfd.service
adb shell pm disable-user --user 0 com.sonymobile.dualshockmanager
adb shell pm disable-user --user 0 com.touchtype.swiftkey
adb shell pm disable-user --user 0 com.swiftkey.swiftkeyconfigurator
adb shell pm disable-user --user 0 com.sonymobile.dualshockmanager

目前已經關閉的東西:
package:com.touchtype.swiftkey
package:com.sonymobile.coverapp2
package:com.sonymobile.getset.priv
package:com.sonymobile.deqp
package:com.google.android.marvin.talkback
package:com.google.android.apps.work.oobconfig
package:com.qualcomm.wfd.service
package:com.sonymobile.entrance
package:com.s.antivirus
package:com.sonymobile.susrescheck
package:com.google.android.webview
package:com.android.facelock
package:com.sonyericsson.updatecenter
package:com.sonyericsson.xhs
package:com.swiftkey.swiftkeyconfigurator
package:com.sonymobile.moviecreator.rmm
package:com.sonymobile.xperialounge.services
package:com.sonymobile.email
package:com.sonymobile.pobox
package:com.sonymobile.retaildemo
package:com.sonymobile.pip
package:com.sonymobile.usm
package:com.sonyericsson.startupflagservice
package:com.sonymobile.getset
package:com.sonymobile.dualshockmanager
package:com.sony.tvsideview.videoph

2020年5月7日 星期四

安裝llvmlite

在研究安裝librosa, 然後 pip3 install librosa一值出錯

後來發現是llvmlite卡住了....

[error]
Failed building wheel for llvmlite

    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-f6srimn0/llvmlite/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-jf40ng7f/install-record.txt --single-version-externally-managed --compile --user --prefix=" failed with error code 1 in /tmp/pip-install-f6srimn0/llvmlite/


[sol]
後來在這邊看到
https://raspberrypi.stackexchange.com/questions/111697/unable-to-pip-install-librosa-in-raspberry-pi-3-model-b-raspbian-stretch

先去裝llvm:
sudo apt install llvm

然後查路徑
which llvm-config

在pip3前面加上環境變數
LLVM_CONFIG=/usr/bin/llvm-config pip3 install llvmlite



然後就可以了!!!!

2020年4月21日 星期二

MFCC的討論

MFCC python plot
https://blog.csdn.net/m0_37052320/article/details/80743906

How to plot MFCC in Python?
https://stackoverflow.com/questions/43506198/how-to-plot-mfcc-in-python

Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What's In-Between
https://haythamfayek.com/2016/04/21/speech-processing-for-machine-learning.html#fnref:1


人臉識別的討論

【人臉辨識】使用5 Facial Landmarks進行臉孔校正
https://makerpro.cc/2019/08/face-alignment-through-5-facial-landmarks/

[ Dlib ] 利用 Dlib進行臉部捕捉

Raspberry Pi: Facial landmarks + drowsiness detection with OpenCV and dlib

Trained model files for dlib example programs.

python dlib学习(七):人脸特征点对齐
https://blog.csdn.net/hongbin_xu/article/details/78511292


lepton 熱像儀 討論串

Errrrrrr.... (這個詞最近很紅? XD)


最近用熱像儀, 發現很容易讀不到畫面 (還是板子壞了? QQ)

把目前找到的分頁紀錄一下

Help! Setup Failed - Flir Lepton + Breakout v1.4 + RPI3 Model B
https://groups.google.com/forum/#!searchin/flir-lepton/red$20square|sort:date/flir-lepton/hFN4Rd93XM0/kD5OdFDaBwAJ

Raspberrypi_Video Red Square Forever...
https://groups.google.com/forum/#!searchin/flir-lepton/red$20square|sort:date/flir-lepton/-oGTU1Lk-NA/pGKlCD_TCAAJ

Flir Lepton中有關「red square」的結果
https://groups.google.com/forum/#!searchin/flir-lepton/red$20square%7Csort:date

2020年4月15日 星期三

RaspPI 安裝 dlib

Err: Failed building wheel for dlib
Sol: pip install --upgrade pip

Err: CMake must be installed to build the following extensions: dlib
Sol: sudo apt-get install cmake

在桌面環境安裝會超久 (12小時還沒好...)

使用終端機模式會快很多 (3小時內?)

sudo init 3   # 這個指令會關閉多人/桌面模式
pip install dlib

sudo init 5  # 恢復桌面模式

----

補充

pip install dlib -> 這個是python2用的版本, 因為wheel上沒有已編譯好的whl檔, 所以會變成抓source code下來安裝

如果用python3的話, 就有現成的whl可以用, 速度會超快 XDDDD

2020年4月7日 星期二

2020年3月31日 星期二

lepton 熱像儀

主要參考來源是這邊:
https://learn.sparkfun.com/tutorials/flir-lepton-hookup-guide

裡面提到很多前置作業, 像是開啟I2C, SPI...

接下來就是抓source code了!

======================================
1. Code for getting started with the FLIR Lepton breakout board
https://github.com/groupgets/LeptonModule

這邊的話, 有用過 raspberrypi_video 與 v4l2lepton 做過測試

A. raspberrypi_video
https://github.com/groupgets/LeptonModule/tree/master/software/raspberrypi_video

sudo raspi-config  # enable the SPI and I2C
sudo apt-get install qt4-dev-tools
qmake && make  # cd to the LeptonModule/sofware/raspberrypi_video folder
./raspberrypi_video

然後就會看到熱影像畫面了

如果這時候只看到一個紅色框框, 據說是相機模組(?)沒有裝好
把黑色的模組拔下來再重插就好


B. v4l2lepton
https://github.com/groupgets/LeptonModule/tree/master/software/v4l2lepton

這邊有參考台灣樹莓派的流程https://github.com/raspberrypi-tw/meetup19

* Build v4l2loopback virtual device node.
# Install Kernel Source and Header
sudo apt-get update
sudo apt-get install bc libncurses5-dev flex bison
sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source && /usr/bin/rpi-source -q --tag-update
rpi-source

# Install required module
pip3 install imutils
pip3 install opencv-python==3.4.6.27


* Install V4L2 Kernel Module
$ cd ~
$ git clone https://github.com/umlaeute/v4l2loopback
$ cd ~/v4l2loopback
$ sudo make
$ sudo make install
$ sudo depmod -a
$ sudo modprobe v4l2loopback


* Enable FLIR Camera V4L2
cd ~
git clone https://github.com/groupgets/LeptonModule
cd ~/LeptonModule/software/v4l2lepton
sed -i -e 's/video1/video0/g' v4l2lepton.cpp
make
sudo ./v4l2lepton -v /dev/video0 & -d /dev/spidev0.0  # 這邊的編號會根據每個人的環境發生變化

然後終端機會看到下面的訊息: (要看到第二行的done reading才會有畫面)
Waiting for sink
done reading, resets: 


接下來去執行台灣樹莓派的範例 (flir_preview.py)就可以看到熱像儀畫面了

======================================
2. pylepton: Quick and dirty pure python library for interfacing with FLIR lepton
https://github.com/groupgets/pylepton

這邊有流程: https://lepton.flir.com/forums/topic/pylepton-overlay-guide-2-0-for-raspbian-pixel/

sudo apt-get install python-opencv python-numpy
git clone https://github.com/kekiefer/pylepton.git
cd pylepton
sudo python setup.py install

然後執行 pylepton_overlay 就可以看到畫面了

不過這個程式是融合 pi camera 與 熱像儀的畫面, 所以需要設定透明度

官網範例: pylepton_overlay -a 255 就是100% lepton overlay 

======================================

後記(?)

感覺要用python去開發的話, 用v4l2lepton 似乎比較方便

只是這個東西似乎沒辦法取代額溫槍來量體溫, 誤差似乎比較大
而且還沒看到校正的方式 QQ

紅外線熱像儀 FLIR Radiometric Lepton

最近買了一個熱像儀, 稍微整理一下怎麼使用

產品資訊:
https://www.raspberrypi.com.tw/30009/15948-flir-radiometric-lepton-dev-kit-v2


只是拿到的板子是雙排pin腳, 網路上有些教學是單排pin腳, 而且還有印刷腳位名稱 QQ

雙排的規格可以參考這個網頁
https://drive.google.com/file/d/1ZoJ5Z3FIoHFgPHvqky2rA_vTJ1bs079j/view



















裡面的pin-out有說明腳位意義



pin腳的連接方式可以參考這邊的說明
https://learn.sparkfun.com/tutorials/flir-lepton-hookup-guide

基本上就是看PI的GPIO腳位名稱, 然後把I2C與SPI的腳位對接
Lepton熱像儀簡稱L, 樹莓派當然就用P來表示 XD

(L) -- (P)
1 ---- 9  # GND
5 ---- 3  # SDA
7 ---- 23  # SPI_CLK
9 ---- 19  # SPI_MOSI

2 ---- 1  # 3V3
8 ---- 5  # SCL
10 ---- 24  # SPI_CS
12 ---- 21  # SPI_MISO



==============================================

以上是腳位的線路連接方式, code再另外寫一篇好了 zzz

==============================================

一些規格書的連結:
FLIR LEPTON® Engineering Datasheet
https://www.flir.com/globalassets/imported-assets/document/flir-lepton-engineering-datasheet.pdf

FLIR Lepton® Camera Breakout Board v2.0
https://drive.google.com/file/d/1ZoJ5Z3FIoHFgPHvqky2rA_vTJ1bs079j/view

FLIR LEPTON® with Radiometry Datasheet
https://drive.google.com/file/d/10Ps99n8eudVfr7na4ImGDGzhxFpeNOie/view

FLIR LEPTON® Software Interface Description Document (IDD)
https://www.flir.com/globalassets/imported-assets/document/flir-lepton-software-interface-description-document.pdf

2020年3月30日 星期一

氣壓計原理說明

這個上課講義蠻豐富的: (p15是Pressure Sensors)
https://www.engr.sjsu.edu/trhsu/ME189_Chapter%202.pdf

這本書(?)有提到BMP085
https://books.google.com.tw/books?id=eENBDwAAQBAJ&pg=PA338&lpg=PA338&dq=bmp+085+Wheatstone+bridge&source=bl&ots=XdXx7Zph8i&sig=ACfU3U2xon4M5KDji9hd6pxVP0qs-_qScg&hl=zh-TW&sa=X&ved=2ahUKEwj5luWSoMHoAhVPFqYKHS07DV4Q6AEwCnoECAoQAQ#v=onepage&q=bmp%20085%20Wheatstone%20bridge&f=false

不過bmp085的datasheet有提到它是"Piezo-resistive pressure sensors", 這邊有提到
https://www.rohm.com/electronics-basics/sensor/barometric-pressure-sensor


Piezo-resistive原理的氣壓計, 感覺就是裡面有四個電阻, 然後用"惠斯通電橋(Wheatstone bridge)"去計算氣壓值

(看到piezo就會想到pizza, XD)

這邊也有提到:
https://www.electronicspecifier.com/products/sensors/a-quick-guide-to-choosing-a-pressure-sensor


2020年3月25日 星期三

調整PI的解析度

在使用TTL控制時, 設定完VNC遠端後, 用vnc viewer開啟時, 有時候會遇到螢幕太小 (解析度錯誤)的情形

我也不知道為什麼, 至少我沒遇過 ˊ_>ˋ

vnc官網其實有提到:
https://help.realvnc.com/hc/en-us/articles/360002249917-VNC-Connect-and-Raspberry-Pi#troubleshooting-vnc-server-0-7

在終端機打:
sudo raspi-config

然後去進階選項找"解析度"
Advanced Options > Resolution

選完之後, 他會自動重開機, 然後就ok了

相似度分析?

來研究一下opencv的相似度好了 QQ

colormap
https://docs.opencv.org/2.4/modules/contrib/doc/facerec/colormaps.html

OpenCv-C++-ORB特徵檢測與匹配
https://www.itread01.com/content/1545506044.html

python OpenCV 图片相似度 5种算法
https://blog.csdn.net/enter89/article/details/90293971

【python 图像相似度】OpenCV图像相似度ORB算法--相似图像去重
https://blog.csdn.net/u013421629/article/details/87364489

2020年3月24日 星期二

Raspberry PI + OpenWRT

好久沒有編openwrt, 都快忘了流程

稍微記錄一下: (以下在PI3 ModelB v1.2 測試過可以用)
https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi
https://oldwiki.archive.openwrt.org/doc/howto/installopenwrt


git clone git://github.com/openwrt/openwrt.git
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev unzip

cd openwrt/

./scripts/feeds update -a

make menuconfig

make

cd bin/targets/bcm27xx/bcm2709/


(記得先解壓縮.gz)
sudo dd if=openwrt-bcm27xx-bcm2709-rpi-2-ext4-factory.img of=/dev/sdg bs=2M conv=fsync

PI3 的 config.txt 設定

來自台灣樹莓派的建議:


您們可以在 /boot/config.txt 做以下設定,GPU 速度會是穩定並且可以接受的(GPU 通常會比 CPU 溫度高一些,因此固定 GPU 的 core_freq=250)。
===
dtoverlay=pi3-miniuart-bt
core_freq=250
enable_uart=1
===

如果需要超頻,可以參考這份文件。
https://www.raspberrypi.org/documentation/configuration/config-txt/overclocking.md

Pi 3 的建議選項。
===
dtoverlay=pi3-miniuart-bt
enable_uart=1
arm_freq=1350
core_freq=500
over_voltage=4
disable_splash=1
force_turbo=1
sdram_freq=500
===

2020年3月20日 星期五

網頁暫存

把一些分頁紀錄一下

多目标跟踪算法(MOT)评价指标
https://zhuanlan.zhihu.com/p/75776828
> 除了MOTA, 還有很多指標可以看


https://ipl-uw.github.io/publication.html
> 在看tracklet, 好難 QQ

光流法
https://zh.wikipedia.org/wiki/%E5%85%89%E6%B5%81%E6%B3%95
> 光流(Optical flow or optic flow)是關於視域中的物體運動檢測中的概念。用來描述相對於觀察者的運動所造成的觀測目標、表面或邊緣的運動。光流法在樣型識別、計算機視覺以及其他影像處理領域中非常有用,可用於運動檢測、物件切割、碰撞時間與物體膨脹的計算、運動補償編碼,或者通過物體表面與邊緣進行立體的測量等等。
> 看不懂....

DAIN
https://grisk.itch.io/dain-app
https://github.com/baowenbo/DAIN
> 可以產生60fps的影片!?

JetbotでOpenVSLAMを試してみた。
http://masato-ka.hatenablog.com/entry/2019/07/21/235645
> Jetbot + openvslam的教學


合作式SLAM
https://github.com/d-vo/collab_orb_slam2
https://d-vo.github.io/RAL18/



2020年3月18日 星期三

快速產生 bibitem 內容

Ref:
https://blog.csdn.net/zhuiqiuk/article/details/102996455
https://blog.csdn.net/u014435314/article/details/85697292


之前在寫latex的時候, 都會習慣另外寫一個 .bib 檔來放reference
可是有些投稿單位的template是用 bibitem, ex: IEEE Access

用人工的方式太累了, 就用自動的方式吧 XD

建立一個空白的tex檔, 然後寫入下面的資料

=====================================
\documentclass{article}
\begin{document}
\nocite{*}
\bibliography{references} % your bib file
\bibliographystyle{IEEEtran}
\end{document}
=====================================

然後使用 latex -> bibtex
就會出現一個 .bbl 的檔案, 裡面的語法就是 bibitem 的內容

接著就是複製貼上 XDDDD

2020年2月25日 星期二

Raspberry PI 安裝 OpenCV

在import cv2會有錯誤訊息

Python2 的 安裝方法:
sudo apt-get install python-opencv

Python3 的 安裝方法: 
pip3 install opencv-python==3.4.6.27
Ref: https://github.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi/issues/67

直接裝最新版可能無法使用, 先指定版本比較安全

VrtualBox 錯誤訊息(?

之前為了實驗課, 有準備一個Fedora 5的虛擬機

前幾天重跑的時候發現開機後沒有視窗介面, 錯誤訊息是 no screen found.  囧!!

後來在這邊看到解決方法:
http://www.pclinuxos.com/forum/index.php/topic,137837.0.html

感覺是VB更新到某一個版本後, 虛擬機裡面的Guest Additions需要重新安裝

1. 先進入終端機模式
2. 插入VB的Guest映像檔
3. 用指令的方式去安裝Guest additions
4. 重開機, 然後就好了

神奇~~ XD

2020年2月21日 星期五

PI camera 加速方法 (!?

昨天看到一篇文章在介紹提升 PI 的FPS
https://www.pyimagesearch.com/2015/12/28/increasing-raspberry-pi-fps-with-python-and-opencv/

然後用他的sample code測了一下, 結果是:

pi@raspberrypi:~$ python3 picamera_fps_demo.py
[INFO] sampling frames from `picamera` module...
[INFO] elasped time: 3.21
[INFO] approx. FPS: 31.47 (by cv2.VideoCapture(0))

[INFO] sampling THREADED frames from `picamera` module...
[INFO] elasped time: 0.32
[INFO] approx. FPS: 309.94 (by PiVideoStream().start())

pi@raspberrypi:~$ python3 fps_demo.py
[INFO] sampling frames from webcam...
[INFO] elasped time: 3.77
[INFO] approx. FPS: 26.51 (by cv2.VideoCapture(0))

[INFO] sampling THREADED frames from webcam...
[INFO] elasped time: 1.74
[INFO] approx. FPS: 57.59 (by WebcamVideoStream(src=0).start())


看了一下code, 主要差異是讀取video的語法

[方法1: 大約30FPS]
import cv2
stream = cv2.VideoCapture(0)

[方法2: 大約58FPS]
from imutils.video import WebcamVideoStream
vs = WebcamVideoStream(src=0).start()

[方法3: 大約300FPS] 驚!!!!!!!!!!!!!!
from imutils.video.pivideostream import PiVideoStream
vs = PiVideoStream().start()

raspbian 安裝 dlib

安裝指令其實很簡單, 就一行pip而已:
pip install dlib


可是啊, 安裝過程超級久, 感覺系統資源吃很兇
從昨天下午4點多打完指令後, 到了今天早上9點多還在跑
可是按ctrl + c還可以終止, 應該也不算當掉 XDD

然後就改了一下swap大小, 從100變成1024
sudo nano /etc/dphys-swapfile

找 CONF_SWAPSIZE=100
把 100 改成 1024

重新啟動的指令: sudo service dphys-swapfile restart
檢查目前的狀態: swapon -s
ref: https://blog.gtwang.org/iot/raspberry-pi/raspberry-pi-swap-configuration-using-usb-stick/


為了節省更多系統資源(?) 也一併把桌面環境關閉, 改成純文字模式 (其實忘記正確的名稱)
指令: sudo init 3

打完這個指令後, 桌面環境就被關閉了


這個時候再打 pip install dlib, 大約兩小時就跑完了 (QQ)

要恢復桌面環境就再打 sudo init 5


2020年2月19日 星期三

[測試中] BerryNet on RaspPI

官網
https://github.com/DT42/BerryNet
https://github.com/DT42/BerryNet/wiki/Installation
https://github.com/DT42/BerryNet/wiki/Dashboard
https://github.com/DT42/BerryNet/wiki/Cameras
https://github.com/DT42/BerryNet/blob/master/doc/darknet-nnpack.md


投影片介紹
https://docs.google.com/presentation/d/1SZGGCBSZSHyt_m7kWsrlZtjnzLY09bvQ-BxvUjQVzxg/edit#slide=id.g6526f6c623_0_417

台灣樹莓派介紹
https://www.raspberrypi.com.tw/28323/meetup-28-data/

其他網站
https://hackaday.io/project/28649-berrynet-deep-learning-gateway-on-raspberry-pi

DIY Your AI Home Security Camera With Raspberry Pi And Open-source Software
https://medium.com/berrynet/diy-your-ai-home-security-camera-with-raspberry-pi-and-open-source-software-10d4364df20f

-----------------

$ git clone https://github.com/DT42/BerryNet.git
$ cd BerryNet
$ ./configure

If the installation is completed successfully, next step is to configure your BerryNet.
https://github.com/DT42/BerryNet/wiki/Configuration

輸入這個網址
http://PI_addr/berrynet-dashboard/


然後就沒有了 QQ

2020年2月3日 星期一

DHT11的datasheet閱讀心得(?


雖然是一個很普通的sensor(!?), 最近在看code跟datasheet的內容, 發現很多對不上的地方

在一開始的MCU傳送訊號時, 會先送出 >18ms 的signal, 然後再等待20~40 us, 接下來是讀取DHT回傳的bit


------------------------------------------------------------------
在Adafuit的範例裡:
https://github.com/adafruit/Adafruit_Python_DHT/blob/master/source/Raspberry_Pi_2/pi_2_dht_read.c

  // Set pin high for ~500 milliseconds.
  pi_2_mmio_set_high(pin);
  sleep_milliseconds(500);

  // Set pin low for ~20 milliseconds.
  pi_2_mmio_set_low(pin);
  busy_wait_milliseconds(20);

在另一個範例裡:
https://github.com/szazo/DHT11_Python/blob/master/dht11.py

        # send initial high
        self.__send_and_sleep(RPi.GPIO.HIGH, 0.05)

        # pull down to low
        self.__send_and_sleep(RPi.GPIO.LOW, 0.02)

------------------------------------------------------------------

這兩個的寫法, MCU分別傳 500ms(adafruit) 與 50ms(szazo)的訊號(high), 然後等待(low) 20 ms的時間.

只是看datasheet的說明, 應該傳送 20ms 就夠了

至於等待(low)的時間長度, 應該是要包含後面的DHT回傳資料的區間
假設回傳的都是1 (120us), 40 bit 就是 40 * 120 us

再加上DHT response (160us), 還有MCU wait time (20~40 us)

總共是 40*120 + 160 + 40 = 5000 us = 5ms

理論上, MCU送 20ms 的訊號(high), 然後再等待(low) 5 ms, 應該就可以了


實測之後會發現, 等待(low) 5 ms 會有問題, 10ms會比較穩定一點

所以code可以改成 傳送20ms的訊號(high), 然後等待10ms (low)


可是規格書有提到, 最多只能每秒測一次

所以時間寫大一點好像也沒差 XD

-----

為什麼blogger不能直接 ctrl+v 貼上圖片啊, 這樣好麻煩... zzz


2020年1月31日 星期五

奇怪的apt-get upgrade

今天重新裝raspbian, 然後想說先更新一下, 結果一打就出現錯誤訊息. 囧


pi@raspberrypi:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 vlc-bin : Depends: libvlc-bin (= 3.0.8-0+deb10u1+rpt1) but 3.0.8-0+deb10u1+rpt7 is to be installed
 vlc-plugin-skins2 : Depends: vlc-plugin-qt (= 3.0.8-0+deb10u1+rpt7) but 3.0.8-0+deb10u1+rpt1 is to be installed
E: Broken packages


很奇妙的是, 改用 sudo apt upgrade 似乎就可以了!?
然後再加上 --fix-missing, 就順利更新了

(不知道為什麼  囧)

後來又遇到站台問題, 直接改成NCHC的 (來源: https://www.raspbian.org/RaspbianMirrors
)

sudo nano /etc/apt/sources.list

原本: deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
修改成: deb http://free.nchc.org.tw/raspbian/raspbian/ buster main contrib non-free rpi


2020年1月30日 星期四

Virtualbox could not switch the monitor configuration crtc 63

今天開工, 一打開virtualbox就一直遇到這個訊息:

"could not switch the monitor configuration crtc 63"

後來用去虛擬機設定, 把顯示的記憶體從16MB改成64MB就好了

(我也不知道為什麼 XD)

2020年1月17日 星期五

Nvidia Nano 進入 Recovery mode

正在研究用SDK manager刷Nano (因為可以直接內建Deepstream!?)

做到後面需要把Nano設為Recovery mode

簡單說:
* 找兩個Jumper, 一個插在J48上 (可以用變壓器供電), 一個插在J40的PIN 3, 4上. 雖然手冊PDF有寫PIN 3, 4是哪兩個, 可是從那個看不出方向. 其實板子底部有印刷文字, 找FRC的腳位就好.

* Jumper弄好後, 用變壓器供電, 然後用micro USB線把Nano跟電腦連接在一起, 電腦端會偵測到有USB裝置, 然後就可以刷了

* Nano進入Recovery mode後, HDMI輸出沒有畫面


https://devtalk.nvidia.com/default/topic/1050888/jetson-nano/power-and-suspend-buttons-for-jetson-nano/post/5333577/

https://developer.download.nvidia.com/assets/embedded/secure/jetson/Nano/docs/NVIDIA_Jetson_Nano_Developer_Kit_User_Guide.pdf

Camera SLAM on PI?

找一篇討論串

有機會來試試看
https://gist.github.com/nickoala/8d7e0bc24be3cec459e63bc1eb8cc858

只是速度好像有點悲劇 QQ
"running on Pi 3, I was able to get 1-2 frames per second."

2020年1月15日 星期三

N2D: (Not Too) Deep Clustering

前陣子再找sensor data的機器學習分類方式, 看到這個N2D

之後來研究看看(!?)

Not too deep clustering is a state of the art "deep" clustering technique, in which first, the data is embedded using an autoencoder. Then, instead of clustering that using some deep clustering network, we use a manifold learner to find the underlying (local) manifold in the embedding. Then, we cluster that manifold. In the paper, this was shown to produce high quality clusters without the standard extreme feature engineering required for clustering.

Project description
https://pypi.org/project/n2d/

Welcome to n2d’s documentation!
https://n2d.readthedocs.io/en/latest/


https://github.com/rymc/n2d


Paper
N2D: (Not Too) Deep Clustering via Clustering the Local Manifold of an Autoencoded Embedding
https://arxiv.org/abs/1908.05968


調整虛擬機的硬碟大小


簡單說分成兩個步驟

1. 在virtualbox上設定硬碟大小為 XX GB

2. 設定完後, 回虛擬機的系統裡面調整磁區大小


1的作法:
cd “C:\Program Files\Oracle\VirtualBox”
VBoxManage modifymedium disk “C:\Users\xxxxxxxx.vdi” --resize 81920
# 這個例子是80 GB

Ref: https://www.howtogeek.com/124622/how-to-enlarge-a-virtual-machines-disk-in-virtualbox-or-vmware/



2的作法:
在ubuntu裡面就可以裝gparted, 然後直接調整 XD
不過預設磁碟後面是swap, 所以要先刪掉, 然後再調整大小, 最後再把swap加回去

https://unix.stackexchange.com/questions/196512/how-to-extend-filesystem-partition-on-ubuntu-vm


--
好吧, 這篇是寫給自己看的 XD

2020年1月14日 星期二

Nvidia Nano 版本型號差異

在這邊看到:

The main difference between the two is that the Jetson Nano Module has eMMC storage built-in, and comes with a longer warranty, to be used as a component in a total system, and the jetson Nano Developer Kit requires that you add your own microSD card for storage, and comes with a shorter warranty, for direct sale to consumers/developers.
There should be no performance difference for the GPU itself as far as I can tell.


簡單說

Jetson Nano Module: 有內建記憶體

Jetson Nano Developer Kit: 要插SD卡

make menuconfig之後, 要重新config

最近在試著重新編譯PI的kernel
https://www.raspberrypi.org/documentation/linux/kernel/building.md


可是執行make menuconfig後, 會一直出現restart config, 然後要重新一個一個設定

後來下面連結的討論才發現應該要設定ARM的參數才對:
https://stackoverflow.com/questions/13636129/make-modules-install-restarts-configuration-process


原本的:
make menuconfig

應該是
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

最後再繼續
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

2020年1月9日 星期四

Nvidia Jetson Nano + YOLOv3 測試結果

稍微實際測試這個組合的效能, 不過也只有跑 dog.jpg 這張圖. 不知道camera的效果如何

結果如下:

Yolov3_onnx: 0.8699 (TensorRT)
Yolov3 CPU: 跑不動啊 (Tensorflow)
Yolov3 GPU: 跑不動啊 (Tensorflow)

tiny Yolov3_onnx: 0.147424 (TensorRT)
tiny Yolov3 CPU: 3.933574 (Tensorflow)
tiny Yolov3 GPU: 0.128390 (Tensorflow)


原本使用 TensorFlow GPU, 跑不動YOLOv3
改用 TensorRT 就可以跑了

只是同樣用tiny YOLOv3去分析 dog.jpg
TensorFlow GPU的結果是 0.12839
TensorRT是 0.147424

TRT反而慢一點點?

不過我只測過這張圖片而已, 沒有測過其他的圖片 or 影片, 或許剛好沒看到TRT的優勢

相關安裝方法可以參考下面連結

1. Nvidia Nano + Tensor RT + YOLOv3 的安裝方法
https://hackmd.io/U6zU3QEdTKWq1Zdrj8ZLcA

2. Nvidia Nano + Tensor RT + Tiny YOLOv3 的安裝方法
https://hackmd.io/3eVucVx6Q-KLq7ipFh0oYQ

3. Nvidia Jetson Nano + YOLO 的安裝方法
https://hackmd.io/KGdNHN-lTIKqOqDiGnFVhQ


2020年1月8日 星期三

PI的系統備份 + 縮減大小

這個感覺蠻實用的(!?)  有機會來試試看

[Raspberry Pi] 不再備份整張SD卡,縮小RaspberryPi備份容量

https://blog.cavedu.com/2018/03/22/raspberry-pi-%e4%b8%8d%e5%86%8d%e5%82%99%e4%bb%bd%e6%95%b4%e5%bc%b5sd%e5%8d%a1%ef%bc%8c%e7%b8%ae%e5%b0%8fraspberrypi%e5%82%99%e4%bb%bd%e5%ae%b9%e9%87%8f/

Raspberry PI4 與 Intel Movidius NCS邊緣運算棒

身為邊緣人(?), 今天想試試 PI4 + Intel Movidius NCS邊緣運算棒

可是安裝的時候一直出現錯誤訊息:

Movidius Neural Compute Toolkit Installation
Your current combination of Linux distribution and distribution version is not officially supported! Error on line 55. 


後來翻了一下install.sh裡面的內容, 發現他的版本確認方式是:

if [ "${OS_DISTRO,,}" == "ubuntu" ] || [ $OS_VERSION == 1604 ]; then
        echo "Installing on Ubuntu 16.04"
elif [ "${OS_DISTRO,,}" == "raspbian" ] && [ $OS_VERSION -ge 91 ]; then
        echo "Installing on Raspbian Stretch"
elif [ "${OS_DISTRO,,}" == "raspbian" ] && [ $OS_VERSION -ge 80 ] && [ $OS_VERS$
        ERR_MSG=$(cat <<- div="" end="">
                ${RED}You are running Raspbian Jessie, which is not supported b$
                Please upgrade to Raspbian Stretch and then proceed to install $
                END
                )
        printf "$ERR_MSG"


看起來, 它只有支援 ubuntu 16.04 跟 Raspbian Stretch

可是PI4是 Raspbian Buster. QQ


好吧, 繼續回頭玩 TensorRT好了

Rasperry PI4 + TTL線

今早測試了一下, 感覺跟PI3一樣要設定 /boot/config.txt 的參數

後來加上這三行就可以了:

  dtoverlay=pi3-miniuart-bt
  core_freq=250
  enable_uart=1

2020年1月3日 星期五

Nvidia nano 開機卡住

今天打開的時候, 莫名的一直停在開機畫面
最後一個訊息是: start update utmp about system runlevel changes

可是按ctrl+alt+F2可以切到另一個工作視窗

後來打個 df -h 指令, 看一下磁碟使用狀態, 結果竟然使用到100%  -.-

接著去查有沒有比較肥大的檔案:  sudo find ./ -type f -size +1G   (查詢根目錄以下是否有1G以上的檔案)

結果在 /var/log 裡面發現 syslog 異常的肥大

把那些檔案刪掉再重開機, 就回到視窗畫面了 XD


簡單說: 原因是磁碟空間不足 (!?)