はじめに
前回のRaspberry Pi Zero で自律飛行ドローンを作るぞ(第3回:フライトコントローラを使いました...) では、フライトコントローラのpitch,roll,yaw姿勢制御のおかげでRaspberry Piからのスロットル操作で浮上させることができました。
今回は
設定した高度を維持する制御にトライしてみました。
距離センサ(VL53L0X)を使用して地上高400mmをkeepする。
結果:スロットルを少し下げると一気に降下してしまいます。降下を検知してスロットルを上げるのですがそのレスポンスが悪く大きく上下にふらついてしまいます。何度か値を調整しましたが結果は良くありませんでした。
気圧センサ内蔵のフライトコントローラを使用して高度を維持させる。
制御プログラム改善の前に試してみたいのがフライトコントローラに内蔵の気圧センサの力を借りることです。
今使用しているフライトコントローラ(CC3D)は気圧センサは付いていないので、気圧センサ内蔵のフライトコントローラ(NAZE32)を使うことにしました。フライトコントローラ設定用アプリはCleanflightを使用します。※フライトコントローラの設定については割愛します。
↓構成は以下の通り。NAZE32はarm(アーミング)操作が必要なので制御信号を追加しています。baro(気圧センサ)制御信号も別で追加しています。
結果:スロットル操作した時の降下と上昇が緩やかになった感じです。もう少し検証を続けますが気圧センサの効果はありそうです。下図は高度400mmを検知してスロットル制御をしているのですが、実際は750mm付近で高度が維持されているのがわかります。
#define MINIMUM_GROUND_CLEARANCE 40 //最小地上高
#define MAXIMUM_GROUND_CLEARANCE 400 //最大地上高
#define DEBUG_MAINLOOP_TO 7 //デバッグ用メインループタイムアウト指定(sec)
#define FLIGHT_TIME 5 //DEBUG_MAINLOOP_TO - FLIGHT_TIME = landing time
#define OFFSET_POWER 600
#define LANDING_POWER 450
今回検証した機体の外観
今回の感想
気圧センサはあくまでも補助なのだと感じましたので、次にやることは高度制御プログラム改善を考えています。
コード(GitHub)
追記
- 2020/01/04 この機体は大きすぎるのでマイクロドローン機への乗り換えを検討中です
- 2020/06/22 Raspberry Pi Zero で自律飛行ドローンを作るぞ(第5回:距離センサVL53L0Xを複数使って衝突しないようにする)に続きます