電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>致命事故風險緩解(FARM)開源分享

致命事故風險緩解(FARM)開源分享

2023-01-30 | zip | 0.19 MB | 次下載 | 免費

資料介紹

描述

根據(jù)美國國家公路交通安全管理局 (NHTSA)最新的汽車事故和死亡數(shù)據(jù),2020 年美國死亡人數(shù)超過 38,000 人,為 2007 年以來的最高水平。2021 年估計超過 40,000 人。

poYBAGPXHYWAMq_8AAIqBk4penk668.png
2021 年的估計甚至高于 2020 年。
?

根據(jù)美國國家公路交通安全管理局 (NHTSA) 的說法,在 45% 的致命事故中,乘用車司機至少有以下一種危險行為:超速、酗酒或未系安全帶。(2023 年 1 月 13 日更新:前幾天我在收音機里聽說激進駕駛也是事故的一個因素,所以我在我的項目中添加了另一個傳感器!)。

借助 Edge Impulse 對象檢測模型和 Blues Wireless Notecard,我們可以利用機器學習和無線物聯(lián)網(wǎng)的力量來幫助減輕這些危險行為!

我將此項目稱為致命事故風險緩解 (FARM) 這是車隊管理能力的概念證明:確定您的團隊中誰在駕駛車輛,他們是否系好安全帶,他們是否以安全速度行駛,是否在車內檢測到酒精,以及(更新)他們是否激進駕駛(急加速和/或急剎車)。這一切都可以使用在 Raspberry Pi 4 上運行的 Edge Impulse 對象檢測模型、Raspberry Pi 相機、在 Raspberry Pi HAT 上運行的 Blues Wireless Notecard、DFRobot MQ-3 氣體傳感器(更新)和 Seeed Studio 來完成Grove LIS3DHTR 3 軸加速度計。該裝置可以通過車輛的 12V 電源(即點煙器)甚至電池組供電

該項目的第一步是創(chuàng)建模型,為此我需要數(shù)據(jù)。我在外出開車時使用 Raspberry Pi 和相機拍了數(shù)百張照片,所以我有一些真實的樣本來展示模型會看到的東西。我收集了大約 300 張我在一天中不同時間系好安全帶駕駛的照片,以及不同日照量來改變輸入。這是我為捕獲這些圖像而開發(fā)的簡短 Python 腳本:

import os
import time

FRAMES = 200
TIMEBETWEEN = 6

frameCount = 0
while frameCount < FRAMES:
    imageNumber = str(frameCount).zfill(7)
    os.system("raspistill -o image%s.jpg"%(imageNumber))
    frameCount += 1
    time.sleep(TIMEBETWEEN - 6) #Takes roughly 6 seconds to take a picture

獲得圖像后,我將批量上傳到我的 Edge Impulse 項目中。可以在此處找到該項目的公共版本。然后是乏味的工作:貼標簽。幸運的是,Edge Impulse 能夠在其框架內標記每個圖像,從而使這變得非常簡單。對于每張圖片,我在我的臉周圍畫了一個邊界框,在肩部區(qū)域附近畫了一個邊界框,顯示系好安全帶(但也有一些背景表明我系了安全帶)。

pYYBAGPXHYiARz9XAAFDv08TfGI501.png
給每張照片貼標簽很乏味,但 Edge Impulse 環(huán)境讓這一切變得簡單。
?

在所有圖像都貼上標簽后,我開始了 Impulse Design 過程。在大多數(shù)情況下,我保留了 Edge Impulse 推薦的默認參數(shù)。如前所述,我使用了對象檢測框架。因為我使用的是 Raspberry Pi 4,所以我并不過分關心模型大小。我使用了 320x320 RGB 輸入圖像,并使用遷移學習在由 Edge Impulse 專家之一導入的 YOLOV5 數(shù)據(jù)集上訓練了 50 個訓練周期。還有一個社區(qū) YOLOV5 模型也可以使用。該模型的精度得分為 98.3%,推理時間為 272 毫秒。模型大小為 3.5 MB,因此有足夠的空間容納 Raspberry Pi 4。

poYBAGPXHYqAESjhAAA0VRTi99U713.png
模型的精確度得分很高!
?

然后我將模型部署為 Linux (ARM V7).eim 文件。

pYYBAGPXHYyAMW4JAAB8W9kf6ow029.png
我將模型部署為 Linux .eim 文件。
?

由于我過去曾使用 .eim 文件完成項目,因此我利用該經(jīng)驗開發(fā) Python 代碼來加載模型、讀取圖像、對這些圖像進行分類,然后對推理結果采取行動(在本例中發(fā)送數(shù)據(jù)到 Blues Wireless Notehub.io)。Python 腳本可以在我的 github 上看到,該項目有一個鏈接(請參閱代碼部分)。

永遠不會滿足,一旦我啟動并運行我的代碼,我決定在設置中添加一個酒精傳感器,看看我是否可以檢測到車內是否存在酒精。我有一個一年前購買的 DFRobot 重力氣體傳感器 (MQ3),并為這個項目回收了它。大多數(shù) MQ3 傳感器都是 5V 和模擬的,這在 Raspberry Pi 上表現(xiàn)不佳。然而,DFRobot 重力傳感器具有 I2C 接口,可承受 3.3V 和 5V,因此連接到 Raspberry Pi 非常容易(沒有 5V 到 3.3V TTL,也沒有 ADC)。

為了測試我的代碼,我將 Raspberry Pi(帶有 HAT)攝像頭、酒精傳感器、(更新)和加速度計安裝到我汽車的儀表板上,并將其插入 12V 電源:

pYYBAGPXHZaAeiArAAunJrwDjXI786.jpg
使用 Notecard Pi 載體、相機和氣體傳感器安裝 Raspberry Pi。
?

我還連接了一個小型便攜式顯示器和 USB 鍵盤/鼠標,這樣我就可以看到何時獲得 GPS 衛(wèi)星定位(每次關閉 Notecard 電源時,都必須重新獲取衛(wèi)星)。一旦我獲得了 GPS 位置,我就開車四處轉轉。我設置了我的代碼,以便每 2 分鐘發(fā)送一次帶有駕駛員 ID 信息的注釋,如果他們系好安全帶,如果檢測到酒精,(更新)以及激進加速和制動的計數(shù)。速度和 GPS 信息由 Notecard 以預定的時間間隔自動發(fā)送(在我的例子中,我將其設置為每 20 秒一次以獲得精細的位置和速度數(shù)據(jù))。

筆記被發(fā)送到 Blues Wireless Notehub.io。您可以在下面看到發(fā)送到Notehub.io的示例注釋

poYBAGPXHZqAAbQyAAG6y7fYWIQ743.png
來自 Notehub.io 的示例注釋捕獲推理和位置/速度信息
?

然后我按照 Blues Wireless 的優(yōu)秀教程創(chuàng)建了一條通往Datacake的路線,在那里我可視化了 Notes 中感興趣的數(shù)據(jù):位置信息的緯度和經(jīng)度、駕駛員姓名、速度、安全帶信息、檢測到的酒精數(shù)據(jù)(靜態(tài)和趨勢) ,(更新)和攻擊性駕駛的計數(shù)下面是 Datacake 儀表板配置選項卡中的有效載荷解碼器代碼:

function Decoder(request) {
    
    var data = JSON.parse(request.body);
    var device = data.device;
    
    var file = data.file;
    
    var decoded = {};
    
    decoded.pi_location = "(" + data.where_lat + "," + data.where_lon + ")";
    //detect excessive speed, convert to mph, 30 mph for test purposes
    //recommend higher (80 mph?) to detect excessive speeding
    if ( (data.body.velocity * 2.23694) > 30.0 )
    {
        decoded.max_velocity = data.body.velocity * 2.23694;
    }   
    
    if (file === "locations.qos") {
        
        decoded.voltage = data.body.voltage;
        decoded.motion = data.body.motion;
        decoded.seconds = data.body.seconds;
        
    } else if (file === "_session.qo") {
        
        decoded.voltage = data.voltage;

    } else if (file === "sensors.qo") {
        
        // custom application code
        decoded.faceID = data.body.faceID;
        decoded.confidence = data.body.confidence;
        decoded.seatbelt = data.body.seatbelt;
        decoded.alcohol_detected = data.body.alcohol_detected;
        //new aggressive driving data (hard acceleration and braking)
        decoded.num_hard_accel = data.body.num_hard_accel; 
        decoded.num_hard_brake = data.body.num_hard_brake;
        decoded.time = data.when;
    }
    
    if (("tower_lat" in data) && ("tower_lon" in data)) {
        decoded.tower_location = "(" + data.tower_lat + "," + data.tower_lon + ")";
    }
    if (("where_lat" in data) && ("where_lon" in data)) {
        decoded.device_location = "(" + data.where_lat + "," + data.where_lon + ")";
    }
    
    decoded.rssi = data.rssi;
    decoded.bars = data.bars;
    decoded.temp = data.temp;
    decoded.orientation = data.orientation;
    decoded.card_temperature = data.body.temperature;
    
    // Array where we store the fields that are being sent to Datacake
    var datacakeFields = []
    
    // take each field from decodedElsysFields and convert them to Datacake format
    for (var key in decoded) {
        if (decoded.hasOwnProperty(key)) {           
            datacakeFields.push({field: key.toUpperCase(), value: decoded[key], device: device})
        }
    }      
    
    // forward data to Datacake
    return datacakeFields;
    
}

Datacake 在可視化數(shù)據(jù)方面做得很好,如下所示:

pYYBAGPXHZ-ASXiYAAE2fW5VuxY732.png
我既不能確認也不能否認我在(停放的)車里喝了啤酒來捕捉酒精趨勢。
?

儀表板識別駕駛員,如果他們系了安全帶,車速(可以設置一個閾值,所以你只看到他們是否超速),安全帶趨勢(如果他們在整個駕駛過程中都系著安全帶),檢測到酒精趨勢(和上次讀數(shù))、地圖上的位置信息、(更新)以及駕駛員加速和猛踩剎車的次數(shù)如果您需要任何這些行為的即時警報,Notehub.io有一個Twilio 路由選項,因此您可以接收短信(例如,如果檢測到酒精)。我沒有在這個演示中實現(xiàn)它,但它是未來的一種可能性。

添加加速度計

如前所述,廣播中關于激進駕駛導致事故的報道啟發(fā)我在硬件中添加加速度計傳感器以跟蹤激進駕駛行為。我在他們的 Grove 套件中放置了一個 Seeed Studio Grove 加速度計,通過 Notecarrier Pi HAT 上的 Grove 連接器,這是一個非常簡單的連接。

pYYBAGPXHaOAPcp9AAYJKCPdS3k895.jpg
將加速度計連接到 Notecarrier Pi HAT 非常簡單。
?

我用雙面膠帶固定加速度計,Y 面朝前(俯仰),X 面朝另一邊(滾動),Z 面朝上。我在 Seeed Studio 網(wǎng)站上找到了一些 Python 代碼,經(jīng)過一些修改后,我的測試按預期運行。然后,我在路上進行設置并四處行駛,以測試加速度計如何檢測怠速的汽車、正常駕駛以及急加速和制動。我對數(shù)據(jù)中不同階段的獨特性感到驚喜:

poYBAGPXHaWAdugCAACcehAF7b0675.png
你可以清楚地看到我什么時候加速,什么時候猛踩剎車。
?

不出所料,當我空閑時,數(shù)據(jù)幾乎沒有變化。當我開車時,數(shù)據(jù)有一點變化。但是當我激進地駕駛時,你可以清楚地看到當我加速時正方向的尖峰和當我在 Y 軸上踩剎車時的負方向尖峰(黃色圖),這是俯仰。這是有道理的,因為如果您快速加速或減速,那是變化最大的軸。所以我簡單地在y軸數(shù)據(jù)上設置了一個閾值。如果大于 10000 或小于 0,則說明駕駛員駕駛過于激進。我設置了計數(shù)器來跟蹤硬停止和啟動的次數(shù),并將其傳遞給Notehub.io并將其路由到 Datacake。如果您想添加額外的檢查,您甚至可以跟蹤急轉彎。我沒有在圖表上標記它,但 x 軸(灰色圖)顯示我在這個數(shù)據(jù)集中進行了 3 次右轉。您可以看到數(shù)據(jù)中的 3 個(?。┘夥濉?/font>如果我要更積極地進行這些轉彎,那么這些尖峰將更加明顯并且很容易達到閾值。我將我的代碼范圍限制在硬加速和剎車上。

最后的想法

這是一個我認為相當簡單的項目,但隨著我對車禍及其原因的研究越來越多,它變得越來越復雜。我對識別我的模型的性能以及我是否系好安全帶感到滿意。酒精傳感器也表現(xiàn)出色。只需喝一口啤酒并正常呼吸,傳感器就會觸發(fā)檢測酒精的閾值。加速度計也表現(xiàn)出色。我在為 Notecard 設置正確參數(shù)時遇到了一些挑戰(zhàn),但一旦我這樣做了,結果看起來相當不錯。感謝 Rob Lauer 和 Blues Wireless 的支持團隊一直以來的幫助。總體而言,Blues Wireless Notecard 具有很多功能,我期待在未來的項目中嘗試使用它。

這個項目的巧妙之處在于沒有圖像被發(fā)送到任何地方,所以它是安全的。Raspberry Pi 上本地存儲了一張調試照片(以確認相機正在查看的內容),但可以在代碼中將其禁用。否則,唯一發(fā)送到 Notehub 和 Datacake 的只是元數(shù)據(jù)!

我確實想評論的一件事是一些限制。第一:太陽。特別是在新英格蘭的冬天,太陽在天空中的角度很低。根據(jù)您駕駛的方向,Raspberry Pi 攝像頭可能會被陽光遮擋,從而導致無法檢測到駕駛員和安全帶。這也許可以通過不同的傳感器(ToF、毫米波雷達?)來解決。但在大多數(shù)情況下,這不是問題。第二:我的模型只有我自己和安全帶的課程。如果需要考慮其他驅動因素,則需要進行類似的數(shù)據(jù)收集和標記(以及模型更新)。第三,我只在車上收集數(shù)據(jù)。如果您有車隊,則需要為每種車輛類型收集數(shù)據(jù)(因為每輛車的安全帶位置不同)。當我在我妻子的車里測試我的代碼時,我很容易被識別出來,但安全帶卻沒有。此外,由于這是基于 EO 相機的系統(tǒng),因此無法在黑暗中工作。也許我可以用用于夜間駕駛的NoIR 攝像頭,但我只將范圍限制在白天。這可能是未來的增強。最后,酒精傳感器可以檢測多種類型的酒精,包括洗手液,所以你可能會得到誤報。不過,進一步細化傳感器讀數(shù)可能會過濾掉它。

如果您讀到了這篇文章的結尾,感謝您的閱讀。我希望你喜歡。我很高興我能夠解決導致大多數(shù)致命事故的幾個因素:超速、攻擊性駕駛、酗酒和不系安全帶。我希望這能激發(fā)未來的生產(chǎn)產(chǎn)品,以降低道路風險,以“建設更智能的世界”。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費