作品亮点:
这是一款通过图像识别来进行跟踪定位的智能行李箱,它可以解放你的双手,让箱子跟着你走。
作品说明:
[align=left] 智能行李箱
灵感来源:
现在国人外出旅游的人越来越多,在机场、火车站、车站、步行街充斥着拖着行李箱的路人,大家一只手拉着行李箱,一只手拿着地图或者手包很不方便。为了让大家的手从行李箱的拉杆中解放出来,我们想到了设计一款跟着人走的智能箱子。
方案:
该智能行李箱使图像识别模块进行识别定位人的位置,判断出位置后,就驱动电机向目标方向运动,同时我们使用了超声波传感器,它可以进行测距避障,当箱子与人之间的距离等于安全距离时便会主动停下,而超过一个值时便会马上向主人报警,以防止丢失(该功能也用于防止箱子被坏人拖走)。尽量增加产品的可靠性和安全性。
现存问题:
这个作品现在完成了跟着人走、丢失报警、保持安全距离等功能,但现在所完成的功能都是基于现有的行李箱进行改装,所以底盘承重能力不足,在复杂地形下的运行也不太可靠。所以新的作品需要在电路和软件上进行改进,也需要对机构进行全新的设计。未来我们准备将其做成一个平台化的产品,让他更方便更实用。
[/align][align=center][size=3][media=swf,500,375]http://static.video.qq.com/TPout.swf?vid=f0155n138q3&auto=0[/media][/size][/align]
[align=left][font=宋体][size=3]如您无法查看视频,请点击下面的链接:[/size][/font][/align][align=left][url=http://v.qq.com/boke/page/f/0/3/f0155n138q3.html]http://v.qq.com/boke/page/f/0/3/f0155n138q3.html[/url][/align]
[align=left][b]由于时间问题,并没有来得及做太多改进,不过新方案已经在筹备中,有望诞生箱子3.0并参加下一届机器人创想秀。[/b]
[/align]
[align=left]附:[/align][align=left]#include <Servo.h>
#include <Wire.h>
//#include <PixyI2C.h>
#include <SPI.h>
#include <Pixy.h>
//PixyI2C pixy;
Pixy pixy;
uint16_t blocks;
unsigned int objectSize;
unsigned long pixyTime;
int E1 = 8; //M1 Speed Control
int E2 = 9; //M2 Speed Control
int M1 = 7; //M1 Direction Control
int M2 = 10; //M1 Direction Control
//int buzzer = 5; //Buzzer pin
//int i=200; //Buzzer pulse
Servo leftMotor;
Servo rightMotor;
Servo panServo;
Servo tiltServo;
void setup()
{
Serial.begin(57600);
//pinMode(buzzer,OUTPUT);
pixy.init();
}
void loop()
{
pixyTime = millis();
blocks = pixy.getBlocks();
objectSize = pixy.blocks[0].width * pixy.blocks[0].height;
//if (Block)
//{
if(objectSize > 100)
{
Serial.print("pixy.blocks[0].x = ");
Serial.println(pixy.blocks[0].x);
Serial.print("pixy.blocks[0].y = ");
Serial.println(pixy.blocks[0].y);
Serial.print("pixy.blocks[0].width = ");
Serial.println(pixy.blocks[0].width);
Serial.print("pixy.blocks[0].height = ");
Serial.println(pixy.blocks[0].height);
Serial.print("objectSize = ");
Serial.println(objectSize);
if (objectSize < 10000) // object far from robot
{
if(pixy.blocks[0].x > 70 && pixy.blocks[0].x < 248)
{
forward();
Serial.print("forward");
Serial.println();
}
if(pixy.blocks[0].x > 0 && pixy.blocks[0].x < 70)
{
right();
Serial.print("right ");
Serial.println();
}
if(pixy.blocks[0].x > 248 && pixy.blocks[0].x < 318)
{
left();
Serial.print("left ");
Serial.println();
}
}
if (objectSize > 10000) // object too close to robot
{
stop();
Serial.print("stop ");
Serial.println();
}
}
//}
//else
//{ stop();
// Serial.print("stop ");
// Serial.println();
//}
}
void forward()
{
analogWrite (E1,250); //PWM Speed Control
digitalWrite(M1,LOW);
analogWrite (E2,250);
digitalWrite(M2,LOW);
}
void stop()
{
digitalWrite(E1,0);
digitalWrite(M1,LOW);
digitalWrite(E2,0);
digitalWrite(M2,LOW);
//delay(50);
}
void backward()
{
analogWrite (E1,250);
digitalWrite(M1,LOW);
analogWrite (E2,250);
digitalWrite(M2,LOW);
//delay(50);
}
void left()
{
analogWrite (E1,250);
digitalWrite(M1,HIGH);
analogWrite (E2,250);
digitalWrite(M2,LOW);
//delay(50);
}
void right()
{
analogWrite (E1,250);
digitalWrite(M1,LOW);
analogWrite (E2,250);
digitalWrite(M2,HIGH);
//delay(50);
}
[/align]