Raspberry Pi ZeroとPythonを組み合わせてドローンを動かす基礎を作る。

By Lina KATAYOSE(selina)

Elevator Pitch

日々、技術は進歩しており、PythonのバージョンやRaspberry Piも進化しています。その最新のガジェットをPythonコード使って動かしてみます。Raspberry Pi Zeroは6.5cm×3cmの大きさでとても小さく安価なパソコンです。OSはLinuxで動き、Pythonはライブラリを使うことにより、簡単なコードでドローンのモーターを動かすことができます。Raspberry Piには専用のカメラモジュールやGPIOを使って機器の信号を送受信でき、制御したい信号を送り返すことができます。それらを今までの実験履歴を添えたものをスライドにまとめ、ドローンの実機を用いて発表をします。

Description

1.自己紹介(Self-introduction)

今までの経歴と、どのようにしてPythonとドローンに出会ったのか。
また数あるガジェットのうち、どのようにしてRaspberry Piに出会ったのかをお話します。

2.最新のドローン事情とRaspberry Piについて(About new drones and Raspberry Pi)

2017年、2018年の発表時の内容履歴も踏まえ、ドローンの進化とRaspberry Piの進化を話します。
主にPythonコードを用いてRaspberry Piは何ができるのか。
ドローンの世界シェアと、現代の必要機能を話します。ドローンは法律的な部分も含めてどのようなことに重きを置いて開発をすればよいかを話します。 また、標準的なRaspberry Piと(小型の)Raspberry Pi Zeroは何が異なり、 Raspberry Pi Zeroを使用する決め手になったのかを お話します。

3.ドローンとPythonの可能性(Possibility of Drone and Python)

ドローンは今後、世界で必要とされるガジェットと思っています。 またその中で機器などをコントロールするためにはC言語を使わなければいけないところもあり、ハードルが高いです。 世界的にも普及し始めているPythonはRaspberry Piで標準的に使用することができ、C言語と比べると導入が簡単にできると感じます。 またPuthonライブラリを使うことでより簡単に様々な機器に信号を送ることができます。 通常、パソコンは筐体の中を開けなければいけませんが、Raspberry Pi はGPIO(General-purpose input/output)にピンを指すだけで信号を送ることができます。 私はその部分に着目し、Raspberry PiとPythonを組み合わせて簡単なドローンを開発していきたいと思っています。 一部、電子部品を使いますが、実験履歴も含めて発表したいと考えています。

4.Raspberry のGPIO of Input and Outputは何か

GPIOは、General-purpose input/outputの頭文字をとっています。 (絵や写真を使って説明をします。) その名の通り、一般的な用途のインプット&アウトプットです。 この部分を使うことにより、PWM(Pulse Width Modulation)の信号を出すこともでき、逆に信号を受け取ることもできます。 この部分からの信号をどのように扱い、制御することにより、モーターの回転をコントロールするかをお話します。 また、加速度センサーまたはジャイロセンサーを使い、機器からの信号を受け取り、 アウトプットをどのように変化させるのかをお話します。

5.どのようにしてコントロールするのか(How to control)

DCモーターに電池をつながればモーターは回ります。 しかしながらそれを無線かつ、回転速度をコントロールするためには、リモコンやスピードコントローラーなどが必要になりますが、 手動でコントロールしては意味がありません。 自身のパソコンとRaspberry PiをWiFiでつなぎ、Raspberry Piをコントロールします。 ターミナルエミュレーター(TeraTerm)やVNC(Virtual Network Computing)を使用し、遠隔操作させます。 Raspberry Piを取り付けた自作ドローンを良いし、Raspberry Piには開発したプログラムを保存します。 今回使用するDCモーターの制御はFET基盤を使い、電流を流す仕組みをコントロールしたものを使います。 FET基盤の回路図の説明をしながら、モーターをPWMで回転コントロールする方法をPythonコードを用いて お話しようと考えています。

6.デモンストレーション(demonstration)

今回制作したオリジナルのドローンを、Pythonコードの説明と回路図も交えて説明します。 昨年は固定式でしたが、今回は動きも演出したいと考えています。 安全面を考慮し、聴いている方にドローンが飛び出さないように安全な支柱を使いその中でしか飛ばないように実演しようと考えています。

以上のことを踏まえ、Pythonを使いドローン自体のモーターがコントロールできる仕組みを説明していきたいと考えています。

Notes

小型ドローンフレームをオリジナルで開発・設計しました。 その機体を使い、小型・軽量化したドローンをPythonを使って動かします。
今までは標準的なRaspberry Piでの発表でしたが、今期はそれよりも小さいRaspberry Pi Zeroを使用し無線接続してコントロールさせます。
昨年はバッテリーなどの問題や軽量化などに問題がありましたが、それらを改善させました。 前回と同じくドローンのDCモーターを4つ個別に動かすプログラムを説明する予定です。
また以下は可能であれば、
カメラモジュールを使うことにより、ドローンからの視点を映像化できることなども交えたいです。 一番ネックな部分である安定化についてはジャイロセンサーなどを使用することにより、どのようにして姿勢制御ができるのかを取り付けて、安定化させる試みを実証したいと思います。

2017年の発表とその後の進化 2017年
https://www.slideshare.net/LinaKatayose/python-79532908 (初トーク参加)Raspbery Piの使い方とドローンの説明、その後、ドローンのモーターを説明し、PWMを使ったコントロール方法を発表。 実際のドローンとPythonコードを走らせて実演(有線)

2018年
https://www.slideshare.net/LinaKatayose/making-a-drone-by-python-using-raspberrypi-and-google-voicekit
(2回目) Raspberry PiにGoogle Voice Kitを取り付けて、ドローンのモーターを4つ個別に動かすプログラムを説明。
実際のドローンとPythonコードを走らせて実演(無線)

上記のトーク経験も活かし、より進化したPython×ドローンのトークを考えています。

<イメージ写真と回路図>

droneのプログラム実行例
https://youtu.be/V42K0NoXusA

drone実機を飛ばしているとこと
https://youtu.be/XOL1AekxkAE

私はドローンだけに関わらず、Pyladies Tokyoのスタッフとしてコミュニティ活動も行っています。 今年、PyCon 2019 Clevelandに行ったとこと。そしてPyCon2019 in Thaikandでのトーク経験も交えながら話したいと考えています。 Pythonのコミュニティでの活動経験などを通して将来的にはPythonを通して世界中の人々とつながる方法についてお話します。