操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    0

    `編程設計了一個由 Pi、 Uno 和一個樹莓派攝像頭組成的自動駕駛機器人小車。通過使用 、C++ 和神經網絡進行圖像處理,并以 60 FPS 的速度實時運行。

    在這篇文章中,我們將對這個項目做完整的介紹,并給出復現設計該智能小車的關鍵要點。

    軟硬件清單

    硬件清單:

    1. 小車底盤

    2. 樹莓派3 + 樹莓派攝像頭

    3. Uno + 原型板

    4. 直流電機控制器

    5. 3D打印零部件

    - 電池盒

    - 攝像頭固定柱

    - 攝像頭固定夾

    - 樹莓派固定盒

    6. 伺服電機

    7. 緊急停止按鈕開關

    8. 電池:用于電機的原裝Nikko電池 + 樹莓派與的外部供電電池

    軟件清單:

    用神經網絡設計自動跳舞機器人控制系通過_自動藥片裝瓶機plc控制設計_自動送料裝車系統plc控制設計畢業論文

    1. :C++

    2. 樹莓派: +Numpy +

    3. 神經網絡訓練: +

    4. 樹莓派通信:自制串口協議

    程序框圖與仿真

    如圖顯示,項目的圖像處理和小車控制部分是在 Pi上完成的。

    樹莓派與之間建立串行協議通信,由后者使用PWM向電機發送指令(方向和速度)。由于沒有提供串口寫入的有效方式,為了使兩塊板卡之間可以進行通信,這里我們使用了一種自制的串行協議,基于單字節寫入方法.write()。協議如下:首先發送一個長度為1個字節(8位)的指令,然后每個字節逐一發送所需的參數。這里我們使用了一些方法來對長度為整數1-4個字節的指令進行編碼和解碼。例如,當發送一個16位的int時,我們把它分成兩個字節(每個8位),并將這些字節存儲在一個緩沖區數組中。然后,我們發送緩沖區中的每個字節,并在接收時使用按位操作(移位和屏蔽)來重建16位。

    過程中,我們同時考慮到了有限的緩沖區大小:如果我們在短時間內發送太多的字節,部分信息將會因此而丟失。為了避免這個問題,通過反饋一條“收到”消息來確認收到每一條指令。這個“收到”消息會增加一個計數器用神經網絡設計自動跳舞機器人控制系通過,每當樹莓派發送一個指令時,該計數器就會減少。為了向發送指令,這個計數器必須大于1。 在中,它通過信號量來實現。以下是該協議的C++綁定和綁定,其中包括了交互式命令解析器(在debug的時候會非常有用)。

    圖像處理部分

    為了控制小車確保其能夠沿著賽道前行,我們需要小車能夠自行探測線路并能預測轉彎,既能夠在直線賽道全速行駛同時能夠在轉彎之前降低速度。上述功能我們通過對攝像頭采集的圖像進行處理分兩步來實現完成,包括在獲取探測線路后預測賽道曲率,以及檢測確定賽道中心線。

    預測賽道曲率

    為了實現預測轉彎并減少計算時間,我們通過攝像頭對三個感興趣區域點(ROI)進行探測捕捉,并對所捕獲的圖像進行了裁剪。然后,我們將一條線(上圖1中的綠線)擬合到所獲得的三個點上,并計算此線與參考線(上圖1中的藍線)之間的角度,從而估算出彎道的轉彎程度。若此時是一條筆直賽道,則綠色與藍線會重合。如上圖1用神經網絡設計自動跳舞機器人控制系通過,右半圖為三個感興趣區域以及所預測的賽道中心(紅色圓圈標出)。左半圖為針對輸入圖像所計算出的結果 ,其中綠線為擬合線, 藍線是對應于一條直線(直賽道)的參考線。

    檢測確定賽道中心

    我們最初的檢測方法是使用基于顏色的方法。 基本的想法是找到給定賽道顏色的最大區域,然后計算該區域的幾何中心(即賽道中心)。

    這里先對“顏色檢測法”做一些簡單介紹:首先在HSV顏色空間中轉換圖像,然后根據預定義的閾值計算顏色遮罩,最終所獲得的幾何中心即為賽道中心。上圖2顯示的是仿真環境下所獲得的結果。 紅圈表示找到的賽道中心,綠色線條對應于顏色遮罩的輪廓。現實中,只需要30行代碼,就能夠實現上述:

    用神經網絡設計自動跳舞機器人控制系通過_自動送料裝車系統plc控制設計畢業論文_自動藥片裝瓶機plc控制設計

    from

    cv2

    numpy as np

    # Input Image

    image = cv2.(".jpg")

    # to HSV color space

    hsv = cv2.(image, cv2.)

    # range of white color in HSV

    = np.array([0, 0, 212])

    = np.array([131, 255, 255])

    # the HSV image

    mask = cv2.(hsv, , )

    # noise

    = np.ones((4,4), np.uint8)

    = cv2.erode(mask, , =1)

    = np.ones((6,6),np.uint8)

    = cv2.(, , =1)

    # Find the

    自動送料裝車系統plc控制設計畢業論文_用神經網絡設計自動跳舞機器人控制系通過_自動藥片裝瓶機plc控制設計

    im2, , = cv2.(, cv2., cv2.)

    # Sort by area (keep only the one)

    = (, key=cv2., =True)[:1]

    if len() > 0:

    M = cv2.([0])

    #

    cx = int(M['m10']/M['m00'])

    cy = int(M['m01']/M['m00'])

    print(" of the area: ({}, {})".(cx, cy))

    else:

    print("No Found")

    然而,這一方法最主要的缺點是在賽道不同區域環境光變化下所帶來的檢測不穩定性。我們嘗試了直方圖均衡法來克服這個問題,但發現效果并不理想,并且后者的計算量很大。

    最后,我們決定將機器學習應用到這一項目中來檢測賽道中心,即我們希望通過訓練一個模型來從所獲得的圖像輸入中預測出賽道中心的準確位置。我選擇使用神經網絡,因為這是我最熟悉的方法,并且使用純粹的numpy和代碼其實很容易實現上述想法。

    機器學習部分

    “回歸問題”概述

    在監督式學習模式下,當我們標記數據時,我們的目標是預測所輸入數據的標簽(例如,預測圖像中是否包含貓或狗)。 而在我們的這一項目中,我們想要預測來自攝像頭所輸入圖像的賽道中心的坐標。為簡化問題,針對所輸入的圖像區域,我們僅預測賽道中心的x坐標(沿著寬度),也就是說這里我們假定中心位于裁剪圖像高度的一半處。

    為了更好地評估我們的模型,我們選擇均方誤差(MSE)作為目標:我們取預測的x坐標與真正的賽道中心之間的平方誤差,并在所有的訓練樣本上取平均值。

    圖像標記

    用神經網絡設計自動跳舞機器人控制系通過_自動藥片裝瓶機plc控制設計_自動送料裝車系統plc控制設計畢業論文

    在小車遠程控制模式下錄制賽道視頻后,我們手動標記了3000張圖像(在約25分鐘內完成,即1張標簽/秒)。為了達到目的,我們創建了自己的標記工具:每個訓練圖像逐一顯示,對每一張圖像我們點擊白色賽道的中心,然后必須按任意鍵才能進入下一張圖像。

    預處理和數據增強

    在將我們的學習算法應用到數據之前,我們先要完成以下幾步:首先,我們需要調整所輸入圖像的大小以減小輸入尺寸(減少4倍),從而大大減少學習參數的數量。這樣可以簡化問題,加快訓練和預測時間。此外,為避免學習問題的產生并加快訓練,需要對數據進行規范化。在我們的例子中,我們將輸入圖像統一在[-1,1]范圍內,并將輸出(賽道中心的預測x坐標)縮放為[0,1]。預處理腳本如下:

    def (image, width, ):

    """

    to image into net input array

    :param image: (cv2 RBG image)

    :param width: (int)

    :param : (int)

    :: (numpy array)

    """

    image = cv2.(image, (width, ), =cv2.)

    x = image.()# a big 1D-array

    #

    x = x / 255. # in [0, 1]

    x -= 0.5 # in [-0.5, 0.5]

    x *= 2 # in [-1, 1]

    x

    自動送料裝車系統plc控制設計畢業論文_用神經網絡設計自動跳舞機器人控制系通過_自動藥片裝瓶機plc控制設計

    最后,為了增加訓練樣本的數量,我們將圖像垂直翻轉,以快速且簡單的方式將訓練集的大小乘以2。

    神經網絡架構

    我們所使用的是一個前饋神經網絡,由兩個隱藏層組成,分別具有8個和4個單位。實際過程中,我們嘗試了不同的架構,包括CNN(卷積神經網絡),但我們發現前饋神經網絡架構取得了最好的效果,可以以超過60 FPS的速度實時運行!

    超參數的選擇

    我們選擇的超參數包括網絡架構,學習率,小批量大小...等。為了驗證超參數的選擇,我們將數據集分成3個子集:一個訓練集(60%),一個驗證集(20%)和一個測試集(20%)。 我們保持模型在驗證集上的最低誤差,并使用測試集估計我們的泛化誤差。

    ————————————————————————————

    最終,我們用了不到20分鐘的時間,在8核筆記本電腦的CPU上對這一神經網絡進行了訓練。

    訓練數據包括7600+張標記的圖片。下載后,會有兩個文件夾,分別是:

    · / (小車遠程控制模式下所獲取的原始圖像)

    · / (輸入圖像的標記區域)

    每張圖片的命名規則為:“"-""_"id".jpg,例如:

    · 0--453r0.jpg => =(0, 28) | id = "452-453r0"

    · 6--3r2.jpg=> = (6, 22) | id = "691-3r2"

    小車循跡的控制

    代碼下載

    (855.89 KB, 下載次數: 111)

    `

    4

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有