ドローンエンジニア養成塾第21期

Applicationコース DAY 4

2026.7.18(Sat)

Copyright © Drone Japan All Rights Reserved.

全体スケジュール

アプリケーションコースは積極的に、実際に手を動かし実践する、がモットーです!
※時間の都合上多少変更がある場合があります。

日程 内容
Day1 6月6日 キックオフ, コース説明
Day2 6月20日 機体制御アプリケーション開発ワークショップ, pymavlink, DroneKit-Python
Day3 7月4日 コンパニオンコンピュータ概要&構成, MAVLink, SITL接続, MAVProxy, MAVLink-router
Day4 7月18日 フライトエクスペリエンス, チューニング, オートミッション, PullRequest基礎
Day5 7月25日 開発におけるセキュリティ, 実践ワークショップ
Copyright © Drone Japan All Rights Reserved.

目標

  • FCマウント応用
  • チューニング手順、パラメータ設定手順
  • 自動ミッション作成&実践、フェンス設定
Copyright © Drone Japan All Rights Reserved.
Mission PlannerのAdvanced Paramsで、ボード向き設定 AHRS_ORIENTATION のドロップダウンを開いた画面
機体を上から見た図。4つのモーターを赤い点と対角の点線で結び、中央にFCを置いた配置

FCマウント応用

  • AHRS_ORIENTATION:FCが機体と同じ向きにマウントできない場合、そのオフセットを設定する。45°分解で全部で40パターンある
  • 特殊な機体で45°分解だと不足する場合は下記を指定する
    • 100:Custom (Copter4.1以前)
    • 101:Custom 1 (Copter4.2以降)
    • 102:Custom 2 (Copter4.2以降)
  • 上記を選択した場合のみ有効なパラメータ(1°分解で設定できる):AHRS_CUSTOM_ROLL/PIT/YAW、CUS_ROT1_ROLL/PIT/YAW、CUS_ROT2_ROLL/PIT/YAW
  • ※向きオフセットを変更したら水平校正必須
  • 参考:FCのマウント、AHRS_ORIENTATION
Copyright © Drone Japan All Rights Reserved.

チューニング

機体を組み立てた後、飛行に際して機体が安定しない場合に調整する作業

  • 前準備(大事!!)
  • ベーシックチューニング
  • 拡張チューニング
  • QuickTune(コプター&VTOL、ローバー)
  • AutoTuneモードで自動チューニング
    【注意】
    QuickTune、AutoTuneともにLoiterモードである程度安定して飛ばせる状態にしておくことがポイント。振動が大きい状態では効果が期待できない。
Copyright © Drone Japan All Rights Reserved.
Initial Tune Parameter画面。プロペラサイズ・バッテリーセル数・電圧を入力して Calculate Initial Parameters を押す

前準備

  • 大事なファーストステップ!
  • 初めて組み立てる、もしくは機体構成を変更した場合は必ず実行すること。
  • 機体と接続した後Mission Plannerを開き、初期設定→必須ハードウェア→Initial Tune Parameter
  • プロペラサイズ、バッテリーセル数、バッテリ種類などの情報を入力
  • Calculate Initial Parametersボタンをクリックしてパラメータを書き込む
Copyright © Drone Japan All Rights Reserved.
ベーシックチューニング画面。Roll/Pitch Sensitivity のスライダー

ベーシックチューニング


①「設定/調整」を選択
②「ベーシックチューニング」を選択
③機体を組み立てた直後に安定しない場合に調整
機体が振動する場合:少し左に
機体の動きが鈍い場合:少し右に
【コツ】少しスライド→飛ばしてみる→再調整→…を繰り返す
【注意】必ずディスアーム状態で操作する!飛びながらでも可能ではあるが危険なので。

Copyright © Drone Japan All Rights Reserved.
拡張チューニング画面。Roll・Pitch・Yaw の PID などの入力欄が並ぶ

拡張チューニング


①Ch6オプションを選択し、
最小値・最大値を適切な範囲に設定
②「パラメータ書き込み」を選択
③Ch6を安全な初期ポジションに回しておく
④アームして飛行させ機体の状態を確認
⑤安全のため機体を着陸させディスアーム(飛んだままでも可能ですが慣れないと危険)
⑥Ch6を回して調整し④へ
⑦適当なところで機体をMission Plannerに
接続して値を確認、Ch6オプションを解除

Copyright © Drone Japan All Rights Reserved.

QuickTuneでチューニング①

  • 【注意】Gyroのノイズをハーモニックノッチフィルターで除去してから行う。ノイズが高すぎると失敗します。
  • ⓪Luaスクリプトをアップロード(SCR_ENABLE=1)
  • ①スクリプトが実行されるとQUIK_から始まるパラメータが現れる
    • QUIK_ENABLE:有効無効
    • QUIK_RC_FUNC:RCx_OPTIONSの紐付け、デフォルトの300のままでOK
    • QUIK_AXES:調整する軸ビット、AUTOTUNEと同じ、全部:7、ROLL/PITCH:3、YAW:4
    • QUIK_DOUBLE_TIME:ゲインを上げる時間(秒)、デフォルト10秒のままでOK
    • QUIK_GAIN_MARGIN:ゲイン変動マージン、デフォルトの60%でOK
Copyright © Drone Japan All Rights Reserved.

QuickTuneでチューニング①(パラメータ続き)

  • ①QUIK_ パラメータ(続き)
    • QUIK_OSC_SMAX
      • ゲインを上げたときの発振検出周期、デフォルトの5HzでOK、大型機体は下げる。
      • 調整後も発振する場合はこの値を下げて再度実行する。
    • QUIK_YAW_P_MAX/QUIK_YAW_D_MAX:YAWゲイン上限
    • QUIK_RP_PI_RATIO/QUIK_Y_PI_RATIO:Iゲインに対するPゲインの比率、デフォルトでOK、大型は注意
    • QUIK_AUTO_FILTER:INS_GYRO_FILTERに基づくPIDフィルター、デフォルトでOK
    • QUIK_AUTO_SAVE:0だと3ポジション、秒数指定で自動保存の場合は2ポジション必要

https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_Scripting/applets/VTOL-quicktune.md

Copyright © Drone Japan All Rights Reserved.

QuickTuneでチューニング②

  • ②スイッチ割当
    • ※パラメータ設定によって必要となるスイッチ、OPTIONが変わる
    • ※デフォルトであれば、3ポジションスイッチにRCx_OPTIONS=300を設定
  • ③Loiter/QLoiterモードで離陸しホバリング
    • ※弱風で安定したホバリングが必要
  • ④スイッチをMidポジションで開始
    • ※テレメトリーでメッセージをモニタリングすることをおすすめ。
  • ⑤Tuning:doneメッセージで完了
    • ※ただホバリングしているだけのように見えるので肉眼では区別が難しい。
  • ⑥スイッチをHighで保存→ディスアーム
    • ※Midで再チューニング、Lowで破棄
    • ※チューニング中に操作した場合は操作中止4秒後まで一時停止

https://github.com/ArduPilot/ardupilot/blob/master/libraries/AP_Scripting/applets/VTOL-quicktune.md

Copyright © Drone Japan All Rights Reserved.

AUTOTUNEでチューニング

  • ⓪AltHoldモードをスイッチに割り当てる ※Copter 3.5〜PosHold/Loiterモードも可
  • ①「設定/調整」を選択
  • ②左側の「拡張チューニング」メニューを選択
  • ③「Ch7 Opt」の項目で「AutoTune」を選択
  • ④ジンバルなどの周辺パーツを外す
  • ⑤「AUTOTUNE_AXES 」パラメータでチューニング軸を設定可
    • ※大型重量機で落ちる動画がコミュニティでシェアされています。
    • 気を付けましょう。AUTOTUNE_AGGR、AUTOTUNE_MIN_Dも併せて確認。
Copyright © Drone Japan All Rights Reserved.

AUTOTUNEでチューニング(実行手順)

  • ⑥アーム→Stabilizeで離陸→AltHold/PosHold/Loiter→安全な高度
    • →AutoTuneモード切替→(チューニング動作開始)
    • →機体がずれた場合はスティックで戻す※スティック離せば再開
    • →8分前後(※参考)→アラーム音で完了
    • →保存するかどうか2択
      • 保存したい:AutoTuneをONのままディスアーム
      • 破棄したい:AutoTuneをOFFにしてディスアーム
  • 【注意】いつでもStabilizeモードで取り戻して操縦できる体勢を!

http://ardupilot.org/copter/docs/autotune.html

Copyright © Drone Japan All Rights Reserved.

AUTOTUNEモード

ALT HOLD→AUTOTUNE
https://www.youtube.com/watch?v=js2GzeRysAc
POSHOLD→AUTOTUNE
https://www.youtube.com/watch?v=rw5IT8EWU6I

http://ardupilot.org/copter/docs/autotune.html

Copyright © Drone Japan All Rights Reserved.

パラメータ設定

機体のパラメータ設定をする方法

  • ①スタンダードパラメータ
  • ②アドバンストパラメータ
  • ③フルパラメータリスト or ツリー
    • ※新しいMPではフルパラでもオプションGUIが表示される

※機体を接続しないとパラメータは表示されません。
※パラメータ名が変更されるなどしてMission PlannerのGUIが動作しないこともある。

Copyright © Drone Japan All Rights Reserved.
スタンダードパラメータ画面。AHRS_TRIM と ARMING_CHECK の設定欄

スタンダードパラメータ

  • ①「設定/調整」を選択
  • ②「スタンダードパラメータ」を選択
    • ※GUIで設定できる。
    • ※パラメータを変更したら必ず「パラメータ書込み」ボタンを押して機体にパラメータを書き込む。
    • ※一般的によく調整するパラメータにアクセスできる。
Copyright © Drone Japan All Rights Reserved.
アドバンスドパラメータ画面。ACRO 関連パラメータと ACRO_OPTIONS の設定欄

アドバンスドパラメータ

  • ①「設定/調整」を選択
  • ②「アドバンストパラメータ」を選択
    • ※GUIで設定できる。
    • ※パラメータを変更したら必ず「パラメータ書込み」ボタンを押して機体にパラメータを書き込む。
    • ※上級者向けにより多くのパラメータにアクセスできる。
Copyright © Drone Japan All Rights Reserved.

フルパラメータリスト(アルファベット順)

フルパラメータリスト画面。パラメータ名・値・説明が表形式で並ぶ(アルファベット順)

①「設定/調整」を選択
②「フルパラメータリスト」を選択
※アルファベット順に並んでいる

絞り込み検索できる

Copyright © Drone Japan All Rights Reserved.

フルパラメータツリー(アルファベット順)

フルパラメータツリー画面。ADSB・AHRS・ARMING などグループ別のツリー表示

グルーピングされているので探しやすい

Copyright © Drone Japan All Rights Reserved.
パラメータ設定画面。フルパラメータリストで値を編集する

パラメータ設定

慣れるとフルパラメータ系でダイレクトに値を設定する方が楽です


①数値を選択して、キーボード入力
②変更があると背景が緑色に変わる
③「パラメータ書込」ボタン押下
※無線系テレメトリだと失敗することがあるため「パラメータ再読込」で要確認
※最近のMPではUIポップアップウィンドウが出る。

Copyright © Drone Japan All Rights Reserved.

これでもう実機は飛べるはず

もしもエラーが出たら、エラーキーワードでGoogle検索 or FBグループへ投稿

AHRS関連:
FC再起動で直ることが多い、直らない場合はキャリブレーション等を見直す
Compass not calibrated:
コンパスキャリブレーションしてない、もしくは再起動忘れ
Compass inconsistent:
コンパス異常、キャリブレーションし直す、磁性体が近くにあるケースが多い
Access Inconsistent:
加速度センサー異常、キャリブレーションし直す
Bad Gyro Health:
ジャイロ異常、電源を入れ直す
Need 3D Fix:
GPS測位ができてない、信号がいいところでFixするまでまつ
Bad AHRS:
姿勢推定異常、電源入れ直しで直らなければキャリブレーションし直す
(SAFE)/Safety switch…:
セーフティスイッチを解除する

Copyright © Drone Japan All Rights Reserved.
ホームと1〜5のウェイポイントを黄色い線でつないだ、衛星地図上の飛行ルート例

自動航行

やってみよう!設定した飛行プラン通りに自動航行する

自動航行するための手順は以下の3ステップ
【事前準備】機体がLoiterモードで安定飛行できること!
1、Mission Plannerでフライトプラン作成
2、フライトプランを機体にアップロード
3、Autoモードに切替、自動航行を開始
AUTO_OPTIONS(ビットマスク)

Bit Meaning
0 Allow Arming
1 Allow Takeoff Without Raising Throttle
2 Ignore pilot yaw
10進にすると?

https://ardupilot.org/copter/docs/parameters.html#auto-options-auto-mode-options

Copyright © Drone Japan All Rights Reserved.

飛行プラン作成画面

Mission Plannerのフライトプラン作成画面。地図上のルートと、下部のウェイポイントのコマンド表

マップエリア

アクションエリア

コマンドエリア

Copyright © Drone Japan All Rights Reserved.
ウェイポイントを追加した後のフライトプラン画面。ルートと更新されたコマンド表

ウェイポイント追加


マウスで左クリックと下記ウェイポイントに追加される

マップ拡大縮小

https://ardupilot.org/copter/docs/mission-command-list.html#waypoint

Copyright © Drone Japan All Rights Reserved.
スプラインウェイポイントを追加し、経路が曲線になったフライトプラン画面

スプラインウェイポイント追加


滑らかな曲線になる
※スプライン曲線

「スプライン」にチェックしてからウェイポイントを追加する
※チェックを外せばまた直線でウェイポイントを追加できる

https://ardupilot.org/copter/docs/mission-command-list.html#spline-waypoint

Copyright © Drone Japan All Rights Reserved.
ウェイポイントを移動している地図の拡大。ルート上のマーカーと機体位置

ウェイポイント操作

  • 緑色のマーカーはドラッグ移動が可能
  • マーカーを右クリックして、「Wpを削除」で削除可
  • Win+Ctrl押しながら複数ドラッグ選択、キーを離してドラッグ移動
  • 間に差し込むポイントが入れやすくなった
Copyright © Drone Japan All Rights Reserved.
地図の右クリックメニュー。WP追加・スプラインWP・ジャンプ・ポリゴンなどの項目

覚えておくと便利

  • 右クリックでコンテキストメニューが表示される
  • マップのプリフェッチ
    • オフライン環境でもマップデータが見えるようにする
  • ポリゴン
  • オートWP
Copyright © Drone Japan All Rights Reserved.
右クリックメニューのポリゴン関連項目を開いた画面

ポリゴン①


ポリゴンモードは、

  • ポリゴンをクリアする、

  • グリッド作成する

  • フェンスのアップロードする
    までは解除されない。

  • ポリゴンモードの開始

  • アイコンを左クリック

  • 「ポリゴン点の追加」を選択

ポリゴンモードではポリゴン用の赤いマーカーが配置される

https://ardupilot.org/planner/docs/mission-planner-flight-plan.html?highlight=polygon#advanced-mission-creation-tools

Copyright © Drone Japan All Rights Reserved.
ポリゴン描画・消去・保存・読込・面積表示のサブメニュー

ポリゴン②

ポリゴンは一度作成したら保存しましょう


作成したポリゴンはファイルに保存できる。
①右クリックでコンテキスト
②「ポリゴンを描画」→「Save Polygon」を選択
③ファイル名を付けて保存

https://ardupilot.org/planner/docs/mission-planner-flight-plan.html?highlight=polygon#advanced-mission-creation-tools

Copyright © Drone Japan All Rights Reserved.
右クリックメニューの Auto WP から Survey (Grid) を選ぶ画面

オートWP①

画像やセンシングしてマッピングしたい


作成したポリゴン内を規則的に航行したい。
①右クリックでコンテキスト
②「オートWP」→「Survey(Grid)」を選択

https://ardupilot.org/copter/docs/common-planning-a-mission-with-waypoints-and-events.html#auto-grid

Copyright © Drone Japan All Rights Reserved.
Survey (Grid) の設定画面。ポリゴン内に平行線の撮影ルートを自動生成している

オートWP②

ウェイポイントが自動的生成される


設定パラメータ

予想フライト時間

https://ardupilot.org/copter/docs/common-planning-a-mission-with-waypoints-and-events.html#auto-grid

Copyright © Drone Japan All Rights Reserved.
Survey の角度を変えて、斜めの撮影ルートを生成した画面

オートWP③

風向によってAngleを変えたり
フェンスポイントドラッグして変えたら


Angleを変更

予想フライト時間は少し延びた

https://ardupilot.org/copter/docs/common-planning-a-mission-with-waypoints-and-events.html#auto-grid

Copyright © Drone Japan All Rights Reserved.
Survey の結果をミッションに反映したフライトプラン画面。コマンド表に DO_SET_CAM_TRIGG_DIST が含まれる

オートWP④

ポリゴン表示を消せば綺麗にウェイポイントができている


※さらに手動でウェイポイントを追加できる

https://ardupilot.org/copter/docs/common-planning-a-mission-with-waypoints-and-events.html#auto-grid

Copyright © Drone Japan All Rights Reserved.
フェンス設定。右クリックメニューに Fence Inclusion / Exclusion などの項目が表示される

フェンス


フェンスモードの開始
①「FENCE」を選択

②「ポリゴン点の追加」を選択→ピンを立てて範囲決定
③「Fence Inclusion(内側を飛行許可)」または「Fence Exclusion(外側を飛行許可)」を選択

④「WPの書き込み」
⑤パラメータを設定して再起動
FENCE_ENABLE = 1

https://ardupilot.org/planner/docs/mission-planner-flight-plan.html#fences-creation

Copyright © Drone Japan All Rights Reserved.
コマンドエリア。WAYPOINT と DO_SET_CAM_TRIGG_DIST が交互に並んだコマンド表の一部

コマンドエリア

デフォルト
高度

高度
基準

緯度 経度 高度

リスト形式でコマンドを表示

コマンド


http://ardupilot.org/copter/docs/mission-command-list.html
http://ardupilot.org/planner/docs/common-mavlink-mission-command-messages-mav_cmd.html

Copyright © Drone Japan All Rights Reserved.
高さ基準(Frame列)のドロップダウン。Relative・Absolute・Terrain から選ぶ

高さ基準

高さの基準点を意識しよう

【高度基準】
Relative: 機体が起動した時点から
Absolute: 海抜
Terrain: 地表から、GoogleからDEMを取得


http://ardupilot.org/copter/docs/mission-command-list.html
http://ardupilot.org/planner/docs/common-mavlink-mission-command-messages-mav_cmd.html

Copyright © Drone Japan All Rights Reserved.
コマンド列のドロップダウン。WAYPOINT・SPLINE_WAYPOINT・LOITER_TURNS などミッションコマンドの一覧

ミッションコマンド

どんなコマンドがあるのか


WAYPOINT
SPLINE_WAYPOINT
RETURN_TO_LAUNCH
LAND_TAKEOFF
DELAY
…など
コマンドによってパラメータの意味がことなる。
https://ardupilot.org/copter/docs/common-mavlink-mission-command-messages-mav_cmd.html

http://ardupilot.org/copter/docs/mission-command-list.html
http://ardupilot.org/planner/docs/common-mavlink-mission-command-messages-mav_cmd.html

Copyright © Drone Japan All Rights Reserved.
コマンド表の行の削除・上へ・下への操作ボタン列

ウェイポイント削除・アップ・ダウン

選択した行の下に新しい行を挿入

削除

行を上下移動


http://ardupilot.org/copter/docs/mission-command-list.html
http://ardupilot.org/planner/docs/common-mavlink-mission-command-messages-mav_cmd.html

Copyright © Drone Japan All Rights Reserved.
アクションエリアの右パネル。WPファイル読込・保存、WPを読み込む、WPの書き込み、Write Fast、ホームロケーションのボタン

アクションエリア①


保存した航行プランをファイルから読み込む

設計した航行プランをファイルに保存

航行プランを機体からダウンロード

設計した航行プランを機体にアップロード

Copyright © Drone Japan All Rights Reserved.
アクションエリアの右パネル(同上)。WP読込・書き込み関連のボタンとホームロケーションの座標欄

アクションエリア②

グリッド:グリッド線表示する
KML表示:Google Earthで表示する


マップの種類を選択

※通常、機体接続すればホームロケーションはGPSで更新される。
手動で設定する場合は矢印の部分をクリックしてから、マップ上をダブルクリックしてホームロケーションを設定する。

Copyright © Drone Japan All Rights Reserved.

本日は 実践を楽しみましょう!

Copyright © Drone Japan All Rights Reserved.

Git/GitHub基礎

Copyright © Drone Japan All Rights Reserved.
Gitのロゴ
GitHubのロゴ

Git基礎

  • Git
    • 分散型バージョン管理
    • 多くのオープンソースプロジェクトにおいて利用されている
  • リポジトリ
    • ファイル、ディレクトリの変更状態を保存する場所
    • GitHub(https://github.com)
    • Gitをベースとしたバージョン管理ウェブサービス
    • 共有リポジトリは、無料で作成できる
    • ArduPilot・DroneKitリポジトリもGitHubで管理されている
Copyright © Drone Japan All Rights Reserved.

Git基本操作

center Gitの基本操作の流れ図。GitHub上のArduPilot本家から、自分のアカウントへ1.フォーク、ローカルPCへ2.クローンし、3.ブランチ作成、4.チェックアウト、5.コミット、6.プッシュ、7.プルリクエストで本家へ反映する

Copyright © Drone Japan All Rights Reserved.

GitHubアカウント作成

GitHubのロゴ

GitHubのトップ画面。ユーザー名・メールアドレス・パスワードを入力するサインアップフォーム

Copyright © Drone Japan All Rights Reserved.
SourceTreeのロゴ
SourceTreeの画面。ブランチ一覧とコミット履歴のグラフ

Git用クライアントアプリ①

  • 一通りのGitに関する操作が可能
  • クローン
  • ブランチ作成
  • コミット
  • プッシュ etc


https://ardupilot.org/dev/docs/git-install.html

Copyright © Drone Japan All Rights Reserved.

Git用クライアントアプリ②

$ sudo apt-get update
$ sudo apt-get install git
$ sudo apt-get install gitk git-gui

https://ardupilot.org/dev/docs/git-install.html

Copyright © Drone Japan All Rights Reserved.
GitHubのArduPilot/ardupilotリポジトリのページ。右上にForkボタンがある

1. フォーク

  • 共有リポジトリを編集できるように自分のアカウント配下に複製する
  • GitHubにログインし、ArduPilotを表示し画面右上の「Fork」ボタンを押下する。
  • ArduPilotソース
    https://github.com/ArduPilot/ardupilot


Forkボタンを押下

https://ardupilot.org/dev/docs/git-fork.html

Copyright © Drone Japan All Rights Reserved.
SourceTreeのCloneダイアログ。元のパス/URL、保存先のパス、名前の入力欄と「クローン」ボタン
GitHubの「Clone or download」メニュー。Clone with HTTPS のURL欄(https://github.com/…/ardupilot)をコピーする

2.クローン

サーバー上のリポジトリをローカルPCにダウンロードする

SourceTree

  1. 「Clone」押下
  2. 元のパス/URL:GitHubのURL(GitHubでURL確認)
  3. 保存先のパス:ローカルPCフォルダ
  4. 「クローン」押下

Gitコマンド

$ cd [your-ardupilot-folder]          # ローカルPCの任意のフォルダ
$ git clone https://github.com/[your-github-account-name]/ardupilot   # クローン
$ cd ardupilot
$ git submodule update --init --recursive   # サブモジュール取得・更新

https://ardupilot.org/dev/docs/git-clone.html

Copyright © Drone Japan All Rights Reserved.
SourceTreeの「ブランチ」ダイアログ。現在のブランチ master、新規ブランチ名の入力欄、「新規ブランチを作成してチェックアウト」のチェック、「ブランチを作成」ボタン

3.ワークブランチ作成

新規機能開発・バグ修正など開発項目単位に修正履歴を個別に管理する

SourceTree

  1. 「ブランチ」押下
  2. ブランチ名入力

Gitコマンド

$ git checkout -b [your-work-branch-name]   # ブランチ作成(古いコマンド)
$ git switch -c [your-work-branch-name]     # ブランチ作成(新しいコマンド)

$ git branch                                # ブランチ一覧表示
* master
  [your-work-branch-name]

https://ardupilot.org/dev/docs/git-branch.html

Copyright © Drone Japan All Rights Reserved.

4.チェックアウト

  • 作業を行うブランチを切り替える

SourceTree

SourceTreeのサイドバー。ブランチ・タグ・リモートの一覧で put_flightmode_1 ブランチを選択している

切り替えるブランチをダブルクリック

https://ardupilot.org/dev/docs/git-branch.html

Copyright © Drone Japan All Rights Reserved.

4.チェックアウト(Gitコマンド)

$ git checkout [your-work-branch-name]

$ git switch [your-work-branch-name]


$ git branch
master
* [your-work-branch-name]

↑ブランチの切り替え(古いコマンド)

↑ブランチの切り替え(新しいコマンド)

Copyright © Drone Japan All Rights Reserved.
SourceTreeのコミット画面。変更ファイルのステージング、コミットメッセージ入力欄、「コミット」ボタン

5.コミット

改良・修正内容を保存・記録する

SourceTree

  1. 「Commit」ボタン押下
  2. 変更ファイルをチェック
  3. 変更内容を記入
  4. 「コミット」押下

Gitコマンド

$ git add [file name]              # 追加・変更したファイルをインデックス追加
$ git commit -m "commit message"   # コミット実行。変更内容を記入

https://ardupilot.org/dev/docs/git-branch.html

Copyright © Drone Japan All Rights Reserved.
SourceTreeの「プッシュ」ダイアログ。プッシュ先 origin、プッシュするブランチ(master、put_flightmode_1)にチェック、「プッシュ」ボタン

6.プッシュ

リモートリポジトリにコミット内容を反映させる

SourceTree

  1. 「プッシュ」ボタンを押下
  2. ブランチをチェック
  3. 「プッシュ」ボタン押下

Gitコマンド

$ git push origin [your-work-branch-name]      # サーバーにコミット内容を反映させる
$ git push -u origin [your-work-branch-name]   # 初回push時は -u オプションでアップストリームを指定する必要がある

https://ardupilot.org/dev/docs/git-branch.html

Copyright © Drone Japan All Rights Reserved.
GitHubのプルリクエスト作成画面。ブランチが master より先行していることと、Pull request / Compare ボタンが表示される

7.プルリクエスト

  • 新機能や修正内容をフォーク元のリポジトリに取り込むよう依頼する
  • GitHubにログインしArduPilotリポジトリを表示
  • ブランチをワークブランチに切り替え
  • 「New pull request」ボタンを押下
  1. ブランチ切り替え

2.「New pull request」ボタン押下

https://ardupilot.org/dev/docs/submitting-patches-back-to-master.html

Copyright © Drone Japan All Rights Reserved.

Upstream管理

  • ArduPilot本線の変更をワークブランチに取り込む
1. forkもとをupstreamとして登録(1度実行)
$ git remote add upstream https://github.com/ArduPilot/ardupilot.git

2. ブランチをmasterに切り替え
$ git checkout master

3. masterにupstreamを取り込み
$ git pull upstream master

4. masterをoriginにプッシュ
$ git push origin master

5. ワークブランチに切り替え
$ git checkout [your-work-branch-name]
6. masterにリベース
$ git rebase master

7. ワークブランチをプッシュ(-fオプションが重要)
$ git push -f origin [work branch name]
Copyright © Drone Japan All Rights Reserved.

Pull Request作成演習

  • 下記いずれかの手順書を使用してください
  • Web版(pr-training-web.pdf)
    • Webブラウザのみで完結
    • コース1受講生向け
  • ローカル版(pr-training-local.pdf)
    • 開発環境が必要
    • コース2,3受講生向け
Copyright © Drone Japan All Rights Reserved.

貢献するためには?

  • まず、いろんな機能を使い倒す。発見したバグや改善ポイントをIssueやPull Requestとして挙げる
  • 初心者向け課題(Good for first issues)から自分が担当できそうなものを探す
  • 貢献ガイドライン → CONTRIBUTING.md, ArduPilot Wiki

【Pull Request例】

core: ardupilot_manager: use SIM_OPOS_* defaults instead of --home for SITL BlueOS内蔵SITLの起動位置が固定されていたため、SIM_OPOS_*パラメータから起動位置を指定・保存できるように修正したPR
joystick: match Dual Action names reported by SDL >= 2.0.6 SDLの更新でLogicool F310の機器名表記が変わり、MAVProxyの既存定義と一致しなくなっていたため、新しい機器名を追加したPR
Add flight mode 24 ZIGZAG to mavutil DroneKitでZIGZAGモード変更するとエラー発生→ArduPilotのモード追加にPymavlinkが追い付けてなかった点を修正したPR

https://ardupilot.org/dev/docs/contributing.html
https://ardupilot.org/dev/#getting-involved

Copyright © Drone Japan All Rights Reserved.
GitHubのContributorsページ。ArduPilotへのコミット数の推移グラフ
コントリビューター1人のコミット数の推移グラフ(666コミット、順位13位)

貢献者の一覧

養成塾の講師、卒業生もArduPilotに貢献されています。
https://github.com/ArduPilot/ardupilot/graphs/contributors

Copyright © Drone Japan All Rights Reserved.
ArduPilotのTシャツを着た人物が親指を立てている写真

Pull Requestについての記事(1/2)

ランディさんのインタビュー抜粋

編集部:「ではArduPilotは、誰でも書き換えられる、ということになるのでしょうか?(ちょっと不安)」

ランディさん:「誰でも、プルリクエスト(*1)はできますが、勝手に書き換えることはできません。開発者はまず、ArduPilotにこんな機能を追加したい、とGitHubでリクエストを出します。それをコア開発メンバーが確認して、承認や拒否、この部分を修正したら承認するなどを、コア開発メンバー同士で相談しながら判断しています。オープンソースですから、開発履歴はいつでも誰でも見ることができます」

編集部:「なるほど。オープンだからこそ保てる信頼性といえそうです。(安心しました)」

Copyright © Drone Japan All Rights Reserved.

Pull Requestについての記事(2/2)

ランディさん:「オープンソースはバグが多いというイメージがあるかもしれませんが、オープンかクローズドかは関係なく、バグの数はプロジェクト管理によります。むしろオープンソースの方が、開発者はミスをみんなに見られて恥ずかしい思いをしないよう、努力するはずです」

編集部:「恥をかくリスクが利点になる。人間の真理ですね。ArduPilotの開発者は、世界中で何人くらいいるのですか?」

ランディさん:「正確に数えるのは難しいですが、これまでGitHubでプルリクエストを出した開発者の人数は、468人(※)です。利用者としてのArduPilot開発者はもっと多いでしょう。コア開発メンバーは、アメリカ、中国、オーストラリア、フランス、世界中あちこちにいますが、全部で40人くらい。私はコア開発メンバーの1人で、コミット(*2)数は2番目に多いです」

https://drone-journal.impress.co.jp/docs/special/1182896.html

Copyright © Drone Japan All Rights Reserved.

無断転載・コピーの禁止

  • 当資料に掲載されている全ての画像・文章・情報等は著作権により保護されております。
  • 著作権者の許可なくこの資料の内容の全て又は一部を複製・転載・流用・転売・複写等することを禁じます。
Copyright © Drone Japan All Rights Reserved.

src: slide 2

src: slide 3

src: slide 4

src: slide 5

src: slide 6

src: slide 7

src: slide 8

src: slide 9

src: slide 9 (続き)

src: slide 10

src: slide 11

src: slide 11 (続き)

src: slide 12

src: slide 13

src: slide 14

src: slide 15

src: slide 16

src: slide 17

src: slide 18

src: slide 19

src: slide 20

src: slide 21

src: slide 22

src: slide 23

src: slide 24

src: slide 25

src: slide 26

src: slide 27

src: slide 28

src: slide 29

src: slide 30

src: slide 31

src: slide 32

src: slide 33

src: slide 34

src: slide 35

src: slide 36

src: slide 37

src: slide 38

src: slide 39

src: slide 40

src: slide 41

src: slide 42

src: slide 43

src: slide 44

src: slide 45

src: slide 46

src: slide 47

src: slide 48

src: slide 49

src: slide 49 (続き)

src: slide 50

src: slide 51

src: slide 52

src: slide 53

src: slide 54

guide-source: pr-training-web.pdf の正本 = https://github.com/hfujikawa77/droneschool-doc/blob/master/doc/git-github-guide/pr-training-web.md

guide-source: pr-training-local.pdf の正本 = https://github.com/hfujikawa77/droneschool-doc/blob/master/doc/git-github-guide/pr-training-local.md

src: slide 55

src: slide 56

src: slide 57

src: slide 57 (続き)

src: slide 58