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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用Parallax激光傳感器制作Arduino激光機器人—第2部分

賈桂林 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-24 09:43 ? 次閱讀

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

點擊此處閱讀本文的第1部分 >

poYBAGPzFVmAItwMAAD9MWz5I-Y485.jpg

在第1部分中,我們制作了一塊定制的亞克力板底座,把NEMA 17步進電機安裝到了底盤上。然后,我們將Arduino Uno 3和電機開發(fā)板也連到亞克力底座上,并安裝了電機開發(fā)板庫。在第2部分中,我們將添加機器人工作所需的其他系統(tǒng)部件,比如伺服器和激光測距儀(LRF),并編寫一個程序,讓機器人能夠自主移動。

有關如何利用Arduino UNO R3從零開始搭建輪式機器人的信息,請參考我們在之前的文章《如何制作自己的機器人》 和《如何制作自己的機器人(第2部分)》。在本文中,我們將進一步增加機器人的功能:讓該機器人動起來并為其增加激光測距(LRF)功能,以使該設備能夠檢測物體并測量距離。

該機器人的設計目標如下:

向前、向后移動;向左和向右旋轉90度;向左和向右旋轉45度。

避開障礙物時根據(jù)最佳可用路徑朝不同的方向移動。

測量各個方向(前方、左右90度、左右45度)的距離。

根據(jù)可用的最長距離,確定朝哪個方向前進(向前、向后、向左或向右)。

硬件

制作此機器人所需的硬件請參見以下硬件明細,這些零部件在許多電商處都可以買到。

Arduino Uno rev 3

適用于Arduino的Adafruit步進電機開發(fā)套件

步進電機

底盤、螺絲和尾輪 Parallax.com

車輪、橡膠輪胎和輪轂 Makeblock.com

伺服裝置和安裝套件

Parallax激光測距儀

OLED顯示屏

紅色包裝紙/盒

聚合物電池3型(11.1V)和連接器

195 x 195 x 3mm亞克力板

軟件

Arduino IDE

Adafruit Motor Shield Library

LCD Display9696 Library.zip

工具

圓銼

Dremel 電動工具

電烙鐵

迷你鋼鋸

安裝并測試伺服器

下一步是安裝用于平移的伺服器。首先,請用螺釘將兩塊小板擰到伺服基座上,然后用螺釘將其固定到亞克力底座上,如圖1和圖2所示。請用2個螺釘將鋁制安裝架安裝到伺服器的頂部。

poYBAGPzFVuADJUWAADU1fXwmv8185.jpg

圖1.用兩小板將伺服器固定到亞克力底座上

pYYBAGPzFV2AOe3-AACgR7lDtaY496.jpg

圖2.將鋁制安裝架安裝到伺服器上

如圖3所示,將伺服器的接頭連至電機開發(fā)板。電機開發(fā)板上有2個伺服器接頭,分別標記為“servo1”和“servo2”。本次連接請使用servo1接頭(外側的那個)。請注意,切勿接反。

poYBAGPzFV6AOYCmAAC1vj8Ha7s236.jpg

圖3.伺服與電機開發(fā)板的連接

現(xiàn)在,我們可以運行程序了,請將以下代碼上傳到Arduino。無需安裝新庫,系統(tǒng)所需的庫(Servo.h)都已包含在Arduino IDE程序中。伺服器應使用Digital引腳10(servo 1),或者如果伺服器連接到電機開發(fā)板的servo 2,那么應使用引腳11。

//***********************************************************************************************

#include 

Servo panMotor;                      // servo for laser range finder (lrf) scanning

int pos = 0;    // variable to store the servo position

const int a = 1000;

void setup()

{ panMotor.attach(10); }             // Attach Servo for scanning to pin 10

void loop()

{

// *************************** Scan Left ***********************************    

   panMotor.write(180);       // 90 degree

   delay(a);       

   panMotor.write(135);       // 45 degree

   delay(a);

// ************************** Scan Right  **********************************      

   panMotor.write(45);        // 45 degree

   delay(a);     

   panMotor.write(0);         // 90 degree

   delay(a);

// ************************* Neutral position *****************************    

   panMotor.write(90);

   delay(a);  

}

//**************************************************************************************************

代碼很簡單,它負責讓機器人從左向右進行掃描并返回原始位置。

伺服器的工作原理請參見以下視頻:

安裝激光測距儀(LRF)

激光測距儀產(chǎn)品文檔– Parallax

Parallax激光測距儀(LRF)模塊是一款利用激光技術計算儀器到目標物體的距離的測量儀器。該設備根據(jù)光學三角測量法(激光、攝像頭和物體質心之間的簡單三角函數(shù))來計算儀器到目標物體的距離。其最佳測量范圍為6–48英寸(15–122厘米),測量精度誤差<5%(平均3%)。

硬件安裝很簡單。只需在亞克力板上鉆兩個與LRF位置相匹配的孔,然后用塑料墊片和螺釘將LRF固定到鋁底盤上即可(請參見圖5)。

pYYBAGPzFWCAPQ1YAACqc7ISC9c983.jpg

圖4.將LRF電纜連至電機開發(fā)板

poYBAGPzFWSAPjGhAAEMwgPXwIU479.jpg

圖5.安裝在鋁制安裝架上的LRF

由于LRF的最佳測量值上限為122厘米,我們需要將鋁制安裝架稍微向前彎曲,以使該范圍始終小于120厘米(圖6)。

poYBAGPzFWWAIg4gAABEMQ6vH5g724.jpg

圖6.向前彎曲鋁制安裝架,使激光到地的距離小于120厘米

請完全按照圖7將電纜接頭連至LRF。GND接地,VCC接5V,SOUT接引腳8,SIN接引腳9。

pYYBAGPzFWeAKKP2AADaWeq-Sg0544.jpg

圖7. LRF與電機開發(fā)板的連接

我們已經(jīng)完成了LRF的安裝和連接,現(xiàn)在就來上傳代碼吧!同樣,無需安裝庫。我們要用的SoftwareSerial.h已經(jīng)包含在Arduino IDE中。

下面的代碼源自示例代碼,我們只是進行了一些修改,將距離數(shù)據(jù)從字符串轉換為整數(shù)。其作用是測量傳感器到前方物體的距離并打印結果。我們用串行監(jiān)視器顯示結果。

// **************************************************************************************************************************************************

#include 

#define rxPin     8                   // Serial input (connects to the LRF's SOUT pin)

#define txPin     9                   // Serial output (connects to the LRF's SIN pin)

#define ledPin   13                   // Most Arduino boards have an on-board LED on this pin

#define BUFSIZE  16                   // Size of buffer

int  lrfDataInt;

SoftwareSerial lrfSerial =  SoftwareSerial(rxPin, txPin);

void setup()                          // Set up code called once on start-up

{

 // *************************************** setup for LRF ***********************************************

 pinMode(ledPin, OUTPUT);

 pinMode(rxPin, INPUT);

 pinMode(txPin, OUTPUT);

 digitalWrite(ledPin, LOW);                // turn LED off

 Serial.begin(9600);

 while (!Serial);                          // Wait until ready

 Serial.println("nnParallax Laser Range Finder");

 lrfSerial.begin(9600);

 Serial.print("Waiting for the LRF...");

 delay(2000);                             // Delay to let LRF module start up

 lrfSerial.print('U');                    // Send character

 while (lrfSerial.read() != ':');   

 delay(10);                               // Short delay

 lrfSerial.flush();                       // Flush the receive buffer

 Serial.println("Ready!");

 Serial.flush();                          // Wait for all bytes to be transmitted to the Serial Monitor

}

 // ******************************************  main loop ************************************************

void loop()  // Main code, to run repeatedly

{

 lrf();

}

 // ****************************************** end main loop *********************************************

void lrf()

{

 lrfSerial.print('R');                    // Send command

 digitalWrite(ledPin, HIGH);              // Turn LED on while LRF is taking a measurement

 char lrfData[BUFSIZE];                   // Buffer for incoming data

 int  lrfDataInt1;

 int  lrfDataInt2;

 int  lrfDataInt3;

 int  lrfDataInt4;

 int offset = 0;                          // Offset into buffer

 lrfData[0] = 0;                          // Clear the buffer    

 

 while(1)

 {

   if (lrfSerial.available() > 0)         // If there are any bytes available to read, then the LRF must have responded

   {

     lrfData[offset] = lrfSerial.read();  // Get the byte and store it in our buffer

     if (lrfData[offset] == ':')          // If a ":" character is received, all data has been sent and the LRF is ready to accept the next command

      { lrfData[offset] = 0;              // Null terminate the string of bytes we just received

       break; }                           // Break out of the loop

     offset++;                            // Increment offset into array

     if (offset >= BUFSIZE) offset = 0;   // If the incoming data string is longer than our buffer, wrap around to avoid going out-of-bounds

   }

 }

 lrfDataInt1 = ( lrfData[5] -'0');

 lrfDataInt2 = ( lrfData[6] -'0');

 lrfDataInt3 = ( lrfData[7] -'0');

 lrfDataInt4 = ( lrfData[8] -'0');

 lrfDataInt = (1000*lrfDataInt1)+ (100*lrfDataInt2)+(10*lrfDataInt3) + lrfDataInt4;

 

 Serial.print("Distance = ");             // The lrfData string should now contain the data returned by the LRF, so display it on the Serial Monitor

 Serial.println(lrfDataInt);

 Serial.flush();                          // Wait for all bytes to be transmitted to the Serial Monitor

 digitalWrite(ledPin, LOW);               // Turn LED off

 delay(1000);

}

//*************************************************************************************************************************************************

串行監(jiān)視器顯示的結果如下所示。所有尺寸的單位均為毫米。

poYBAGPzFWiANowOAABOu-nLiDA485.jpg

安裝OLED顯示屏

首先,我們將OLED塑料盒安裝到亞克力底座中(請參見圖9),然后再將OLED顯示屏附帶的線纜一端連至顯示屏。要將顯示屏連至電機開發(fā)板,請將線纜另外一端jst接頭上的線纜剪下,然后將紅導線焊至5V,將黑導線焊至Ground,將黃導線焊至SDA引腳,將綠導線焊至SCL引腳。請確保OLED顯示屏的背面朝外。

pYYBAGPzFWqAO5-pAADwDy3gN6U769.jpg

圖8 . OLED與電機開發(fā)板之間的連接

將OLED固定在底座上并連接電纜后,我們就可以運行部分軟件了。

首先,請確保已經(jīng)安裝了SeeedOLED.h。然后,將以下代碼上傳到Arduino。該代碼使用了名為oled1的函數(shù),稍后的最終編碼也會使用該函數(shù)。其基本功能就是顯示100到109的數(shù)字。

//*****************************************************************************************************************************************

#include 

#include 

int distanceFwd;

void setup()

{ Wire.begin();}

void loop()

{

 int i = 0;

for (i; (i < 10); i ++)

{ distanceFwd = 100 + i;

oled1();

delay(1000); }

}

  void oled1()

 {

 SeeedOled.clearDisplay();           //clear the screen and set start position to top left corner

 SeeedOled.setNormalDisplay();       //Set display to Normal mode

 SeeedOled.setPageMode();            //Set addressing mode to Page Mode

 SeeedOled.setTextXY(3,3);          

 SeeedOled.putString("Forward :");

 SeeedOled.setTextXY(5,9);

 SeeedOled.putNumber(distanceFwd);

 }  

//*****************************************************************************************************************************************

程序正常運行時,顯示屏應該會顯示以下視頻中的內容:

安裝最終代碼

現(xiàn)在,我們已經(jīng)完成了所有硬件的安裝并測試了各個設備。讓我們把所有軟硬件結合起來,構建一個可以自主移動的智能激光機器人吧。最終程序會執(zhí)行以下功能:

測量前方距離

如果距離超過70厘米,機器人將向前移動500步(大約50厘米);

如果距離大于40厘米小于70cm,機器人將向前移動200步(20厘米);

如果距離小于40厘米,機器人會向左掃描90度,向左掃描45度,向右掃描45度,向右掃描90度;

測量每個方向的距離,然后計算哪個方向的測量距離最長;

轉向距離最長的那個方向;

返回第一步。

請復制以下代碼并將其上傳到Arduino:

//*********************************************************************************************************************

#include 

#include 

#include "utility/Adafruit_MS_PWMServoDriver.h"

#include 

#include 

#include 

#define ledPin   13                                         

#define BUFSIZE  16   

#define rxPin    8                                          // Serial input (connects to the LRF's SOUT pin)

#define txPin    9                                          // Serial output(connects to the LRF's SIN pin)

SoftwareSerial lrfSerial =  SoftwareSerial(rxPin, txPin);   // Size of buffer (in bytes) for incoming data

// Create the motor shield object with the default I2C address

  Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Connect a stepper motor with 200 steps per revolution (1.8 degree)

  Adafruit_StepperMotor *myMotor1 = AFMS.getStepper(200, 1);  // motor port #1 (M1 and M2)

  Adafruit_StepperMotor *myMotor2 = AFMS.getStepper(200, 2);  // motor port #2 (M3 and M4)

  Servo panMotor;                                             // servo for laser range finder (lrf) scanning

  int leftDistance1;

  int leftDistance2;

  int rightDistance1;

  int rightDistance2;

  int maxDistance;

  int angleTurn;

  int directions;

  int distanceFwd;  

  const int a = 30;                  

//*********************************************************************************start set up **************************

void setup() {

 Serial.begin(9600);                                       // set up Serial library at 9600 bps

 panMotor.attach(10);                                      // Attach Servo for scanning to pin 10

 

 AFMS.begin();                                             // create with the default frequency 1.6KHz

 myMotor1->setSpeed(100);                                  // Set stepmotor1 speed at 100 rpm   

 myMotor2->setSpeed(100);                                  // Set stepmotor2 speed at 100 rpm   

 pinMode(ledPin, OUTPUT);

 

 pinMode(rxPin, INPUT);                                    // Input pin for LRF

 pinMode(txPin, OUTPUT);                                   // Output pin for LRF

 digitalWrite(ledPin, LOW);                                // turn LED off

 Serial.begin(9600);

 while (!Serial);                                          // Wait until ready

 lrfSerial.begin(9600);

 Serial.print("Waiting for the LRF...");

 delay(2000);                                              // Delay to let LRF module start up

 lrfSerial.print('U');                                     // Send character

 while (lrfSerial.read() != ':');                        

 delay(10);                                                // Short delay

 lrfSerial.flush();                                        // Flush the receive buffer

 Serial.println("Ready!");

 Serial.flush();                                           // Wait for all bytes to be transmitted to the Serial Monitor

 panMotor.write(90);

 delay(a);

}

//******************************************************************* start Loop *****************************************

void loop()

{

 distanceFwd = lrf();

 maxDistance = distanceFwd;

 oled1();

 if (distanceFwd > 700)

 { Motor(500,1);}

 else

 if (distanceFwd > 400)

 { Motor(200,1);}

 else                                                           // if path is blocked

 { checkTurn();

  turn();}     

}

//***************************************************************** check turn  function ********************************

void checkTurn()

 {

    digitalWrite(ledPin, HIGH);     

// ************************** Scan Left ***********************************   

   panMotor.write(180);

   delay(a);

   leftDistance1 = lrf();       

   

   panMotor.write(135);

   delay(a);

   leftDistance2 = lrf();

   oled();  

    

// *************************** Scan Right  *********************************       

   panMotor.write(45);

   delay(a);

   rightDistance2 = lrf();  

      

   panMotor.write(0);

   delay(a);

   rightDistance1 = lrf();

   oled();

   panMotor.write(90);

    

  digitalWrite(ledPin, LOW);

// ************************************ Turn Left ************************

     maxDistance = leftDistance1;

     angleTurn = 100;

     directions = 0;          

if (maxDistance <= leftDistance2)

    {angleTurn = 50;

     maxDistance = leftDistance2;

     directions = 0;

    }           

//*********************************** Turn Right ***********************            

if (maxDistance <= rightDistance2)

      {angleTurn = 50;

      maxDistance = rightDistance2;

      directions = 1;  

      }

      

if (maxDistance <= rightDistance1)

      {angleTurn = 100;

      maxDistance = rightDistance1;

      directions = 1;

      }                 

// ******************************* Turn Back******************************

 if ((leftDistance1 < 300) && (rightDistance1 <300) && (distanceFwd <300))

   {angleTurn = 200;

   directions = 3;

   }                 

 }

   

//************************************************ turn function *********************************************************

void turn()  

{

   rightDistance1 = 0;

   rightDistance2 = 0;

   leftDistance1  = 0;

   leftDistance2  = 0;

   

   if (directions == 0) // turn left  

    { Motor(angleTurn,3);}

   if (directions == 1) // turn right

    { Motor(angleTurn,4);}

   if (directions == 3) // turn back

    { Motor(angleTurn,4);}

 }

//***************************************  Stepper Motor function    ****************************************************

void Motor(int x,int y)

{

  int i = 0;

 for ( i; (i < x); i ++)

 {

  if (y == 1)   // move forward

 {myMotor1->step(1, FORWARD, SINGLE);

 myMotor2->step(1, BACKWARD, SINGLE);}

 

  if (y == 2)   // move backward

 {myMotor1->step(1, BACKWARD, SINGLE);

 myMotor2->step(1, FORWARD, SINGLE);}

 

 if (y == 3)    // move left

  { myMotor1->step(1, FORWARD, SINGLE);

 myMotor2->step(1, FORWARD, SINGLE);}

 

 if (y == 4)    // move right

  { myMotor1->step(1, BACKWARD, SINGLE);

 myMotor2->step(1, BACKWARD, SINGLE);}

 }

}

//***********************************************************************  LRF function *******************************

long lrf()

{

 lrfSerial.print('R');         // Send command

 digitalWrite(ledPin, HIGH);   // Turn LED on while LRF is taking a measurement

 char lrfData[BUFSIZE];        // Buffer for incoming data

 int  lrfDataInt1;

 int  lrfDataInt2;

 int  lrfDataInt3;

 int  lrfDataInt4;

 int  lrfDataInt;

 int offset = 0;              // Offset into buffer

 lrfData[0] = 0;              // Clear the buffer    

 

 while(1)

 {

   if (lrfSerial.available() > 0)

   {

     lrfData[offset] = lrfSerial.read();  

     if (lrfData[offset] == ':')        

      { lrfData[offset] = 0;

        break;}               

     offset++;

     if (offset >= BUFSIZE) offset = 0;

   }

 }

 lrfDataInt1 = ( lrfData[5] -'0');

 lrfDataInt2 = ( lrfData[6] -'0');

 lrfDataInt3 = ( lrfData[7] -'0');

 lrfDataInt4 = ( lrfData[8] -'0');

 lrfDataInt = (1000*lrfDataInt1)+ (100*lrfDataInt2)+(10*lrfDataInt3) + lrfDataInt4;     

 Serial.flush();            

 digitalWrite(ledPin, LOW);  

 return lrfDataInt;

}

//********************************************************* Oled function ************************************************

 void oled()

 {

 SeeedOled.clearDisplay();           //clear the screen and set start position to top left corner

 SeeedOled.setNormalDisplay();       //Set display to Normal mode

 SeeedOled.setPageMode();            //Set addressing mode to Page Mode

 SeeedOled.setTextXY(0,0);          

 SeeedOled.putString("Left 1:");

 SeeedOled.setTextXY(0,12);

 SeeedOled.putNumber(leftDistance1);   

 SeeedOled.setTextXY(2,0);          

 SeeedOled.putString("Left 2:");

 SeeedOled.setTextXY(2,12);

 SeeedOled.putNumber(leftDistance2);   

 SeeedOled.setTextXY(4,0);          

 SeeedOled.putString("Right 1:");

 SeeedOled.setTextXY(4,12);

 SeeedOled.putNumber(rightDistance1);

 SeeedOled.setTextXY(6,0);          

 SeeedOled.putString("Right 2:");

 SeeedOled.setTextXY(6,12);

 SeeedOled.putNumber(rightDistance2);       

 }

   void oled1()

 {

 SeeedOled.clearDisplay();           //clear the screen and set start position to top left corner

 SeeedOled.setNormalDisplay();       //Set display to Normal mode

 SeeedOled.setPageMode();            //Set addressing mode to Page Mode

 SeeedOled.setTextXY(3,3);          

 SeeedOled.putString("Forward :");

 SeeedOled.setTextXY(5,9);

 SeeedOled.putNumber(distanceFwd);

 }  

//***********************************************************************************************************************************

poYBAGPzFVmAItwMAAD9MWz5I-Y485.jpg

圖9. OLED顯示屏安裝在亞克力底座上的最終效果

結論

在之前的文章《如何制作自己的機器人》和《如何制作自己的機器人(第2部分)》中,我們用步進電機制作了一款簡單的輪式機器人。這次,我們對其進行了功能改進:為機器人增加了激光測距儀(LRF)功能,并且安裝了輪子,讓機器人能夠自由移動。我一直想制作一款能夠進行測量的設備。在本例中,憑借激光傳感器,我們的機器人不僅能夠檢測并避開物體,同時還能獲取更準確的距離數(shù)據(jù)。激光機器人還有許多其他應用場景。您也可以利用該激光傳感器設計自己喜歡的有趣項目。

接下來,我們會做一些更炫酷的事情,敬請期待!

pYYBAGPzFWyADVB1AAAGS83r-qY435.jpg

Purnomo Nuhalim

來自墨爾本的Purnomo是一名退休人員,也是電子發(fā)燒友。目前,他正使用Arduino和Raspberry Pi從事各種開放式硬件項目的研發(fā)。除了電子學,他還對航空建模和天文學充滿熱情。

審核編輯黃宇

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

    關注

    210

    文章

    27838

    瀏覽量

    204589
  • OLED
    +關注

    關注

    119

    文章

    6130

    瀏覽量

    223091
  • 激光傳感器
    +關注

    關注

    2

    文章

    147

    瀏覽量

    21297
  • Arduino
    +關注

    關注

    187

    文章

    6453

    瀏覽量

    185922
收藏 人收藏

    評論

    相關推薦

    機器人設計與實現(xiàn)》——低成本DIY機器人,一本機器人制作的經(jīng)典入門書

    基礎、機器人本體、電子控制設備、傳感器與導航和機器人電源系統(tǒng)等?!?b class='flag-5'>機器人設計與實現(xiàn)》是按照搭積木的方法指導機器人愛好者如何設計、
    發(fā)表于 08-01 18:21

    智能機器人對于傳感器的需求

    `  智能機器人的外部傳感器大致可分為力學傳感器,觸覺傳感器,接近傳感器,視覺傳感器,滑覺
    發(fā)表于 01-20 14:56

    自律型機器人制作入門.基于Arduino

    [size=0.83em]自律型機器人制作入門.基于Arduino.jpg(101.91 KB, 下載次數(shù): 0)下載附件[color=rgb(153, 153, 153) !important
    發(fā)表于 06-23 11:18

    用于機器人或無人機的低成本激光導航傳感器設計

    摘要——許多室內機器人或無人機系統(tǒng),使用激光測距傳感器作為他們的主要導航傳感器,用來畫圖、定位和避障。這種系統(tǒng)的成本和耗電都是個問題,這對于低成本高效率的場合而言,是個障礙。本文,描述
    發(fā)表于 06-21 10:08

    機器人產(chǎn)品傳感器越多,就越能有效避障?

      激光雷達作為自動駕駛和機器人等領域中的重要傳感器,一直扮演著“眼睛”的角色,360°掃描周圍環(huán)境,構建厘米級別高精度地圖,為后續(xù)避障導航做輔助?! 〉绻麅H使用激光雷達作為唯一的避
    發(fā)表于 08-27 15:44

    機器人傳感器的類別和應用原理

    一般機器人系統(tǒng)由機械手、環(huán)境、任務和控制四個互相作用的部分組成。我們稱一般安裝在機器人機械手上的傳感器為內
    發(fā)表于 11-08 15:55

    博智慧達激光焊縫跟蹤成功與金紅鷹機器人完成通訊

    相機和激光焊縫跟蹤傳感器及其控制裝置等。博智慧達的智能激光焊縫跟蹤系統(tǒng)可以和各種焊接機器人通訊,從而提高焊接質量。焊縫跟蹤:激光焊縫跟蹤系統(tǒng)
    發(fā)表于 04-13 10:30

    激光焊縫跟蹤傳感器協(xié)助川崎機器人對汽車車架焊接尋位引導糾偏

    激光焊縫跟蹤傳感器協(xié)助川崎機器人對汽車車架焊接尋位引導糾偏機器人在焊接車架過程中由于工裝夾具及來料位置不準會出現(xiàn)與原先機器人的示教位置產(chǎn)生偏
    發(fā)表于 12-02 09:37

    LDS激光測距傳感器

    比較全的傳感器產(chǎn)品介紹 激光測距傳感器獲取距離信息。當激光投射到障礙物上時,會在傳感器里形成光斑。同時,圖像
    發(fā)表于 09-14 07:44

    機器人傳感器分類方法

    一般機器人系統(tǒng)由機械手、環(huán)境、任務和控制四個互相作用的部分組成。我們稱一般安裝在機器人機械手上的傳感器為內
    發(fā)表于 09-16 08:45

    使用Arduino和PAJ7620手勢傳感器制作手勢控制機器人

    使用Arduino和PAJ7620手勢傳感器制作手勢控制機器人,簡單程序即可實現(xiàn)。小小的傳感器可以識別各種手勢。它采用內置的空間
    發(fā)表于 09-27 06:17

    光纖激光機器人切割焊接技術

    光纖激光機器人切割焊接技術 1 系統(tǒng)的特點   激光機器人切割焊接系統(tǒng)是在上海團結普瑞瑪激光設備有限公司承接的國家863重點研究
    發(fā)表于 04-30 10:35 ?2700次閱讀

    利用Parallax激光傳感器制作Arduino激光機器人1部分

    在本文中,我們將進一步增加機器人的功能:讓它能夠動起來并且添加激光測距(LRF)功能,以使該設備能夠檢測物體并測量距離。激光傳感器會幫我們獲得更準確、更可靠的數(shù)據(jù)。該
    的頭像 發(fā)表于 02-24 15:24 ?1002次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>Parallax</b><b class='flag-5'>激光</b><b class='flag-5'>傳感器</b><b class='flag-5'>制作</b><b class='flag-5'>Arduino</b><b class='flag-5'>激光機器人</b>—<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>

    最酷的Kickstarter機器人 2部分 – 以往成果

    本文是最酷Kickstarter資助的機器人項目系列文章的2部分。
    的頭像 發(fā)表于 02-28 15:20 ?773次閱讀
    最酷的Kickstarter<b class='flag-5'>機器人</b> <b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b> – 以往成果

    什么是激光機器人?激光機器人具有哪些特點?

    激光機器人是指搭載激光器機器人利用激光器所輸出的高能量激光束進行各種加工或處理操作。
    發(fā)表于 06-05 09:08 ?677次閱讀