資料介紹
描述
Small Intro
在這個項目中,我 使用OpenCV和Raspberry pi設(shè)計了一個車道跟隨機(jī)器人。
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')
Step 3 : Color Conversion
將我們的 BGR 圖像轉(zhuǎn)換為灰色。灰度圖像僅包含 [0-255] 范圍內(nèi)的值。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
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)
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)
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。
您可以使用這行代碼獲取第一行的坐標(biāo)。
for x1,y1,x2,y2 in lines[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
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");
}
}
}
?
感謝信
感謝OpenCV Python 文檔。
Thanks
閱讀這個項目。希望這個項目能給你一些關(guān)于 OpenCV Lane Follow 機(jī)器人的見解,你可以按照給定的步驟做同樣的事情。
我在沉默中努力工作,我的機(jī)器人制造噪音。
?
- DIY簡單的線跟隨機(jī)器人
- 基于Arduino Nano的PID線路跟隨機(jī)器人 2次下載
- 基于PID的線跟隨機(jī)器人
- 線跟隨機(jī)器人開源硬件
- 使用TI RSLK MAX構(gòu)建聲音跟隨機(jī)器人
- 使用Pico的線跟隨機(jī)器人
- PID控制線跟隨機(jī)器人
- 人類跟隨機(jī)器人v2.0開源分享
- 如何制作Arduino人類跟隨機(jī)器人
- 帶有PID控制的線跟隨機(jī)器人
- 最簡單的線跟隨機(jī)器人
- 物體跟隨機(jī)器人開源分享
- 如何使用Arduino制作跟隨機(jī)器人
- 人類跟隨機(jī)器人開源分享
- 線跟隨機(jī)器人開源項目
- 一個簡單的線路跟隨器機(jī)器人電路 2189次閱讀
- 基于ATmega16構(gòu)建的線跟隨機(jī)器人的完整電路圖 2043次閱讀
- 基于使用Arduino板及電機(jī)驅(qū)動器對機(jī)器人進(jìn)行編程介紹 3839次閱讀
- 面對疫情 醫(yī)療機(jī)器人能幫上什么忙? 2236次閱讀
- 工業(yè)機(jī)器人編程入門_工業(yè)機(jī)器人的編程要求 9787次閱讀
- 醫(yī)用機(jī)器人的定義_醫(yī)用機(jī)器人發(fā)展 3257次閱讀
- 醫(yī)用機(jī)器人的功能_醫(yī)用機(jī)器人分類 2462次閱讀
- 智能跟隨系統(tǒng)應(yīng)用領(lǐng)域和功能介紹 5566次閱讀
- 協(xié)作機(jī)器人的起源_為什么需要協(xié)作機(jī)器人 8322次閱讀
- 如何區(qū)分機(jī)器人、協(xié)作機(jī)器人和移動機(jī)器人? 7029次閱讀
- 工業(yè)機(jī)器人結(jié)構(gòu)、驅(qū)動及技術(shù)指標(biāo)詳解 3179次閱讀
- 基于PLC的機(jī)器人伺服運(yùn)動控制系統(tǒng)設(shè)計詳解 1.6w次閱讀
- 軟體機(jī)器人 前所未見的機(jī)器人 3770次閱讀
- 機(jī)器人的最佳編程語言是什么?機(jī)器人十大流行編程語言匯總 3.5w次閱讀
- 智能機(jī)器人的三大關(guān)鍵技術(shù)詳解 3.2w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多