はじめに
前回のRaspberry Pi Zero で自律飛行ドローンを作るぞ(第2回:姿勢制御は簡単にできないぞ!!) から約5か月
いろいろ試してみたが納得する成果は得られませんでした。。。。
で?
うーん。ここまで進捗が無いのは想定外。このまま進めても納得する成果が出る見立てはなく。。
しかも、9歳の息子からはまだ飛ばないの?と言われ続け父親としての面目が立たない。。
ということで、フライトコントローラに手を出しました。
結果は?
姿勢制御はフライトコントローラー任せなので飛ばすことはできました。
息子は凄く喜んでくれたので良かったですが、複雑な気分です。。
飛ばした構成
フライトコントローラをPWMドライバとESCの間に組み込みます。
選択したフライトコントローラはCC3D,フライトコントローラ設定用アプリはLibrePilotを使用しました。
※フライトコントローラの設定については割愛します。
動作検証
RaspberryPiからは、まだスロットル制御だけなのでどこに飛んでいくかわからない状態です。
なので少しだけ上昇することを確認しました。
#define DEBUG_MAINLOOP_TO 5.0 //デバッグ用メインループタイムアウト指定(sec)
#define FLIGHT_TIME 3 //DEBUG_MAINLOOP_TO - FLIGHT_TIME = landing time
#define OFFSET_POWER 350
#define LANDING_POWER 310
機体の外観
- 上側
- 下側
振り返り
約5か月良い勉強ができました。
悔しいけど、RaspberryPiのみでは、
ロール/ピッチ/ヨーに対する加速度/ジャイロ/PID制御からESCへのPWM値計算処理能力不足で機体のふらつきを抑えるのが困難でした。RTOSを使っても処理は追い付かない気がします。
フライトコントローラを使えば飛ばすことはできると思っていましたが、
実際に使ってみたらほんとに簡単に飛ばすことができました。スロットルを上げるだけでした。
でも、初めからフライトコントローラを使っていたら姿勢制御の難しさはわからなかったと思います。
ちなみに、今回使ったフライトコントローラは2000円程度。凄すぎ!
次にやること(やりたいこと)
- 飛んでいる位置を制御したい。
- 安全に高度を上げたい
ということで、まだまだ挑戦は継続します。
この続きは、Raspberry Pi Zero で自律飛行ドローンを作るぞ(第4回:気圧センサで高度を維持させる)
コード(GitHub)