注目キーワード

タミヤ:ロボット(CRAWLER) AIカメラを使って、おっかけロボットを作る!

すけろく
んー。どうにかならんか。。
げんろく
どうした?
それは、AIカメラを使った記事で紹介したロボットじゃないか!
すけろく
ライン追従とかタグ認識などは、この前やった。
今度は、動く物体を認識して追従するようにしたいのだ。
げんろく
そうか、オブジェクト追跡をやりたいのだな。
簡単なものであれば、この前使ったAIカメラで実現できるぞ!
この記事では、タミヤのロボット工作キット「ロボット(CRAWLER)」と、AIカメラ「HUSKYLENS」を組み合わせ、特定のものや人をオブジェクトとして認識して、その動き合わせて動くようなロボットに改造してみます。
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ポートが複数準備されています。
miro:bitとセンサーなどの周辺機器との制御信号や、データ信号などをやり取りするためのポートです。
I2Cとは?
I2C(アイ・スクエアド・シー、アイ・アイ・シー)はフィリップス社で開発されたシリアルバスです。
低速な周辺機器をマザーボード(マイコン側の基盤など)へ接続するために使います。
組み込みシステム、携帯電話などでよく使われています。
小型センサーからAIカメラなどの周辺機器へ制御信号を送ったり、周辺機器からデータを受け取ったりできます。
ロボット工作キットには距離センサーが含まれていて、I2Cポートに、距離センサーを接続して使います。
今回は、このI2C用のポートにAIカメラ「HUSKYLENS」を接続して、AIカメラの設定、認識結果の情報のフィードバックを受け取れるようにします。
そのため、今回は、距離センサーは使いませんので外しておきます。
回路基板のI2C用ポートは、次のような構成になっています。
I2Cポートの中に3.3Vの電源を提供できるポートがありますが、後述するようにAIカメラは消費電力が高いため、I2Cポートの3.3Vは使いません。
AIカメラへの電力は回路基板とは別に準備します。
ポート 説明
SCL このポートで通信される基準のクロック信号をもとにして通信します。
SDA クロック信号をもとにしてデータ信号を送るポートです。
3.3V 3.3Vの電圧でセンサーへ電力を提供するポートです。
GND micro:bitなどのマイコンとセンサーの回路を構成する際の、回路内の基準となる電位との差が「0V(ボルト)」になる部分を指します。

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

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

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

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

関連記事

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

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

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

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

Arduino IDE 1.x

関連記事

本記事は、Arduino IDE 1.8.xバージョンのインストール方法を紹介した記事です。 Arduino IDEは、より新しいバージョン「2.0.x」が発表されています。     機能がよりリッチになった「Ardui[…]

Arduino IDE 2.0

関連記事

すけろく Arduino IDEの2.x版がそろそろ使えそうだな。 げんろく たしかに、これまで使ってきたArduino IDE 1.8ではない オートコンプリート機能などが追加されているらしい。 […]

AIカメラ「HUSKYLENS」とは?

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

HUSKYLENSのセット内容

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

AI 搭載で、エントリーとしてよいです。ぜひこの機会に挑戦しましょう!

AIカメラ「HUSKYLENS」

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

電源は、320mA@3.3V, 230mA@5.0V必要です。

電力消費は大きいので、バッテリーなどからの直接供給をおススメします。

HUSKYLENS本体の説明

搭載されたカメラでとらえた画像から、さまざまな学習をさせることができます。

学習した内容を使って、認識した結果を、UARTまたはI2Cプロトコルを使って、フィードバックできます。

今回はI2Cプロトコルを使います。

 HUSKYLENSの搭載機能

このAIカメラには、次の学習機能が搭載されています。

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

今回は、上記の機能のうち「オブジェクト追跡」と「タグ認識機能」を使って、識別精度を比べています。

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

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

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

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

AIカメラの学習モデルの保存

AIカメラは、カメラでとらえた画像から、オブジェクトを認識し、学習モデルを生成します。

学習モデルは、毎回起動時に作成することも可能ですが、一度学習したモデルをmicroSDカードへ保存することもできます。

今回は「オブジェクト追跡」と「タグ認識」の学習モデルをmicroSDカードに保存しますので、次のmicroSDカードを準備しました。

microSDカード

created by Rinker
SanDisk
¥950 (2024/05/29 06:43:04時点 Amazon調べ-詳細)

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

microSDカードリーダー

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

 

AIカメラ「HUSKYLENS」のフィードバック

「HUSKYLENS」の「オブジェクト追跡」、「タグ認識」機能では、認識したオブジェクト(物体)の画像上での位置を、バンディングボックスで示し、座標と学習時にオブジェクトにつけた、タグと座標などをフィードバックします。

バンディングボックスとは?
画像の中にあるオブジェクト(物体)を囲む矩形(四角形)のことです。
AIカメラでオブジェクトやタグを認識した際に画面上に表示されます。
今回使う「HUSKYLENS」でも搭載されているディスプレイ上に表示されます。

「HUSKYLENS」の座標系

AIカメラの画像における座標系は、次のようになっています。

フィードバック値から、カメラ画像のどの位置にオブジェクトなどがあるか(または向いているか)を読み取れます。

左上が(0,0)、中心が(160,120)になっています。

HUSKYLENSカメラ座標系

 「HUSKYLENS」のフィードバックデータ形式

オブジェクトやタグを認識した際にフィードバックされるデータと形式は次の通りです。

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

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

AIカメラ「HUSKYLENS」への電力供給

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

 AIカメラ用の電源

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

接続は直列接続にします。(出力は合計7Vほどになります。)

大きいですが、容量、電圧ともに安定しているのでお勧めです。

今回はこの商品を使っています。充電ができ、繰り返し使えるので便利ですよ!

18650型の電池


【楽天一位獲得】リチウム電池 充電器 18650電池 パナソニック製セル 4本セット
リチウムイオン電池は、充電する際などに過負荷がかかると発火などの危険性があります。この商品は、そのあたりの安全回路を電池本体につけていて安心です。また、専用の充電器もセットになっているので繰り返し使用する際も便利です。
電池保管ケースもついていて安全に保管できます。

※リチウムイオン電池は、取り扱いに注意して、ご利用くださいね!Rakutenで確認

 

 電圧の調整

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

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

 

可変電圧 DC/DCコンバータ

OKL-T/6-W12N-C使用 最大6A
小型高効率DCDCコンバーター可変電源キット(降圧)
[AE-OKL-T/6-W12N-C]

入力電圧(4.5~14V)を出力電圧(0.9~5.5V)に降圧するコンバーターです。
最大電流(6A)のものです。Raspberry PiやJetson、ArduinoやM5Stack、microbitなどでよく使う3.3Vと5Vを提供できるので一つあると重宝します。ほしい出力電圧以上の入力電圧が必要です。

秋月電子で確認

画像の右側が入力側(電池2本直列:7V)で、左側が出力(5Vに調整)になります。

真ん中上部にある青い箱の金色のねじを回すことによって、出力先の電圧を変更できます。

モーター制御によるロボットの方向補正

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

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

モーターはロボットの下部に動作されています。

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

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

関連記事

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

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

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

AIカメラ「HUSKYLENS」のフィードバック 左モーター制御 右モーター制御
バンディングボックスがない
(認識されない)
停止(OFF) 停止(OFF)
バンディングボックスが左側にある
( 0≦xCenter≦120)
減速(200) 全速(250)
バンディングボックスが中心にある
( 121≦xCenter≦200)
全速(250) 全速(250)
バンテックボックスが右側にある
( 201≦xCenter≦320)
全速(250) 減速(200)
バンテックボックスの幅が「100」以上の場合
・バンテックボックスが左側にある
・バンテックボックスが中心にある
・バンテックボックスが右側にある
・全速後退(‐250)
・停止(OFF)
・全速前進(250)
・全速前進(250)
・停止(OFF)
・全速後退(-250)

バンテックボックスの幅が「100」よりも大きい場合、追尾対象に接近しすぎていると判断し、その場で旋回もしくは停止します。

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

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

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

電池ボックスとDC/DCコンバーターは、ロボットの後部に次のように取り付けました。

取付には、次のタミヤの楽しい工作シリーズを使いました。

M3ネジもついていますが、足りなかったので、追加しています。

試作したりするときに便利な、「楽しい工作シリーズ」、手元にあるとかなり便利ですよ!

タミヤ 楽しい工作シリーズ

created by Rinker
タミヤ(TAMIYA)
¥462 (2024/05/29 08:08:51時点 Amazon調べ-詳細)
長さ170㎜のユニバーサルアームが4本入ったものです。初めての購入に最適なセットになります。
セットには色違いのものもあります。先述のとおり、カッターとニッパーがあれば、切り出し、切断が可能なので長さを自由に変えることができ、ねじ止めする箇所を5㎜間隔で設けられた穴から選択して組んでいけるため、自由度が高いです。切断部分は、紙ヤスリなどで研磨してきれいに加工することができます。

<含まれるもの>
・ユニバーサルアーム(170㎜)
・直角パーツ
・スペーサ
・ネジ、ナット類

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

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