SlideShare a Scribd company logo
Drone programming
with ArduPilot
2018/7/26
LINE Fukuoka 難波 健雄
LINE Developer Meetup #42
難波 健雄
2014.06 LINE Fukuoka 入社
サーバサイドエンジニア (主にJava)
About me
自己紹介
個人的にドローンプログラミングにハマっている
• ドローンとは?
• ドローンの仕組み
• ArduPilot
• シミュレータ
Agenda
ドローンとは?What is drone?
● 日本でドローンといえば DJI Phantom (主に空撮用途)
● ドローン = 無人航空機 (UAV)
● コプター、プレーン、ローバー、ボート、サブマリン
What is drone?
ドローンとは?
https://www.dji.com/jp/phantom-4
● 本セッションではドローン = クアッドコプター とします
● プロペラ×4、モーター×4
What is drone?
ドローンとは?
ドローン機体
(Onboard)
リモート
(GCS)
What is drone programming?
ドローンプログラミングとは?
● 2017年の社内ハッカソン
● Sharing smile drone
● https://engineering.linecorp.com/ja/blog/detail/250
● Parrot Mambo
● iOSアプリ (Parrot SDK)
Why addicted to drone programming
ハマったキッカケ
● ドローンプログラミングは難しいものだと想像していた
● 実機でのデバッグは大変だった。。。
● 想像してたよりは難しくなかった
● 不満点
● 完成品なのでデバイスの追加できない
● センサー・カメラなど
● ハードウェアに制限があった
● GPSなし
Why addicted to drone programming
ハマったキッカケ
● 自作ドローン?
● ハードルが高そう。。。
● ドローンソフトウェアエンジニア養成塾に参加
ドローンの仕組みDrone mechanism
● プロペラの回転方向
● 互い違い
● 上昇・下降
● 全てのプロペラの回転数を上げる・下げる
● 前後・左右
● 進行方向に機体を傾ける
● 片側のプロペラの回転数を上げる
● 左右回転
● 回転方向と逆回転のプロペラの回転数をあげる
移動
ドローンの仕組みWhy can drone fly?
http://ardupilot.org/copter/docs/connect-escs-and-motors.html
● ドローン
● フライトコントローラ (FC)
● コンパニオンコンピュータ
● プロポ
● Ground Control Station (GCS)
● PC、スマホ
全体の構成
ドローンの仕組みWhy can drone fly?
http://ardupilot.org/copter/docs/introduction.html
● LIPOバッテリー
● RC受信機
● FC
● ジャイロ、加速度センサ、気圧センサ
● 電子コンパス、GPS
● Electric Speed Controller (ESC)
● ブラシレスモーター
● コンパニオンコンピュータ
● 機体の姿勢制御
● FC -> ESC -> モーターの電流を変化させて
プロペラの回転数を制御
ハードウェア構造
ドローンの仕組みWhy can drone fly?
http://ardupilot.org/copter/docs/advanced-pixhawk-quadcopter-wiring-chart.html
ドローンの仕組みWhy can drone fly?
• ArduPilot
• PX4
• Onboard SDK (DJI)
FC
• Dronekit-Python
コンパニオンコンピュータ
• Dronekit-Python
• Dronekit-Android
• Mobile SDK (DJI)
• Guidance SDK (DJI)
• Parrot SDK
GCS (PC・スマホ)
ソフトウェア構造
● FC用のフライトコード
● Arduino + Pilot → ArduPilot
● 現在はarduinoは未サポート
● OSSではもっともメジャー https://github.com/ArduPilot/ardupilot
● 2018 World Drone Congress 受賞
● https://twitter.com/ArduPilotTeam/status/1010392967180251136
● C++
● サポートしているFC
● Pixhawk、navio2、etc
Flight code OSS for FC
ArduPilot
● メインコミッター
● Randy Mackay (養成塾の先生)
● Andrew Tridgell (rsync, samba)
● and so on...
● コプター
● クアッドコプター
● ヘキサコプター
● オクトコプター
● プレーン
● VTOL
● ローバー
● ボート
● サブマリン
Flight code OSS for FC
ArduPilot
http://ardupilot.org/
ArduPilotのアーキテクチャArduPilot architecture
http://ardupilot.org/dev/docs/learning-ardupilot-introduction.html
http://ardupilot.org/dev/docs/apmcopter-code-overview.html
ArduPilotのアーキテクチャArduPilot architecture
400Hzで繰り返し実行される
ArduPilotのアーキテクチャArduPilot architecture
● Extended Kalman Filter
● センサーの値から機体の姿勢・高度の推定
● FCのセンサー
● ジャイロ、加速度センサ、気圧計、電子コンパス、GPS
● センサーの計測値は不安定(ノイズ)
● 複数のセンサーを組み合わせて機体の姿勢・高度を算出
Extended Kalman Filter
EKF
ArduPilotのアーキテクチャArduPilot architecture
● Proportional (偏差)
● Integral (積分)
● Derivative (微分)
● 機体の姿勢を目標角度に遷移させるためのスムーズな姿勢制御
● 現在値と目標値の差から必要な角速度を算出
PID Control
PIDコントロール
https://ja.wikipedia.org/wiki/PID制御
ArduPilotのアーキテクチャArduPilot architecture
Stabilize 動画
AltHold 動画
Loiter 動画 動画2
Auto 動画
RTL 動画
Circle 動画
AutoTune
Flight mode
フライトモード
他にも多数のフライトモードあり
ドローンプログラミングDrone programming
● LowSlow
● 養成塾の卒業課題
● https://github.com/groovelab/ardupilot/pull/1
● 高度が低いと低速移動
● 既存のフライトモードをコピー
● Loiter
● ArduCopter/mode_loiter.cpp
● run() のカスタマイズ
● パラメータの追加
How to add new flight mode
フライトモードの追加
● ArduCopter/mode_low_slow.cpp
● run()
● 高度を取得 (cm)
● int32_t alt_above_ground = get_alt_above_ground();
● 高度が低ければpitchとrollの目標値を小さくする
● float rate = alt_above_ground > g2.low_slow_alt * 100
? 1.0f : g2.low_slow_rate;
● attitude_control->input_euler_angle_roll_pitch_euler_rate_yaw(
target_roll * rate, target_pitch * rate, target_yaw_rate);
How to add new flight mode
フライトモードの追加
● ArduCopter/Parameters.cpp
● ParametersG2::var_info[]
● AP_GROUPINFO("LOW_SLOW_ALT", 28, ParametersG2, low_slow_alt, 10),
● AP_GROUPINFO("LOW_SLOW_RATE", 29, ParametersG2, low_slow_rate, 0.5),
● 実行時に変更可能なパラメータ
Simulator
シミュレータ
デモ動画
● SITL
● software in the loop
● FCでのフライトコードをシミュレート
● cd ArduCopter
./waf configure --board sitl
./waf copter
sim_vehicle.py --console -f flightaxis:192.168.x.x
● Mission Planner
● SITLに接続してドローンの状態を視覚化できる
● Real Flight
● SITLに接続してドローンの飛行を3D化できる
Simulator
シミュレータ
● FCにセンサーを接続 (SPI, I2C, etc)
● 自作ドライバを実装
● FCとラズパイを接続してラズパイ+カメラ or センサーを使って
ドローンの自律航行
● ドローンの群制御
● drone based follow
Todo list
今後やりたいこと
THANK YOU

More Related Content

PPTX
Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )
PPTX
Dronekitによる python apiとアプリ開発の概要
PDF
LINE Login総復習
PDF
あれから2年、オープンソースによる ドローン開発はここまで来た!
PDF
FIDO認証によるパスワードレスログイン実装入門
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
PDF
Dockerfile を書くためのベストプラクティス解説編
PPTX
オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)
Linuxベースのオープンソース フライトコントローラーの概要( #ABC2015S )
Dronekitによる python apiとアプリ開発の概要
LINE Login総復習
あれから2年、オープンソースによる ドローン開発はここまで来た!
FIDO認証によるパスワードレスログイン実装入門
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Dockerfile を書くためのベストプラクティス解説編
オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)

What's hot (20)

PPTX
Redisの特徴と活用方法について
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
PPTX
テストコードの DRY と DAMP
PDF
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
PDF
【Unity道場】VectorGraphicsで作る エモい表現
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
WebRTCの技術解説 公開版
PDF
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PPTX
Dronecodeの概要とROSの対応について
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
ストリーム処理勉強会 大規模mqttを支える技術
PDF
Unityでパフォーマンスの良いUIを作る為のTips
PDF
DockerとPodmanの比較
PDF
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
PDF
ユーザーストーリー駆動開発で行こう。
PDF
Docker Compose 徹底解説
PDF
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Redisの特徴と活用方法について
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
テストコードの DRY と DAMP
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
【Unity道場】VectorGraphicsで作る エモい表現
分散トレーシング技術について(Open tracingやjaeger)
WebRTCの技術解説 公開版
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
Dronecodeの概要とROSの対応について
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
ストリーム処理勉強会 大規模mqttを支える技術
Unityでパフォーマンスの良いUIを作る為のTips
DockerとPodmanの比較
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
ユーザーストーリー駆動開発で行こう。
Docker Compose 徹底解説
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Ad

Similar to Drone programming with ArduPilot (20)

PDF
hooks riverpod + state notifier + freezed でのドメイン駆動設計
PDF
runC概要と使い方
PDF
「AROW」お披露目(実用編)
PDF
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
PDF
60fpsアクションを実現する秘訣を伝授 解析編
PDF
Air for iOS について
PDF
ドリコムのインフラCI
PPTX
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
PDF
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
PDF
PDF
otomodachi-kakumei
PDF
Pyconjp2014_implementations
PPTX
2014 1018 OSC-Fall Tokyo NETMF
PPT
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
PDF
ドローン+IoT+Azureで新たなビジネスチャンスを!
PDF
北海道IoTビジネス共創ラボ ドローンWG紹介
PDF
Jenkins に XFD を追加してみると
PDF
DartVM on Android
PDF
Project Sumatra - JavaOne2012報告会 #j1rep
PDF
OpenCLに触れてみよう
hooks riverpod + state notifier + freezed でのドメイン駆動設計
runC概要と使い方
「AROW」お披露目(実用編)
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
60fpsアクションを実現する秘訣を伝授 解析編
Air for iOS について
ドリコムのインフラCI
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
otomodachi-kakumei
Pyconjp2014_implementations
2014 1018 OSC-Fall Tokyo NETMF
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
ドローン+IoT+Azureで新たなビジネスチャンスを!
北海道IoTビジネス共創ラボ ドローンWG紹介
Jenkins に XFD を追加してみると
DartVM on Android
Project Sumatra - JavaOne2012報告会 #j1rep
OpenCLに触れてみよう
Ad

More from LINE Corporation (20)

PDF
JJUG CCC 2018 Fall 懇親会LT
PDF
Reduce dependency on Rx with Kotlin Coroutines
PDF
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
PDF
Use Kotlin scripts and Clova SDK to build your Clova extension
PDF
The Magic of LINE 購物 Testing
PPTX
GA Test Automation
PDF
UI Automation Test with JUnit5
PDF
Feature Detection for UI Testing
PDF
LINE 新星計劃介紹與新創團隊分享
PDF
​LINE 技術合作夥伴與應用分享
PDF
LINE 開發者社群經營與技術推廣
PDF
日本開發者大會短講分享
PDF
LINE Chatbot - 活動報名報到設計分享
PDF
在 LINE 私有雲中使用 Managed Kubernetes
PDF
LINE TODAY高效率的敏捷測試開發技巧
PDF
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
PDF
LINE Things - LINE IoT平台新技術分享
PDF
LINE Pay - 一卡通支付新體驗
PDF
LINE Platform API Update - 打造一個更好的Chatbot服務
PDF
Keynote - ​LINE 的技術策略佈局與跨國產品開發
JJUG CCC 2018 Fall 懇親会LT
Reduce dependency on Rx with Kotlin Coroutines
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Use Kotlin scripts and Clova SDK to build your Clova extension
The Magic of LINE 購物 Testing
GA Test Automation
UI Automation Test with JUnit5
Feature Detection for UI Testing
LINE 新星計劃介紹與新創團隊分享
​LINE 技術合作夥伴與應用分享
LINE 開發者社群經營與技術推廣
日本開發者大會短講分享
LINE Chatbot - 活動報名報到設計分享
在 LINE 私有雲中使用 Managed Kubernetes
LINE TODAY高效率的敏捷測試開發技巧
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE Things - LINE IoT平台新技術分享
LINE Pay - 一卡通支付新體驗
LINE Platform API Update - 打造一個更好的Chatbot服務
Keynote - ​LINE 的技術策略佈局與跨國產品開發

Drone programming with ArduPilot