Interface編集部
【広告企画】
センサでAI自動走行ロボットを観測!
ローム・センサ評価キット「SensorMedal-EVK-002」活用レポート(入門編)
◆センサ評価キットでデータ取得してAIモデル学習データの振る舞いを計測する
今回はRaspberry Pi 3 Model B+(以下,RaspberryPi3B+)を搭載して市販のRCカーをAI化し,マニュアル走行したときと,自動走行させたときの挙動の違いを,センサで観測してみます.
特に,直進からカーブ走行への移行や,急加速や急停止時,ストレート走行時といった速度の変化量が大きくなる(運転が不安定になる)と予想されるシチュエーションで,AI化した車体がどのような挙動となっているかを観測してみました.
アンケートのお答えいただいた方から抽選で4名様に,本記事で紹介している 「SensorMedal-EVK-002」をプレゼントいたします. 【アンケートはこちらから】 |
1.キー・デバイス…「SensorMedal-EVK-002」
走行する車体の挙動を観測するためのセンサ・データの取得には,加速度,気圧,地磁気,温湿度,照度,ホール・センサがコンパクトにワン・ボードとしてモジュール化されているローム社製のセンサ評価キット「SensorMedal-EVK-002 (図1)」を使います.
このキットは,Bluetooth通信できるので,スマホやRaspberryPiなどに接続して容易にデータを取得できます. これだけそろっていて参考価格:19,030円(税込)はお得です.スマホアプリもストアからインストールして使えます.
今回の計測には,RCカーの挙動をしりたいので「SensorMedal-EVK-002」に搭載されている6つのセンサのうち加速度センサ,地磁気センサの2つを使用します.
・加速度センサ…走行時の動作状態を知る
・地磁気センサ…走行時に動いた向き(方角)を知る
図1 センサ評価キット「SensorMedal-EVK-002」の詳細
ローム社のWebサイト:
https://www.rohm.co.jp/sensor-medal-support
https://www.rohm.co.jp/documents/11401/3946483/sensormedal-evk-002_ug-j.pdf
2.AI化した車体の仕様
AI自動走行のデモには,市販のRCカーを少し改造してRaspberryPi3B+,ラズパイ・カメラ,PWMボードなどを搭載して走行させました(図2).
図2 組み立て済みのAI RCカー
車体に搭載したサーボモータやサーボアンプのコントロールは,PWMボード(https://www.switch-science.com/catalog/961/)を使用し,RaspberryPi3B+からI2C経由で行っています(図3).
図3 RaspberryPi3B+とPWMボードの接続
AIシステムには,「DonkeyCar(http://docs.donkeycar.com/)」というオープンソースを使いました.これを使い,車体に搭載したカメラ画像とリモコン操縦(ステアリングとスロットル)した情報からAIモデル・データを作成します.
実験では,このRCカーをリモコン操縦してマニュアル走行(簡易コースを10周程度)させながら,図4に示す「走行中の画像」,「アクセルの操作値」,「ステアリングの操作角」のデータを記録しました(教師データの作成).
その後,このデータから機械学習させてAIモデル・データを作成し自動走行を実現しています.なお,AIモデル・データの作成や車体の制御には,SensorMedal-EVK-002が取得する計測データは使っていません.
図4 教師データの作成例
「走行中の画像」,「アクセルの操作値」,「ステアリングの操作角」のデータは,車体に搭載したカメラの情報とリモコン操縦(ステアリングとスロットル)の情報を記録し,このデータからAIモデル・データを作成する
3.走行時の観測データを取り出す方法
Pythonを使って,SensorMedal-EVK-002からRaspberryPi3B+にBluetoothにてデータを通信した後に,加速度センサと地磁気センサの値を取り出して,ログ(csv形式)として保存します.走行後にRaspberryPi3B+のSDメモリーカードに保存されているセンサ・ログデータをパソコンにコピーしてから加速度(x,y)および地磁気(x,y)のデータをグラフ表示します.
以下に「SensorMedal-EVK-002を認識する手順」と「RaspberryPi3B+上で受信したセンサ値を保存するプログラム」を示します.
(1)RaspberryPi3B+とSensorMedal-EVK-002とのBluetooth通信の設定手順
(2)RaspberryPi3B+側のセンサ値受信プログラム(Python)(概略)
参考ページ:
https://www.rohm.co.jp/documents/11401/3946483/sensormedal-evk-002_ug-j.pdf
https://ianharvey.github.io/bluepy-doc/scanner.html
https://github.com/bokunimowakaru/SensorMedal2/blob/master/ble_logger_SensorMedal2_save.py
4.「マニュアル走行時」のデータ
図5は,マニュアル操作でコースを走行している様子です.図6は,マニュアル走行させたときにSensorMedal-EVK-002の地磁気センサと加速度センサで取得したデータをグラフ化したものです.
図5 リモコン操縦しコースを走行しデータを取得している様子
図6(a)に,地磁気センサと加速度センサで取得したXYの値を示します.また,図6(b)は,地磁気センサのXとYの値から簡易的な方角を求めた参考値をグラフ化し,車の挙動を視覚的に見やすく示したデータです.地磁気センサx,yの値から計算した値は下記のWebサイトの計算式を参考にしています.
https://www.rohm.co.jp/electronics-basics/sensors/sensor_what2
マニュアル走行時に記録する走行ログデータをもとにして自動走行の学習データにするので,できるだけ丁寧に運転して走行ログデータを取得します.
しかし,4箇所のカーブ地点や長いストレートでは,グラフ内に示す地磁気(青,橙)センサの値が大きく変化しています.このデータから,カーブなどで操縦が不安定になっていることが分かります.また,長いストレートのはじめでは速度が急に速くなり加速しています.
(a)地磁気センサと加速度センサで取得したXとYの値
(b)地磁気センサのXとYの値から簡易的な方角を求めた参考値をグラフ化し,車の挙動を視覚的に見やすく示したデータ
図6 マニュアル走行時のセンサ値をグラフ化した様子
カーブや長いストレートのはじめで操縦が不安定になっている
5.「自動走行時」のデータ
図7は,AI自動走行時にSensorMedal-EVK-002で取得したセンサ値を,再度グラフ化したものです.図7(a)に,地磁気センサと加速度センサで取得したXYの値を示します.また,図7(b)は,地磁気センサのXとYの値から以下の簡易的な方角を求めた参考値をグラフ化し,車の挙動を視覚的に見やすく示したグラフです.
AI自動走行では,マニュアル走行時よりも急激な変化が減少している様子を確認できました.AIで自動走行した場合は,人間がマニュアル操作するときの癖も含めて学習(補正)しますが,繰り返し走行したデータから結果的に滑らかな加減速となるように運転してくれているようです.
(a)地磁気センサと加速度センサで取得したXとYの値
(b)地磁気センサのXとYの値から簡易的な方角を求めた参考値をグラフ化し,車の挙動を視覚的に見やすく示したデータ
図7 AI自動走行時のセンサ値をグラフ化した様子
マニュアル走行時には,カーブや長いストレート時に大きな速度変化が見られたが,AI自動走行では,小さな速度変化でスムーズに走行している
6.センサ搭載してRCカーでデータを取得した感想
今回は【入門編】として,AI RCカーにロームセンサ評価キットを搭載し,マニュアル操縦して走行させたときと,AI自動走行したときの挙動の違いを,グラフ化して観測してみました.
SensorMeda-EVK-002は,Bluetooth(BLE)搭載のスマホやRaspberryPi3B+などのコンピュータ・ボードに接続するとセンサ値を取得してすぐに試せます.今後機会があれば,加速度などのセンサ値をAIモデルに追加して機械学習させる自動走行に挑戦したいと思います.
次回の【応用編】では,小型,低消費電力性能に着目してSensorMeda-EVK-002をウェアラブル・センシングに応用し,搭載されている各種センサ(加速度,気圧,地磁気,温湿度,照度,ホール・センサ)を活用してみます.
参考資料:
ロームセンサ評価キット(SensorMedal-EVK-002)
https://www.rohm.co.jp/sensor-medal-support
7.補足情報
●「SensorMedal-EVK-002」の購入方法
センサ評価基板[参考価格:19,030円(税込)は,コアスタッフオンラインやチップワンストップ,アールエスコンポーネンツで購入できます.詳しくは,ローム社のWebサイト(https://www.rohm.co.jp/sensor-medal-support)をご覧ください.
●「SensorMedal-EVK-002」の使い方
ローム社のWebサイトから入手できる「SensorMedal-EVK-002使い方資料」(https://www.rohm.co.jp/documents/11401/3946483/sensormedal-evk-002_ug-j.pdf)を参考にしてください.この資料で,スマホアプリや接続方法など詳細に説明されているため,本原稿では説明を割愛します.
●本稿での実験に使用した部品
パーツ名 | 備考 | |
1. | RCカー | 1/18スケール |
2. | RaspberryPi3B+ | DonkeyCarサイトのシステム使用 |
3. | ラズパイ・カメラ | 走行中に160x120px画像をキャプチャする |
4. | SensorMedal-EVK-002 | ローム社製センサ評価キット テレメトリに使用,別途CR2450電池 |
5. | スマホ・バッテリー | RaspberryPi用電源に使用(10000mA/h) |
6. | PWM変換ボード | サーボモータをラズパイからの制御に使用 |
7. | 走行コース・パネル | テープを貼り付けることでも代用可能 ※ |
8. | その他組み立て部品 | カメラ固定金具やねじ類など |
※走行コースは,カーペットなどにガムテープを貼り付けても代用可能です.今回は次に示すリンクのものを使用しました(https://ja.aliexpress.com/item/33044408738.html).
◆筆者紹介:中島 幸一(なかじま・こういち)◆
株式会社 VSN 所属 ( https://www.modis-vsn.jp/ ).組込エンジニアとして自動車メーカにて先進安全装置の開発に従事.日本ロボット学会,農業食糧工学会,計測自動制御学会(正会員)に所属し,SLAM ROS を応用した室内監視ドローンの研究・開発中.ドローン/IoT関連学会での講演や大学との共同研究など活躍の場を広げる.月刊インターフェース特集記事や各種論文を執筆.