ワイヤレス・コントローラの開発方法

デジタルシステム教育研究(DSTR)ロボット・コントローラ・チュートリアル

Texas A&M大学のMobile Integrated Solutions Laboratoryでは、学生が小型フォーム・ファクタのロボティック・プラットフォームであるDSTR Robotを開発しました。1年ほど前に、DSTR(Digital Systems and Research)は、月面からサンプルを採取する、将来の月面車になりうるとしてNASAの科学者の注目を集めました。NASAの科学者とTexas A&Mのチームは協力して、月面の砂や土を採取できる回転スコップを備えた制御可能なアームをDSTR向けに開発しました。この小型ロボットは、小質量、小型フォーム・ファクタ、月着陸船から離れたところでサンプルを採取できる点で注目を集めました。

Texas A&Mチームは、DSTRで使用するための独自のコントローラを開発しました。このコントローラは、FPV(一人称視点を用いた遠隔操縦)をDSTRに統合するプロジェクトを開始した時にコンセプト化されました。その後プロジェクトを進めて行くと、FPVゴーグルを顔に着用しながら携帯電話アプリケーションを酷使すると、ロボットの正確な制御を可能にする触覚フィードバックを送信できないことが判明しました。そのため、現在、このコントローラは特定のポートにデータを送信する際にWi-Fiを介したUDPパケットを使用しています。

今回ご紹介するのは、Texas A&Mチームが作成した、DSTRロボットで使用されるのと同じタイプのコントローラを開発するためのステップ・バイ・ステップのチュートリアルです。このコントローラの別の応用例としては、ジャイロスコープの傾きを検知して制御コマンドを伝送したり、ボタンを使用して異なるモードに変更したりと、その可能性は無限に存在します。ぜひ、あなた独自のコントローラを開発し、学校の授業やプロジェクトで、そのコントローラを試してみてください。

始める前に知っておくべきこと

DSTRへの制御通信は当初、『SimpleLink™ CC2650 SensorTag kit』を使用した、Bluetooth® Low Energy接続が採用されていました。現在、TIが開発するDSTRの多くは、モータへのコマンドをコントローラからロボットに送信する際にWi-Fi接続を介したUDP パケットを採用しています。どちらの場合も、このような形でモータを制御するには、以下の2つの重要な点を知っておく必要があります。

  • どのぐらいの電力を流すか
  • どちらの方向にモータを回転させたいか

これらの理由から、データは4バイトのパケットとして伝送され、そのうちの2バイトは各モータの動作を特性化するために用いられます。DSTRは電源ドライバ・ボードに送られるパルス幅変調(PWM)信号を使用してモータを制御します。電源ドライバ・ボードの入力側に正しく接続されたパルス幅変調信号の負荷サイクルが高まることで、そのモータ全体の電圧も上昇することになります。当社が使用するブラシ付き DC モータにとって、高い電圧は高いRPM(回転毎分)を意味し、その駆動が車輪に伝わることから、これは車両の走行スピードが早まることを意味します。 

各モータに送信される2バイトのうちのいずれかを使用して、パルス幅変調信号の負荷サイクルを制御する方法:

1バイトは8ビットからなり、符号なしバイナリ・システムでは8ビットは0から255の値からなる全部で256の組み合わせを持ちます。DSTRに通信するために、各モータでは8ビットの符号なしバイナリ・システムの0から255の値が使用されます。当社にとって残念なことは、『SensorTag』上の当初のプログラミングでは、255は0%の負荷サイクル、0は100%の負荷サイクルを示すシステムを使用していました。当社では未だDSTR同士での後方互換を備えた携帯電話アプリケーションを使用していることから、この慣例は次世代のDSTRコントローラにも引き継がれています。

モータの回転方向を通信する方法:

通常、モータの回転方向は、0か1のバイナリ値を送信し、この単純な比較により回転方向を決定しています。しかし、DSTR環境に、より多くの学習素材を追加するためには、方向を決定するバイトを16進値で送信する必要があります。16進値は4ビットで1桁を表現し、0から9、その後はAからF(Aは10進数で10を、Fは15に当たる)と数えていきます。16進値で0xAAはある方向を、0xBBはその逆の方向を示します。送信している値を理解し、受信側に応じて調整することで、この通信方法でもあなたのニーズを満たすことができます。

バイトの送信順序の決め方:

受信側でパッケットを読み取る際に、どのバイトが方向を(0xAAまたは0xBB)、どのバイトがモータ速度を示す値かを知る必要があるため、この点は重要です。当社の応用例では、方向、速度、方向、速度という順序を用いています。しかし、どの方向のものがどの速度なのでしょうか?ここでデバックの作業に入ります。このチュートリアルを試して、あなたのシステムの動きを調べてみてください。もし奇妙な動きをする場合は、原因は何かを特定し、ハードウェア(リライティング)またはソフトウェア(バイトの変更)のいずれかで解決策を見出してみてください。

参考情報:
ハードウェア・コンポーネント
  -『SimpleLink MSP432P401R ローンチパッド
  -『SimpleLink Wi-Fi CC3100 ブースタパック
  -『教育用ブースタパック MKII
  -『燃料タンク MKII バッテリ・ブースタパック・プラグイン・モジュール

ソフトウェア・アプリ/オンラインサービス
-TI LaunchPad Kit Energia


ワイヤレス・コントローラの構築

 写真にある4つの部品が、このコントローラのスタックとなる4枚のボードです。左から順に、『燃料タンクMKIIバッテリ・ブースタパック・プラグイン・モジュール』、『MSP432P401Rローンチパッド開発キット』、『CC3100ワイヤレス・ネットワーク・プロセッサ・ブースタパック・プラグイン・モジュール』、『教育用ブースタパック MKIIです。

『MSP432ローンチパッド・キット』と『CC3100ブースタパック・モジュール』を手に取り、両ボードとも正しい方向を向いているか確認してください。正しい向きを確認するには、このTIブログを参考にするか、コネクタの左上隅のピンが3V3であるかを調べてみてください。 

それでは、この写真のように『MSP432ローンチパッド・キット』の上に『CC3100ブースタパック・モジュール』を重ねてください。(注:間違って電源をアース端子に接続してマイコンを壊してしまうことがよくあるので、ボードを重ねる際は、全てのピンが正しく並んでいるか注意してください。) 

次に、今重ねたスタックを手に取り、同じ手順で『バッテリ・ブースタパック』の向きを確かめ、スタックの下部に取り付けます。(注:スタックを取り付ける際および外す際は必ず『バッテリ・ブースタパック』上のスイッチが“DISCONNECT”の位置にあることを確認してください。)

今は、この写真のようになっているはずです。

スタックに最後に追加するボードは、『教育用MKIIブースタパック・モジュール』です。同じ手順で、スタックの上部に『教育用MKIIブースタパック・モジュール』を取り付けてください。

この写真のように最後のボードを取り付けます。

リモート・コントローラのプログラム

フローチャート

以下がコントローラにアップロードするスケッチのフローチャートです。

  • 長方形は処理
  • 左右の辺を二重線にした長方形は定義済み処理
  • 菱形は判断
  •  矢印はオペレーションの順序付け

Energia』のスケッチは全て、セットアップ及びループ定義済み処理という同じ基本フォーマットを持ちます。セットアップ定義済み処理の以前及びその内側では一度だけ実行します。これは「Begin listening on local port(ローカル・ポート上でリスニングを開始する)」と記されたボックスが最後にあるフローチャートに見られます。このボックス以降は全て、ループ定義済み処理内にあり、永遠にループするまでは上から下の順番で実行されます。このような理由から、「Read joystick value and re-map range(ジョイスティック値と再マップの幅を読み込む)」というボックスに戻る矢印が存在しています。

ダウンロード
ソースコード:DSTR Joystick Controller.zip.zip

Energia』で開くプログラムが用意できたら、ノートブックまたはデスクトップPCとローンチパッド・キットをmicroUSBコネクタで接続してください。

「Go to Tools」の「Board 」を開き、『LaunchPad w/ MSP432 EMT (48MHz)』が選択されていることを確認します。ドロップダウンメニュのオプション内にこの表記が見当たらない場合は、「Board Manager」を選択し、必要ならばこのパッケージをインストールします。

『LaunchPad w/ MSP432 EMT (48MHz)』が選択されていることを確認したら、『Energia』の左上のチェックマークをクリックすることで、スケッチをコンパイルできます。コンパイルが成功したら、チェックマークの右にある矢印をクリックし、このプログラムをローンチパッド・キットにアップロードしてください。

Energia』上で、プログラムのアップロードが成功したことが告げられたら、『教育用ブースタパックMKII』のディスプレイに DSTRロゴが表示されます。これは、このプログラムが正常に動作し、あなたのロボットに接続を開始しようとしていることを確認するものです。(注:ロボット側でコードを記述している際は、Wi-Fiの名称とパスワードが正しいことを確認してください。大文字と小文字にも注意してください。)

オプション:独自のコントローラ筐体を3Dプリントする

3Dプリンタを使用できる場合は、下記の写真にあるように、コントローラ筐体を3Dプリントすることもできます。STLファイルは、2つの部品(上と下)に分けて3Dプリントするので、必要に応じてスタックを取り出すこともできます。

ダウンロードファイル:
4137.Controller Casing.zip.zip

これであなた独自のワイヤレス・コントローラの完成です。

参考情報:

マイコン・ロボットの開発方法(英語)

ローンチパッド・ソフトウェアと開発ツール

テキサス大学:ローンチパッド開発キット(英語)

※上記の記事はこちらのBlog記事(2017年5月5日)より翻訳転載されました。

 *ご質問は E2E 日本語コミュニティにお願い致します。