Devastator Robotを構築して、楽しみながらセンサ、MCU、ソフトウェア、モータ制御について学習
DigiKeyの北米担当編集者の提供
2017-10-18
キットから多機能ロボットを構築することは、製作者にとって開始するのに優れた方法です。マイクロコントローラ、センサ、モータ、ソフトウェア開発といった多くの関連分野について学習する機会が得られます。さらに、製作者の初心者や経験者を問わず、各種のロボットキット、アドオン、オンラインヘルプが揃っています。
この記事では、DFRobotのDevastatorタンクプラットフォーム(図1)をベースにしたロボットを作る際に検討する必要がある実践的なステップ、問題、可能なアップグレードについていくつか説明します。

図1:DFRobotのDevastatorは、設計者や製作者が広範な電子とソフトウェアのスキルを学習できる汎用性のあるプラットフォームです。(画像提供:DFRobot)
Devastatorを選ぶ理由頑丈かつ耐久性があり、アルミ構造およびメタルギアブラシ付きDCモータ2個を持っています。3kgまでの荷重を扱うことができ、センサ、サーボ、ロボットアームなどのアクセサリ向けの取り付け穴があり、製作者が扱いやすいすべての一般的なマイクロコントローラボードと互換性があります。
完全なロボットシステムの構築
ロボットには、シャーシ、ホイール、トレッド、2つのモータが比属していますが、その他のコンポーネントは設計者が選択できます。完全なシステムには、マイクロコントローラボード、モータドライバボード、およびコマンドを入力するための手段が必要です。オプションのアドオンには、ロボットアーム、ビデオカメラ、または多少の自律動作を提供する衝突回避システムなどのアイテムが含まれます。
マイクロコントローラプラットフォームの選択
Devastator Robotは、いくつかの一般的なマイクロコントローラプラットフォームと互換性があります。Arduinoオープンソース開発プラットフォームは、2003年にイタリアで始まり、初心者やプロフェッショナルの設計者に広く使用されています。Arduino Uno(図2)は、Microchip Technology(旧Atmel)のATmega328P 8ビットRISCマイクロコントローラを使用しています。
他の標準機能には、事前にプログラムされたATmega16U2マイクロコントローラにより制御されるUSBポート、デジタル入出力、アナログ入力ポート、ソフトウェア更新用ICSP(in-circuit serial programming)ポートがあります。新しいArduino Dueでは、コアが32ビットARM® Cortex®-M3にアップグレードされています。このコアは、後述するDFRobotのコントローラボードでも使用されています。このボードは、Arduino互換性とモータドライバを兼ね備えています。

図2:Arduino Unoは、製作者のプロジェクトによく使用され、Microchip TechnologyのATmega328P 8ビットRISCマイクロコントローラをベースにしています。(画像提供:Arduino)
Raspberry Piシングルボードコンピュータは本来、学校でコンピュータサイエンスの基礎を教えるために開発されましたが、製作者コミュニティの間で非常に普及しています。最新のRaspberry Pi 3は、1.2GHzで稼働するBroadcomの64ビットクアッドコアCPUをベースにしています。これには、802.11nワイヤレスLAN、Bluetooth 4.1、Bluetooth Low Energy(BLE)が含まれます。また、1GBのRAM、Micro SDカードスロット、4つのUSBポート、HDMI、Ethernetポート、カメラインターフェース、GPIO 40ピン、他の専用インターフェースも備えられています。
既存の経験を生かそうとしているWindows専門家は、Windows 10の完全版がインストールされアクティベートされているDevastator互換のLattePandaコントローラボードから始めることができます。このボードは、1.8GHzで稼働するクアッドコアCPUを使用し、Arduino互換用にMicrochipの8ビットATmega32u4コプロセッサをバンドルしています。
LattePandaは、2GBのDDR3L RAMと最大32GBのストレージ、1つのUSB 3.0ポートと2つのUSB 2.0ポート、Wi-Fi、Bluetooth 4.0、コプロセッサ、および2つのプロセッサに分けられた合計22のGPIOを装備しています。
モータの制御
マイクロコントローラコアでセトリングした後、次にモータ制御ボードを選択します。Devastatorには、160rpm(無負荷時)で動作する6Vのモータが2個含まれています。それぞれの最大出力トルクは0.8kgf.cm(0.058ft-lb)で、最大ストール電流は2.8Aです。
Raspberry Piには、ロボット固有機能向けのプラグイン拡張ボードが必要ですが、DFRobotのDFR0398 Romeo BLEクワッドボードは、マイクロコントローラとモータドライバの両方を備えたArduinoマニア向けのシングルボードオプションを提供しています(図3)。ボードはUNO派生品よりも強力なコアを提供しますが、Arduinoソフトウェア互換性を維持しています。
マイクロコントローラはSTMicroelectronicsのSTM32F103RET6です。このデバイスは、72MHzで稼働するARM® Cortex®-M3 32ビットコアを使用し、512KBのフラッシュメモリ、モータ制御パルス幅変調(PWM)ブロック、16チャンネルの12ビットA/D変換(ADC)、2チャンネルの12ビットD/A変換(DAC)を搭載しています。

図3:DFR0398 のRomeo BLE クワッドは、Bluetooth機能と4つのモータ用ドライバを備えたArduino互換のロボット制御ボードです。(画像提供:DFRobot)
モータドライバは、2つのMicrosemiのHR8833デバイスから提供されます。各MOSFETドライバには、Devastatorモータの双方向制御用に2つのHブリッジドライバが含まれます。Romeo BLEクワッドには、4つのエンコーダインターフェースが含まれ、Bluetooth 4.0用にTexas InstrumentsのCC2540 RFトランシーバも統合されています。
電源の追加
マイクロコントローラボード自体は、USBコントローラからの5Vで動作できますが、モータにはより高電圧と高電流のポータブル(電池など)電源が必要です。多くの製作者は、本来ラジコン(RC)カー用に設計された廉価な充電式電池パックを改造しています。これらは、通常7V以上の電圧と5000mAh以上の容量があり、元のコネクタを容易に交換できます。Romeo BLEクワッドサーボ電源ポートは、DC 7~10Vを許容します。
マイクロコントローラボードのプログラミング
マイクロコントローラボードへのソフトウェアのインストールは簡単で、メーカーに好意的なサプライヤはウェブサイトに手順書を用意しています。
オペーレティングシステム(OS)の決定は、プラットフォームごとに選択肢が異なります。LattePandaボードには、Windowsがあらかじめインストールされています。Raspberry Piには、Windows IoTコアや各種Linuxディストリビューションなど、複数のオプションがあります。オープンソースDebian Linux OSの一種であるRaspbianは、製作者の間で最も一般的な選択肢です。
一方、Arduinoは従来のOSを使用しません。代わりに、Arduinoプラットフォームは Cyclic Executiveによってコードシーケンスを繰り返しループします。開発者は、オープンソースのArduino統合開発環境(IDE)を使用してコードを作成してインストールします。このIDEはJavaで書かれたクロスプラットフォームアプリケーションで、Windows、Mac OS X、およびLinuxホストマシンで利用できます。Arduino環境では、複数のアイテムに独自の用語が使用されます。たとえば、Arduino互換のプラグインボードは「シールド」、ソフトウェアモジュールは「スケッチ」です。
Romeo BLEクワッドでのプログラミング
Romeo BLEクワッドボードは、先進の周辺機器によるシングルボードのロボットソリューションであることから、以降の説明に使用します。
最初に、ホストマシンに適したOSを選択して、Arduinoのウェブサイトから適切なIDEをダウンロードします。DF Romeo BLEクワッドは、標準のArduinoハードウェアと同じATmega328プロセッサを使用しませんが、ボードはArduino IDEと互換性があるため、ソフトウェア開発プロセスは同じです。
IDEは複数メーカーの25枚以上のボードに対応していますが、Romeo BLEクワッドは含まれていません。Romeo BLEクワッドは、他のDFRobotボードのバージョン、Bluno M3にモータドライバが追加されたものです。IDEを構成するには、最初にBluno M3ファイルをオープンソースのGitHubサイトからダウンロードする必要があります。
このファイルをインストールする手順
- Arduino IDEを開き、[File]、[Preferences]の順に選択します。GitHubリンクを[Additional Boards Manager URLs]ボックスにコピーして、[OK]をクリックします。
- [Tools]、[Board]、[Board Manager]の順に選択し、検索ボックスに「Bluno M3」と入力して、[Install]をクリックします。これで、構成ファイルがダウンロードされます。
- [Tools]の[Board]メニューからBluno M3ボードを選択します。
これでシステムはアプリケーション開発の準備ができました。標準のIDEでは、CとC++でのプログラミングがサポートされ、複数のコード例が用意されています。開発者はテキストエディタを使用して、スケッチ(プログラム)を作成します(図4)。

図4:Arduino IDE画面とテキストエディタ:2つの必須関数を含む新規プログラムです。(画像提供:Arduino)
次に、IDEを使用して、コードをデバッグし、クロスコンパイルして、ICSP(in-circuit serial programming)ポートを介してマイクロコントローラにその結果をアップロードします。Bluetoothポートを介して、Romeo BLEクワッドをプログラムすることもできます。
テキストエディタでは、2つの必須関数が読み込まれ、すぐにコードを追加できる状態で新規プログラムが開始されます。setup()は、初期状態を構成し、一度実行するとloop()が連続して実行されます。
Romeo BLEクワッドでDevastatorモータを動作させるには、次のArduinoライブラリをダウンロードしてインストールする必要があります。Motor.hとPID_v1.hです。
モータ用コードは、最初にincludeステートメントを介してこの2つのライブラリをヘッダファイルとしてリクエストし、I/Oピンといくつかの初期定数を定義して、次にsetup()セクションでモータを構成します(リスト1)。
Copy
/*!
* @file RemeoBLEQuadDrive.ino
* @brief RemeoBLEQuadDrive.ino PID control system of DC motor
*
* RemeoBLEQuadDrive.ino Use PID control 4 way DC motor direction and speed
*
* @author linfeng(490289303@qq.com)
* @version V1.0
* @date 2016-4-14
*/
#include "PID_v1.h"
#include "Motor.h"
Motor motor[4];
int motorSpeed[4] = {-200,200,400,-400};/*Set 4 speed motor*/
/* Speed=motorSpeed/(32*(setSampleTime/1000))(r/s) */
const int motorDirPin[4][2] = { //Forward, Backward
/*Motor-driven IO ports*/
{8,23},
{7,9},
{24,14},
{4,25}
};
//const double motorPidParam[3]={0.6,1,0.03};/*DC MOTOR,Yellow??180degree*/
//const double motorPidParam[3]={1.5,1,0.05};/*DC MOTOR,Yellow??90 degree*/
const double motorPidParam[3]={1.2,0.8,0.05};/*Encoder V1.0,160rd/min ;19500/min; 32:1,Kr=3.5*/
void setup( void )
{
Serial1.begin(115200);
for(int i=0;i<4;i++){
motor[i].setPid(motorPidParam[0],motorPidParam[1],motorPidParam[2]);/*Tuning PID parameters*/
motor[i].setPin(motorDirPin[i][0],motorDirPin[i][1]);/*Configure IO ports*/
motor[i].setSampleTime(100);/*Sets the sampling period*/
motor[i].setChannel(i);/*Sets the motor channel */
motor[i].ready();/*Motor enable*/
motor[i].setSpeed(motorSpeed[i]);/*Set motor speed*/
}
}
void loop( void )
{
for(int i = 0; i < 4; i++){
motor[i].calibrate();/*motor PID calibrate*/
}
}
リスト1:このCコードの例では、Romeo BLEクワッド用の4つのArduinoモータを構成し制御します。(コード提供:DFRobot)
setup()セクションとloop()セクションは、4つのモータチャンネルを構成し制御します。Devastatorシャーシに必要なのは2つだけなので、残りは後述するロボットアームなどのアクセサリに使用できます。
ワイヤレスでのロボットの制御
USBケーブルを制御ボードに差し込んで、その周りでロボットを操縦できますが、Wi-FiやBluetoothと、スマートフォン、タブレット、またはコンピュータを介して、ワイヤレスで制御するほうがより便利です。前述したように、Romeo BLEクワッドは、Blunoプラットフォームと同じBluetooth 4.0モジュールを備えています。iOS 7.0以上およびAndroid 4.3以上のオープンソースアプリは、GitHubから入手できます。これらのアプリを使って、設計者はロボットを制御したり、新しいスケッチをリモートでアップロードしたりできます。
基本デザインへのアップグレード
基本デザインを組み立てた後、ロボットが有益なタスクを実行できるようにアクセサリを追加することが一般的なステップです(図5)。以下にアップグレードの例をいくつか示します。

図5:DFRobot のURM37 v4.0超音波センサ(左)とAdafruit’sの397カメラモジュール (右)は人気のあるアクセサリです(画像提供:DFRobotとAdafruit)
障害物の検知と回避は、モバイルロボットにあると便利な機能です。DFRobotのURM37 v4.0超音波センサは、距離に比例する電圧を出力し、ArduinoとRaspberry Piの両方との互換性があります。センサが物体または壁の存在を検知すると、コードは任意の方向転換を実行し、ロボットは新しい方向に進み続けます。
ロボットをモバイルカメラにすることも人気のあるアップグレードです。Adafruitの397カメラモジュールは、動画または静止画をキャプチャできます。CMOSイメージセンサを装備したカメラは、30フレーム/秒(fps)で640 x 480ピクセルの画像をキャプチャでき、モーション検知機能を備えています。
DF05BBチルト/パンアセンブリ(図6)などのロボットアームにカメラをマウントすることを検討してみてください。キットは、2個のブラケットと2個のDF05サーボモータを含み、水平方向にマウントするように設計されています。

図6:DFRobotのDF05BBチルト/パンマウントには、2個のサーボモータと2個のブラケットが付属しています。(画像提供:DFRobot)
組み立て
完成したDevastator Robotは、シャーシ、制御ボード、拡張ボード、超音波センサを装備しています(図7)。2つのボードは、便宜上、プラットフォームの上部に配置されていますが、可動カメラを上部に搭載する場合は、下部マウントのプラットフォームもあります。

図7:この完成デザインの例は、Devastatorのシャーシ、制御ボード、モータ制御拡張ボード、超音波センサを装備しています。(画像提供:DFRobot)
まとめ
DFRobotは、設計者や製作者を問わず、楽しくサポートが充実した環境で、ソフトウェア開発、マイクロコントローラ機能、センサオプション、モータ制御を探索する優れたメーカーベースのプラットフォームです。
さらに、多くのリソースがDigiKeyのウェブサイトから入手できます。たとえば、Arduinoプラットフォームのプログラミングの詳細については、ここにあります。DigiKeyは、最も一般的なPi言語であるPythonを使ったRaspberry Piのプログラミングについてもサポートしています。これまで説明したすべての製品には、幅広いドキュメント、アプリケーションノート、チュートリアルが揃っています。
このプロジェクトを完了した後も、試せることがたくさんあります。Maker.ioは、製作者活動のために、多数の注目製品、リソース、資金調達ソースなどを用意しています。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


