欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

3天內(nèi)不再提示

CMUcam5 Pixy視覺相機(jī)傳感器簡介第二部分—創(chuàng)建球平衡梁

YYXIAO ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-03-01 17:56 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。

點(diǎn)擊此處跳轉(zhuǎn)至本文第一部分 >

pYYBAGPzEyKASW12AAy960d-m9I535.png

這是CMUcam5 Pixy簡介的第二部分。如果您對PixyMon不太熟悉,請先回顧 CMUcam5 Pixy視覺相機(jī)傳感器簡介。在第一部分中,我介紹了Pixy的基礎(chǔ)知識,解釋了hello_world代碼,并創(chuàng)建了一個簡單的伺服驅(qū)動的應(yīng)用程序。在本教程中,我將進(jìn)一步探索Pixy的應(yīng)用,創(chuàng)建一個球平衡梁。通過一個伺服來設(shè)置平衡梁的角度,使球停留在中間,當(dāng)然,Pixy相機(jī)傳感器會對球進(jìn)行追蹤。

硬件

Arduino Uno (您可以使用任何 Arduino)

CMUcam5 Pixy 相機(jī)

伺服電機(jī) (S06NF)

木片和螺絲

數(shù)據(jù)線(用于相機(jī)USB MINI 以及Uno USB B)

用于伺服的5V外部電源(!警告!如果您將伺服連接到Arduino通過USB進(jìn)行供電,您的Arduino將會被燒壞)

軟件

Arduino IDE 1.6.9

PixyMon 軟件 (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)

PixyMon 用于 Arduino 的庫(https://cmucam.org/projects/cmucam5/wiki/Latest_release)

Processing 3.1.1 (https://processing.org/download/?processing)

Processing的簡單介紹

poYBAGPzEyaAdq1HAAQvK5Qm474143.png

Processing是非常有用又靈活的一款軟件。它主要用于視覺藝術(shù)和科技領(lǐng)域的視覺語言。這款軟件具有100多個庫,可支持各種項(xiàng)目。它的文檔非常齊全,提供了許多使用指南,涵蓋了從編程基礎(chǔ)到可視化等各種主題。它能夠支持所有操作系統(tǒng)(GNU/Linux, Mac OS X, 和 Windows)。該軟件的設(shè)計(jì)幾乎和Arduino IDE相同。

今天,我們將使用Processing,通過串行通信實(shí)現(xiàn)與Arduino之間的通信。

pYYBAGPzEyeAdYXrAACAArfRchM672.png

圖1:Processing界面

項(xiàng)目概況

在此項(xiàng)目中,我將制作一個球平衡梁,一個用木頭制成的“通道”將會像一桿秤那樣使球保持平衡(圖2)。平衡梁44cm寬,3cm高。我把它制造的像通道一樣狹窄,使我們所追蹤的球不會掉落出去。

我使用S06NF伺服電機(jī)來移動整個平衡梁,該電機(jī)由Arduino進(jìn)行控制。之后我們會看一下在本教程后面部分的代碼?,F(xiàn)在,我已經(jīng)將伺服放置在了距離平衡梁左端?的位置。

poYBAGPzEyqAZs6VAAIEfmmF9o4174.png

圖2:S06NF STD 伺服電機(jī)/ ?RobotShop inc.

伺服將上下移動平衡梁,同時(shí),球也會沿著該路徑移動。

poYBAGPzEzeAcZK0ADIEQeOchkA509.gif

圖3:平衡梁上下移動

數(shù)碼相機(jī)將會放置在平衡梁上。我將相機(jī)的視野范圍設(shè)置為僅限于平衡梁。這樣,相機(jī)就會只追蹤球,不追蹤任何其他物體了。

平衡梁結(jié)構(gòu)

首先,我們需要一些用于構(gòu)建平衡梁的材料。我將要使用的是一種簡單的XXMM木材(20cm x 27cm)。我用圓鋸來切割木材,但是您可以使用現(xiàn)有的任何類型的鋸來完成切割,只要能夠保障切割面平整、均勻即可。

poYBAGPzEzyAYUUfAA6Ov4P5-2M143.png

圖4:XXMM木材

請記住,只有使用正確的工具才能夠制造出完美的平衡梁!我使用的是一把錘子、一把直尺、釘子、砂紙、熱膠、一個鉆頭和一把鋸子。

pYYBAGPzEz-AEHptAAdaMVjrS8c856.jpg

圖5:工具

首先,我將制造一個通道,使球能夠在其中左右移動。通道的側(cè)面由四塊木板組成(每個21cm x 3cm)。通道在高度方向的兩端將由兩塊木板(4cm x 3cm)封接。底座的尺寸是42cm x 3cm x 1cm。

我使用15mm大帽釘來連接零部件。

pYYBAGPzE0KAPHJ2AAiQl_LJlcg377.png

圖6:封閉通道

在通道中間建立傾斜點(diǎn)有很多種方法。我使用了一種非常簡單的方法,因?yàn)槌杀咀畹颓易钊菀讓?shí)現(xiàn)。我用了一個長釘子,兩個像軸承一樣的小管子,先標(biāo)記了通道的中心點(diǎn),然后將這些小軸承熱粘合到該中心點(diǎn),再插入釘子。

poYBAGPzE0SALFpDAAESfBGzkYY401.png

圖7:用于構(gòu)建傾斜點(diǎn)的釘子和管子

為了設(shè)置傾斜點(diǎn),我們還需要為釘子制作支架。我用了兩塊8cm x 2cm的木板,如圖8所示。我還制作了一個小平臺,可以將所有東西放置在一起,尺寸為12cm x 4.5cm。

poYBAGPzE0iAU62UAA5-qJU02o0193.png

圖8:傾斜點(diǎn)支架

我使用了一小塊木材來安裝伺服并將其架起。

pYYBAGPzE0qAXX24AADdkJI33vM731.png

圖9:安裝在木板上的伺服

在本教程中我使用的是Arduino UNO,但是您也可以使用其他具有SPI連接器的Arduino來連接到Pixy相機(jī)。

連接所有部件

一旦構(gòu)建完成,下一步就是將Pixy相機(jī)連接到Arduino,然后再連接到伺服。原理圖與 CMUcam5 Pixy視覺相機(jī)傳感器簡介中的相同。我仍然使用外部5V電源為伺服供電。

!警告!不要忘記連接接地端。如果沒有將電源、伺服和Arduino接地端相連接,伺服將會失控!

pYYBAGPzE02AerufAARF7Pk1p00586.png

圖10:接線圖

接下來,我需要在平衡梁結(jié)構(gòu)上方的某個位置設(shè)置Pixy,以便它可以隨時(shí)檢測到球的位置。調(diào)整設(shè)置使其僅可以對球進(jìn)行檢測。請參考第一部分進(jìn)行設(shè)置。

poYBAGPzE0-Ad0q-AAPvjvbxF7w885.png

圖11:Pixy視覺

現(xiàn)在,讓我們來看一些代碼。為了檢測伺服是否工作正常,我修改了中間、最右邊和最左邊的角度,使其適合于我的結(jié)構(gòu)。

#include 



uint8_t leveled = 110;     //middle positon for s1 to keep the board leveled

uint8_t far_right = 180;     //far left positon for s1 to keep the board leveled

uint8_t far_left = 0;     //far right positon for s1 to keep the board levele

Servo s;  

void setup(){

s.write(leveled);

  delay(2000);

  s.write(far_right);

  delay(2000);

  s.write(far_left);

  delay(2000);

}

void loop(){

}

當(dāng)然,您可以根據(jù)自己的喜好來調(diào)整變量。

之前,我介紹了一個名叫Processing的軟件。我將使用它通過串行通信來實(shí)現(xiàn)與Arduino的通信。

Arduino 代碼

簡單的串行通信:

#include 
#include  

char val; // Data received from the serial port
 int ledPin = 13; // Set the pin to digital I/O 13
void setup() {
   pinMode(ledPin, OUTPUT); // Set pin as OUTPUT
   Serial.begin(9600); // Start serial communication at 9600 bps
 }
 void loop() {
   if (Serial.available())
   { // If data is available to read,
 	val = Serial.read(); // read it and store it in val
   }
   if (val == '1')
   { // If 1 was received
 	digitalWrite(ledPin, HIGH); // turn the LED on
   } else {
 	digitalWrite(ledPin, LOW); // otherwise turn it off
   }
   delay(10); // Wait 10 milliseconds for next reading
}

Processing 代碼

import processing.serial.*;

Serial myPort;  // Create object from Serial class

void setup()
{
  size(200,200); //make our canvas 200 x 200 pixels big
  String portName = Serial.list()[0]; //change the 0 to a 1 or 2 etc. to match your port
  myPort = new Serial(this, portName, 9600);
}
void draw() {
  if (mousePressed == true)
  {                       	//if we clicked in the window
   myPort.write('1');     	//send a 1
   println("1");  
  } else
  {                       	//otherwise
  myPort.write('0');      	//send a 0
  }  
}

改代碼創(chuàng)建了一個200×200像素的窗口并初始化串行端口。draw()空函數(shù)用于檢查是否在窗口上按下了鼠標(biāo)(如果按下寫入1,沒有按下則寫入0)。

現(xiàn)在,我們來測試代碼。點(diǎn)擊運(yùn)行,然后嘗試點(diǎn)擊窗口中任意位置,這時(shí)您的LED燈應(yīng)發(fā)生閃爍,這就表示著一切工作正常!

poYBAGPzE1qAflPDACx_9TH3g-Y867.gif

圖12:Processing 和 Arduino代碼的基本測試

使用Processing編程

我獲取了伺服的相關(guān)值,并在Processing中對其進(jìn)行了處理,所以產(chǎn)生了一個類似于下圖所示的圖片。

poYBAGPzE2SAQAZ6ACOFno8cAoY264.gif

圖13:示例圖片

請用以下代碼創(chuàng)建圖像:

import processing.serial.*;

Serial myPort;        // The serial port
int xPos = 1;         // horizontal position of the graph
float inByte = 0;

void setup () {
  // set the window size:
  size(400, 300);

  // List all the available serial ports
  // if using Processing 2.1 or later, use Serial.printArray()
  println(Serial.list());

  // I know that the first port in the serial list on my mac
  // is always my  Arduino, so I open Serial.list()[0].
  // Open whatever port is the one you're using.
  myPort = new Serial(this, Serial.list()[0], 9600);

  // don't generate a serialEvent() unless you get a newline character:
  myPort.bufferUntil('n');

  // set inital background:
  background(0);
}
void draw () {
  // draw the line:
  stroke(127, 34, 255);
  line(xPos, height, xPos, height - inByte);

  // at the edge of the screen, go back to the beginning:
  if (xPos >= width) {
    xPos = 0;
    background(0);
  } else {
    // increment the horizontal position:
    xPos++;
  }
}


void serialEvent (Serial myPort) {
  // get the ASCII string:
  String inString = myPort.readStringUntil('n');

  if (inString != null) {
    // trim off any whitespace:
    inString = trim(inString);
    // convert to an int and map to the screen height:
    inByte = float(inString);
    println(inByte);
    inByte = map(inByte, 0, 1023, 0, height);
  }
}

Arduino 代碼:

#include 
#include 
#include 
#include  

//37       	164       	288

uint8_t leveled = 110;    	//middle positon for s1 to keep the board leveled	
uint8_t far_right = 180;    	//far left positon for s1 to keep the board leveled
uint8_t far_left = 0;    	//far right positon for s1 to keep the board levele
int current_pos = leveled;
int percentage,var,_percen;


Servo s;        	
Pixy pixy;

void test_board(){
  while(Serial.read() != 'b');
  Serial.write("Starting test");
  s.write(leveled);
  delay(2000);
  s.write(far_right);
  delay(2000);
  s.write(far_left);
  delay(2000);
  Serial.write("Finished test, press any key to continue");
  while(Serial.read() != 'c');
  s.write(current_pos);
  Serial.write("Continued");
}

void setup() {
  Serial.begin(9600);
  s.attach(9);
  pixy.init();
  while (!Serial);
  //test_board();
  s.write(current_pos);
}
void _servo(unsigned char side,int var){
  //by the % we get how "hard" we need to wip :D
  var = var - 90;
  if(side == 'L'){
	//Serial.write("LEFT");
	//90  180
	_percen = 90 + var;
	s.write(_percen);
  }else{
	//Serial.write("RIGHT");
	//0  90
	_percen = 90 - var;
	s.write(_percen);
  }
}
void loop() {
  static int i = 0;
  int j;
  uint16_t blocks;
  char buf[32];
 
  // grab blocks!
  blocks = pixy.getBlocks();
 
  // If there are detect blocks, print them!
  if (blocks)
  {
	i++;
	
	// do this (print) every 50 frames because printing every
	// frame would bog down the Arduino
	if (i%1 ==0)
	{
  	//sprintf(buf, "Detected %d:n", blocks);
  	//Serial.print(buf);
  	for (j=0; j= 0){
    	//  Serial.write("LEFT");
      	var = percentage / 0.4;
      	_servo('L',var);
    	}else if(percentage >= 60 && percentage <= 110){
      	//Serial.write("RIGHT");
      	var = (percentage - 60) / 0.5;
      	_servo('R',var);
    	}else{
      	//Serial.write("MIDDLE");
    	}
  	}
	}
  } 
 
}

代碼釋義

我將x的位置從Pixy轉(zhuǎn)換為0-100%,并由此了解球的具體位置。通過獲取球的位置,我可以調(diào)整伺服轉(zhuǎn)速。如果球的位置<=10%,伺服會轉(zhuǎn)得更快來維持平衡;如果在~40%附近,伺服會以很低的轉(zhuǎn)速來維持平衡。想要一直保持平衡是比較棘手的,我們可以改進(jìn)算法以使其更加精確。

以下是一些有益于提升的建議:

? 嘗試多種算法
? 有多種類型的數(shù)學(xué)算法可以進(jìn)行計(jì)算。我至少嘗試了兩到三種,但是最后決定選擇該算法。我建議您自己來編寫算法,以更好地掌握這種平衡的方法。

? 更好的硬件
? 對于本項(xiàng)目來說,沒有什么材料可稱得上是完美的,木材就更差得遠(yuǎn)了。如果我擁有及時(shí)可用的資源,那我會選擇用金屬來建造它,這樣整個項(xiàng)目將會更加穩(wěn)定和精確。

? 變得更快
? 我們?nèi)绾巫龅绞蛊涓斓鼗謴?fù)平衡?我在這里使用了一個簡單的伺服。我們可以將其替換為UART或者AX-12之類的伺服,它們會強(qiáng)大、快速得多。速度也與算法有關(guān)。同樣,我建議您嘗試不同的算法,以找到適用于您的目的的算法。

有許多項(xiàng)目使用類似的概念來對平衡某物體。除了Pixy,您還可以將OpenCV與任何網(wǎng)絡(luò)相機(jī)一起使用來檢測目標(biāo)和顏色。除了Processing,還有Max/MSP版本5。您可以使用距離傳感器、壓力傳感器等。因此,有多種方式可以幫助您對該項(xiàng)目進(jìn)行提升,使其更加堅(jiān)固、穩(wěn)定和更快。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2553

    文章

    51467

    瀏覽量

    756936
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187958
收藏 人收藏

    評論

    相關(guān)推薦

    I2C接口的DAC8571輸出不正常是什么原因?

    和SDATA如下圖: 首先是一次發(fā)送完整波形 然后是第一部分,包括地址與控制字節(jié),是正確的 然后是第二部分,即高位字節(jié) 最后是低位字節(jié) 可以看到應(yīng)該是正確的波形。 謝謝!
    發(fā)表于 01-17 08:34

    Sony偏振傳感器加持 Blackfly S工業(yè)相機(jī)突破視覺成像反光難題

    Q為什么采用傳感器偏振?A:視覺系統(tǒng)一直都在試圖克服玻璃、塑料和金屬等反光表面產(chǎn)生的動態(tài)或多余光線、反射、朦朧和眩光影響。TeledyneFLIR的BlackflyS機(jī)器視覺工業(yè)相機(jī)
    的頭像 發(fā)表于 12-27 17:02 ?471次閱讀
    Sony偏振<b class='flag-5'>傳感器</b>加持 Blackfly S工業(yè)<b class='flag-5'>相機(jī)</b>突破<b class='flag-5'>視覺</b>成像反光難題

    視覺AI之旅:一起探索 FiftyOne ——第二部分 入門指南

    /journey-into-visual-ai-exploring-fiftyone-together-part-ii-getting-started-14cca5adfcd3 ? ? 一,前言 上次我們介紹了《視覺AI之旅:一起探索 FiftyOne——第一
    的頭像 發(fā)表于 12-24 17:00 ?125次閱讀
    <b class='flag-5'>視覺</b>AI之旅:一起探索 FiftyOne ——<b class='flag-5'>第二部分</b>  入門指南

    松下MPS媒體制作平臺第七篇:視頻混合插件(第二部分)

    第七篇:視頻混合插件(第二部分) 視頻混合(Video Mixer)插件可以輕松進(jìn)行主體鍵控,不受拍攝地點(diǎn)的局限,同時(shí)便于將多種視頻素材進(jìn)行合成。 關(guān)于視頻混合的操作介紹,我們一
    的頭像 發(fā)表于 12-19 13:38 ?210次閱讀
    松下MPS媒體制作平臺第七篇:視頻混合<b class='flag-5'>器</b>插件(<b class='flag-5'>第二部分</b>)

    安森美機(jī)器視覺系統(tǒng)解決方案

    ,它還用于驗(yàn)證數(shù)據(jù)矩陣碼、檢查食品包裝和讀取條形碼。機(jī)器視覺系統(tǒng)方案指南將全面介紹機(jī)器視覺系統(tǒng)方案及市場趨勢,本文為第二部分,將重點(diǎn)介紹系統(tǒng)描述、方案概述、系統(tǒng)實(shí)現(xiàn)。
    的頭像 發(fā)表于 11-14 09:53 ?335次閱讀
    安森美機(jī)器<b class='flag-5'>視覺</b>系統(tǒng)解決方案

    Air780EP硬件設(shè)計(jì)原理解析(第二部分

    ? 接下來,我們繼續(xù)學(xué)習(xí)第二部分。 3.3 電源供電 ? 3.3.1 模塊電源工作特性 在模塊應(yīng)用設(shè)計(jì)中,電源設(shè)計(jì)是很重要的一部分。由于LTE射頻工作時(shí)最大峰值電流高達(dá)1.5A,在最大發(fā)射功率時(shí)會
    的頭像 發(fā)表于 11-06 15:06 ?326次閱讀
    Air780EP硬件設(shè)計(jì)原理解析(<b class='flag-5'>第二部分</b>)

    0.4mm層疊封裝(PoP)封裝的PCB組裝指南,第二部分

    電子發(fā)燒友網(wǎng)站提供《0.4mm層疊封裝(PoP)封裝的PCB組裝指南,第二部分.pdf》資料免費(fèi)下載
    發(fā)表于 10-15 11:33 ?0次下載
    0.4mm層疊封裝(PoP)封裝的PCB組裝指南,<b class='flag-5'>第二部分</b>

    精密制造的革新:光譜共焦傳感器與工業(yè)視覺相機(jī)的融合

    在現(xiàn)代精密制造領(lǐng)域,對微小尺寸、高精度產(chǎn)品的檢測需求日益迫切。光譜共焦傳感器憑借其非接觸、高精度測量特性脫穎而出,而工業(yè)視覺相機(jī)則以其高分辨率、實(shí)時(shí)成像能力著稱。兩者的融合,不僅解決了傳統(tǒng)檢測方式在
    的頭像 發(fā)表于 09-26 11:47 ?414次閱讀

    求助,opa695的datesheet問題求解

    opa695的手冊上第14頁圖3 第一部分的電容是隔直作用。datesheet說第二部分的電容也是隔直作用。這里的直流是哪里來的?不是在第一部分就隔掉了嗎?我用TI的軟件tian90 仿真此圖
    發(fā)表于 09-13 07:00

    如何進(jìn)行電源設(shè)計(jì)–第5部分

    電子發(fā)燒友網(wǎng)站提供《如何進(jìn)行電源設(shè)計(jì)–第5部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 11:11 ?0次下載
    如何進(jìn)行電源設(shè)計(jì)–第<b class='flag-5'>5</b><b class='flag-5'>部分</b>

    電源設(shè)計(jì)方法-第5部分

    電子發(fā)燒友網(wǎng)站提供《電源設(shè)計(jì)方法-第5部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 14:58 ?0次下載
    電源設(shè)計(jì)方法-第<b class='flag-5'>5</b><b class='flag-5'>部分</b>

    如何進(jìn)行電源供應(yīng)設(shè)計(jì)-第5部分

    電子發(fā)燒友網(wǎng)站提供《如何進(jìn)行電源供應(yīng)設(shè)計(jì)-第5部分.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 09:36 ?0次下載
    如何進(jìn)行電源供應(yīng)<b class='flag-5'>器</b>設(shè)計(jì)-第<b class='flag-5'>5</b><b class='flag-5'>部分</b>

    使用rt_thread_mdelay函數(shù)后出現(xiàn)hardfault的原因?

    !! \\r\\n\"); } // 線程中第二部分使用的延時(shí),進(jìn)入while循環(huán)立馬報(bào)錯 hw_ethernet_write(send_buf, sizeof(send_buf)); while
    發(fā)表于 07-16 07:07

    美國商務(wù)部長呼吁推動第二部芯片法案,助力全球半導(dǎo)體主導(dǎo)地位

    雷蒙多在參加英特爾IFS Direct Connect 2024代工活動時(shí)呼吁稱,為了實(shí)現(xiàn)美國成為全球芯片強(qiáng)國有必要進(jìn)行聯(lián)邦補(bǔ)助。她提出了制定第二部《CHIPS法案》的必要性,以便繼續(xù)對半導(dǎo)體行業(yè)的國內(nèi)行動提供支持。
    的頭像 發(fā)表于 02-25 15:56 ?832次閱讀

    如何校準(zhǔn)ph傳感器 pH傳感器的校準(zhǔn)方法

    對中的玻璃膜和參比電極之間的電勢差。pH值是一個十重要的參數(shù),對于許多實(shí)驗(yàn)室、工業(yè)和環(huán)境監(jiān)測應(yīng)用來說都是不可或缺的。然而,pH傳感器的準(zhǔn)確性和可靠性需要經(jīng)常校準(zhǔn)以確保準(zhǔn)確度和穩(wěn)定性。 第二部分:pH
    的頭像 發(fā)表于 02-18 11:33 ?2315次閱讀