39
Linux ベベベベベベベベベベベ ベベベベベベベベベベベベベ ベベ Android ベベ ベベベベ WG hsgucci

Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

Embed Size (px)

Citation preview

Page 1: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

Linux ベースのオープンソースフライトコントローラの概要

日本 Android の会ドローン WG

hsgucci

Page 2: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

I. Linux ベースのドローン用フライトコントローラの紹介( NAVIO+ と Erle Brain )

II. フライトコントローラのソフト構成

III. マルチコプターの制御方法

IV. フィルター処理と応用

Page 3: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

フライトコントローラって何?• 姿勢制御やナビゲーションを行う装置

呼び方はいろいろ「姿勢制御装置」「オートパイロット」「飛行制御装置」

機体に積むのが「フライトコントローラ」

地上の PC, タブレットなどが「グラウンドステーション」

Page 4: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

ドローンでやりたい事

• FC をソースコードレベルで書き直す• PC ソフトを自作する

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

• ドローン本体を機能拡張したい!!• 作業結果データをスマートに管理したい

DJI 3DR

機体:

地上側:

機体:

地上側:

Dronecode

DroneKit

Onboard SDK

Mobile SDK

現状

大手メーカーの動き

無茶言うな!

Page 5: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

ラジオコントロール航空機

センサ

GNSS

マイクロコンピュータ

•ジャイロ•加速度•コンパス•気圧 …etc.

センサ・コンピュータを使ってラジコンを姿勢制御すること →フライ・バイ・ワイヤ制御

GNSS を使ってラジコンの移動を自動化すること →ウェイポイント・ナビゲーション

ケイアンドエス

Sparkfun

InvenSense

•8bit•16bit•32bit•64bit(?)

•GPS•GLONASS•Galileo•北斗•みちびき

(グローバルナビゲーションサテライトシステム)

日本 Android の会 ドローン WG   Copyright hsgucci

フライトコントローラ

Page 6: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

フライトコントローラ (FC)

① ラジコン操縦にはミキシングが必要

② フライバイワイヤで自動制御

③ GNSS を使って完全自動飛行

日本 Android の会 ドローン WG   Copyright hsgucci04/15/2023

Page 7: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

① ミキシング• 送信機のスティックを1つ動かすだけで, 複数のサーボモータ or モータアンプを動かす機

能.

車だとスロットルアンプ1つだけ

前進命令

ヘリだと3つのサーボを同時に動かす

ケイアンドエス

日本 Android の会 ドローン WG   Copyright hsgucci04/15/2023

Page 8: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

② フライ - バイ - ワイヤ制御• マイコンとセンサを利用した

「フライトコントローラ (FC) 」が自動的にミキシング

操縦が飛躍的に簡単に!

KK Multicopter

•ジャイロセンサ•加速度センサ•磁気方位センサ•気圧センサ•GNSS

姿勢

方向高度

緯度経度

センサで機体の状況を計測し、機体を自動制御

初期のフライトコントローラはミキサーが主。センサはジャイロだけで補助的な役割だった。

現在では

日本 Android の会 ドローン WG   Copyright hsgucci04/15/2023

Page 9: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

③GNSS を使った自動飛行• 緯度経度の座標(ウェイポイント)を指定

すれば,そこへ自動飛行してくれる

Page 10: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

ドローンをつくるには

Page 11: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

最低限の構成

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

本体フレーム プロペラ&モータ&モータ駆動回路

フライトコントローラ

Page 12: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

便利なキットを買う

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

http://www.sekido-rc.com/?pid=52727659セキドラジコンセレクト

Page 13: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

FC を買う• 何を買う?

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

Page 14: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

NAVIO+ Erle Brain

Raspberry Pi B+または 2がベース Beagle Bone Blackがベース

そこで Linux ベースのフライトコントローラを!

Page 15: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

様々な FC

04/15/2023日本 Android の会 ドローン WG  

Copyright hsgucci

Page 16: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

kkMultiCopter(ATmega168p)

Eagle X6

ArduPilot(ATmega328p)

ArduPilot Mega(ATmega2560)

ArduPilot Mega2.x(ATmega2560)

PX4(STM32F427)

MultiWii(ATmega328p)

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

Naze32(STM32F103C)

SmartAP(STM32F405)

ミニサーベイヤ AP

Pixhawk(STM32F427)

DJIA2

ZERO-UAVYS-X4

XaircraftSuper-X

TarrotZYX-M

Page 17: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

フライトコントローラの流れ1. ATmega( ライタで書込 )

2. Arduino

3. Cortex-M

4. Cortex-A

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

KKmulticopter

ArduPilot, ArduPilot Mega, MultiWii

PX4, Pixhawk, baseflight, CC3D, SmartAP

Raspberry Pi 2, Beagle Bone Black

Page 18: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

FC の開発1. フルスクラッチで書く

2. Arduino,mbed,Teensy などに乗っかる

3. RTOS を組み込んで動かす

4. Linux で動かす

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

イマココ

Page 19: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

ドローンでやりたい事

• FC をソースコードレベルで書き直す• PC ソフトを自作する

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

• ドローン本体を機能拡張したい!!• 作業結果データをスマートに管理したい

DJI 3DR

機体:

地上側:

機体:

地上側:

Dronecode

DroneKit

Onboard SDK

Mobile SDK

現状

大手メーカーの動き

無茶言うな!

Page 20: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

NAVIO+ Erle Brain

Raspberry Pi B+または 2がベース Beagle Bone Blackがベース

Linux ベースのフライトコントローラで Dronecode!

Page 21: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

Linux ベースだと何が良い?

• こだわりたいところだけイジればいい

–> 姿勢制御 ( フィルタとか制御則とか )–>GNSS の精度 (RTK とか )–> 無線方式の変更–> センサの追加–> アクチュエータの追加

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

Page 22: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

I. Linux ベースのドローン用フライトコントローラの紹介( NAVIO+ と Erle Brain )

II. フライトコントローラのソフト構成

III. マルチコプターの制御方法

IV. フィルター処理と応用

Page 23: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

NAVIO+ のセットアップ• EMLID のドキュメントページ• ハードウェアのセットアップ

• Raspberry Pi のセットアップ

• APM のセットアップ

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

http://docs.emlid.com/

http://docs.emlid.com/Navio-APM/hardware-setup-navio-plus/

http://docs.emlid.com/Navio-APM/configuring-raspberry-pi/

We provide an SD card image of Raspbian with fully preemptive real-time Linux kernel.

リアルタイムカーネル入りのRaspbian が最初からある!

wget http://emlid.com/files/APM/apm.debsudo dpkg -i apm.deb

ラジコン受信機は PPM(CPPM)だけなので注意

http://docs.emlid.com/Navio-APM/installation-and-running/

Debian のパッケージが最初からある!

テレメトリは UARTでも TCP or UDPでも可

Page 24: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

おまけ• ラズパイ2ならビデオストリーミングも可

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

Streaming real-time video from a drone powered by a Raspberry Pi 2 has never been easier.

sudo apt-get install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav

Page 25: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

ということで

• Dronecode に準拠したシステムは比較的簡単に準備が可能

• 地上の操作者は Mission Planner Droid Planner DroneKit

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

(Win)

(Android)

を使う

Page 26: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

I. Linux ベースのドローン用フライトコントローラの紹介( NAVIO+ と Erle Brain )

II. フライトコントローラのソフト構成

III. マルチコプターの制御方法

IV. フィルター処理と応用

Page 27: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

ロール・ピッチ・ヨー角

wikipedia

Page 28: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

基本原理

• 前後や左右の回転数を変えて、推力のバランスを崩すことで姿勢を変える

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

Page 29: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

基本原理

• 旋回

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

右左

CW の回転数を上げ、 CCW の回転数を下げると、反作用の相殺のバランスが崩れてヨー方向に回転する。

シングルコプターはテールロータで相殺

Page 30: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

基本原理• 並進移動

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

揚力 高度を維持する浮上力

前進力

高度を維持する浮上力

高度を維持する浮上力

高度を維持する浮上力

後進力

左移動力右移動力

揚力

揚力

揚力

Page 31: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

制御項目• ロール・ピッチ・ヨー角 • 高度• 緯度・経度• ウェイポイントナビゲーション• 送信機入力に対する反応

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

制御周期最速が 400Hz(2.5ms)周期

ブラシレスモーター駆動回路(アンプ)が400Hz のサーボパルスなので

Page 32: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

Mission Planner のチューニング画面

http://copter.ardupilot.com/wiki/configuration/tuning/

Page 33: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

制御アルゴリズム

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

センサー値の取得

フィルタ処理

制御則の計算

モータへの出力

PID 制御

ミキシング計算

サーボパルス

機体の構造に応じて変更

数値積分、相補、カルマン… etc

ほとんどのセンサは I2C で取得

Page 34: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

センサー• ジャイロ・加速度センサー MPU-6050

• 電子コンパス  HMC-5883L

• 気圧  MS5611

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

Amazon だと 600円前後。。。Pixhawk だと MPU-6000派生版の MPU-9150,9250 もある

Amazon だと 300円前後。。。

10cm 精度MultiWii では BMP180 を使用

Page 35: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

センサー• GNSS     ublox シリーズ

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

3DRobotics: LEA-6HRTK-LIB: LEA-6TNAVIO+: NEO-M8N

DJI や 3DR の GNSS モジュールは電子コンパスも同じ基板に実装。磁石から距離を離すため

DJIや 3DRの GPSモジュール

Page 36: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

フィルタ処理

• ローパスフィルタ(ノイズ除去)

• 相補フィルタ(センサフュージョン)

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

この辺のフィルタ処理が「制御」をややこしく見せている

Page 37: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

PID 制御• ブロック線図...

KP

KI

KD

1𝑠

𝑠

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

+目標値と

現在値の差

出力

多くの本がブロック線図で PID を説明する ワカンネエ

Page 38: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

例:原始的な PID プログラムnow = millis();timeChange = (now - lastTime);

error = x_desire – x_now;errSum += error * timeChange;dErr = (error - lastErr) / timeChange;

Output = kp * error + ki * errSum + kd * dErr;

lastErr = error;lastTime = now;

// 現在時刻取得

// サンプリングタイム算出

// 目標値 ー 現在値

// 差の積分 (長方形の面積 )

// 差の微分

// 次回のループで使用

P項 I項 D項

もちろん、積分や微分の計算方法は、もっと複雑で正確な式がある

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

Page 39: Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )

フライトコントローラの発展• ロール・ピッチ・ヨー角

• カルマンフィルタ

• PID

04/15/2023 日本 Android の会 ドローン WG   Copyright hsgucci

クォータニオンへ

姿勢推定精度の向上内部センサだけで移動

ジンバルロックのない角度表現スタイルへ

セルフチューニング現代制御理論