整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          如何用pix飛控來玩車

          如何用pix飛控來玩車

          . 用pix玩車非常簡單,復(fù)雜度遠遠低于無人機;

          2. 不管是ardupilot,還是px4固件都是原生支持無人車,不需要做任何代碼改動的二次開發(fā),需要做的就是參數(shù)修改和傳感器校準;

          3. ardupilot需要刷成ardurover固件,這個固件同時也支持船。

          a. 輸出1通道接舵機是車輛轉(zhuǎn)向

          b. 輸出3通道接電調(diào),控制油門動力

          4. px4固件沒有特定的固件,只需要改改機架到對應(yīng)的車輛即可(SYS_AUTOSTART=50000)

          a. 輸出2通道接轉(zhuǎn)向舵機

          b. 輸出4通道接無刷電調(diào)

          5. 陀螺儀,羅盤校準,這些和無人沒有差別。

          6. 解鎖電機,默認手動模式,可以設(shè)置多個模式 比如返航,自動等;


          給飛控用串口接上帶攝像頭的樹莓派,這樣一個智能車就跑起來了,還帶圖傳和數(shù)傳, 如果再給樹莓派接一個帶sim卡的usb無線網(wǎng)卡 ,這樣一個帶4G的智能小車了。

          參考文檔:

          https://docs.px4.io/main/en/frames_rover/traxxas_stampede.html
          https://ardupilot.org/rover/docs/gettit.html


          基于單片機的機器視覺人體識別小車

          • 難度系數(shù):4分
          • 工作量:4分
          • 創(chuàng)新點:3分

          1 簡介

          智能小車應(yīng)用變得越來越重要,它不僅是能夠把代碼與實踐連接起來的簡單實例,而且在即將到來的智能時代,也將是最先廣泛使用的智能產(chǎn)品。
          本項目基于AI視覺和嵌入式小車結(jié)合的項目。視覺識別是一個主要內(nèi)容,是信息輸入的重要方式。因此,AI視覺和機器小車的互相配合加持對實際生產(chǎn)生活具有很大的意義。

          實現(xiàn)了控制小車行進,并實時檢測人體目標。

          2 主要器件

          • 樹莓派3B+
          • 四個直流電機
          • 一個小車底盤+四個車輪
          • L298N驅(qū)動模塊(介于樹莓派與馬達之間的橋梁)
          • 充電寶一個(用于給樹莓派供電)
          • 18650鋰電池兩節(jié)
          • 杜邦線
          • 面包板
          • .蜂鳴器




          3 線路連接


          圖片是用fritzing這個軟件畫的,也是今天第一次用,畫的有點丑,湊合看吧。我沒有找到L298N這個模塊,就用圖中紅色的這個代替一下吧。

          我的馬達控制邏輯比較簡單,小車左右兩側(cè)的馬達為一組同時控制,小車左邊兩個馬達正負極分別連在out1、out2接口上,右邊兩個馬達正負極分別連在out3、out4上,通過給out1和out2,out3和out4輸出相反的電平實現(xiàn)馬達的轉(zhuǎn)動,采用BOARD編碼格式,使用35、33、31、29四個GPIO接口分別連接到L298N驅(qū)動模塊上的in1、in2、in3、in4接口,同時將32、36、38、40分別連接到四個使能端接口,通過python編程設(shè)置gpio接口輸出高電平和低電平實現(xiàn)相應(yīng)的控制,蜂鳴器連接到gpio的11號端口上。

          4 Yolo環(huán)境搭建

          根據(jù)自己NVIDIA顯卡型號和驅(qū)動版本安裝CUDA和CUDNN

          1、官網(wǎng)下載:https://developer.nvidia.com/cuda-90-download-archive

          如下:


          2、安裝依賴庫

          sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

          否則將會報錯:



          3、注意C++\G++版本

          CUDA9.0要求GCC版本是5.x或者6.x,其他版本不可以,需要自己進行配置,通過以下命令才對gcc版本進行修改。

          查看版本:

          g++ --version

          版本安裝:

          sudo apt-get install gcc-5
          sudo apt-get install g++-5

          通過命令替換掉之前的版本:

          sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
          sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50

          最后記得再次查看版本是否修改成功。

          4、運行run文件

          sudo sh cuda_9.0.176_384.81_linux.run

          安裝協(xié)議可以直接按q跳到最末尾,注意一項:

          Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
          (y)es/(n)o/(q)uit: n                    # 安裝NVIDIA加速圖形驅(qū)動程序,這里選擇n

          5、添加環(huán)境變量

          進行環(huán)境的配置,打開環(huán)境變量配置文件

          sudo gedit ~/.bashrc

          在末尾把以下配置寫入并保存:

          #CUDA
          export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}} 
          export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

          最后執(zhí)行:

          source ~/.bashrc

          5 yolo模型訓(xùn)練

          本文訓(xùn)練數(shù)據(jù)集包括從VOC數(shù)據(jù)集中提取出6095張人體圖片,以及使用LabelImg工具標注的200張python爬蟲程序獲取的人體圖片作為補充。

          使用labelimg標記圖片



          從VOC數(shù)據(jù)集里提取出人體圖片

          import os
          import os.path
          import shutil
          
          fileDir_ann="D:\\VOC\\VOCdevkit\\VOC2012\\Annotations"
          fileDir_img="D:\\VOC\\VOCdevkit\\VOC2012\\JPEGImages\\"
          saveDir_img="D:\\VOC\\VOCdevkit\\VOC2012\\JPEGImages_ssd\\"
          
          if not os.path.exists(saveDir_img):
              os.mkdir(saveDir_img)
          
          names=locals()
          
          for files in os.walk(fileDir_ann):
              for file in files[2]:
          
          
          
                  saveDir_ann="D:\\VOC\\VOCdevkit\\VOC2012\\Annotations_ssd\\"
                  if not os.path.exists(saveDir_ann):
                      os.mkdir(saveDir_ann)
          
                  fp=open(fileDir_ann + '\\' + file)
                  saveDir_ann=saveDir_ann + file
                  fp_w=open(saveDir_ann, 'w')
                  classes=['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', '>cat<', 'chair', 'cow',
                             'diningtable', \
                             'dog', 'horse', 'motorbike', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor', 'person']
          
                  lines=fp.readlines()
          
                  ind_start=[]
                  ind_end=[]
                  lines_id_start=lines[:]
                  lines_id_end=lines[:]
          
                  while "\t<object>\n" in lines_id_start:
                      a=lines_id_start.index("\t<object>\n")
                      ind_start.append(a)
                      lines_id_start[a]="delete"
          
                  while "\t</object>\n" in lines_id_end:
                      b=lines_id_end.index("\t</object>\n")
                      ind_end.append(b)
                      lines_id_end[b]="delete"
          
                  i=0
                  for k in range(0, len(ind_start)):
                      for j in range(0, len(classes)):
                          if classes[j] in lines[ind_start[i] + 1]:
                              a=ind_start[i]
                              names['block%d' % k]=[lines[a], lines[a + 1], \
                                                      lines[a + 2], lines[a + 3], lines[a + 4], \
                                                      lines[a + 5], lines[a + 6], lines[a + 7], \
                                                      lines[a + 8], lines[a + 9], lines[a + 10], \
                                                      lines[ind_end[i]]]
                              break
                      i +=1
          
                  classes1='\t\t<name>person</name>\n'
          
          
          
                  string_start=lines[0:ind_start[0]]
                  string_end=[lines[len(lines) - 1]]
          
                  a=0
                  for k in range(0, len(ind_start)):
                      if classes1 in names['block%d' % k]:
                          a +=1
                          string_start +=names['block%d' % k]
          
          
          
                  string_start +=string_end
                  for c in range(0, len(string_start)):
                      fp_w.write(string_start[c])
                  fp_w.close()
          
                  if a==0:
                      os.remove(saveDir_ann)
                  else:
                      name_img=fileDir_img + os.path.splitext(file)[0] + ".jpg"
                      shutil.copy(name_img, saveDir_img)
                  fp.close()
          
          


          修改YOLOv3 tiny 配置文件




          下載預(yù)訓(xùn)練權(quán)重開始訓(xùn)練

          預(yù)訓(xùn)練權(quán)重可以減少前期的迭代次數(shù),加速訓(xùn)練過程。通過繪制訓(xùn)練過程的loss曲線可知,開始時loss下降較快,之后開始在一水平線上波動。訓(xùn)練結(jié)束得到y(tǒng)olov3-voc_final.weights模型文件。



          模型效果:


          6 模型轉(zhuǎn)化

          但是模型要想部署在算力微弱的樹莓派上,還需要進行兩次模型轉(zhuǎn)化才能運行在NCS上進行前向推理。

          模型轉(zhuǎn)化:
          第一次轉(zhuǎn)化:(.weight–>.pb)
          這里的模型轉(zhuǎn)化OpenVINO給出了官方指南https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_convert_model_tf_specific_Convert_YOLO_From_Tensorflow.html 但是可能會出現(xiàn)錯誤。

           python3 convert_weights_pb.py \
          --class_names yolov3-tiny-mine.names \
          --weights_file weights/yolov3-tiny-mine_40000.weights \
          --data_format NHWC \
          --tiny \
          --output_graph pbmodels/frozen_yolov3-tiny-mine.pb

          執(zhí)行完上述代碼,就能得到Tensorflow支持的模型文件。

          第二次轉(zhuǎn)化:(.pb–>.IR)
          第二次的模型轉(zhuǎn)化我在windows環(huán)境下完成的。

          python "C:\Program Files (x86)\IntelSWTools\openvino_2019.1.087\deployment_tools\model_optimize



          7 樹莓派環(huán)境配置

          1. 下載燒寫工具Pi Imager  
             打開樹莓派官方網(wǎng)站https://www.raspberrypi.org/software/,根據(jù)下圖指示下載Pi Imager并安裝  
             ![在這里插入圖片描述](https://img-blog.csdnimg.cn/685e0c975aec4a4ab9dad339c34d0c67.png)

          2.在線燒寫
          ① 將配套SD卡放入讀卡器插入到電腦的USB口;
          ② 打開燒錄軟件Pi Imager,在“operating system”選擇“Raspberry Pi OS(32-bit)”(第一項);


          ③ 在"SD Card"選擇SD卡,然后點擊“write”,然后等待燒寫完成。
          3. 離線燒寫
          ① 下載raspberry系統(tǒng)鏡像
          打開樹莓派官方網(wǎng)站https://www.raspberrypi.org/software/,點擊按鈕“See all download options”


          ② 在“Raspberry Pi OS with desktop and recommended
          software”項點擊“Download”,等待下載完成。


          ③ 燒錄系統(tǒng):
          在Pi Imager中“Operating System”選擇最后一項“use Custom”,在彈出對話框中選擇剛剛下載的鏡像。后續(xù)步驟同在線燒錄。


          4. 啟動樹莓派,驗證系統(tǒng)
          ① 將SD卡插到樹莓派SD卡插槽,如下圖;
          ② 打開供電開關(guān),給系統(tǒng)供電,指示燈點亮并閃爍,電壓表實時顯示電池電壓(當電壓低于6.8V以下,應(yīng)及時給小車供電);
          ③ 二十多秒后,系統(tǒng)啟動完成。正常啟動完成后,紅燈亮,綠燈閃爍。

          模型部署:
          使用github PINTO0309的OpenVINO-YoloV3工程,應(yīng)該是個日本的工程師寫的,特別感謝。

          利用工程下的openvino_tiny-yolov3_MultiStick_test.py進行測試,在文件中指定我們轉(zhuǎn)化好的模型文件。



          運行效果

          image
          盡管速度不快,但最快也能達到7-8幀的樣子。

          本文將訓(xùn)練好的原始模型經(jīng)過兩次轉(zhuǎn)化得到了可以被NCS所支持的模型文件,并搭建好樹莓派所需的運行環(huán)境,最終將模型部署在樹莓派上并完成了測試。下篇文章將介紹,樹莓派小車的控制程序以及微信報警程序的實現(xiàn)。



          8 最后

          嵌入式物聯(lián)網(wǎng)的學(xué)習(xí)之路非常漫長,不少人因為學(xué)習(xí)路線不對或者學(xué)習(xí)內(nèi)容不夠?qū)I(yè)而錯失高薪offer。不過別擔(dān)心,我為大家整理了一份150多G的學(xué)習(xí)資源,基本上涵蓋了嵌入式物聯(lián)網(wǎng)學(xué)習(xí)的所有內(nèi)容。點擊下方鏈接,0元領(lǐng)取學(xué)習(xí)資源,讓你的學(xué)習(xí)之路更加順暢!記得點贊、關(guān)注、收藏、轉(zhuǎn)發(fā)哦!

          點擊這里找小助理0元領(lǐng)取:掃碼進群領(lǐng)資料

          過《賽車總動員》的朋友應(yīng)該不會忘了其中的主角——閃電麥昆, 一個手工打造的賽車,可謂是家喻戶曉,而我今天想介紹給大家的麥昆確是另外一個麥昆——DFRobot 麥昆編程小車,是一款很適合創(chuàng)客老爸、碼農(nóng)老爸帶孩子一起玩的益智玩具。

          組裝篇

          DFRobot 麥昆編程小車采用了紙箱加裝飾紙?zhí)椎陌b形式,裝飾紙?zhí)妆砻嬗∮宣溊プ兂尚≤噲D案和其重要功能圖示。主板是作為附件單獨包裝的,另外還有那張熟悉的“什么值得買”的眾測須知。

          小車分成了底盤模塊、電池盒、白色輪轂、黑色輪胎和超聲波探測模塊等組件分別獨立包裝的,以及一張合格證,沒有見到說明書或操作手冊。


          micro: bit主板是麥昆小車的大腦,是一款由英國廣播電視公司(BBC)推出的專為青少年編程教育設(shè)計的微型電腦開發(fā)板,搭載了藍牙,加速度計,電子羅盤,三個按鈕和5 x 5 LED點陣等模塊。右上角三個零件分別是Micro數(shù)據(jù)通訊口(用于下載程序)、復(fù)位開關(guān)(重啟按鍵)和3V電池接口(只能是3V,接上普通3.7V鋰電池必?zé)H绻脒M一步了解請移步觀看詳細的視頻介紹https://v.qq.com/x/page/w0745j76lk1.html?start=94

          另一面中心是5×5的LED燈矩陣,可以顯示一些表情圖標,數(shù)字和英文字符串。兩邊是兩個可編程按鍵:A鍵和B鍵,積木塊編程也是很簡單,一般就是觸發(fā)按下A鍵、按下B鍵或者同時按下A+B鍵。

          底盤是一塊較大的線路板,正面頭部中心的黑色零件是紅外信號接收器,兩邊是兩顆紅色LED燈,中心黑色條形插槽是用來插micro: bit主板的,其前方是超聲波模塊插口,其后部白色小插座是電池盒接口,左右還各有一個拓展插槽用來連接其他外接功能模塊。板子中心右側(cè)還有一個蜂鳴器,后部兩個白色方塊是預(yù)裝好的兩個N20金屬減速電機(最大轉(zhuǎn)速133轉(zhuǎn)/分,電機減速比:1:150),尾部IO金屬觸片(所謂的金手指)是可編程控制的IO口,從左到右分別是P0、P1和P2,尾部中心是電源開關(guān)。

          底盤背面頭部是一個紡錘形尼龍材料的前輪,前輪后部是兩組紅外探測器,用來檢測行駛線路,不偏離行駛軌跡。四角布有四顆RGB彩色氛圍燈(白色小方塊),黑暗環(huán)境閃起來應(yīng)該很炫酷,底盤中心印有DFRobot的logo 標識。

          超聲波探測模塊有一個線路板和兩個超聲波發(fā)生和接收器組成,可插入底盤前部對應(yīng)插槽中,通過發(fā)出和接收超聲波來感知行進前方的障礙物。

          其他零部件還有白色輪轂、黑色輪胎、電池盒和雙面膠等小附件,小車采用了3節(jié)7號普通電池供電。

          小車組裝比較簡單,只需安裝說明書提示,裝上車輪——插入電池盒電源插頭——黏貼電池盒——插上micro:bit主板——插入上超聲波探測模塊,幾乎也就幾十秒不到一分鐘的時間就可以組裝完成了。


          外觀篇

          DFRobot 麥昆編程小車外觀獨特,尤其是仿佛兩只大眼睛的超聲波探頭看起十分搶眼,活脫脫一個科技小怪獸的形象,雖說外形有點怪,但卻是萌萌的挺招人喜歡。外形尺寸僅為85*81*44mm,不足成人半個手掌大小。不含電池重量僅為75.55g左右,即使是加上電池也不過115g,很輕巧。

          小車沒有外殼裝飾,所有部件如線路板、探測器、開關(guān)二極管何電池等電器元件,均毫無掩飾暴露在外,通過下面幾張圖可以看到各部分細節(jié)。








          試玩篇

          打開尾部的電源開關(guān),前方的的兩只大燈和底盤以及主板上面的相關(guān)閃光部件就會點亮或閃爍起來了。雖說這是一款遙控+編程遙控玩具車,但是因為隨機沒有配遙控器和控制手柄(需另購),暫時我們還無法直接上手開玩,必須要通過編程輸入命令后,它才可以執(zhí)行動作。麥昆編程小車支持微軟makecode和Scratch兩大最主流的圖形化編程平臺,二者功能相似各有千秋。

          因為二者都帶有圖形模塊化編程,對于沒有接觸過編程的初學(xué)者來說,只需要參考網(wǎng)上的教程進行一兩個小時的學(xué)習(xí),就可以進行基礎(chǔ)的編程了,比較簡單。但是如果要想完成復(fù)雜的程序,就需要進一步深入學(xué)習(xí)了,你可以無限發(fā)揮你的想象力去設(shè)計更加復(fù)雜的程序。當然你也可以偷懶去下載網(wǎng)友們分享的現(xiàn)成的程序呢!

          DFRobot官網(wǎng)(http://wiki.dfrobot.com.cn/index.php?title=(SKU:ROB0148)_micro:Maqueen(V2.0)%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%B0%8F%E8%BD%A6)提供了極為詳細的介紹和編程指導(dǎo)。初學(xué)者可以先自行學(xué)習(xí)編寫相關(guān)程序后,再與官網(wǎng)的標準程序進行對比,以發(fā)現(xiàn)自己的編程問題,有利于盡快提高編程水平 。

          在PC端編制完成的小程序可以通過數(shù)據(jù)線直接下載導(dǎo)入到micro: bit主板內(nèi),當然還可以另行搜索下載“micro:bit”手機App編程后通過藍牙傳輸?shù)街靼澹贿^目前只有IOS版的app可以穩(wěn)定運行,安卓版的app針對部分手機還不夠穩(wěn)定。

          你可以編制小程序,讓DFRobot 麥昆編程小車按照你的指令進行超聲波避障、巡線行駛、RGB彩色呼吸氛圍燈閃爍、LED車燈閃爍、光控行駛和讀取超聲波距離值等動作,甚至還可編制簡單的樂曲,通過蜂鳴器播放,十分有趣,十分適合初學(xué)編程的青少年學(xué)習(xí)使用。

          為了測試其性能,我還制作了更為復(fù)雜的八字形和凹字形線路,測試基本正常,只是在八字形線路上行駛到交叉點是會隨機行駛到左邊或右邊的環(huán)線。另外在避障測試中,在長時間行駛時,偶爾會發(fā)生斜側(cè)撞擊障礙的情況,感覺超聲波檢測似乎還不夠靈敏。



          當然,對于進階高手要想進行更多更復(fù)雜的創(chuàng)意玩法,發(fā)揮自己的想象,可以結(jié)合更多的外掛功能模塊來編制更為復(fù)雜的程序去實現(xiàn)更高難度的動作,比如環(huán)境監(jiān)測或自動行走機器人等,DFRobot官網(wǎng)商城提供了超多的功能模塊可供選擇購買。


          總結(jié)篇

          優(yōu)點:

          1. 體積小巧,外形炫酷;
          2. 整合micro:bit主板,功能先進;
          3. 模塊化組裝,可拓展性強;
          4. 圖形化編程,上手簡單;
          5. 百變創(chuàng)意玩法,寓教于樂,鍛煉邏輯思維能力。

          不足:

          1. 采用3節(jié)普通7號電池供電,使用成本高;
          2. 超聲波檢測器靈敏度不夠高,偶爾發(fā)生撞擊障礙情況;
          3. 基礎(chǔ)版售價298元,豪華版售價597元,價格略高。

          總之,DFRobot 麥昆編程小車是基于micro: bit主板開發(fā)的一款入門級編程小車,模塊化組裝,簡單方便,功能較為豐富,可拓展性強,借助主流的圖形化編程平臺,寓教于樂,適合作為青少年編程啟蒙教育的益智機器人玩具。


          主站蜘蛛池模板: 香蕉久久一区二区不卡无毒影院 | 久久免费视频一区| 精品少妇人妻AV一区二区| 日本精品啪啪一区二区三区| 精品乱码一区内射人妻无码| 国产午夜精品一区理论片飘花| 无码精品人妻一区二区三区中| 国产乱码精品一区二区三区麻豆 | 国产一区二区在线| 亚洲一区二区女搞男| 国产麻豆精品一区二区三区| 国产成人精品一区二区秒拍| 国产一区二区三区在线观看免费 | а天堂中文最新一区二区三区| 韩国美女vip福利一区| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 相泽亚洲一区中文字幕| 无码一区18禁3D| 亚洲综合av一区二区三区不卡| 亚洲AV无码一区二区三区DV| 一区二区三区中文字幕| 日韩在线一区高清在线| 色偷偷一区二区无码视频| 福利一区二区三区视频在线观看 | 精品国产高清自在线一区二区三区| 亚洲一区精品中文字幕| 中文字幕在线一区| 国产成人精品一区二区三区无码| 国产精品污WWW一区二区三区| 国产观看精品一区二区三区| 国产情侣一区二区三区| 久久久久成人精品一区二区| 亚洲国产高清在线一区二区三区| 日韩一区二区三区不卡视频| 国产精品第一区揄拍| 成人免费一区二区三区在线观看| 国产精品成人一区无码| 精品在线一区二区三区| 无码毛片一区二区三区视频免费播放| 国产精品视频一区二区三区| 国产成人久久一区二区不卡三区|