国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車

這篇具有很好參考價(jià)值的文章主要介紹了花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

常見的視覺循跡小車都具備有路徑識別、軌跡跟蹤、轉(zhuǎn)向避障、自主決策等基本功能,如果不采用紅外避障的方案,那么想要完全滿足以上這些功能,攝像頭、電機(jī)、傳感器這類關(guān)鍵部件缺一不可,由此一來小車成本也就難以控制了。

但如果,有這樣一款視覺循跡小車,它可以完全自己手搓,并用成本極低的雪糕棒來搭建車體架構(gòu),不僅保留了傳統(tǒng)循跡小車具備的所有功能,還額外適配上一塊小屏幕并配上UI界面用于升級人機(jī)交互方式。

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

更重要的是,它的器件成本被壓縮到200元左右,這樣的視覺循跡小車能讓你心動嗎~

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

核桃派視覺循跡小車簡介

核桃派H616視覺循跡小車的循跡功能和人機(jī)交互界面整體代碼由Python+Qt實(shí)現(xiàn),它通過攝像頭獲取周圍環(huán)境的圖像信息,并利用圖像處理算法識別出特定的標(biāo)記或路徑,然后根據(jù)標(biāo)記或路徑的形狀和方向信息,自動控制小車的行駛方向和速度,以實(shí)現(xiàn)沿著預(yù)定軌跡自動行駛的目的。

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

手搓一臺視覺循跡小車所需要用到的基礎(chǔ)硬件材料如下:

1、核桃派H616開發(fā)板+LCD屏幕≈178元;
2、四個(gè)電機(jī)+車輪≈16元;
3、電機(jī)驅(qū)動模塊≈4元;
4、攝像頭≈50元;
5、移動電源≈20元;
6、雪糕棒若干≈4元(也可以≈不要錢);

循跡功能實(shí)現(xiàn)

要讓小車實(shí)現(xiàn)循跡自運(yùn)動的操作,其實(shí)也可以說是一個(gè)在教小車如何精準(zhǔn)識別線路并做出判斷的過程,想要小車的攝像頭實(shí)現(xiàn)對路線的準(zhǔn)確判斷,就需要用到一個(gè)目前循跡小車最廣泛采用的技術(shù)手段——二值化。

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

二值化是圖像分割的一種方法,用于將圖像中的像素點(diǎn)矩陣的灰度值設(shè)置為0或255,也就是將整個(gè)圖像呈現(xiàn)出明顯的只有黑和白的視覺效果。

在二值化過程中,將大于某個(gè)臨界灰度值的像素灰度設(shè)為灰度極大值(通常是255),將小于這個(gè)值的像素灰度設(shè)為灰度極小值(通常是0),從而實(shí)現(xiàn)二值化。

# 根據(jù)不同模式,用不同的hsv上下限值
upper_hsv = (180,255,100)
lower_hsv = (0,0,0)
grayImage = cv2.inRange(hsvImage, np.array(lower_hsv), np.array( upper_hsv)) # 顏色二值化

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

二值化圖像后,整個(gè)畫面會被區(qū)分為黑白分明的兩種顏色,之后就需要進(jìn)行路線輪廓的描繪以及質(zhì)心的標(biāo)注,這個(gè)操作的目的是讓小車知道該往左拐還是往右拐,進(jìn)而控制兩邊車輪的速度。

  • 獲取最大輪廓
# 獲取所有輪廓,畫出所有輪廓
contours, hierarchy = cv2.findContours(grayImage, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
areas = [cv2.contourArea(c) for c in contours]]
cv2.drawContours(rgbImage,contours, -1,(0,255,0),3)
  • 計(jì)算質(zhì)心
# 計(jì)算面積最大輪廓的質(zhì)心
areas = [cv2.contourArea(c) for c in contours]
   try:
      M = cv2.moments(contours[areas.index(max(areas))])
   except:
      pass
   M10=M.get("m10")
   M01=M.get("m01")
   M00=M.get("m00")
   if M00 <= 0 :
      continue
   cX = int(M10 / M00)
   cY = int(M01 / M00)
# 繪制質(zhì)心
cv2.circle(rgbImage, (cX, cY), 15, (255, 0, 255), -1)

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

在繪制輪廓與質(zhì)心后就需要進(jìn)行質(zhì)心坐標(biāo)的判斷,這里的原理很簡單,就是質(zhì)心偏左就往左轉(zhuǎn),質(zhì)心偏右就往右轉(zhuǎn),在判斷的同時(shí)通過電機(jī)來控制兩邊車輪的速度進(jìn)而控制小車的行駛方向。

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616
花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616
花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

根據(jù)質(zhì)心的位置計(jì)算車輪速度的控制參數(shù)postion,根據(jù)具體的計(jì)算公式可以得知,postion的取值范圍為-50到+50,其中0代表質(zhì)心在正中間,+越大質(zhì)心越往左,-越大質(zhì)心越往右,則進(jìn)行下面的速度計(jì)算和控制,否則將速度設(shè)置為0,再根據(jù)postion和delta_sum的值以及其他參數(shù)的調(diào)整,計(jì)算并控制左右車輪的速度。


# 車輪速度控制
if self.flag_start.status() == True :
    # -50 ~ +50  :0為正中間,+越大則越往左,-越大則越往右,
    postion = int(int(center_x - cX) / int(center_x / 50)) 
    # postion += self.delta_sum 

    step = self.postion_last - postion
    self.delta_sum += (postion - step)*0.01
    if self.delta_sum > 100:
        self.delta_sum =  100
    elif self.delta_sum < -100:
        self.delta_sum =  -100
    if abs(postion) < 5 :
        self.delta_sum = 0
       
    # print("self.delta_sum", self.delta_sum)
    self.postion_last = postion
         
    speed_l = 50 - postion - int(self.delta_sum) 
    speed_r = 50 + postion + int(self.delta_sum) 

    motor.L.speed(speed_l)
    motor.R.speed(speed_r)
    self._slider_l.setValue(speed_l)
    self._slider_r.setValue(speed_r)

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

人機(jī)交互界面

核桃派H616開發(fā)板上預(yù)裝了PyQt,所以可以使用Qt自帶的設(shè)計(jì)器軟件來畫窗口,在設(shè)計(jì)好后通過命令一鍵轉(zhuǎn)化為Python代碼,再去核桃派的開發(fā)文檔復(fù)制一段顯示案例的代碼,就可以輕松在電腦上預(yù)覽到剛剛的窗口畫面。

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

為了在遠(yuǎn)程服務(wù)器上運(yùn)行圖形界面應(yīng)用程序,通過設(shè)置os.environ[“DISPLAY”] = ":0.0"允許Thonny遠(yuǎn)程運(yùn)行。

# 允許Thonny遠(yuǎn)程運(yùn)行
import os
os.environ["DISPLAY"] = ":0.0"

定義了一個(gè)名為event_press的函數(shù),用于處理QPushButton按鈕的released事件。當(dāng)按鈕被釋放時(shí),切換work.flag_start的狀態(tài),并根據(jù)狀態(tài)改變按鈕的文本。

def event_press():
    if work.flag_start.status():
        work.flag_start.disable()
        ui.pushButton.setText("點(diǎn)擊開始")
    else :
        work.flag_start.enable()
        ui.pushButton.setText("點(diǎn)擊結(jié)束")

花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車,全志H616,智能硬件,ui,交互,循跡小車,全志,H616

為了處理三個(gè)不同按鈕的released事件,定義了change_to_mode三個(gè)函數(shù),這些函數(shù)用于將work.flag_mode的模式設(shè)置為不同的值。


def change_to_mode0():
    work.flag_mode.set_mod( 0 )
def change_to_mode1():
    work.flag_mode.set_mod( 1 )
def change_to_mode2():
    work.flag_mode.set_mod( 2 )
ui.pushButton.released.connect(event_press)
ui.pushButton_auto.released.connect(change_to_mode0)
ui.pushButton_black.released.connect(change_to_mode1)
ui.pushButton_white.released.connect(change_to_mode2)

以上這些代碼片段是構(gòu)成一個(gè)由PyQt所創(chuàng)建GUI的關(guān)鍵部分。它通過創(chuàng)建一個(gè)窗口,并在窗口中顯示了一些UI元素,同時(shí)定義了一些事件處理函數(shù),這個(gè)應(yīng)用程序根據(jù)用戶的操作來控制某些功能,并使用定時(shí)器來讓解釋器每隔一段時(shí)間運(yùn)行一次,以保持界面響應(yīng)性能,最后進(jìn)入主循環(huán)等待事件的觸發(fā)和處理。文章來源地址http://www.zghlxwxcb.cn/news/detail-832118.html

到了這里,關(guān)于花費(fèi)200元,我用全志H616和雪糕棒手搓了一臺可UI交互的視覺循跡小車的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Orangepi Zero2 全志H616(一):配置初始化和啟動流程

    Orangepi Zero2 全志H616(一):配置初始化和啟動流程

    目錄 一,Orangepi簡單說明 ①為什么使用全志H616 ②基本特性 ③配套操作系統(tǒng)支持 二,刷機(jī)和系統(tǒng)啟動 ①準(zhǔn)備工具 ②登錄系統(tǒng) ● 開發(fā)板供電 ● 登錄 ● 開發(fā)板上板載LED燈測試說明 ③修改登錄密碼 ④網(wǎng)絡(luò)配置 ⑤SSH登陸開發(fā)板 三,vim設(shè)置:tab鍵縮進(jìn)及代碼行數(shù)顯示 四,全志

    2024年02月04日
    瀏覽(26)
  • 在全志H616核桃派上實(shí)現(xiàn)USB攝像頭的OpenCV顏色檢測

    在全志H616核桃派上實(shí)現(xiàn)USB攝像頭的OpenCV顏色檢測

    在給核桃派開發(fā)板用OpenCV讀取圖像并顯示到pyqt5的窗口上并加入顏色檢測功能,嘗試將圖像中所有藍(lán)色的東西都用一個(gè)框標(biāo)記出來。 按照慣例,先要介紹一下opencv中常用的hsv像素格式。顏色還是那個(gè)顏色,只是描述顏色用的參數(shù)變了。h代表色調(diào),s代表飽和度,v代表明度,比

    2024年01月23日
    瀏覽(19)
  • 【Orangepi Zero2 全志H616】驅(qū)動串口實(shí)現(xiàn)Tik Tok—VUI(語音交互)

    【Orangepi Zero2 全志H616】驅(qū)動串口實(shí)現(xiàn)Tik Tok—VUI(語音交互)

    一、編程實(shí)現(xiàn)語音和開發(fā)板通信 wiringpi庫源碼 demo.c 二、基于前面串口的代碼修改實(shí)現(xiàn) uartTool.h uartTool.c uartTest.c 三、ADB adb控制指令 四、手機(jī)接入Linux熱拔插相關(guān) a. 把手機(jī)接入開發(fā)板 b. 安裝adb工具,在終端輸入adb安裝指令: sudo apt-get install adb c. dmeg能查看到手機(jī)接入的信息,

    2024年02月21日
    瀏覽(30)
  • 【Orangepi Zero2 全志H616】驅(qū)動舵機(jī)控制 / Linux定時(shí)器(signal、setitimer)

    【Orangepi Zero2 全志H616】驅(qū)動舵機(jī)控制 / Linux定時(shí)器(signal、setitimer)

    一、SG90舵機(jī)開發(fā) 舵機(jī)基本介紹 二、Linux定時(shí)器 signal 函數(shù) setitimer 函數(shù)原型 signal、setitimer函數(shù)API調(diào)用 三、舵機(jī) 軟件PWM實(shí)現(xiàn) 如下圖所示,最便宜的舵機(jī)sg90,常用三根或者四根接線,黃色為PWM信號控制用處: 垃圾桶項(xiàng)目開蓋用、智能小車的全比例轉(zhuǎn)向、攝像頭云臺、機(jī)械臂等

    2024年02月05日
    瀏覽(26)
  • 【香橙派+DHT11】香橙派(全志H616)+ DHT11溫濕度傳感器的驅(qū)動教程

    【香橙派+DHT11】香橙派(全志H616)+ DHT11溫濕度傳感器的驅(qū)動教程

    最近寫DHT11的代碼到香橙派(全志H616)上,發(fā)現(xiàn)網(wǎng)上案例基本上都是樹莓派+DHT11的居多,香橙派的少,少數(shù)找得到的代碼跑起來也是不穩(wěn)定或者數(shù)據(jù)相對不太準(zhǔn)確,于是這里自己寫了一篇,供大家參考和批評指正 產(chǎn)品概述 DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出

    2024年02月11日
    瀏覽(24)
  • 【嵌入式Linux項(xiàng)目】基于Linux的全志H616開發(fā)板智能家居項(xiàng)目(語音控制、人臉識別、安卓APP和PC端QT客戶端遠(yuǎn)程操控)有視頻功能展示

    【嵌入式Linux項(xiàng)目】基于Linux的全志H616開發(fā)板智能家居項(xiàng)目(語音控制、人臉識別、安卓APP和PC端QT客戶端遠(yuǎn)程操控)有視頻功能展示

    目錄 一、功能需求 二、開發(fā)環(huán)境 1、硬件: 2、軟件: 3、引腳分配: 三、關(guān)鍵點(diǎn) 1、設(shè)計(jì)模式之工廠模式 2、線程 3、wiringPi庫下的相關(guān)硬件操作函數(shù)調(diào)用 4、語音模塊的串口通信 5、攝像頭的實(shí)時(shí)監(jiān)控和拍照功能 6、人臉識別 7、qt程序跨平臺運(yùn)行(編譯成安卓APP) 四、編譯和

    2024年02月15日
    瀏覽(24)
  • 用全志R128復(fù)刻自平衡賽車機(jī)器人,還實(shí)現(xiàn)了三種不同的操控方式

    用全志R128復(fù)刻自平衡賽車機(jī)器人,還實(shí)現(xiàn)了三種不同的操控方式

    經(jīng)常翻車的朋友們都知道,能在翻車后快速擺正車身的車才是好車。 就像動畫《四驅(qū)兄弟》中展現(xiàn)的那樣,在比賽中需要跟著賽車一起跑圈,而且賽車如果被撞翻還需要重新用手扶正,所浪費(fèi)的時(shí)間非常影響比賽結(jié)果。 如果小豪和小烈可以擁有一款能通過發(fā)揮R128的WiFi藍(lán)牙特

    2024年02月03日
    瀏覽(16)
  • 無敵!我用【C語言】手搓出了一個(gè)體系完整的【員工管理系統(tǒng)】還能玩游戲聽音樂?(超詳細(xì),附完整源碼)

    無敵!我用【C語言】手搓出了一個(gè)體系完整的【員工管理系統(tǒng)】還能玩游戲聽音樂?(超詳細(xì),附完整源碼)

    博主簡介: Hello大家好呀,我是陳童學(xué),一個(gè)與你一樣正在慢慢前行的人。 博主主頁: @陳童學(xué)哦 所屬專欄: C語言程序設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目 如果本文對你有所幫助的話,還希望可以點(diǎn)贊??收藏??支持一下哦! 前言:員工管理系統(tǒng)是一款面向公司管理員的管理工具,旨在提供員工

    2024年02月08日
    瀏覽(31)
  • ChatGPT教我用200行代碼寫一個(gè)簡版Vue框架 - OpenTiny

    最近,我正在準(zhǔn)備一份關(guān)于 Vue 基礎(chǔ)的學(xué)習(xí)材料。期間我突發(fā)奇想:能否利用現(xiàn)在熱門的 ChatGPT 幫我創(chuàng)建學(xué)習(xí)內(nèi)容?其實(shí) Vue 本身不難學(xué),特別是基礎(chǔ)用法,但是,如果你想深入掌握 Vue,就要通過閱讀 Vue 的源碼來了解其原理。然而,不是每個(gè)人都有足夠的時(shí)間和耐心閱讀 V

    2024年02月08日
    瀏覽(98)
  • 全志F1C200S嵌入式驅(qū)動開發(fā)(串口驅(qū)動)

    全志F1C200S嵌入式驅(qū)動開發(fā)(串口驅(qū)動)

    【 聲明:版權(quán)所有,歡迎轉(zhuǎn)載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 對于uboot、kernel和rootfs來說,他們的串口輸出一般都是uart0。一般這么做,是沒有問題的。只不過我們自己買的這塊f1c200s電路板,設(shè)計(jì)者把uart轉(zhuǎn)ttl的接口,改接到了uart1上面。不過這樣

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包