Ubuntu 安裝 Arduino 遇到的問題

本篇紀錄一下在 Ubuntu 安裝 Arduino 過程中遇到的問題。

Q. 上傳程式遇到下列錯誤訊息
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
檢查一下檔案權限

1
2
$ ls -al /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Feb 9 19:57 /dev/ttyACM0

A. 根據官網的說明, 使用下列指令修正

1
sudo usermod -a -G dialout <username>

打完上述指令還需要”重新登入”才會生效

參考文章
https://arduino.stackexchange.com/questions/21215/first-time-set-up-permission-denied-to-usb-port-ubuntu-14-04

MPU6050 介紹

MPU6050 是一款近幾年無論在 Maker 界或是商業應用上皆十分熱門的慣性感測元件(Inertial Measurement Unit,IMU),
內含了三軸加速度計及三軸陀螺儀。
這款 InvenSense 於 2010 年推出的 IC 能如此成功,
除了其低成本、高靈敏度、應用範圍廣等特色以外,最大的功臣為內建的Digital Motion Processor(DMP),
這內建功能強大的小模組可以直接在 MPU6050 內完成加速度計與陀螺儀的 Sensor Fusion,
傳出四元數、尤拉角,免去了以往繁複的矩陣轉換以及減輕微控制器的運算壓力。

OpenCV 與 OpenGL 座標系

本篇紀錄一下 OpenCV 與 OpenGL 座標系。
OpenCV 與 OpenGL 都是右手座標系.
OpenCV 座標系 只要沿著 x 軸 旋轉 180 度 就是 OpenGL 座標系.

OpenCV 座標系:

1
2
3
4
5
6
  z
-----> x
|
|
v
y

OpenGL 座標系:

1
2
3
4
5
6
  y
^
|
|
-----> x
z

參考
https://www.learnopencv.com/rotation-matrix-to-euler-angles/
https://stackoverflow.com/questions/12933284/rodrigues-into-eulerangles-and-vice-versa

Rotation Conversions

在做三維空間物體旋轉時, 經常會從某個旋轉表示式轉換成另一種旋轉表示式
常見的旋轉表示式有:

  • Rotation Matrix 旋轉矩陣
  • Euler Angle 歐拉角
  • Quaternion 四元數
  • Rotation Vector 旋轉向量

這裡有個旋轉表達式的轉換公式與程式的網站
http://euclideanspace.com/maths/geometry/rotations/conversions/index.htm

我自己有寫個 C++ 的版本 libQuaternion 來做這些轉換.

其他參考
三維旋轉表示法 - 歐拉角、旋轉矩陣、旋轉向量、四元數
三維空間的旋轉矩陣

字幕編輯工具

感覺 Openshot 內建的字幕編輯方式不是很好用, 簡單影片還可以應付.

相片停留秒速最好在5~7秒,
10-15分鐘的影片(約120-180張圖),
又含字幕的話(一張配一句話), 那字幕起碼也是120-180句,
按 Openshot 那樣的編輯方式的話, 我可能會編輯到暈掉.

所以思考過後決定用srt外掛字幕的方式來編輯字幕, 之後字幕搞定後, 再來把影片跟字幕做一個整合轉檔.

Ubuntu 下有個字幕編輯工具, 安裝方式如下:

1
sudo apt-get install gnome-subtitles

參考
https://linux.cn/article-4657-1.html

Github 更換 Github Pages 網頁主題

本篇介紹如何使用 Github Pages 提供的網頁主題以及切換,
在 Github 網頁上切換至 欲新增專案首頁 的專案
點選 Settings, 滑到 GitHub Pages 區域
Source 選 gh-pages branch (表示 gh-pages branch 會放置網頁相關的設定)
再按 Change theme 選擇喜歡的主題, 搞定完成!

Read More

Bluetooth Programming

這篇介紹使用 C/C++ 語言寫 Bluetooth 通訊的教學
適合於入門藍芽開發者、寫過 socket 程式的更容易上手.

資料來源是參考下列的原文資料
An Introduction to Bluetooth Programming

詳細程式內容請參考
BluetoothProgramming

安裝開發套件

Ubuntu 使用下列指令安裝開發套件函式庫

1
2
sudo apt-get install libbluetooth-dev libbluetooth3
(sudo apt-get install python-bluez)

藍芽基本指令

查看藍芽裝置

1
hciconfig

掃描附近的藍芽裝置

1
hcitool scan

讓你的裝置可以被掃到

1
sudo hciconfig hci0 piscan

重新命名

1
sudo hciconfig hci0 name 'Device Name'

參考文章
Chapter 4. Bluetooth programming in C with BlueZ

Qt and OpenCV 3 on Windows (使用MSVC)

介紹一下怎麼在 Windows 下使用 Qt 和 OpenCV 3.

系統環境

  • Windows 7
  • Qt5.10.0 (編譯器選擇 MSVC 2015 32-bit)
  • OpenCV 3.3.1 (準備用 MSVC 2015 來 build)
  • Cmake

安裝 Qt

先從官網下載 Qt, 目前最新為5.10, 安裝好之後
並把 Qt dll 路徑加進系統環境變數裡 (這步很重要, 因為要用它來編譯OpenCV)

1
C:\Qt\Qt5.10.0\5.10.0\msvc2015\bin

編譯 OpenCV (使用 MSVC 編譯)

從官網下載 OpenCV 並解開, 執行下列指令

1
2
3
4
cd opencv-3.3.1
mkdir build
cd build
cmake-gui.exe ..

在make-gui上按照下方流程進行

1
2
3
選擇 Visual Studio 14 2015  
選擇 Use default native compilers
再按 Finish

按一下 Configure

1
2
勾選 WITH_OPENGL
勾選 WITH_QT

再一下 Configure (確定都沒有紅色), 再按一下 Configure, 再按 Generate
接下來就可以開始編譯與安裝
到 C:\opencv-3.3.1\build 開啟 OpenCV.sln

1
2
編譯:選擇 ALL_BUILD 然後 Build
安裝:選擇 INSTALL 然後 Build

把安裝後的資料夾 C:\opencv-3.3.1\build\install\x86\vc14 資料夾複製到 C:\opencv\build\x86 底下去

把 OpenCV dll 目錄加進系統環境變數裡 (這步很重要, 否則執行期間會找不到dll)

1
C:\opencv\build\x86\vc14\bin

之後在 Qt 專案檔 .pro 加入下列變數

1
2
3
4
5
6
7
8
INCLUDEPATH += C:\opencv\build\include

LIBS += C:\opencv\build\x86\vc14\lib\opencv_core331.lib
LIBS += C:\opencv\build\x86\vc14\lib\opencv_highgui331.lib
LIBS += C:\opencv\build\x86\vc14\lib\opencv_imgcodecs331.lib
LIBS += C:\opencv\build\x86\vc14\lib\opencv_imgproc331.lib
LIBS += C:\opencv\build\x86\vc14\lib\opencv_features2d331.lib
LIBS += C:\opencv\build\x86\vc14\lib\opencv_calib3d331.lib

上述的 LIBS 是 release 版的, debug 版的需要額外再加入
LIBS 的格式用下列也可以

1
2
3
4
5
6
7
LIBS += -LC:\opencv\build\x86\vc14\lib \
-lopencv_core331 \
-lopencv_highgui331 \
-lopencv_imgcodecs331 \
-lopencv_imgproc331 \
-lopencv_features2d331 \
-lopencv_calib3d331

搞定結束!

參考
windows下QT creator+openCV配置和使用

其它相關文章推薦
[Qt] 讀檔,讀取 txt 文字檔
[Qt] 寫檔,寫入 txt 文字檔
安裝 Qt 在 Windows 7 (使用MSVC)
Qt產生的exe發布方式
Qt 新增多國語言.ts翻譯檔案
Qt5的中文亂碼問題如何解決

Hexo 寫作篇

建立草稿

1
hexo new draft 'new-article'

編輯草稿

用自己慣用的編輯器打開編輯

1
retext source/_drafts/new-article.md

發布草稿

名稱不包含.md

1
hexo publish draft 'new-article'

其他

如何在文章中正確的加入圖片與檔案
正確的引用圖片方式是使用下列的標籤插件而不是 markdown:

1
2
{% asset_img example.jpg This is an example image %}
{% asset_link example.cpp This is an example cpp %}

官網說明 標籤插件