それは、AIカメラを使った記事で紹介したロボットじゃないか!
今度は、動く物体を認識して追従するようにしたいのだ。
簡単なものであれば、この前使ったAIカメラで実現できるぞ!
タミヤのロボット工作キット「ロボット(CRAWLER)」とは?
模型でおなじみの「タミヤ」が販売している、「STEM教育素材」でもあるロボット工作キットです。
キットの内容
キットの中には、ロボットを構成する次の3つの要素を構成するパーツが同梱されています。
購入してすぐ、ロボットの動きを楽しめます。
- プログラミング可能なマイコン(BBS micro:bit)
- 距離センサー、モータードライバが実装された回路基板
- ロボットのフレームやモーターなどの機械部品
詳しくは次の記事で紹介していますので、確認してみてください!
突然ですが、もし、数時間でロボットを作れるとしたら、作ってみたくないですか? えっ?そんなの不可能? いえいえ、プラモデルを作ったことがあるならできちゃいますよ!! しかも、パソコンとつないでグラフィカルにプログラミングで[…]
いろいろ後でいじって楽しめるので、ぜひこの機会に挑戦しましょう!
TAMIYA ROBOT (CRAWLER TYPE)
クローラータイプなので、戦車のようなベルトを持ち、段差もものともしない走破性を持っています。動きも速さよりも力(トルク)重視なので、見ていて楽しいです。
今回の改造ポイント
①AIカメラ「HUSKYLENS」の取付
I2C(アイ・スクエアド・シー、アイ・アイ・シー)はフィリップス社で開発されたシリアルバスです。
低速な周辺機器をマザーボード(マイコン側の基盤など)へ接続するために使います。
組み込みシステム、携帯電話などでよく使われています。
小型センサーから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搭載カメラです。
カメラが搭載されている基板内にAIによる学習ができるチップが搭載されています。
AI 搭載で、エントリーとしてよいです。ぜひこの機会に挑戦しましょう!
AIカメラ「HUSKYLENS」
I2CやUARTで認識結果をAPIとしてフィードバック取得できるので、Arduino IDE以外でも利用することができます。
電源は、320mA@3.3V, 230mA@5.0V必要です。
電力消費は大きいので、バッテリーなどからの直接供給をおススメします。
搭載されたカメラでとらえた画像から、さまざまな学習をさせることができます。
学習した内容を使って、認識した結果を、UARTまたはI2Cプロトコルを使って、フィードバックできます。
今回はI2Cプロトコルを使います。
HUSKYLENSの搭載機能
このAIカメラには、次の学習機能が搭載されています。
- 顔検出
学習させた顔にタグ付けすることで、カメラに映った楽手済みの顔を検出する - オブジェクト追跡
学習させたオブジェクトを追跡する - オブジェクト認識
20 個の組み込みオブジェクトを認識する - Line Tracking
指定された色の線を追跡し、経路予測を行う - 色認識
指定された色を学習、認識、および追跡する - タグ認識
タグを検出し、指定されたタグを学習、認識、追跡する - オブジェクトの分類
さまざまなオブジェクトの複数の写真を学習し、学習したオブジェクトを ID 番号で表示する
今回は、上記の機能のうち「オブジェクト追跡」と「タグ認識機能」を使って、識別精度を比べています。
「HUSKYLENS」はエントリー機なので、タグ認証機能で使用するタグにQRコードは使用できません。
「HUSKYLENS」で対応しているタグは、次のようなものです。
AIカメラの学習モデルの保存
AIカメラは、カメラでとらえた画像から、オブジェクトを認識し、学習モデルを生成します。
学習モデルは、毎回起動時に作成することも可能ですが、一度学習したモデルをmicroSDカードへ保存することもできます。
今回は「オブジェクト追跡」と「タグ認識」の学習モデルをmicroSDカードに保存しますので、次のmicroSDカードを準備しました。
microSDカード
また、microSDカードをパソコンなどに接続する際に、次のようなSDカードリーダーがあると便利です。
microSDカードリーダー
AIカメラ「HUSKYLENS」のフィードバック
「HUSKYLENS」の「オブジェクト追跡」、「タグ認識」機能では、認識したオブジェクト(物体)の画像上での位置を、バンディングボックスで示し、座標と学習時にオブジェクトにつけた、タグと座標などをフィードバックします。
バンディングボックスとは?
画像の中にあるオブジェクト(物体)を囲む矩形(四角形)のことです。
AIカメラでオブジェクトやタグを認識した際に画面上に表示されます。
今回使う「HUSKYLENS」でも搭載されているディスプレイ上に表示されます。
「HUSKYLENS」の座標系
AIカメラの画像における座標系は、次のようになっています。
フィードバック値から、カメラ画像のどの位置にオブジェクトなどがあるか(または向いているか)を読み取れます。
左上が(0,0)、中心が(160,120)になっています。
「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型の電池
リチウムイオン電池は、充電する際などに過負荷がかかると発火などの危険性があります。この商品は、そのあたりの安全回路を電池本体につけていて安心です。また、専用の充電器もセットになっているので繰り返し使用する際も便利です。
電池保管ケースもついていて安全に保管できます。
※リチウムイオン電池は、取り扱いに注意して、ご利用くださいね!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ネジもついていますが、足りなかったので、追加しています。
試作したりするときに便利な、「楽しい工作シリーズ」、手元にあるとかなり便利ですよ!
タミヤ 楽しい工作シリーズ
セットには色違いのものもあります。先述のとおり、カッターとニッパーがあれば、切り出し、切断が可能なので長さを自由に変えることができ、ねじ止めする箇所を5㎜間隔で設けられた穴から選択して組んでいけるため、自由度が高いです。切断部分は、紙ヤスリなどで研磨してきれいに加工することができます。
・ユニバーサルアーム(170㎜)
・直角パーツ
・スペーサ
・ネジ、ナット類
さて、ここまでで、ロボットの準備は整いました。
次からは、実際にArduino IDEを使ってmicro:bitにプログラムを書き込んで行きます。
- 1
- 2