注目キーワード

タミヤ:ロボット(CRAWLER) AIカメラでバーコード(タグ)を認識して走行する!

すけろく
前回、タミヤのロボット(CRAWLER)と
AIカメラを使ったが、他にも何かできないかな。
げんろく
AIカメラは、2次元バーコード(タグ)の
認識もできる。
その機能をロボットと組み合わせるか。
すけろく
なかなか、よいな!
タグでロボットの動きをコントロールしたい!
げんろく
では、AIカメラでタグを認識して、
ロボットの向きを変えるプログラムを
組むとしよう!
この記事では、タミヤのロボット工作キット「ロボット(CRAWLER)」と、AIカメラ「HUSKYLENS」を組み合わせ、地面に置いた2次元バーコード(タグ)を認識して走行するものを作ります。
AIカメラ「HUSKYLENS」は、Arduino IDE向けのライブラリが公開されています。ライブラリを有効活用するために、「ロボット(CRAWLER)」に搭載されているマイコン「BBS micro:bit」を、Arduino IDEを使ってプログラミングします。
製作、動作時の様子を動画にしました!ぜひご覧ください!

タミヤのロボット工作キット「ロボット(CRAWLER)」とは?

模型でおなじみのタミヤが販売している、STEM教育素材でもあるロボット工作キットです。

キットの中には、ロボットを構成する次の3つの要素を構成するパーツが同梱されていますので、購入してすぐ、ロボットの動きを楽しめます。

  • プログラミング可能なマイコン(BBS micro:bit)
  • 距離センサー、モータードライバが実装された回路基板
  • ロボットのフレームやモーターなどの機械部品

 

詳しくは次の記事で紹介していますので、確認してみてください!

関連記事

突然ですが、もし、数時間でロボットを作れるとしたら、作ってみたくないですか? えっ?そんなの不可能? いえいえ、プラモデルを作ったことがあるならできちゃいますよ!! しかも、パソコンとつないでグラフィカルにプログラミングで[…]

TAMIYA ROBOT (CRAWLER TYPE)

ロボットフレーム、モーター、ギア、マイコン(BBC microbit)、電子回路、距離センサーなどがセットになったものです。あとは電池を別途用意するだけで、障害物をよけて前進するロボットが作れます。
クローラータイプなので、戦車のようなベルトを持ち、段差もものともしない走破性を持っています。動きも速さよりも力(トルク)重視なので、見ていて楽しいです。

 

今回の改造ポイント

①AIカメラ「HUSKYLENS」の取付

ロボット工作キットに含まれる回路基板には、I2Cポートが複数準備されています。
標準だと、このI2Cポートには、距離センサーが接続されています。
今回は、このI2C用のポートに「HUSKYLENS」を接続して、「HUSKYLENS」からのフィードバックを受け取れるようにします。
そのため距離センサーは、外しておきます。
回路基板のI2C用ポートは、次のような構成になっていて、カメラへの電源もとれますが、後述するようにAIカメラは消費電力が高いため、AIカメラへの電力は回路基板とは別に準備します。

②マイコン(BBS micro:bit)のプログラミング

ロボット工作キットには、ロボットを動作させるためのプログラムが書き込まれているマイコン(BBS micro:bit)が含まれています。

標準では、距離センサーからのフィードバックを元にモーターを制御するプログラムが書き込まれています。

今回は、AIカメラからのフィードバックを元にモーター制御したいので、プログラムを書き換える必要があります。

「BBS micro:bit」は、MakeCodeに代表されるノーコード開発環境がありますが、今回はモーターへのフィードバック制御などに、AIカメラのArduino IDE用ライブラリを使用したいので、Arduino IDEを使います。

 

AIカメラ「HUSKYLENS」とは?

DFRobotから販売されているAI搭載カメラです。

HUSKYLENSのセット内容

カメラが搭載されている基板内にAIによる学習ができるチップが搭載されています。

 

AIカメラ「HUSKYLENS」

AIカメラとして学習・推論の機能が実装されたカメラセンサーです。
I2CやUARTで認識結果をAPIとしてフィードバック取得できるので、Arduino IDE以外でも利用することができます。

 

電源は、320mA@3.3V, 230mA@5.0V必要です。バッテリーなどからの直接供給が必要です。

HUSKYLENS本体の説明

カメラ画像から、以下の内容について学習させることができ、学習結果を使って認識した情報を、UARTまたはI2Cプロトコルを使って、フィードバックできます。

  • 顔検出
    学習させた顔にタグ付けすることで、カメラに映った楽手済みの顔を検出する
  • オブジェクト追跡
    学習させたオブジェクトを追跡する
  • オブジェクト認識
    20 個の組み込みオブジェクトを認識する
  • Line Tracking
    指定された色の線を追跡し、経路予測を行う
  • 色認識
    指定された色を学習、認識、および追跡する
  • タグ認識
    タグを検出し、指定されたタグを学習、認識、追跡する
  • オブジェクトの分類
    さまざまなオブジェクトの複数の写真を学習し、学習したオブジェクトを ID 番号で表示する

 

今回は、上記の「タグ認識機能」を使います。認識結果のフィードバックは、I2Cプロトコルを使います。

使用する「HUSKYLENS」はエントリー機なので、QRコードは使用できません。

「HUSKYLENS」で対応しているタグは、次のようなものです。

次の場所からダウンロードすることができます。

HUSKYLENS対応タグのダウンロードはこちら>

 

また、今回はタグ認識の学習モデルをmicroSDカードに保存しますので、次のmicroSDカードを準備しました。

microSDカード

created by Rinker
SanDisk
¥1,147 (2024/07/26 15:50:43時点 Amazon調べ-詳細)

 

また、microSDカードをパソコンなどに接続する際に、次のようなSDカードリーダーがあると便利です。

microSDカードリーダー

created by Rinker
サンワサプライ(Sanwa Supply)
¥1,827 (2024/07/27 01:47:38時点 Amazon調べ-詳細)
microSDカードやSDカードは、カメラや携帯などでも幅広く使われており、写真や動画を扱うことが多くなりました。パソコンとの接続が前提の場合、USB Type-Aが使いやすいですが、iPadやAndroid携帯などと接続する場合は、USB-TypeCのほうが使い勝手が良いです。本製品は、Type-A、Type-Cの双方を持っているのでパソコンでも、iPadなどでも使えて便利です。1本あるといいですね!

 

 

「HUSKYLENS」のタグ認識におけるフィードバック

「HUSKYLENS」の「タグ認識」機能では、認識したタグの位置をバンディングボックスで示し、座標と学習時にタグにつけたIDをフィードバックします。

フィードバックデータは次の形式になります。

※HUSKYLENSのArduino ライブラリの「HUSKYLENS.h」からデータ型名は抜き出しています。

項目名 フィードバック値 説明
xCenter int16_t バンディングボックスの中心のX座標
yCenter int16_t バンディングボックス中心のY座標
width int16_t バンディングボックスの幅
height int16_t バンディングボックスの高さ
ID  int16_t 検知したタグにつけられたID
※学習した際につけたIDが返ってきます。

 

今回はバンディングボックスの座標や幅、高さは使用せず、どのIDのタグが認識されたかで条件付けしてロボットの動作処理を記述します。

 

モーター制御による方向補正

「HUSKYLENS」の「タグ認識」から得たフィードバック値を使って、ロボットの方向を補正することを考えます。

今回使うタミヤのロボット工作キットは、左と右で独立したモーターによって動きます。

モーターの速度は、PWMを使って変化させることができるようになっています。

PWM制御については次の記事でご紹介しています。

関連記事

この記事では、M5StickCと冷却ファンを使って回転速度制御をしていきます。 M5StickCから冷却ファンの回転を制御できれば、扇風機のように、自由に風量を変えることができます! 今回の冷却ファンは次のものを使います。パソコン用[…]

 

今回はロボットの動きを次のようにします。

2つのモーターを以下のように制御することで回転方向を変えながら動作させます。

  • 前進…左右同じ速度でモーターを回転
  • 左折…右のモーターを逆回転、左は順回転
  • 右折…左のモーターを逆回転、右は順回転

今回は、バーコード(タグ)を3種類使います。上記の3つの命令にそれぞれ割り当てます。

 

また、左折、右折の場合、モータの回転方向を変えて約1.7秒間(PWM:±511の時)動かし続けます。これは、できる限り直角に近い回転を行うためです。この部分の微調整は、皆さんでも行ってみていただければと思います。

 

AIカメラへの電力供給

AIカメラへの電力供給は、ロボット工作キットの回路基板とは別の電源を用意しました。

今回は、18650型の電池(リチウムイオン電池 3400mAh 3.7V)2本を使用しています。

電圧をAIカメラの電圧(5V)に合わせるために、DC/DCコンバーターを使っています。

今回使用したのは、出力電圧を変更できるもので、秋月電子さんの商品です。

 

ロボット工作キットへのAIカメラ搭載

AIカメラ「HUSKYLENS」に付属のアームのサイズが、ロボット工作キットの部品にジャストフィットしていたので、そちらにネジで搭載しました。

回路の接続については、次のようにしています。

 

さて、ここまでで、ロボットの準備は整いました。

次からは、実際にArduino IDEを使ってmicro:bitにプログラムを書き込んで行きます。