SlideShare a Scribd company logo
1 of 31
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

What's hot

20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニーUnity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 

What's hot (20)

TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
 
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
ドローンの仕組み( #ABC2015S )
ドローンの仕組み( #ABC2015S )ドローンの仕組み( #ABC2015S )
ドローンの仕組み( #ABC2015S )
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
フィルタドライバ入門
フィルタドライバ入門フィルタドライバ入門
フィルタドライバ入門
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニーUnity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
 

Similar to Drone programming with ArduPilot

[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
wakadannacom
 

Similar to Drone programming with ArduPilot (20)

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

More from LINE Corporation

More from LINE Corporation (20)

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

Recently uploaded

Recently uploaded (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Drone programming with ArduPilot