電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用OpenCV的車道跟隨機(jī)器人

使用OpenCV的車道跟隨機(jī)器人

2023-06-26 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

描述

Small Intro

在這個項目中,我 使用OpenCVRaspberry pi設(shè)計了一個車道跟隨機(jī)器人。

poYBAGNY0PqAAF9QAAFUdW8kQe0964.png
樣本輸出
?

Step 1 : Importing Libraries

首先我們導(dǎo)入 OpenCV、Numpy、數(shù)學(xué)和串行庫。

import cv2
import numpy as np
import math
import serial

Step 2 : Read Image from your directory

image = cv2.imread(r'C:\Users\aasai\Desktop\new1.jpeg')
?
?
?
pYYBAGNY0P2AJGGRAAHxcoztTiI58.jpeg
?
1 / 2 ? Raspi 相機(jī)拍攝的圖像
?

Step 3 : Color Conversion

將我們的 BGR 圖像轉(zhuǎn)換為灰色。灰度圖像僅包含 [0-255] 范圍內(nèi)的值。

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
poYBAGNY0P-AHTVvAAB_RS_taN8837.png
灰度圖像
?

Step 4 : Image Smoothing

圖像模糊/平滑圖像平滑以減少噪點(diǎn)。它是在各種低通濾波器內(nèi)核的幫助下完成的。這里我們使用了高斯核。了解更多關(guān)于不同內(nèi)核的信息點(diǎn)擊這里

# given input image, kernel width =5 height = 5, Gaussian kernel standard deviation
k_width = 5
k_height = 5
blurred = cv2.GaussianBlur(gray, (k_width, k_height), 0)
poYBAGNY0QKAKCNDAABQAuvrJSM575.png
平滑圖像
?

Step 5 : Edge Detection

Canny邊緣檢測算法是一種流行的邊緣檢測算法,用于檢測圖像中的邊緣。為了保留圖像中的高梯度值,我們選擇低閾值和高閾值。這將幫助我們保留圖像中的強(qiáng)邊緣。

# Find the edges in the image using canny detector
threshold1 = 80
threshold2 = 80
edged = cv2.Canny(blurred, threshold1, threshold2)
pYYBAGNY0QSARSBSAABu4rfyowA742.png
邊緣檢測
?

Step 6 : Find Lines

霍夫變換是一種特征提取方法,用于檢測圖像中的簡單形狀,如圓形、線條等。在這里,您可以了解更多相關(guān)信息。

# it will return line coordinates,it will return 3darray.
lines = cv2.HoughLinesP(edged,1,np.pi/180,max_slider,minLineLength,maxLineGap)

for x in range(0, len(lines)):
    for x1,y1,x2,y2 in lines[x]:
        # draw line in image using cv2.line function.
        cv2.line(image,(x1,y1),(x2,y2),(255,0,0),3)
        theta=theta+math.atan2((y2-y1),(x2-x1))
        print(theta)

About theta calculation:

atan2() 函數(shù)以弧度為單位返回值,表示 -pi 和 pi 之間的值,表示 (x, y) 點(diǎn)與正 x 軸的角度 theta。

poYBAGNY0QeAZZ-aAABGJ1jseAg791.jpg
來源:https://www.learnopencv.com/hough-transform-with-opencv-c-python/
?
?
?
?
poYBAGNY0QmAUARjAACcg2gE_Yg571.png
?
1 / 2
?

您可以使用這行代碼獲取第一行的坐標(biāo)。

for x1,y1,x2,y2 in lines[0]:
pYYBAGNY0QyAYoI2AAAHHCf3jU0387.png
行[0]的輸出
?

Step 7 : Decision Making Part

現(xiàn)在,我們要設(shè)置閾值,根據(jù)閾值和θ值之間的差異,我們將向arduino發(fā)送命令以驅(qū)動特定方向的電機(jī)。

threshold=5
if(theta>threshold):
    print("Go left")
if(theta<-threshold):
    print("Go right")
if(abs(theta)<threshold):
    print("Go straight")

Step 8 : Integrate

poYBAGNY0Q6AKI8QAAE9vrqsQCU514.png
示意圖
?

Arduino Code :

Arduino將從 Raspberry Pi 串行端口接收命令。

// assign pin num
int right_pin = 12;
int left_pin = 13;
int const ENA = 10;  
int const ENB = 11; 


// initial command
int command = 0;

void setup()

{
  pinMode(right_pin, OUTPUT);
  pinMode(left_pin, OUTPUT);
  pinMode(ENA, OUTPUT);   // set all the motor control pins to outputs
  pinMode(ENB, OUTPUT);

  Serial.begin(115200);
  
  while (!Serial);
  
  Serial.println("Opencv Lane Detect Autonomous Robot");

}

void loop() {

if (Serial.available())

{
  //int state = Serial.parseInt();
  int state = Serial.read();

  if (state == 4)
  {
    
    digitalWrite(left_pin, LOW);
    digitalWrite(right_pin, HIGH);
    digitalWrite(ENA, HIGH);
    digitalWrite(ENB, HIGH);
    Serial.println("Left");
  }

  if (state == 2)
  {
    digitalWrite(left_pin, LOW);
    digitalWrite(right_pin, LOW);
    digitalWrite(ENA, HIGH);
    digitalWrite(ENB, HIGH);
    Serial.println("Right");
    Serial.println("Reverse");
  }

  if (state == 3)
  {
    digitalWrite(left_pin, HIGH);
    digitalWrite(right_pin, LOW);
    digitalWrite(ENA, HIGH);
    digitalWrite(ENB, HIGH);

  Serial.println("Right");
  }
  if (state == 1)
  {
    digitalWrite(left_pin, HIGH);
    digitalWrite(right_pin, HIGH);
    digitalWrite(ENA, HIGH);
    digitalWrite(ENB, HIGH);

  Serial.println("Forward");
  }
  if (state == 5)
  {
    digitalWrite(left_pin, LOW);
    digitalWrite(right_pin, LOW);
    digitalWrite(ENA, LOW);
    digitalWrite(ENB, LOW);

  Serial.println("Stop");
  }
}
}
poYBAGNY0RSAfwUpAALj6T63YF027.jpeg
?

?

感謝信

感謝OpenCV Python 文檔。

Thanks閱讀這個項目。希望這個項目能給你一些關(guān)于 OpenCV Lane Follow 機(jī)器人的見解,你可以按照給定的步驟做同樣的事情。

我在沉默中努力工作,我的機(jī)器人制造噪音。
poYBAGNY0RaAO5FaAABP1ONlmvo543.jpg
來源:https://www.google.com/url?sa=i&url=https%3A%2F%2Fitaliandirectory.eu%2Fwill-robots-eventually-able-insert-key-lock%2F&psig=AOvVaw0q_aR0pBfINA7scyxOyS4x&ust=1588470268487000&source=images&cd= vfe&ved=0CA0QjhxqFwoTCODb4YaHlOkCFQAAAAAdAAAAABAP
?

?


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

評論

查看更多

下載排行

本周

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

本月

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

總榜

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