More Related Content Similar to Drone programming with ArduPilot (20) More from LINE Corporation (20) Drone programming with ArduPilot2. 難波 健雄
2014.06 LINE Fukuoka 入社
サーバサイドエンジニア (主にJava)
About me
自己紹介
個人的にドローンプログラミングにハマっている
5. ● 日本でドローンといえば DJI Phantom (主に空撮用途)
● ドローン = 無人航空機 (UAV)
● コプター、プレーン、ローバー、ボート、サブマリン
What is drone?
ドローンとは?
https://www.dji.com/jp/phantom-4
8. ● 2017年の社内ハッカソン
● Sharing smile drone
● https://engineering.linecorp.com/ja/blog/detail/250
● Parrot Mambo
● iOSアプリ (Parrot SDK)
Why addicted to drone programming
ハマったキッカケ
● ドローンプログラミングは難しいものだと想像していた
● 実機でのデバッグは大変だった。。。
● 想像してたよりは難しくなかった
9. ● 不満点
● 完成品なのでデバイスの追加できない
● センサー・カメラなど
● ハードウェアに制限があった
● GPSなし
Why addicted to drone programming
ハマったキッカケ
● 自作ドローン?
● ハードルが高そう。。。
● ドローンソフトウェアエンジニア養成塾に参加
11. ● プロペラの回転方向
● 互い違い
● 上昇・下降
● 全てのプロペラの回転数を上げる・下げる
● 前後・左右
● 進行方向に機体を傾ける
● 片側のプロペラの回転数を上げる
● 左右回転
● 回転方向と逆回転のプロペラの回転数をあげる
移動
ドローンの仕組みWhy can drone fly?
http://ardupilot.org/copter/docs/connect-escs-and-motors.html
12. ● ドローン
● フライトコントローラ (FC)
● コンパニオンコンピュータ
● プロポ
● Ground Control Station (GCS)
● PC、スマホ
全体の構成
ドローンの仕組みWhy can drone fly?
http://ardupilot.org/copter/docs/introduction.html
13. ● 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
14. ドローンの仕組み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・スマホ)
ソフトウェア構造
15. ● 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...
16. ● コプター
● クアッドコプター
● ヘキサコプター
● オクトコプター
● プレーン
● VTOL
● ローバー
● ボート
● サブマリン
Flight code OSS for FC
ArduPilot
http://ardupilot.org/
20. ● Extended Kalman Filter
● センサーの値から機体の姿勢・高度の推定
● FCのセンサー
● ジャイロ、加速度センサ、気圧計、電子コンパス、GPS
● センサーの計測値は不安定(ノイズ)
● 複数のセンサーを組み合わせて機体の姿勢・高度を算出
Extended Kalman Filter
EKF
22. ● Proportional (偏差)
● Integral (積分)
● Derivative (微分)
● 機体の姿勢を目標角度に遷移させるためのスムーズな姿勢制御
● 現在値と目標値の差から必要な角速度を算出
PID Control
PIDコントロール
https://ja.wikipedia.org/wiki/PID制御
26. ● LowSlow
● 養成塾の卒業課題
● https://github.com/groovelab/ardupilot/pull/1
● 高度が低いと低速移動
● 既存のフライトモードをコピー
● Loiter
● ArduCopter/mode_loiter.cpp
● run() のカスタマイズ
● パラメータの追加
How to add new flight mode
フライトモードの追加
27. ● 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),
● 実行時に変更可能なパラメータ
29. ● 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
シミュレータ
30. ● FCにセンサーを接続 (SPI, I2C, etc)
● 自作ドライバを実装
● FCとラズパイを接続してラズパイ+カメラ or センサーを使って
ドローンの自律航行
● ドローンの群制御
● drone based follow
Todo list
今後やりたいこと