以NAVIO+ & Raspberry Pi 製作 4G 連線無人機

玩過用 4G 連線 Parrot DISCO,感受過無距離限制的FPV飛行後,很想以 Ardupilot 做同樣事:

  1. 以 4G 網絡連結無人機與 ground station,實時控制無人機,獲取飛行數據
  2. 以 4G 網絡傳送無人機鏡頭的實時影像
  3. 1小時或以上的飛行時間,30公里或以上的飛行距離

便在倉底找回2015年買下的NAVIO+,就以它來製作一部 4G 連線的定翼無人機,以下就是我的製作筆記。

使用的硬件


軟件設定

開始時,跟著 NAVIO 的官方文件做,由於我使用 ZeroTier 建 VPN,連結無人機與 ground station,NAVIO沒有這方面的資料,這部分設定要自己處理,以下就是軟件設定部分的筆記。

Raspberry Pi 基本設定

  1. 下載預先配置的 Raspbian image (md5),這是NAVIO廠方提供的專用 image
  2. 把下載的 image file 燒錄到 SC card,在 Mac 的 Terminal 執行以下程序(使用其他 OS 可參考官方文件):
// show the SD card disk path {diskx}
diskutil list
// unmount SD card, remember replace the {diskx}
diskutil unmountDisk /dev/{diskx}
// format SD card
sudo newfs_msdos -F 16 /dev/{diskx}
// restore image file to SD card, remember replace the {/path/of/image/xxx.dmg} to the image file path
sudo dd if={/path/of/image/xxx.dmg} of=/dev/{diskx}
  1. 把 SD card 裝入 Raspberry Pi 後啓動。在 Raspberry Pi 以預設戶口登入(注意,此 image 沒有圖型介面,所有操作都是通過 command line 進行)
user: pi
password: raspberry
  1. 跟據官方文件進行安全設定。以下是我的快速設定:
passwd // change password
sudo adduser {new-username} sudo // create new user
sudo su // make sure the new-user has been setup correctly
sudo deluser -remove-home pi // remove default user and the home directoty
sudo nano /etc/sudoers.d/010_pi-nopasswd //
{new-username} ALL=(ALL) PASSWD: ALL // Make sudo require a password
  1. 把 WiFi USB 安裝到 Raspberry Pi後,修改 WiFi config 文件
sudo pico /etc/wpa_supplicant/wpa_supplicant.conf

把這段加入(修改 your-wifi-network-name 和 your-wifi-network password)

network={
ssid="your-wifi-network-name"
psk="your-wifi-network password"
key_mgmt=WPA-PSK
}
  1. 啓動WiFi
sudo ifdown wlan0 && sudo ifup wlan0
  1. 重新啓動 Raspberry Pi
  2. 以後可以用 PC/Mac 登入 Raspberry Pi
ssh [email protected]

e.g. [email protected]


NAOVIO+, Arduplane 和 QGroundControl 設定

1. 更新 arduplane firmware:

由於廠方提供的 image 的 arduplane firmware 不是最新的,因為 image 不會像 firmware 般更新得也,最好就自己做一次更新。

sudo curl http://firmware.ardupilot.org/Plane/stable/navio/arduplane -o /opt/ardupilot/navio/arduplane-3.8/bin/arduplane
sudo chmod 775 arduplane

2. 安裝與設定 ZeroTier:

ZeroTier 提供了一個十分方便的途徑,使我們可以輕易地把無人機和 ground station 透過 4G 網絡連結,而不需自己架建 VPN。 整個設定過程包括:

  • 登記及設定 ZeroTier 戶口
  • 在 Raspberry Pi 安裝 zerotier-one 客戶端
  • 在 ground station 安裝 ZeroTier One 客戶端
  • 在 ZeroTier 戶口批准 Raspberry Pi 及 ground station 的連線

2.1 登記 ZeroTier 戶口:

到此網站登記一個新戶口(免費的):http://zerotier.com/

2.1a 登入後按 Networks,Create 建立一個新網絡:

2.1b 進入新網絡的設定頁面:

  • 記下 Network ID
  • 在 Name 下,改一個你喜歡的名稱,例如:NAVIO Network
  • 在 Managed Routes > Easy 下,選一個你覺得易記的 IP range
  • 其他的設定請如下圖一樣

2.2 安裝 zerotier-one 到 Raspberry Pi:

通過此軟件,Raspberry Pi 無人機就能自動找上我們剛剛建立的網絡,與 ground station 連線。

執行以下 shell command 下載ZeroTier:

curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && \ if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

確保 ZeroTier 在 root 上執行

sudo systemctl enable zerotier-one

執行 sudo zerotier-cli status 如果看到 200 info [ID] [version] ONLINE 就成功了。

2.2a 連結 ZeroTier 網絡,執行:

sudo zerotier-cli join [Network ID]

Network ID 是剛剛建立 ZeroTier 網絡時那個 Network ID)

2.3 安裝 Zerotier One 到 ground station:

2.3a 到此下載 ZeroTier One,安裝到 ground station。

2.3b 安裝後,選取 Join Network,輸入 Network ID:

2.4 認證 Raspberry Pi 與 ground station 的連線請求

返回 ZeroTier 的網絡設定頁面,你會看到兩行新的記錄在頁面下方。

  • 在 “Auth?” 選取
  • 在 “Name” 加入名稱方便識認
  • 記下 Raspberry Pi 與 ground station 的 “Managed IPs”

2.5 更新 arduplane 的連線設定

arduplane 需要知道如何及那裡傳送資料到 ground station,我們要修改 Raspberry Pi 裡這個文件 /etc/default/arduplane。

udo nano /etc/default/arduplane
// Add the IP of ground station:
TELEM1="-A udp:192.168.192.100:14550"

上面的意思是,把資料以 UDP 傳送到 192.168.192.100 port 14550。192.168.192.100 是 ZeroTier 裡 ground station 的 IP,14450 是 ground station 預設的 port 位。

由於 arduplane 要等待 zerotier-one 完成後提供 IP,才能把數據回傳給 ground station。我修改了 /etc/systemd/system/arduplane.service 檔以達到此要求:

sudo nano /etc/systemd/system/arduplane.service

把這兩行加入 [Unit] 之下:

After=network-online.target
Wants=network-online.target

修改後重新載入設定檔:

sudo systemctl daemon-reload

開啓 arduplane:

sudo systemctl start arduplane

讓 arduplane 在開機時能自動開啓:

sudo systemctl enable arduplane

NAVIO官方文件提供更詳細的設定解析

再深入一點,需要看 systemd 的文件。很多開機的問題(為什麼 xxx 沒有啓動?)都與它有關。

2.6 連結 Raspberry Pi 與 ground station

文章整理中…

Bellergy RC

FPV 四軸競速機砌機(縮時記錄)

這是兩年前的拍下的影片,記錄了一次砌四軸機由開始到起飛的過程。這不是什麼砌機教學,只是縮時拍攝效果好有趣。

This is a video taken two years ago, recording the process from the start to the take-off of a FPV multi-copter. This is not a formal “how-to” video, but the effect of time-lapse shooting is interesting.

當 Parrot Disco 遇上了 Insta360 One X

我不能相信Parrot Disco能如此自由地拍攝。當我做了這個測試,效果比預計的還要好。超正!

「拍攝」
我把Insta360安裝在㡳部,就像很多其他的航拍機一般。現在我可以拍攝很多以前只能在航拍機才能取得的角度。
由於是360度全景video,在飛行時無需分心拍攝角度與取景。通過後期製作,我可以在電腦前找到喜歡的角度才剪輯。請留意(10:20)的畫面,那隻迎面衝來的鷹,是後期製作才發現的。由於速度快,現場補捉是沒有可能的。

「缺點」

  1. 解像度不足,此片是HD(1920×1080),不能拍攝4K
  2. 大風時、高速飛行或爬升時,鏡頭會有震動 (jello effect),這是後期製作不能消除的 (00:33)
  3. 後期製作會花費較多時間。360 video 的檔案較大,電腦的功能要求也較高

「安裝」
我在機身電池後方開了一個小洞,剛剛足夠Insta360穿進去,只把鏡頭部分留在外面。由於機身的發泡膠有彈性,Insta360能緊貼著機身,不會中途脫落。

「降落」
由於鏡頭在下方,Parrot Disco沒有起落架,在平地降可能會損害到Insta360,所以找到塊長滿長草的草地降落,效果滿意。(12:07)

「製作軟件」

  • Adobe premiere 2018;
  • GoPro VR plugin;

「長距離飛行」
多謝disco4g的作者,提供了長距離飛行的工具。此片由單一鏡頭由起飛到降落,最遠距離是6.7公里。(08:26)

「VR Video」
以同一個文件,正在編輯VR video版本, 大家可以比較,請留意。

4G/LTE 遙控 Parrot Disco (softmod) 安裝攻略

透過 Disco4G,你可以通過4G網絡來遙控 Parrot Disco,不再有遙控距離的限制。只要有電,有4G訊號,Disco可以去到10, 20甚至50公里以上。

這是我第一次的測試的過程。原裝電,最遠7.2公里,來回用電80%。

所需硬件:

* 3個月前,官網把 Parrot Disco 價錢降至四仟餘港元,看來是想清貨。我便快手入了一部只賣HK$3,200的,原因只是包裝盒花了!

以下內容更新中⋯⋯



所需軟件:

  • Disco

所需服務:

所需Apps:

安裝:

EMAX 12A ESC flash BLHeli to support OneShot125

如何在銀燕12A電調寫入BLHeli以支援OneShot125?

在淘寶買了銀燕12A電調,寫著是支援OneShot125。但其實「支援」不代表「安裝」,它裡面沒有寫入最新的BLHeli,也不能用OneShot125模式,最後唯有自己flash。(後來,貴一點的價錢,也有買來便可以用的OneShot版本,體積也小一點,這裡不是重點).

過程中發現這個video最有用:

透過以上的video,終於裝了最新版本的BLHeli,也可以使用OneShot125模式了。以下記錄了操作過程,方便有需要的同道。

準備

接線

如下圖焊接三條電線,完成後會移除,所以不用太在意鬆緊。接線的點很小,小心不要短路或燒掉ESC。(也可以學上面的YouTube,DIY一個頭,用手對位按著來flash,但個人覺得要對準個位好難,更要另一邊操電腦!)
EMax 12A ESC flash BLHeli wiring
線的另一端連接Arduino如下圖
Emax ESC to Arduino
Emax 12A ESC to Arduino wiring

把Arduino用USB接上電腦。
把ESC接上LiPo電池。

安裝(待續⋯⋯)

 

DALRC XR220 FPV

剛砌了一部DALRC XR220
很喜歡她的效能和表現。對於FPV我還是新手,但她的操控比我以前所飛過的都穩定。

機件設定:
Frame : DALR(大力) XR220
Motors: Emax motor 2205
Props : 5″ (3 blade)
FC : HGLRC F3 V3
FC firmware : Cleanflight v1.13
ESC: Littlebee 20A
Onboard OSD firmware : MWOSD
CCD: Runcam Owl
Camera: RunCam 2
Battery : 1500mAh
Weight:298g (without battery)

飛控用了HGLRC F3 V3:
它在SP Racing F3上加上了分電板和OSD,使機身輕了,接線也簡單很多。

DALRC XR220 + HGLRC F3
這塊板上已集合了SP Racing F3,Mimimosd和分電板,可輸出12v及5v。
DALRC XR220 weight 298g
簡單的結構,all in one board,使她淨重只有298克

買來的Littlebee 20A ESC,已安裝BlHeli v13,上OneShot125無問題。用Cleanflight flash ESC很方便,就順手update了firmware到v14.7了。

Littlebee 20A
使用了Littlebee 20A ESC,它真的很少,使機身更輕。

HGLRC F3 V3板內置MinimOSD,由於onboard,很多與飛控連接的線都不用了,方便很多,安裝時也簡單很多。(後記:經過幾次飛行後,OSD無原無故消失了,再接上PC也連接不了,是不是組件太密集使硬件易壞?不知道。

onboard MinimOSD
和一般MinimOSD一樣,用FDTI連接後便可以用MW OSD做設定。

用了幾次Emax motor 2205,性能很好,高轉數時沒有刺耳的高頻聲。為了簡潔,所有線當然要trim到盡了。

Emax motor 2205 trimmed wire
DALRC XR220 battery on bottom
由於空間有限,電池是裝在機㡳的。因此重心低,飛行就更穩定了。
battery crash
不過一炸機,塊電就好容易受損了。

學飛試機片,請指教:

放飛地點:舊啟德機場跑道,由啓德公眾碼頭找有一條小路可以入去。

後記:這處現成為大盆的一部分,入唔到去了。

3D Printed FPV 迷你四軸機

Skyhero Spy 600 vs 3D Printed micro-copter FPV

3D Printed micro-copter for indoor FPV flight.

  • FC: SP RACING F3 EVO Brush – running Cleanflight
  • Motors: Brushed motors (8.5 x 20mm) 35000 RPM in 3V
  • Props: 60mm
  • Cam + VTx: 5.8G mini 25mw with CCD cam
  • Rx: MicroFrX Receiver (8 Ch PPM Receiver)
  • Weight: 50g (with 500mAh battery)
  • Flight time: 4.5 minutes

龍蝦灣・岩礁・航拍

岩礁水上飃。
條件是晴天、潮漲、大風。

此片大部分在龍蝦灣取景,由DJI Phantom 3拍攝。起飛地點在這裡。注意這裡是風箏場,暇日很多遊人,被風箏線搭上便危險了。所以我喜歡爬出岩礁,一起飛便出海。降落時由於岩石不平,要用手接機。

放飛地點:龍蝦灣風箏場

岩礁在離岸約800公尺處,Phantom 3飛行距離1.5公里內絕無問題。只是低飛有點危險,跟據官方建議,最好先把視覺定位關掉。