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

  • View
    757

  • Download
    7

  • Category

    Science

Preview:

Citation preview

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

日本 Android の会ドローン WG

hsgucci

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

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

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

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

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

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

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

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

ドローンでやりたい事

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

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

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

DJI 3DR

機体:

地上側:

機体:

地上側:

Dronecode

DroneKit

Onboard SDK

Mobile SDK

現状

大手メーカーの動き

無茶言うな!

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

センサ

GNSS

マイクロコンピュータ

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

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

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

ケイアンドエス

Sparkfun

InvenSense

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

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

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

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

フライトコントローラ

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

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

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

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

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

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

能.

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

前進命令

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

ケイアンドエス

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

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

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

操縦が飛躍的に簡単に!

KK Multicopter

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

姿勢

方向高度

緯度経度

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

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

現在では

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

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

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

ドローンをつくるには

最低限の構成

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

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

フライトコントローラ

便利なキットを買う

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

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

FC を買う• 何を買う?

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

NAVIO+ Erle Brain

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

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

様々な FC

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

Copyright hsgucci

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

フライトコントローラの流れ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

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

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

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

4. Linux で動かす

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

イマココ

ドローンでやりたい事

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

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

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

DJI 3DR

機体:

地上側:

機体:

地上側:

Dronecode

DroneKit

Onboard SDK

Mobile SDK

現状

大手メーカーの動き

無茶言うな!

NAVIO+ Erle Brain

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

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

Linux ベースだと何が良い?

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

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

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

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

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

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

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

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でも可

おまけ• ラズパイ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

ということで

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

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

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

(Win)

(Android)

を使う

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

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

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

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

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

ロール・ピッチ・ヨー角

wikipedia

基本原理

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

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

基本原理

• 旋回

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

右左

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

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

基本原理• 並進移動

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

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

前進力

高度を維持する浮上力

高度を維持する浮上力

高度を維持する浮上力

後進力

左移動力右移動力

揚力

揚力

揚力

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

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

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

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

Mission Planner のチューニング画面

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

制御アルゴリズム

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

センサー値の取得

フィルタ処理

制御則の計算

モータへの出力

PID 制御

ミキシング計算

サーボパルス

機体の構造に応じて変更

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

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

センサー• ジャイロ・加速度センサー 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 を使用

センサー• GNSS     ublox シリーズ

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

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

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

DJIや 3DRの GPSモジュール

フィルタ処理

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

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

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

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

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

KP

KI

KD

1𝑠

𝑠

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

+目標値と

現在値の差

出力

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

例:原始的な 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

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

• カルマンフィルタ

• PID

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

クォータニオンへ

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

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

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

Recommended