3.1K Views
July 15, 24
スライド概要
プログラム可能なドローンStampFlyの操縦体験と送信機でモータを回すまでを、プログラムを実際に変更しドローンに書き込みながら体験できます。2時間30分コース
■ドローンやロボットを自作することを通じて制御や関連技術の生涯勉強情報を提供■工学博士■防大航空宇宙→筑波大博士■陸自→対戦車誘導弾等の装備品開発→高専教員→大学教員■ロボットランサー優勝→マイクロマウスニューテクノロジー賞受賞■指導者としてつくばチャレンジバンナム賞→飛行ロボコンマルチコプタ部門1位等々■北海道函館出身
Drone Control Workshop プログラム可能な ドローンを体験︕ 2024.7.13〜7.14 オープンキャンパスワークショップ資料(改訂) ⾦沢⼯業⼤学 ロボティクス学科 伊藤恒平
Drone Control Workshop 教材の StampFlyについて Introduction マルチコプタの制御 2
Drone Control Workshop StampFly 300mAh1S電池 RGBLED RGBLED M5StampS3 距離センサ ブラシ付 DCモータ 距離センサ マルチコプタの制御 3
Drone Control Workshop StampFly 開発の経緯 初代AtomFly
Drone Control Workshop
Drone Control Workshop
Drone Control Workshop ロボットの制御とは︖ マルチコプタの制御 7
Drone Control Workshop StampFlyの動作概要 トランジ スタ スイッチ ミキシング PID制御 外乱 ブラシ モータ プロペラ フレーム スタビライズ アクロ モード 上昇 下降 回転 運動 環境 ノイズ ジャイロ 加速度計 距離計 ⾓度推定 ⾼さ推定 位置推定 ⽬標 マルチコプタの制御 8
Drone Control Workshop クアッドコプタの運動原理 X 前後 クアッドコプタの運動 ロール回転 1 上昇・下降 2 ロール回転 3ピッチ回転 4 ヨー回転 Y 左右 ピッチ回転 Z マルチコプタの制御 ヨー回転 上下 9
Drone Control Workshop クアッドコプタの運動原理 全てのプロペラを 同時に 同じだけ 強くしたり 弱くしたり すると 上昇・下降する X 上昇 下降 Y Z マルチコプタの制御 10
Drone Control Workshop クアッドコプタの運動原理 左のプロペラを 早く回転し 右のプロペラを 遅く回転すると 機体は ロール回転します 逆回転も同様 右に移動します X ロール回転 Y Z マルチコプタの制御 11
Drone Control Workshop クアッドコプタの運動原理 前のプロペラを 遅く回転し 後ろのプロペラを 早く回転すると 機体は ピッチ回転します X Y 前に移動 Z マルチコプタの制御 ピッチ回転 12
Drone Control Workshop クアッドコプタの運動原理 反時計回りしている プロペラを早くし 時計回りの プロペラを弱く すると 機体は時計回り にヨー回転する X Y Z ヨー回転 マルチコプタの制御 13
Drone Control Workshop クアッドコプタの運動原理 直接制御できる運動は ・上下運動 ・各軸周りの回転運動 これらの合計4つの運動のみ 前後運動と左右運動は直接制御できない マルチコプタの制御 14
Drone Control Workshop 今⽇体験すること ・操縦体験 ・モータの速度制御 ・コントローラによる速度制御 ・ドローンの回転制御 マルチコプタの制御 15
Drone Control Workshop StampFlyの操縦 無線通信 ESP-NOW WiFi BlueTooth マルチコプタの制御 16
Drone Control Workshop 送信機のスティックの意味 左ボタン ⾃動⾼度切り替え スイッチ L 左スティックのボタン 宙返り R これは モード3の設定です ③ ② ① 右ボタン ⾶⾏モード変更(アクロ・スタビライズ) ストップ ウォッチ スタート ストップ リセット ④ 一般的な機能 ①エルロン(ロール制御) ②エレベータ(ピッチ制御) ③スロットル (推力制御) ④ラダー(ヨー制御) 右スティックのボタン ARM マルチコプタの制御 17
Drone Control Workshop ⾶⾏可能状態にする 左ボタン ⾃動⾼度切り替え スイッチ L 左スティックのボタン 宙返り R これは モード3の設定です ③ ② ① 右ボタン ⾶⾏モード変更(アクロ・スタビライズ) ストップ ウォッチ スタート ストップ リセット ④ 一般的な機能 ①エルロン(ロール制御) ②エレベータ(ピッチ制御) ③スロットル (推力制御) 右スイティック ④ラダー(ヨー制御) を押し込むと⾶ ⾏可能状態にな 右スティックのボタン ります ARM マルチコプタの制御 18
Drone Control Workshop 安全能状態にする 左ボタン ⾃動⾼度切り替え スイッチ L 左スティックのボタン 宙返り R これは モード3の設定です ③ ② ① 右ボタン ⾶⾏モード変更(アクロ・スタビライズ) ストップ ウォッチ スタート ストップ リセット ④ 一般的な機能 ①エルロン(ロール制御) ②エレベータ(ピッチ制御) ③スロットル (推力制御) 右スイティック ④ラダー(ヨー制御) をもう⼀度押し 込むと安全状態 右スティックのボタン になります ARM マルチコプタの制御 19
Drone Control Workshop 送信機の電源を⼊れる 左ボタンを押し ながらスイッチ を⼊れてくださ いモード3にし ます ① 左ボタン ② ⾃動⾼度切り替え スイッチ L 左スティックのボタン 宙返り R これは モード3の設定です ③ ② ① 右ボタン ⾶⾏モード変更(アクロ・スタビライズ) ストップ ウォッチ スタート ストップ リセット ④ 一般的な機能 ①エルロン(ロール制御) ②エレベータ(ピッチ制御) ③スロットル (推力制御) ④ラダー(ヨー制御) 右スティックのボタン ARM マルチコプタの制御 20
Drone Control Workshop 送信機のスティックの(モード2) 普通にスイッチ オンするとモー ド2です モード2とモー ド3は左右が逆 です ① 左ボタン ⾃動⾼度切り替え スイッチ L 左スティックのボタン 宙返り R ③ ② ① 右ボタン ⾶⾏モード変更(アクロ・スタビライズ) ストップ ウォッチ スタート ストップ リセット ④ 一般的な機能 ①ラダー(ヨー制御) ②スロットル ③エレベータ(ピッチ制御) ④エルロン(ロール制御) 右スティックのボタン ARM マルチコプタの制御 21
Drone Control Workshop 電池の付け⽅ ①電池を機体 に取り付け ます ②アダプタを しっかり根 元まで⼊れ る ③電池とアダ プタは最後 に接続 ④電池とアダ プタを接続 マルチコプタの制御 22
Drone Control Workshop 電池の外し⽅ 後ろから押すよ うにして、前に 抜き取ります マルチコプタの制御 23
Drone Control Workshop 現場ネコ案件 ❌ この様に左右に1本ずらし て⼊れると電池が短絡状態 になり燃えます🔥 マルチコプタの制御 24
Drone Control Workshop 完全に刺す前に確認 マルチコプタの制御 25
Drone Control Workshop うまく⾶ばすコツ ① ③ StampFlyと⾃分の向きを合わせるように⽅向 (ヨー)を常に微調整する ② 通常は前後左右のトリム(0点)は狂っている ので常に舵を前後,左右に傾けて動かないと ころを探し⼩刻みに微調整する ④ 思い切って⾼度を上げて⼩刻みにスロットル を調整し、⼀定の⾼さを保つ練習を繰り返す ホバリング(空中停⽌)ができるまで繰り 返し練習する。 よくなったら、移動してみる マルチコプタの制御 26
Drone Control Workshop プログラムの⼿順 Lesson 0 マルチコプタの制御 27
Drone Control Workshop フォルダを開く マルチコプタの制御 28
Drone Control Workshop Lesson0を選択 デスクトップの oc_lessonフォルダ の中の lesson0フォルダを 選択する マルチコプタの制御 29
Drone Control Workshop ビルドと書き込み PC USB-Cケーブル StampFly PCとStampFlyを接続 書き込みの時は電池を外す︕ ⾚丸のアイコンをクリック して書き込み 書き込みが失敗した場合はUSB-Cケーブルを抜いてStampのボタンを 押しながら再度ケーブルを接続して書き込み マルチコプタの制御 30
Drone Control Workshop モータを回す Lesson 1 マルチコプタの制御 31
Drone Control Workshop モータの速度制御 Dutyの⼤⼩で速度が制御できる Duty ON OFF 周期 Period PWM信号 マルチコプタの制御 32
Drone Control Workshop PWMの周期(周波数)について ON OFF 周期 同じDutyで周波数(周期) が異なるPWM波形 OFF期間が⻑いと電流が0になってしまう(電流不連続) 電流が0になる前にON(電流連続) モータの電気的時定数より⼗分⼩さな値の周期にPWM周期を設定する必要がある マルチコプタの制御 33
Drone Control Workshop Lesson1を⾏う準備 VSCodeの 「開く」またはフォルダを開で lesson1フォルダを開く マルチコプタの制御 34
Drone Control Workshop モータ制御関連の機能の付与 これらのファイルに モータ制御の機能が 記述されています 送受信を⾏うコードを記述するファイルの冒頭に以下を記述して ヘッダファイル(.hppファイル)を取り込む #include “motor.hpp” マルチコプタの制御 35
Drone Control Workshop モータの制御 モータを使える状態にする init_motor() モータをDutyに応じて回転させる関数 set_motor_duty(motor_handle, duty) モータを番号で指定 Dutyを指定 【使⽤例】 set_motor_duty(FRONT_LEFT_MOTOR, 0.15) 左前のモータをDuty 15%で回す例 マルチコプタの制御 36
Drone Control Workshop メインループ関数について 今回のWorkshopでのプログラミングは0からプログラムを⾏う事はしません。 サンプルのプログラムに追加する形で制御の勉強を進めていきます 400Hzのメインループ関数 flight_control.cppの中にある loop_400Hz()関数の中に必要なコードを書き込んでいきます loop_400Hz()関数は必ず400Hz(0.0025秒周期)で実⾏されます マルチコプタの制御 37
Drone Control Workshop サンプルプログラムについて 👈グローバル変数Loop_counter の値で流れが制御されている 👈 全てのモータをDuty15%にセット 👈全てのモータを停⽌ 👈Loop_counterを1増やす 👈 Loop_counter値をシリアルモニタで確認 マルチコプタの制御 38
Drone Control Workshop シリアルモニタの確認 👈 シリアルモニタのボタンを押すとLoop_counterの値が ⾼速に増えているのがわかります CTRL+Cでシリアルモニタは終了します マルチコプタの制御 39
Drone Control Workshop Lesson1 Exercise 1. Lesson1のプログラムを書き込んでください 2. 電池を繋いでください 3. モータの強さを15%から変えて⾒てください 4. テストベンチに取り付けて、電池を繋いでください 注意 モータは電池を繋いで2秒ぐらいしたら突然回り始めます。 マルチコプタの制御 40
Drone Control Workshop 送信機からの操縦指令の受信 Lesson 2 マルチコプタの制御 41
Drone Control Workshop StampFlyの操縦 無線通信 ESP-NOW WiFi BlueTooth マルチコプタの制御 42
Drone Control Workshop Lesson2を⾏う準備 VSCodeの 「開く」またはフォルダを開で lesson2フォルダを開く マルチコプタの制御 43
Drone Control Workshop 送受信関連の機能の付与 これらのファイルに 送受信の機能が記述 されています 送受信を⾏うコードを記述するファイルの冒頭に以下を記述して ヘッダファイル(.hppファイル)を取り込む #include “rc.hpp” マルチコプタの制御 44
Drone Control Workshop 送信機のスティックの意味 左ボタン ⾃動⾼度切り替え スイッチ L 左スティックのボタン 宙返り R これは モード3の設定です ③ ② ① 右ボタン ⾶⾏モード変更(アクロ・スタビライズ) ストップ ウォッチ スタート ストップ リセット ④ 一般的な機能 ①エルロン(ロール制御) ②エレベータ(ピッチ制御) ③スロットル (推力制御) ④ラダー(ヨー制御) 右スティックのボタン ARM マルチコプタの制御 45
Drone Control Workshop プログラムの中での取り扱い 姿勢制御関連の変数 Stick[RUDDER] ヨー制御 Stick[ELEVATOR] ピッチ制御 Stick[THROTTLE] 推⼒制御 Stick[AILERON] ロール制御 ボタン関連の変数 Stick[BUTTON_ARM] STK右 Stick[BUTTON_FLIP] STK左 Stick[CONTROLMODE] 右ボタン 姿勢制御関連の変数はスティックの倒れ量に⽐例した-1~1までの実数値を取る ボタン関連の変数はボタンを押すと1 離すと0 ただし右ボタンはトグル出⼒(押すたびに0と1の状態を交互に繰り返す) マルチコプタの制御 46
Drone Control Workshop サンプルプログラムについて 👈Stickの値をみてます マルチコプタの制御 47
Drone Control Workshop Lesson2 Exercise プログラムを書き込み シリアルモニタを開いてスロットルスティックの倒 し量に応じて値が変化することを確認してください マルチコプタの制御 48
Drone Control Workshop 送信機からの操縦指令でモー タを制御する Lesson 3 マルチコプタの制御 49
Drone Control Workshop Lesson1でモータの制御ができました︕ Lesson2で送信機からの指令信号を受け取ることが できました︕ では、送信機からの指令信号でモータを制御してみ ましょう︕ マルチコプタの制御 50
Drone Control Workshop 👈 800は2秒を表します。もっと⻑く回すには数字を増やして ください。 10秒だったら数値を何にすればいいかな︖ 👈 マルチコプタの制御 0.15(15%)を送信機のスティック の値を表す変数に変えるとモータが 制御できる 42ページを確認してください︕ 51
Drone Control Workshop 👈 マルチコプタの制御 0.15を送信機のスティッ クの値を表す変数に置き 換えました 52
Drone Control Workshop Lesson3 Exercise 1. プログラムを書き込み、スロットルスティック の倒し量に応じて左前のプロペラの回転が変化 するか確認しよう︕ 2. 全部のプロペラが同時に回転が変わるようにプ ログラムを改造しよう︕ マルチコプタの制御 53
Drone Control Workshop ドローンの回転制御 Lesson 4 マルチコプタの制御 54
Drone Control Workshop Lesson4を⾏う準備 VSCodeの 「開く」またはフォルダを開で lesson3フォルダを開く マルチコプタの制御 55
Drone Control Workshop クアッドコプタの運動原理 X 左のプロペラを 早く回転し 右のプロペラを 遅く回転すると 機体は ロール回転します ロール回転 Y Z マルチコプタの制御 56
Drone Control Workshop 全てのモータが50%で回るように変数をセット 👈 👈 左スティックの左右でモータ指令が 50%から減ったり増えたりする⼯夫 左のモータの強さが強く なった時、右のモータが 弱くなるにはどうしたら いいのか︖ マルチコプタの制御 57
Drone Control Workshop 👈 マルチコプタの制御 引き算してやれば、左が増えて、右が 同じだけ、減ることになるので、左の モータが強くなり、右のモータが弱く なる 58
Drone Control Workshop Lesson4 Exercise 1. プログラムを書き込み、スロットルスティック の倒し量に応じて左右のプロペラの回転が変化 するか確認しよう︕ 2. 後ろのモータも同じようになるようにプログラ ムを改造してください 3. テストベンチでドローンがロール回転するか確 認してみてください マルチコプタの制御 59
Drone Control Workshop おしまい マルチコプタの制御 60