Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OBD2 x RaspberryPiで車両情報を蓄積&BIで分析できるようにする
Search
Hiroyuki Ootaguro
January 28, 2022
Technology
960
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OBD2 x RaspberryPiで車両情報を蓄積&BIで分析できるようにする
下記イベントでの登壇内容です。
https://abeja-innovation-meetup.connpass.com/event/232996/
Hiroyuki Ootaguro
January 28, 2022
More Decks by Hiroyuki Ootaguro
See All by Hiroyuki Ootaguro
第16回 MLOps 勉強会(Online) LT枠 大田黒
xecus
0
1k
Product Development in Resilire seed phase 20210812
xecus
0
210
AI x IoT利活用SaaSにおけるデータ基盤の構築
xecus
0
1k
BIT VALLEY 2020 - AI x IoT活用サービスの立ち上げ・拡販のための取り組み
xecus
0
2.8k
Other Decks in Technology
See All in Technology
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
150
AIプラットフォームを運用し続けるための可観測性
tanimuyk
4
1.2k
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
360
やさしいA2A入門
minorun365
PRO
7
940
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
230
AI Testing Talks: Challenges of Applying AI in Software Testing: From Hype to Practical Use
exactpro
PRO
1
140
Building applications in the Gemini API family.
line_developers_tw
PRO
0
2.4k
Agentic Defenseとともにセキュリティエンジニアが輝き続けるには / How Security Engineers Can Keep Excelling with Agentic Defense
yuj1osm
0
130
GoとSIMDとWasmの今。
askua
3
520
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
310
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
800
あなたの AI ワークスペースに、 専門コーダーを連れてくる - Amazon Quick Desktop 最新情報
kawaji_scratch
1
120
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
22k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Designing for humans not robots
tammielis
254
26k
BBQ
matthewcrist
89
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Deep Space Network (abreviated)
tonyrice
0
170
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
330
How to build a perfect <img>
jonoalderson
1
5.6k
Transcript
2021年01月21日 大田黒 紘之 https://abeja-innovation-meetup.connpass.com/event/232996/ ABEJA TechLT #3 OBD2 x RaspberryPiで
車両情報を蓄積&BIで分析できるようにする
Confidential ABEJA Advent Calendar 2021の1日目の記事。 https://qiita.com/xecus/items/c96bec764e20946059a0 元ネタ 社内勉強会用
Confidential 自己紹介 大田黒 紘之 @xecus , Born in Chiba 1994
▪東京都立産業技術高専 医療福祉工学科 コース (2009/4 - 2014/3) メカトロニクスとか数値計算周りを専攻。 人工衛星開発も一部。 ▪首都大学東京に編入 電気電子工学、半導体周りを専攻(量子効 果デバイスとか) ▪ABEJA 2015年〜 ・Insight for Retail (IoT x AI利活用プロダク ト)の立ち上げ・拡販 ・AIプロダクト事業部 プラットフォーム グループMGR (2022年1月現在) 社内勉強会用
Confidential 8月にTOYOTA RAIZEを納車しました 社内勉強会用
Confidential 突然ですが.... 世界で一つだけのMyドライブレコーダーを作りた い!! (OBD2車両情報+ AI Enabled Camera = ???)
社内勉強会用
Confidential 何がやりたいか 6 ドライブ レコーダー <従来のドライブレコーダー> SD Card <今考えているドライブレコーダー案> ドライブ
レコーダー SD Card 動画 ストレージ AI推論による 意味づけ 車両情報 (運転情報) BIツ ール 等 事故が起きた時に自分・警察・保険会社が見る (それ以外のシーンではほとんど使わない) ECU 車を運転し続けるという体験をアップデートできる Something GPS 社内勉強会用
Confidential ①現状のドライブレコーダーが持つ特性とデータの利活用の問題 【容量観点】 ・SDカード数時間分しか持たない。消され続けるデータ。過去を振り返る事はできない。 【データ利活用観点】 ・動画を確認する時に、結構めんどくさい(SDカード抜いて、変換アダプター経由でPCに...) ・映像をAI/MLに解析させる事で「意味情報」をもっと利活用できるのでは? 【記憶媒体の問題】 ・SDカードは書き換え寿命があるので、いつか壊れる。ファイルシステム壊れたらデータはお釈迦になる。。。 課題感
8 社内勉強会用
Confidential ②「ドライブレコーダー」という存在・役割をアップデートできるのではないか? もともと、当たり屋の裁判かなにかで、「ぶつかっていないという証拠が無い以上、事故は成立する」という判例が 出て、「自分の身は自分で守るしか無い」という業界の流れから普及したと推測。 (カメラで映像が取得できていれば十分という状況) ★IoTでBigDataでAIな時代&21世紀なので、もっとなんかできるのでは? ★「身を守る為のローカル映像記録システム」の次の役割は何か?? 課題感 9 社内勉強会用
Confidential 課題解決のアプローチ 10 ・ビジョン思考とデザイン思考を組み合 わせて、アプローチしてみる。 ・自分自身ソフトウェアエンジニアなの で、プロトタイピングをしながら進めて みる (仲間募集中です!笑) https://diamond.jp/articles/-/195874?page=2
社内勉強会用
Confidential 機能の指向性 11 • ①細かい車両情報(OBD)を蓄積&BIツールで分析できるようにする (オレオレドラレコ基本機能) • ②撮影した動画をクラウド上で見ることができる(オレオレドラレコ基本機能) • ③車の維持が楽になる世界
◦ 時間・走っている場所毎のガソリン消費量や燃費変動の見える化。ガソスタレコメンド。 ◦ 車の部品のリアルタイム故障検知・予測(車のオルタネータが劣化してきた、BAT電圧低い等) ◦ オイル交換やオイルフィルター交換等の目安と近くのお店をレコメンドしてくれる世界 • ④車と家族の思い出を振り返られるような世界 ▪ GPSを用いた走行ログの蓄積と可視化。動画と連携。携帯のアプリから見る事ができる。 • ⑤解像度の高い運転危険情報が見えるようになる世界 ◦ 動画情報の意味解析を通じて、地域ごとのヒヤリハット情報等を蓄積化 & カーナビ反映 ◦ 例:地域ごとの危険イベントの集計・見える化 • ⑥企業やドライバーが環境に配慮できる世界観 ◦ 低炭素社会実現の為のCo2排出量の見える化 (SDGs, ESG文脈でもありそう) 個人 社会 社内勉強会用
Confidential OBD2 12 • OBD = On Board Diagnosis (車の自己診断機能)
• CAN通信というプロトコルを拡張している • OBDの歴史は深い ◦ 1971年 FI(Fuel Injection: 電子制御式燃料噴射装置)搭 載車の登場 ◦ 1980年代 自己診断機能で修理しやすく ◦ 1982年 自己診断機能の統一化からOBDの誕生 => OBDのベースに ◦ 1996年 OBD-IIの登場 (20年以上前からある枯れたプ ロトコル) • めっちゃいろんなデータが取れる ◦ https://en.wikipedia.org/wiki/OBD-II_PIDs 仮説:OBDを使えば、超細かい車両情報が ドライブレコーダーに記録できるかも 社内勉強会用
Confidential OBD2 13 ※OBD端子の位置はメーカー・車種に依存 (TOYOTA RAIZEは運転席の足元に) 社内勉強会用
Confidential OBD-IIを利活用するには 14 ECUや周辺コンポーネントのCANバスがOBD用物理ポートから出ているので、 そこを拝借して、データの送受信を行う (結構怖いw) 社内勉強会用 http://make.bcde.jp/raspberry-pi/obd2canで自動車と通信ハード編/ https://monoist.itmedia.co.jp/mn/articles/0807/09/news140.html
Confidential OBD-IIを利活用するには 15 オレオレレコーダープログラム On RaspberryPi オレオレプロトコルスタック ここをうまくや ってくれる物理 層周りのハード
ウェアが必要 社内勉強会用
Confidential OBD2 (CANBUS)の通信ハードウェア 16 MCP2515 CANコントローラー MCP2551 CANトランシー バーIC https://docs.longan-labs.cc/1030001/
CANコントローラのICを使い、RaspberryPiやMCUと通信できるようにする ※カニチップ(Ethernetコントローラー)みたいなもん 社内勉強会用 https://diary.freebbs.biz/archives/cat23/raspberrypi_spi.php
Confidential OBDコネクタからCANバスへのアクセス 17 社内勉強会用 CANコントロー ラーモジュール (UART制御) USB⇔UART変 換 モジュール
社内勉強会用
Confidential OBD2 18 社内勉強会用
Confidential OBD2フレームの解析 19 ECU (PID: 0x7E8)からサービスID(0x01)・データPID(0x0C: EngineSpeed)のリクエストに対す る応答。データLengthは4Byte データは 0x0D190000(00)
→ (0x0D ✕ 256 + 0x19) / 4 = 838 Rpm 社内勉強会用
Confidential システム全体像 20 社内勉強会用 Raspberry Pi 車両情報等 BIツールで 振り返り
Confidential RaspberryPi ⇔ 車両部分 21 CAN通信モジュール USB⇔CAN変換 社内勉強会用 USB⇔Serial変換 (FT234等)
Serial⇔CAN通信 (Seeed社 Serial CAN- BUS Module) MCP 2551 MCP 2515 CAN通信モジュール RaspberryPi CAN通信モジュール OBD情報取得 プログラム (obd_recorder.go) /mnt/usb_memory Engine_rpm.jsonl xxxx.jsonl CAN通信モジュール OBD2端子 ECU #1 ECU #1 ECU #1 車両側 /dev/tty USB0
Confidential RaspberryPi ⇔ クラウド(GCP)部分 22 CAN通信モジュール RaspberryPi CAN通信モジュール /mnt/usb_memory CAN通信モジュール
GCP (クラウド側) Streaming Insert Engine_rpm.jsonl xxxx.jsonl Service Account ※数時間程度のざくっとプロトタイピング。下記プラグインを利用 https://github.com/fluent-plugins-nursery/fluent-plugin-bigquery 社内勉強会用 OBD情報取得 プログラム (obd_recorder.go) car_dataset engine_rpm_table xxxx_table
Confidential データ取得の様子@京葉市川パーキングエリア 23 社内勉強会用
Confidential BIツール(Redash) x OBDデータ 24 • 現在取得できているデータ ◦ エンジン回転数(RPM) ◦
エンジン負荷(%) ◦ アクセルの位置(%) ◦ 冷却材の温度(C) ◦ 大気の圧力(kPA) →高度情報取れる ◦ インテークの温度 ◦ インテークの圧力 ◦ バッテリーの電圧 ◦ Short Time Fuel Trim (短期燃料トリム) ◦ Long Time Fuel Trim (長期燃料トリム) ◦ エンジン始動からの経過時間 社内勉強会用
Confidential WebカメラをRaspberryPiに接続 25 • ドンキカメラ ◦ MJPG ▪ 1280x720 30FPS
◦ YUYV ▪ 640x360 30FPS 社内勉強会用
Confidential ProtoTyping部分 26 RaspberryPi CAN通信モジュール video_recorder.py /mnt/usb_memory/videos CAN通信モジュール GCP Streaming
Insert YYYYMMDD-HHMMSS.mp4 Service Account video_uploader.py 社内勉強会用
Confidential OpenCVでWebカメラの映像を保存 (video_recorder.py) 27 • OpenCVのVideoCaptureとVideoWriterを用い て、60秒おきにファイル書き出しを実施 • 動画中に撮影時間をputTextを記載 社内勉強会用
Confidential 保存した動画のGCSアップロード (video_uploader.py) 28 • VideoRecorderの出力するmp4ファイルを随 時GCSへ動機 • (FluentdやEmbulk等で、ファイルの TIMESTAMPからパスをいい感じに調節しなが
らアップロードできるならそちらに切り替えた い) 社内勉強会用
Confidential ProtoTyping部分 29 社内勉強会用
Confidential 実際にGCSに溜まったファイル 30 社内勉強会用
Confidential オレオレドライブレコーダーの映像解析 (Segmentation適用) 31 • 映像データの意味付け ◦ ObjectDetection ▪ https://github.com/open-
mmlab/mmdetection ◦ Segmentation ▪ https://github.com/open- mmlab/mmsegmentation 社内勉強会用
Confidential 困り毎 32 • OpenCVのVideoCapture & VideoWriterの負荷が高すぎて、フレーム欠損する ◦ 30FPS取れていない(体感半分程度) ◦
仮説①:ライブラリがシングルコア活用の為、コア1つ1つの性能が微妙なRaspberryPiではすぐ頭打ちが 来る...? ▪ RaspberryPi 4なら行ける説 ◦ 仮説②:USB周りのデータ転送レートが遅い ▪ リアルタイムカーネルに切り替えて解決している感...? ▪ http://tnoho.com/web/webrtc/689 社内勉強会用
Confidential 最後に 34 • 利活用に関して皆様からアイデアを頂きたくです! ◦ Slackでコメントいただけますと嬉しくです! ◦ どなたか、一緒に発展させていきませんか?! •
今後の展望?トライ? ◦ GPSセンサーの装着 ▪ GNSS受信キットを買った! ◦ ドライブレコーダー映像 x AI ▪ 取得動画のセグメンテーションや動画Caption付け ◦ ABEJA Platform上への実装 社内勉強会用