理系的な戯れ

理工学系とくにロボットやドローンに関する計算・プログラミング等の話題を扱って、そのようなことに興味がある人たちのお役に立てればと思っております。

ドローン制御最初の一歩 - StampFly制御システム第3回

はじめに

前2回はイマイチな気もする

この前の2回の記事はAIの力を借りて執筆するということにチャレンジしました。しかし、まだAIの使い方が悪いのか 良い記事とは言い難い内容になっています。

StampFlyのハードウエアスペックは網羅されていますし、マルチコプタの飛行原理は一通り書かれているような気がしますが どこか機械的です。

AIの力を借りて楽をするべきところと、そうでないところの区別が曖昧で、うまく使いこなせてない感じがします。 今後も、AIの力を大いに借りていこうと思いますが、主だった話の流れは自分で書いていこうと思います。

数式を記述する作業等はおそらくAIに任せるべきところだと思います。

この連載(シリーズ)について

この連載はいずれ教科書にまとめようと思って書いています。出版社の方でStampFlyをつかった制御の本に興味のある人はご連絡ください(笑)

ただ、最初は構成をきっちり決めて30回シリーズにしようと息巻いていましたが、どうもそういう書き方ではうまく書けそうでないことがわかってきたので、 ある程度は先を考えながらも、あまりきっちり回数も毎回の話題も決めずにその時々の興味関心や読者のニーズに合わせて話題を展開していこうと思います。

これを書いている今は、飛行ロボコンに行くために駅の待合室で新幹線をまっています。2025年9月26日(金)になります。これから、どのくらいの連載になるのか楽しみです。

そうは言っても、今後の内容

まあ、まったく今後の構成を考えないというのもおかしいし、読者も何を期待してこのシリーズを読んでいけばいいかわからないので、ざっくり考えてみましょう。

  • 角速度制御
  • カスケードPIDによる角度制御
  • マルチコプタのモデルの導出
  • マルチコプタの設計
  • ToFや気圧による高度制御
  • IMU、ToF、オプティカルフロー、GNSS、UWB等による自己位置推定
  • 経路誘導
  • 対故障制御
  • 個々のセンサの話題
  • EKF
  • シミュレーター作ってみる
  • 制御系の設計はどうやるのか、どう考えるのか
  • 「マルチコプタの運動と制御」基礎のきその内容をカバー

こんな感じの話題はしていこうと思っています。

www.docswell.com

ドローン制御まず何をすればいいのか

まず最初にすることはStampFlyを買うことです(笑)

制御する対象がなければ中々具体的な行動には至れないでしょう。

StampFlyではなくてもコアな制御プログラムをする道はあると思いますが、 私の知る限りは最短経路がStampFlyの購入です。

StampFlyはマルツや千石で店頭で買えます。 また、スイッチサイエンスでも通販で購入可能です。

StampFlyを操縦するためにはコントローラが必要です。 そのためにはAtom Joystickを購入することも必要ですので、お忘れ無く。

ちなみにStampFlyがいくら売れても私には一銭も入りません(笑) 故にある意味自信を持ってお勧めできます。

M5Stamp Fly (M5StampS3搭載) — スイッチサイエンス

M5Atom Joystick(M5AtomS3搭載) — スイッチサイエンス

はじめの一歩

僕の好みとしては、初めにすることはセンサの読み込みや、UARTの通信の確立、LEDの点灯など 動作させるための基本的な関数群を作り込んでいくことです。

これに関しては、この連載でかならず取り上げるとして、 おそらくですけど、そこから話し始めると大抵は挫折すると思います。

繰り替えしになりますが、僕個人は「そこが面白いんじゃん」とは思いますが それをゆっくりしてるとドローンはいつまで経っても飛ばないので、 ある程度、アシストするためにセンサの読み込みなどを用意した骨組みのプログラムを提供します。

スケルトンプログラムはGithubにあります。

github.com

開発環境の構築

大変ですが、当ブログのこの記事を読んで、各人のPCに開発環境を整えてください。 StampFlyの開発環境はほぼどのOSでも構築できると思います。

rikei-tawamure.com

用語や座標の取り方について

飛びものの用語は普段あまり使わない言葉ばかりです、次の図に書かれている用語と座標軸の取り方は慣れてほしいと思います。

座標の取り方

座標の取り方は右手系(親指X、人差し指Y、中指Z)

ドローンの座標軸の取り方は、航空工学の慣例に従って解説しようと思います。

  • 前後方向がX軸(前+)
  • 左右方向がY軸(右+)
  • 上下方向がZ軸(下+) 以上のようになっています。

Z軸の下が+というのが慣れないかもしれません。 このドローンの座標軸はドローンに固定されています。

また、ドローンが自由自在に飛翔する空間これを慣性空間または地面座標系、地球座標系と言ったりします。 慣性空間はNED座標系と呼ばれる座標の取り方にします。

  • Nは北で北が+
  • Eは東で東が+
  • DはDOWNで下が+ 以上のようになっています。

運動に関する用語

回転運動は

  • X軸周りの回転運動がロール運動  - その角度がロール角(記号φ(ファイ))  - 角速度がロールレート(記号p)
  • Y軸周りの回転運動がピッチ運動

 -その角度がピッチ角(記号θ(シータ))  - 角速度がピッチレート(記号q)

  • Z軸周りの回転運動がヨー運動  - その角度がヨー角(記号ψ(プサイ))  - 角速度がピッチレート(記号r)

記号に関しても航空工学の慣例に従っています。

座標の取り方と記号
座標の取り方と記号

おわりに

今回は座標の定義や記号の意味を説明するにとどめようと思います。 あんまり長い記事を書くと読むのも書くのも疲れて挫折するので、短い記事をたくさん書こうと思います。 しばらくは実際にコードを書いてStampFlyを動かす話をしていこうと思います。

おねがいと注意

本記事はドローンの誘導や制御についての話題を取り扱います。工学的に興味がある人、より深く勉強して実装してみたい人に向けて教育的観点や趣味の人たちを増やしたいと言う意味合いで執筆しています。これを読んでドローンやロボット制御に興味をもってもらって、実際に手を動かしてみる人が増えることを夢見ています。そのような意図以外に人を傷つけたりといった使い方や法令違反をすることなくご利用ください。

また、お約束事項ですが・・・・ 本ブログに掲載する技術情報・解説・コード例は、教育・研究・学習目的で提供するものです。内容の正確性・安全性には十分配慮しておりますが、利用に伴う結果や損害について筆者は一切の責任を負いません。実装や運用は、各自の判断と責任において行ってください。

安全第一でドローン技術を学び、楽しんでください。