ドローン制御 第1回テスト環境構築
2022.06.10
YouTube でも紹介しています。画像をクリックすると再生できます。
ドローン制御第1回では、テスト環境の構築を行います。
■ドローンのシステム構成
一般的なドローンのシステム構成は次のようになっています。
Ref.Advanced Pixhawk Quadcopter Wiring Chart
◇フライトコントローラ
フライトコントローラーには何社かあります。
DJIならNaza。3DロボティクスならPixhawkです。
Nazaは安定飛行がしやすく操縦も容易で、人気のフライトコントローラーです。
PixhawkはArduPilot系開発者と3Dロボティクス社が生産・販売など、海外でも人気のあるフライトコントローラーです。
Pixhawk系のハードウェアに対応したファームウェアは大きく分けて、PX4とArduPilotの2種類があります。
ArduPilotはライセンス形式がGPLv3のため、ソースコードの公開義務が発生しますが、PX4のライセンス形式はBSDのため、公開義務が発生せず、商用向けのオートパイロット分野でよく利用されています。
また、Betaflightは主に FPV ドローン向けに開発されているものです。FPV(First Person View)とは、ドローンに取り付けられた操縦用カメラからの映像をリアルタイムに確認しながら飛行させるスタイルのことです。Betaflightはベータフライトコンフィグレーターにより設定します。少し紛らわしいのですが、フライトコントローラーにインストールされ、フライトコントローラー自体を動かすのがBetaflightです。そのBetaflightを設定するためにパソコンへインストールするのがベータフライトコンフィグレーターです(以降、ベータフライトコンフィグレーターをコンフィグレーターと記載させていただきます)。
◇ESC(Electronic Speed Controller)およびモーター
ESCにPWM制御でパルス波を入力して、モーターの回転数を制御します。
モーターとESCを繋ぐコードが3本のものがブラシレスモーター用、2本の場合はブラシモーター用です。
FPV用のESCなどは、FCを介して、コンフィグレーターから設定するのが一般的で、ハードウエア依存性も高く購入には注意が必要です。
◇PDB(Power Distribution Board)
電源分配用の基盤で、バッテリーからの給電をESCとFCに分岐します。
PDBに変圧機能が備わっていない場合に、BEC(Battery Eliminator Circuitry)を中継させることでFCへの適正電圧に変換することができます。
また、BEC機能付ESCの場合は、バッテリーを直接ESCにつなぎ、ESCからFCに給電します。
◇各種センサー
GPS、3軸加速度センサ、ジャイロセンサなどです。
ジャイロセンサは角速度センサとも呼ばれ、物体の回転や向きの変化を検知します。
加速度センサは、物体の移動速度の変化を監視し、動き・重力・振動・衝撃を検知します。
◇送信機・受信機
操縦者の命令をドローンに送信し、受信機により、FCに伝えます。送信機は「コントローラー」とも呼ばれますが、ラジコンやドローンの世界では「プロポ」と呼ばれることが一般的です。
◇フライトテレメトリー
飛行中のドローンの状態を、操縦者が手元で確認するためのシステムです。
プロポが操縦者からドローンへの一方向送信に対して、テレメトリーは双方向通信により、
機首の方向、水平距離、高度、バッテリー残量など機体の情報を確認することができます。
なお、プロポによっては、テレメトリー機能を持ったものもあります。
■ドローン・プログラミング環境状況
ドローン・プログラミンでは、ドローンが受信した命令を、搭載されている各種センサーから機体の状態を計算したうえで、
適切に動作するように制御することが目的です。
フライトコントローラーのファームウェアであるArduPilotはオープンソースなので、これを解析するという方法もあるのですが、気が遠くなりそうです。
そこで、独自にプログラミングできるドローンを探してみました。
◇DJI Tello EDU
プログラミング教育に特化したトイドローンには、DJIから発売されている「Tello EDU」があります。
しかし、Telloは、ファームウェアを書き換えることはできません。慣性センサーによる姿勢制御は内部で処理されます。
ユーザーは、Telloから画像やセンサ情報を受け取って処理し、その結果に応じて簡単なコマンドを送信するだけで、Telloを動かすことができます。
◇STEVAL-DRONE01
STMicroelectronicsのSTEVAL-DRONE01は、プログラム制御が可能な室内用ドローンです。
STEVAL-FCU001V1
フライト・コントローラ・ユニット
MCU | STM32F401 |
加速度/角速度センサ | LSM6DSL |
磁気センサ | LIS2MDL |
気圧センサ | LPS22HD |
Bluetooth 4.1 | SPBTLE-RF |
モータードライバ | STL6N3LLH6 |
バッテリ充電制御 | STC4054 800mA |
この製品を注文したのですが、ウクライナ情勢が絡み、米国の輸出規制によりキャンセルされてしまいました。
■ドローン制御・テスト環境構築
そこで、まずはフライトコントローラーとして使えそうなマイコンを探してみました。
◇Arduino Nano 33 IoT
Nano 33 IoTは、WiFi通信が可能で、11個のPWM端子、3軸加速度およびジャイロセンサを実装しています。
MICROCONTROLLER | SAMD21 Cortex®-M0+ 32bit low power ARM |
Wi-Fi & Bluetooth | u-blox NINA-W102 |
OPERATING VOLTAGE | 3.3V |
INPUT VOLTAGE (LIMIT) | 21V |
DC CURRENT PER I/O PIN | 7mA |
CLOCK SPEED | 48MHz |
CPU FLASH MEMORY | 256KB |
SRAM | 32KB |
EEPROM | none |
DIGITAL INPUT / OUTPUT PINS | 14 |
PWM PINS | 11 (2, 3, 5, 6, 9, 10, 11, 12, 16 / A2, 17 / A3, 19 / A5) |
UART | 1 |
SPI | 1 |
I2C | 1 |
ANALOG INPUT PINS | 8 (ADC 8/10/12 bit) |
ANALOG OUTPUT PINS | 1 (DAC 10 bit) |
EXTERNAL INTERRUPTS | All digital pins (all analog pins can also be used as interrput pins, but will have duplicated interrupt numbers) |
LED_BUILTIN | 13 |
USB | Native in the SAMD21 Processor |
IMU | LSM6DS3(3軸加速度/ジャイロセンサ) |
LENGTH | 45 mm |
WIDTH | 18 mm |
WEIGHT | 5 gr (with headers) |
Ref.Nano 33 IoT
↑クリックで拡大、再クリックで元に戻ります。
Ref.A LOOK AT THE ARDUINO NANO 33 IOT
【補足】
VUSB PIN
VUSBピンは、元のNanoと同じように出力ですが、設計上接続されていません。
これは、VUSBピンがMicroUSBコネクタからの5ボルト出力であり、その5ボルトが入力ピンと接触した場合に、損傷または破壊する可能性があるためです。
I2C Pullup Resistors
オリジナルのNanoを含む他の多くのArduinoと同様に、Arduino Nano33IoTはそのI2C接続を2つのアナログ入力ピンA4とA5と共有します。ただし、他のArduinoモデルとは異なり、Arduino Nano33IoTにはこれらのピンに接続された内部プルアップ抵抗があります。
IMUはI2Cデバイスであるため、これらのプルアップが必要であり、バスは内部で使用されます。
プルアップを無効にすることはできないため、A4ピンとA5ピンをアナログ入力として使用することはできません。
Ref.DroneBot Workshop
◇JOZEN GYROMASTER G4 AH
ドローンに使う筐体は、水没させてしまって動かなくなってしまったというジャンク品をメルカリで送料込み300円で購入しました。
●気圧センサー搭載でオートホバーリングができる!
●2.4GHZ,4ch,6軸ジャイロセンサー搭載で安定歩行、カンタン操作。
●固定式ローターガードで壊れにくい。
●カンタン宙返り操作
●スピード2段切り替え機能(low high)
●12台同時飛行可能
●2色のLEDライト点灯
この大きさだと当然ですが、フライトコントローラー一体型の基板に、3.7V 130mAhのリチウムポリマー電池が取り付けられていました。
テスト環境では内蔵のフライトコントローラーは使用せずに、ドローンの筐体とプロペラのみを再利用します。
リチウムポリマー電池の電圧を測ってみるとなんと0V、水没する瞬間をみてみたかったです。
DFRobot CORELESS MICRO MOTOR (6*12MM)
ドローン付属のモーターは、回転が安定しなかったので、新品のモーターを使います。
●モータタイプ:ブラシ付き(コアレス)DCモータ
●電圧(定格):3.7VDC
●RPM:50000 RPM
●サイズ/寸法:円形 - 0.240インチ径(6.10mm)
●直径(シャフト):0.031インチ(0.80mm)
モーターのリードはすごく細いのでちぎれないように基板に固定しています。基板上に回路はありません。
筐体の中に配線を納めて、電源スイッチのあった穴からケーブルを外にだしています。
◇DFROBOT 2x1.2A DC Motor Driver (TB6612FNG)
スピードコントローラーには、DFROBOT (DRI0044) TB6612FNG モータコントローラを使います。
●VCC Operating Voltage: 2.7V~5.5V
●VM Input Power: 2.5V~12V
●Output Current: 1.2A (single-channel continuous drive current)
●Start / Peak Current: 2A (continuous pulse) / 3.2A (single pulse)
●Dimension: 0.79 x 0.77(in) / 20 x 19.50(mm)
配線例
このモータードライバーを2個使って、4個のモーターを制御します。
◇Battery
cheero Canvas 3200mAh IoT 機器対応
ワンボードコンピューターは非常に微弱な電流で動作する状態があるため一般的なモバイルバッテリーでは保護機能が働き、電力供給を止めてしまいます。
この商品は電源オンすれば電力供給し続けることができます。
このモバイルバッテリーをリチウムポリマー電池1セルと同じ3.7Vまで降圧して使用します。
DC-DC Step-Down Buck Converter Power Supply Module
モバイルバッテリーは5V出力なので、降圧コンバータを使い、3.7Vに変換しています。
このDC-DCステップダウンコンバータは出力3.7V固定のモジュールです。実際に出力電圧を測ってみると、3.8Vちょっとありました。
Breadboard Power plate USB kit
PIMORONIから発売されている、micro-B USBコネクタからブレッドボード上の電源レールに5Vを供給するための部品です。
モバイルバッテリーの出力をUSBコネクタに繋げ、降圧コンバータとの間を仲介します。
◇Adafruit QT Py ESP32-S2 WiFi Dev Board with STEMMA QT
今回プロポ(操縦用送信機)は使いません。テレメトリー用の通信を利用して、ドローンを制御します。
フライトコントローラーであるNano 33 LoT とWiFi通信を行うのが、QT-Py ESP32-S2 です。
QT Py ESP32 -S2にはシングルコアの240MHzチップが搭載されているため、デュアルコアのESP32ほど高速ではありませんが、
4MBのフラッシュと2MBのPSRAMを実装しているため、データ解析などに必要なメモリー空間を確保することができます。
●Same size, form-factor, and pin-out as Seeed Xiao
●ESP32-S2 240MHz Tensilica processor
●4 MB Flash & 2 MB PSRAM
●Built-in RGB NeoPixel LED
●2.4 GHz Wi-Fi System-on-Chip (SoC)
●13 GPIO pins:
●11 on breakout pads, 2 more on QT connector
●10 x 12-bit analog inputs (SPI high speed pads do not have analog inputs)
●8-bit analog output DAC
●PWM outputs on any pin
●Two I2C ports, one on the breakout pads, and another with STEMMA QT plug-n-play connector
●Hardware UART
●Hardware SPI on the high speed SPI peripheral puns
●Hardware I2S on any pins
●5 x Capacitive Touch with no additional components required
●3.3V regulator with 600mA peak output
●Reset switch for starting your project code over, boot 0 button for entering bootloader mode
Ref.Adafruit QT Py ESP32-S2
これらを組み立てると下記のようになります。
写真にあるラズベリーパイ(Raspberry Pi 3 model B)は、コードのビルドの際に使用します。
ビルドには、PlatformIOを用います。
■テスト環境・配線確認
簡単なコードを書いて、ドローンを動かしてみます。
$ mkdir ~/nano33IoT
$ cd ~/nnano33IoT
$ pio init -b nano_33_iot
$ vi src/check.ino
#define PWM_LF 2
#define PWM_RR 3
#define PWM_RF 5
#define PWM_LR 6
#define EN_PIN 4
void setup() {
pinMode(EN_PIN, OUTPUT);
digitalWrite(EN_PIN,LOW);
analogWrite(PWM_LF, 10);
analogWrite(PWM_RR, 10);
analogWrite(PWM_RF, 10);
analogWrite(PWM_LR, 15);
delay(5000);
analogWrite(PWM_LF, 0);
analogWrite(PWM_RR, 0);
analogWrite(PWM_RF, 0);
analogWrite(PWM_LR, 0);
}
void loop() {}
前方右側と後方左側のモーターは極性を反転させてつないでいます。
モーターは常に一定方向への回転なので、すべてのDIR1、DIR2を1つにまとめて、EN_PINとしています。
$ pio run -e nano33 -t upload
前方左側と後方右側のプロペラは時計回り、前方右側と後方左側のプロペラは反時計回りに回転しています。
後方左側のモーターの回転が弱かったので、PWM値を増やしています。
すべてのプロペラを同じ回転数で回すと、ホバリングの状態になります。
analogWrite(PWM_LF, 10);
analogWrite(PWM_RR, 10);
analogWrite(PWM_RF, 10);
analogWrite(PWM_LR, 15);
このように、モーターの個体差や配線上の問題が、モーターの回転数に影響を与えます。
実際の運用では、加速度センサーやジャイロセンサーの測定値をもとに姿勢制御をする必要があります。
|
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
Arduinoで学ぶ組込みシステム入門(第2版)
●Arduinoを使って組込みシステム開発を理解する
・ハードウェアやソフトウェアなどの基礎知識/
・設計から実装までを系統的に説明するモデルベース開発/
・Arduinoを用いた実際の開発例
最新 使える! MATLAB 第3版
◆◆すぐに「使える!」 全ページフルカラー!◆◆
・MATLAB R2022bに対応し、解説もより詳しく!/
・コマンド・スクリプトの例が豊富で、動かして学べる!/
・超基本から解説。これから使いはじめる人にぴったり!/
・全編フルカラー、スクリーンショットも豊富!
Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版
1.システム構築をインフラから始めるには/
2.ネットワークを構築する/
3.サーバーを構築する/
4.Webサーバーソフトをインストールする/
5.HTTPの動きを確認する/
6.プライベートサブネットを構築する/
7.NATを構築する/
8.DBを用いたブログシステムの構築/
9.TCP/IPによる通信の仕組みを理解する
C言語は第二の母国語: 独学学生時代から企業内IT職人時代に培った、独立のための技術とノウハウ 平田豊著
学生時代から独学でプログラミングをはじめ、企業内でデバイスドライバを開発し、そして独立後もたくさんのアプリケーション開発や技術書制作に携わってきた著者。その筆者が大事に使い続ける「C言語」の“昔と今”について、気づいたことや役立つ知識、使ってきたツールなどについて、これまで記してきたことを整理してまとめました。
本書では、現役プログラマーだけでなく、これからプログラミングを学ぶ学生などにも有益な情報やノウハウを、筆者の経験を元に紹介しています。
1冊ですべて身につくJavaScript入門講座
・最初の一歩が踏み出せる! 初心者に寄り添うやさしい解説
・最新の技術が身につく! 今のJavaScriptの書き方・使い方
・絶対に知っておきたい! アニメーションとイベントの知識
・プログラミングの基本から実装方法まですべて学べる
図解! Git & GitHubのツボとコツがゼッタイにわかる本
ソフトウェア開発では欠かすことのできないGit、GitHub。
これからGit、GitHubを使いたいという入門者の方でも、実際に手を動かしながら使い方を学べます。
C自作の鉄則!2023 (日経BPパソコンベストムック)
メーカー製のパソコンはスペックが中途半端で、自分が本当に欲しい機種がない――。そう思っている人には、ぜひ自作パソコンをお薦めします。自作パソコンのパーツは進化が速く、しかも驚くほど種類が豊富。価格も性能も、幅広く用意されているため、満足度100%の“自分だけの1台”を手に入れることができます。
Interface 2023年6月号
特集:第1部 フィルタ設計 基礎の基礎/
第2部 係数アプリや波形観測アプリで合点!FIR&IIRフィルタ作り/
第3部 配布プリント基板で体験!マイコンで動くフィルタ作り
日経Linux 2023年5月号
【特集 1】 AI時代の最強フリーソフト ~ 25のやりたいを実現!
【特集 2】 AWS、Azureのうまみを無料で体感!面倒なことはクラウドに任せよう
【特集 3】 新しいRaspberry Pi Cameraで遊んでみよう
【特集 4】 Linuxで旧型PCを復活! 1kg切るモバイルPCを「ChromeOS Flex」でChromebook化
ラズパイマガジン2022年秋号
特集:5大人気ボード 電子工作超入門
「半導体不足で在庫が不足し、電子工作のボードがなかなか買えない…」。そんな今にふさわしい特集を企画しました。5種の人気ボードにすべて対応した電子工作の入門特集です。「GPIO」や「I2C」を使った電子パーツの制御方法は、どのボードでも同じです。手に入れられたボードを使って、今こそ電子工作を始めましょう。
地方で稼ぐ! ITエンジニアのすすめ
学歴、理系の知識、専門スキル……全部なくてもITエンジニアになれる!
地方でも高収入でやりがいをもって働ける!ITエンジニアの魅力を一挙大公開
Raspberry Piのはじめ方2022
本書は、ラズパイやPicoの買い方やインストール、初期設定といった基本から、サーバー、電子工作、IoT、AIといったラズパイならではの活用方法まで、1冊でお届けします。
ラズパイをこれから始める方向けに、全36ページの入門マンガ「女子高生とラズベリーパイ」も巻末に掲載。これを読むだけでラズパイがどんなものなのか、すぐに分かって触れるようになります。
ハッカーの学校 IoTハッキングの教科書
生活にとけこみ、家電機器を便利にするIoT技術。
Webカメラなど、便利の裏側に潜むセキュリティの危険性をハッキングで検証。
専門家がパケットキャプチャからハードウェアハッキングまで、その攻撃と防御を徹底解説。
本書は2018年7月に刊行された「ハッカーの学校IoTハッキングの教科書」に一部修正を加えた第2版です。
攻撃手法を学んで防御せよ! 押さえておくべきIoTハッキング
本書は、経済産業省から2021年4月にリリースされた、IoTセキュリティを対象とした『機器のサイバーセキュリティ確保のためのセキュリティ検証の手引き』の『別冊2 機器メーカに向けた脅威分析及びセキュリティ検証の解説書』をもとに、IoT機器の開発者や品質保証の担当者が、攻撃者の視点に立ってセキュリティ検証を実践するための手法を、事例とともに詳細に解説しました。
ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS…
全WEB媒体で効果バツグン!
カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術
プログラマーは世界をどう見ているのか 西村博之著
イーロン・マスク(テスラ)、ジェフ・べゾス(Amazon)、ラリー・ペイジ(Google)…etc.
世界のトップはなぜプログラマーなのか?
ニーア オートマタ PLAY ARTS改 <ヨルハ 二号 B型 DX版> PVC製 塗装済み可動フィギュア
「NieR:Automata」より、ヨルハ二号B型こと2BがPLAY ARTS改に新たに登場!
高級感の感じられるコスチュームや髪の質感、洗練されたボディバランス、細かなデティールに至るまでこだわり抜かれた逸品。
DX版には通常版のラインナップに加え2Bの随行支援ユニット ポッド042などをはじめ“純白の美しい太刀"白の約定やエフェクトパーツ、自爆モードを再現できる換装用ボディパーツ、シーンに合わせて変えられる顔パーツ2種も付属する豪華な仕様に。
作中のあらゆるシーンを再現することが可能なファン必見の一品となっている。
Newtonライト2.0 ベイズ統計
ベイズ統計は,結果から原因を推定する統計学です。AIや医療などの幅広い分野で応用されています。その基礎となるのは18世紀に考えだされた「ベイズの定理」です。
この本では,ベイズ統計学のきほんをやさしく紹介していきます。
白光(HAKKO) ダイヤル式温度制御はんだ吸取器 ハンディタイプ FR301-81
無水エタノールP 500mlx2個パック(掃除)
ケイバ(KEIBA) マイクロニッパー MN-A04
サンハヤト SAD-101 ニューブレッドボード
白光(HAKKO) HEXSOL 巻はんだ 精密プリント基板用 150g FS402-02
[Amazon限定ブランド]【指定第2類医薬品】PHARMA CHOICE 解熱鎮痛薬 解熱鎮痛錠IP 100錠
|