樹莓派 4 尋跡小車

2021-10-01 17:41:51 字數 2948 閱讀 3971

學習的時候百分之99參考了這篇文章

yzy_1996:【方法】樹莓派小車自動循跡(攝像頭):

具體內容都在裡面了,因為我用的是l298n電機驅動模組,所以是用enab來控制pwm的,所以適當更改一下

因為我是在辦公室地面,不像他一樣有顏色清楚的軌道,所以修改了二值化型別和腐蝕膨脹的順序係數

import rpi.gpio as gpio

import time

import cv2 as cv

import numpy as np

gpio.setmode(gpio.board)

gpio.setwarnings(

false

)int1 =

11int2 =

12int3 =

13int4 =

15ena =

16enb =

18# 設定gpio口為輸出

gpio.setup(int1, gpio.out)

gpio.setup(int2, gpio.out)

gpio.setup(int3, gpio.out)

gpio.setup(int4, gpio.out)

gpio.setup(ena,gpio.out)

gpio.setup(enb,gpio.out)

# 設定pwm波,頻率為500hz

pwma = gpio.pwm(ena,

500)

pwmb = gpio.pwm(enb,

500)

defstop()

: gpio.output(int1,0)

gpio.output(int2,0)

gpio.output(int3,0)

gpio.output(int4,0)

pwma.stop(

) pwmb.stop(

)def

forward()

: gpio.output(int1,1)

gpio.output(int2,0)

gpio.output(int3,1)

gpio.output(int4,0)

# pwm波控制初始化

pwma.start(0)

pwmb.start(0)

# center定義

center =

320# 開啟攝像頭,影象尺寸640*480(長*高),opencv儲存值為480*640(行*列)

cap = cv.videocapture(0)

while

true

: ret, frame = cap.read(

) cv.imshow(

'frame'

,frame)

# 轉化為灰度圖

gray = cv.cvtcolor(frame, cv.color_bgr2gray)

#直方圖均勻化

dst = cv.equalizehist(gray)

# 二值化

ret, dst = cv.threshold(dst,

165,

255,cv.thresh_binary)

# 腐蝕膨脹

dst = cv.erode(dst,

none

, iterations=1)

dst = cv.dilate(dst,

none

, iterations=4)

# 單看第400行的畫素值

color = dst[

400]

# 找到白色的畫素點個數

white_count = np.

sum(color ==

255)

# 找到白色的畫素點索引

white_index = np.where(color ==

255)

# 防止white_count=0的報錯

if white_count ==0:

white_count =

1# 找到白色畫素的中心點位置

center =

(white_index[0]

[white_count -1]

+ white_index[0]

[0])

/2# 計算出center與標準中心點的偏移量

direction = center -

320print

(direction)

# 停止

ifabs

(direction)

>

250:

stop(

)# 右轉

elif direction >=0:

# 限制在70以內

if direction >70:

direction =

70 forward(

) pwma.changedutycycle(

30+ direction)

pwmb.changedutycycle(30)

# 左轉

elif direction <0:

if direction <-70

: direction =-70

forward(

) pwma.changedutycycle(30)

pwmb.changedutycycle(

30- direction)

if cv.waitkey(1)

&0xff

==ord

('q'):

break

# 釋放清理

stop(

)cap.release(

)cv.destroyallwindows(

)gpio.cleanup(

)

缺點:在拐彎處,因攝像頭擺放位置,準確度差

微控制器尋跡小車 尋跡模組

一 沒有檢測到黑線,則 h4發光到白紙光反射到h4接收端,h4接收端導通,導通則t1接地 0 提問會不會等於0,哪位有測試 二 有檢測到黑線,則 h4發光到黑線光全部被吸收,h4接收端,沒有收到任何訊號,因為h4不導通 截止 則t1 vcc 提問t1會不會等於5v,哪位有測試 原理圖 檢測到白紙有接...

Raspberry Pi樹莓派小車學習 前期

寫於2019 10 18 在弄樹莓派之前不知道樹莓派是什麼,聽了老師說的,說可以做很多事情,聽完也是懵懵懂懂的,只有自己去弄了才會了解一點,第一次去查樹莓派是什麼,能做什麼,就有以下定義 raspberry pi是一台小型計算機,可以完成很多事情。然後還看到很多由樹莓派做的專案,這裡就不一一舉例了。...

使用樹莓派製作智慧型小車

小車的控制最主要有兩方面的控制,乙個是小車的前後左右的運動控制,乙個是攝像頭的拍攝 上下左右轉運的控制。複製 coding utf 8 import rpi.gpio as gpio import time 小車電機引腳定義 leftin1 20 leftin2 21 leftspeed 16 ri...