top of page

Face Tracking Robot




This is AI based robot which can track your face and move accordingly...



Product Links :


1) Black Gladiator Track Robot - https://bit.ly/3yvXtWa

2) HUSKYLENS with Silicone Case - https://bit.ly/3KVoTY1

3) Arduino Uno - https://bit.ly/2Fz8M4q

4) Motor Driver Shield - https://bit.ly/2VWaYsn

5) 18650 Li-ion Battery - https://bit.ly/3yog0nm

6) Mecanum Wheel Kit (80mm - 4 Wheels) - https://bit.ly/3wkNaBt



 

Circuit Diagram :




 


Code :



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

HUSKYLENS An Easy-to-use AI Machine Vision Sensor

<https://www.dfrobot.com/product-1922.html>

***************************************************

This example shows the basic function of library for HUSKYLENS via Serial.

Created 2020-03-13

By [Angelo qiao](Angelo.qiao@dfrobot.com)

GNU Lesser General Public License.

See <http://www.gnu.org/licenses></http:> for details.

All above must be included in any redistribution

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


/***********Notice and Trouble shooting***************

1.Connection and Diagram can be found here

<https://wiki.dfrobot.com/HUSKYLENS_V1.0_SKU_SEN0305_SEN0336#target_23>

2.This code is tested on Arduino Uno, Leonardo, Mega boards.

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


#include "HUSKYLENS.h"

#include "SoftwareSerial.h"

#include <AFMotor.h>


AF_DCMotor motor1(1, MOTOR12_1KHZ);

AF_DCMotor motor2(2, MOTOR12_1KHZ);

AF_DCMotor motor3(3, MOTOR34_1KHZ);

AF_DCMotor motor4(4, MOTOR34_1KHZ);


HUSKYLENS huskylens;

SoftwareSerial mySerial(10, 9); // RX, TX

//HUSKYLENS green line >> Pin 10; blue line >> Pin 11

void printResult(HUSKYLENSResult result);


void setup() {

Serial.begin(115200);

mySerial.begin(9600);

while (!huskylens.begin(mySerial))

{

Serial.println(F("Begin failed!"));

Serial.println(F("1.Please recheck the \"Protocol Type\" in HUSKYLENS (General Settings>>Protocol Type>>Serial 9600)"));

Serial.println(F("2.Please recheck the connection."));

delay(100);

}

}


void loop() {

if (!huskylens.request()) Serial.println(F("Fail to request data from HUSKYLENS, recheck the connection!"));

else if(!huskylens.isLearned()) Serial.println(F("Nothing learned, press learn button on HUSKYLENS to learn one!"));

else if(!huskylens.available())


{

Serial.println(F("No block or arrow appears on the screen!"));

Serial.println("vision body undetected.");

motor1.setSpeed(0);

motor1.run(RELEASE);

motor2.setSpeed(0);

motor2.run(RELEASE);

motor3.setSpeed(0);

motor3.run(RELEASE);

motor4.setSpeed(0);

motor4.run(RELEASE);

}

else

{

Serial.println(F("###########"));

if (huskylens.available())

{

HUSKYLENSResult result = huskylens.read();

printResult(result);


int xAxis = result.xCenter;

int yAxis = result.yCenter;

int distance = result.height;


Serial.print("xAxis");

Serial.println(xAxis);

Serial.print("yAxis");

Serial.println(yAxis);

Serial.print("distance");

Serial.println(distance);

if (xAxis > 200) {

motor1.setSpeed(220);

motor1.run(FORWARD);

motor2.setSpeed(220);

motor2.run(BACKWARD);

motor3.setSpeed(220);

motor3.run(FORWARD);

motor4.setSpeed(220);

motor4.run(BACKWARD);

Serial.print("Left");

// delay(10);

}

else if (xAxis < 140) {

motor1.setSpeed(220);

motor1.run(BACKWARD);

motor2.setSpeed(220);

motor2.run(FORWARD);

motor3.setSpeed(220);

motor3.run(BACKWARD);

motor4.setSpeed(220);

motor4.run(FORWARD);

Serial.print("Right");

// delay(10);

}

else if (distance > 110) {

motor1.setSpeed(200);

motor1.run(BACKWARD);

motor2.setSpeed(200);

motor2.run(BACKWARD);

motor3.setSpeed(200);

motor3.run(BACKWARD);

motor4.setSpeed(200);

motor4.run(BACKWARD);

Serial.print("BackWard");

//delay(10);


}

else if (distance < 80) {

motor1.setSpeed(200);

motor1.run(FORWARD);

motor2.setSpeed(200);

motor2.run(FORWARD);

motor3.setSpeed(200);

motor3.run(FORWARD);

motor4.setSpeed(200);

motor4.run(FORWARD);

Serial.print("Forward");

//delay(10);


}

else {

motor1.setSpeed(0);

motor1.run(RELEASE);

motor2.setSpeed(0);

motor2.run(RELEASE);

motor3.setSpeed(0);

motor3.run(RELEASE);

motor4.setSpeed(0);

motor4.run(RELEASE);

Serial.print("Stop");

//delay(10);

}

}


}


}


void printResult(HUSKYLENSResult result){

if (result.command == COMMAND_RETURN_BLOCK){

Serial.println(String()+F("Block:xCenter=")+result.xCenter+F(",yCenter=")+result.yCenter+F(",width=")+result.width+F(",height=")+result.height+F(",ID=")+result.ID);

}

else if (result.command == COMMAND_RETURN_ARROW){

Serial.println(String()+F("Arrow:xOrigin=")+result.xOrigin+F(",yOrigin=")+result.yOrigin+F(",xTarget=")+result.xTarget+F(",yTarget=")+result.yTarget+F(",ID=")+result.ID);

}

else{

Serial.println("Object unknown!");


}

}


663 views0 comments

Comments


Contact

Mira Road, Thane - 401107

info@passion3dworld.com

9137361474, 8454863427

Passion 3D World

We will provide you the best service. 

Thanks for submitting!

@Copyright PASSION 3D WORLD.

All Rights Reserved or by other parties, where indicated. All rights controlled by their respective owners. Content on this website is for information only. It is not intended to provide medical or other professional advice. Views expressed here do not necessarily reflect those of PASSION 3D WORLD, its staff, its contributors, or its partners. Financial support for PASSION 3D WORLD comes from advertisements and referral programs, where indicated.

© 2023 by Passion 3D World

bottom of page