Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@shigeru-yokochi

Raspberry Pi Zero で自律飛行ドローンを作るぞ(第4回:気圧センサで高度を維持させる)

はじめに

前回のRaspberry Pi Zero で自律飛行ドローンを作るぞ(第3回:フライトコントローラを使いました...) では、フライトコントローラのpitch,roll,yaw姿勢制御のおかげでRaspberry Piからのスロットル操作で浮上させることができました。

今回は

設定した高度を維持する制御にトライしてみました。

距離センサ(VL53L0X)を使用して地上高400mmをkeepする。

結果:スロットルを少し下げると一気に降下してしまいます。降下を検知してスロットルを上げるのですがそのレスポンスが悪く大きく上下にふらついてしまいます。何度か値を調整しましたが結果は良くありませんでした。

20170819-3.PNG

動画はこちら(YouTube)
IMAGE ALT TEXT HERE

気圧センサ内蔵のフライトコントローラを使用して高度を維持させる。

制御プログラム改善の前に試してみたいのがフライトコントローラに内蔵の気圧センサの力を借りることです。
今使用しているフライトコントローラ(CC3D)は気圧センサは付いていないので、気圧センサ内蔵のフライトコントローラ(NAZE32)を使うことにしました。フライトコントローラ設定用アプリはCleanflightを使用します。※フライトコントローラの設定については割愛します。

↓構成は以下の通り。NAZE32はarm(アーミング)操作が必要なので制御信号を追加しています。baro(気圧センサ)制御信号も別で追加しています。
drone構成(naze32).PNG

結果:スロットル操作した時の降下と上昇が緩やかになった感じです。もう少し検証を続けますが気圧センサの効果はありそうです。下図は高度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

20170907-68.PNG

動画はこちら(YouTube)
IMAGE ALT TEXT HERE

今回検証した機体の外観

  • 表側
    20170907_164340-1.jpg

  • 裏側
    20170907_164401.jpg

今回の感想

気圧センサはあくまでも補助なのだと感じましたので、次にやることは高度制御プログラム改善を考えています。

コード(GitHub)

追記

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
15
Help us understand the problem. What are the problem?