AIカメラを使ったが、他にも何かできないかな。
認識もできる。
その機能をロボットと組み合わせるか。
タグでロボットの動きをコントロールしたい!
ロボットの向きを変えるプログラムを
組むとしよう!
タミヤのロボット工作キット「ロボット(CRAWLER)」とは?
模型でおなじみのタミヤが販売している、STEM教育素材でもあるロボット工作キットです。
キットの中には、ロボットを構成する次の3つの要素を構成するパーツが同梱されていますので、購入してすぐ、ロボットの動きを楽しめます。
- プログラミング可能なマイコン(BBS micro:bit)
- 距離センサー、モータードライバが実装された回路基板
- ロボットのフレームやモーターなどの機械部品
詳しくは次の記事で紹介していますので、確認してみてください!
突然ですが、もし、数時間でロボットを作れるとしたら、作ってみたくないですか? えっ?そんなの不可能? いえいえ、プラモデルを作ったことがあるならできちゃいますよ!! しかも、パソコンとつないでグラフィカルにプログラミングで[…]
TAMIYA ROBOT (CRAWLER TYPE)
クローラータイプなので、戦車のようなベルトを持ち、段差もものともしない走破性を持っています。動きも速さよりも力(トルク)重視なので、見ていて楽しいです。
今回の改造ポイント
①AIカメラ「HUSKYLENS」の取付

②マイコン(BBS micro:bit)のプログラミング
ロボット工作キットには、ロボットを動作させるためのプログラムが書き込まれているマイコン(BBS micro:bit)が含まれています。
標準では、距離センサーからのフィードバックを元にモーターを制御するプログラムが書き込まれています。
今回は、AIカメラからのフィードバックを元にモーター制御したいので、プログラムを書き換える必要があります。
「BBS micro:bit」は、MakeCodeに代表されるノーコード開発環境がありますが、今回はモーターへのフィードバック制御などに、AIカメラのArduino IDE用ライブラリを使用したいので、Arduino IDEを使います。
AIカメラ「HUSKYLENS」とは?
DFRobotから販売されているAI搭載カメラです。
カメラが搭載されている基板内にAIによる学習ができるチップが搭載されています。
AIカメラ「HUSKYLENS」
I2CやUARTで認識結果をAPIとしてフィードバック取得できるので、Arduino IDE以外でも利用することができます。
電源は、320mA@3.3V, 230mA@5.0V必要です。バッテリーなどからの直接供給が必要です。
カメラ画像から、以下の内容について学習させることができ、学習結果を使って認識した情報を、UARTまたはI2Cプロトコルを使って、フィードバックできます。
- 顔検出
学習させた顔にタグ付けすることで、カメラに映った楽手済みの顔を検出する - オブジェクト追跡
学習させたオブジェクトを追跡する - オブジェクト認識
20 個の組み込みオブジェクトを認識する - Line Tracking
指定された色の線を追跡し、経路予測を行う - 色認識
指定された色を学習、認識、および追跡する - タグ認識
タグを検出し、指定されたタグを学習、認識、追跡する - オブジェクトの分類
さまざまなオブジェクトの複数の写真を学習し、学習したオブジェクトを ID 番号で表示する
今回は、上記の「タグ認識機能」を使います。認識結果のフィードバックは、I2Cプロトコルを使います。
使用する「HUSKYLENS」はエントリー機なので、QRコードは使用できません。
「HUSKYLENS」で対応しているタグは、次のようなものです。
次の場所からダウンロードすることができます。
また、今回はタグ認識の学習モデルをmicroSDカードに保存しますので、次のmicroSDカードを準備しました。
microSDカード
また、microSDカードをパソコンなどに接続する際に、次のようなSDカードリーダーがあると便利です。
microSDカードリーダー
「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にプログラムを書き込んで行きます。
- 1
- 2