Hướng phát triển đề tài

Một phần của tài liệu LUẬN VĂN ĐIỀU KHIỂN TỰ ĐỘNG ROBOT TRÁNH CHƯỚNG NGẠI VẬT (Trang 94 - 101)

Trước mắt cần khắc phục khả năng phát hiện khuôn mặt cảu robot, có thể sử dụng thêm nguồn ánh sáng hoặc thêm vào các giải thuật để lọc bỏ các kết quả không phải là khuôn mặt. Sau đó có thể sẽđặt thêm các cảm biến, có thể lả cảm biến siêu âm để có thể khắc phục hạn chế của thuật toán dẫn hướng thích nghi. Các cảm biến này có tác dụng phát hiện các trương hợp đặc biệt mà luật dẫn hướng bỏ qua, làm cho robot có thể di chuyển trong môi trường phức tạp. Ngoài ra có thể sử dụng thêm một camera nữa để xác định khoảng cách đến khuôn mặt

chính xác hơn. Đề tài này có thể mở rộng không chỉ bám theo khuôn mặt mà có thể bám theo

Robot trán h hướng ngại vật - GVHD: TS.Nguyễn Đức Thành Trang 86

PH LC

CODE CHƯƠNG TRÌNH ĐỌC BA CM BIN SIÊU ÂM

// Chuong trinh viet cho Atmega16 bang AVRStudio, xung clock = 4MHz

#include<avr/io.h> #include<avr/interrupt.h> #include<util/delay.h> unsigned char data; unsigned int falling; unsigned int cm;

//********************** void UARTinit()

{

#define F_CPU 4000000UL

#define UART_baudrate 500000//Chuong trinh da test de co the giao tiep voi toc do baud 9600 va 19200

#define BAUD_SCALE (((F_CPU/(UART_baudrate*16UL)))-1) DDRD |= (1<<4);

PORTD |= (1<<4);

UBRRL = (unsigned char) 4; UBRRH = (unsigned char) 0; UCSRB = (1<<RXEN)|(1<<TXEN);

UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); }

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

void delayms(unsigned int interval) { unsigned int i; for(i=0;i<=interval;i++) { _delay_loop_2(1000); } } //**************************** void sendChar(unsigned char data) {

while((UCSRA&(1<<UDRE))==0); UDR = data;

Robot trán h hướng ngại vật - GVHD: TS.Nguyễn Đức Thành Trang 87 }

//********************** void init_ports()

{

DDRA |=(1<<5)|(1<<6)|(1<<7);//Xung trigger input PA5 va PA6

DDRD&=~(1<<2);//Input cho chan EXTERNAL INTERRUPT PD2- INT0 DDRD&=~(1<<3);//Input cho chan EXTERNAL INTERRUPT PD3- INT1 DDRD&=~(1<<6);//Input cho chan INPUT CAPTURE INTERRUPT- ICP1 // DDRB|=0xFF;

TCCR1B |=(1<<CS10); // dinh ti le timer 1 prescaler/1 }

//********************** void pulse(unsigned char index) {

switch (index) {

case 0:

PORTA |= (1<<5);//Tao xung muc cao tren chan PA5 voi be rong toi thieu la 10 us

_delay_loop_2(60);

PORTA &=~(1<<5);//Ket thuc xung

MCUCR |=(1<<ISC01)|(1<<ISC00); // dinh ngat canh len cho external interrupt 0 break;

case 1:

PORTA |= (1<<6);// TAO XUNG MUC CAO TREN PA6 VOI BE RONG TOI THIEU LA 10us

_delay_loop_2(60);

PORTA &= ~(1<<6);// ket thuc xung

MCUCR |=(1<<ISC11)|(1<<ISC10);// dinh ngat canh len cho external interrupt 1 break;

case 2:

PORTA |= (1<<7); //TAO XUNG MUC CAO TRN PA7 VOI BE RONG TOI THIEU LA 10us

_delay_loop_2(60);

PORTA &=~(1<<7);//KET THUC XUNG

TCCR1B |=(1<<ICES1); //CHO NGAT CANH LEN INPUT CAPTURE break; default: break; } } //********************** void enable_sonar_interrupt() {

Robot trán h hướng ngại vật - GVHD: TS.Nguyễn Đức Thành Trang 88 MCUCR = (1<<ISC11)|(1<<ISC10)|(1<<ISC01)|(1<<ISC00);// dinh ngat ngoai la ngat canh len

GICR |=(1<<INT0)|(1<<INT1);//Cho phep ngat external interrupt 0&1 TCCR1B |=(1<<ICES1); //dinh ngat canh len cho input capture 1 TIMSK |=(1<<TICIE1); //cho phep ngat input capture

sei();//Cho phep ngat toan cuc }

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

unsigned int calc_cm(unsigned int count) {

unsigned int result;

//mot chu ki xung nhip tuong ung voi thoi gian la 0.25 us, ta phai doi ra us roi chia cho 58 de ra cm return ((count>>2)/58);

}

//********************** int main(void)

{

//Chuong trinh con nay thuc hien viec giao tiep cam bien sieu am theo mode 1: dung 2 chan cua VXL init_ports();//Khoi dong giao tiep cac chan port

enable_sonar_interrupt();//Cho phep ngat UARTinit();

while (1) {

pulse(0);//Tao xung cho sonar noi vao timer 0

delayms(100);//Cho mot khoang thoi gian toi thieu la 50 ms truoc khi phat xung trigger tiep theo

pulse(1);//Tao xung cho sonar noi vao timer 1 delayms(100);

pulse(2);////Tao xung cho sonar noi vao icp1 delayms(100); } return(1); } //__________________________ //************************** ISR(INT1_vect)// {

unsigned char x,y;

Robot trán h hướng ngại vật - GVHD: TS.Nguyễn Đức Thành Trang 89 {

TCNT1 = 0;

MCUCR &=~(1<<ISC10);//cho phep ngat canh xuong

}

else//Neu la ngat canh xuong

{

falling = TCNT1;//Doc gia tri timer 1

cm = calc_cm(falling); x = (unsigned char)cm % 256; y = (unsigned char)cm /256; sendChar('X'); _delay_loop_2(1000); if ((x == 'X')||(x == 'V')||(x == 'Z')||(x == 0)||(x=='!')) sendChar(x+1); else sendChar(x); _delay_loop_2(1000); if (cm>255) sendChar('1'); else sendChar('0'); } } //************************* ISR(INT0_vect)// {

unsigned char x,y;

if ((PIND&(1<<2))!=0)//Neu la ngat canh len

{

TCNT1 = 0;

MCUCR &=~(1<<ISC00);

}

else//Neu la ngat canh xuong

{

falling = TCNT1; //Doc gia tri timer 1

cm = calc_cm(falling); x = (unsigned char)cm % 256; y = (unsigned char)cm /256; sendChar('V'); _delay_loop_2(1000); if ((x == 'V')||(x == 'X')||(x == 'Z')||(x == 0)||(x=='!')) sendChar(x+1); else sendChar(x); _delay_loop_2(1000); if (cm>255) sendChar('1');

Robot trán h hướng ngại vật - GVHD: TS.Nguyễn Đức Thành Trang 90 else sendChar('0'); } } //******************************* ISR(TIMER1_CAPT_vect) {

unsigned char x,y;

if ((PIND&(1<<6))!=0)//Neu la ngat canh len {

TCNT1 = 0;

TCCR1B &=~(1<<ICES1);//Cho phep ngat canh xuong

}

else//Neu la ngat canh xuong

{

falling = ICR1;//Doc gia tri timer 1

TCCR1B |=(1<<ICES1);//Cho phep ngat canh len tro lai cm = calc_cm(falling); x = (unsigned char)cm % 256; sendChar('Z'); _delay_loop_2(1000); if ((x == 'V')||(x == 'X')||(x == 'Z')||(x == 0)) sendChar(x+1); else sendChar(x); _delay_loop_2(1000); if (cm>255) sendChar('1'); else sendChar('0'); } }

Robot trán h hướng ngại vật - GVHD: TS.Nguyễn Đức Thành Trang 91

TÀI LIU THAM KHO

[1] Nguyễn Đức Thành (2005). Đo lường và điều khiển bằng máy tính , Nhà Xuất Bản Đại

Học Quốc Gia Thành Phố Hồ Chí Minh.

[2] Atsushi Fujimori, Peter N. Nikiforuk. Adaptive Navigation of Mobile Robot with Obstacle

Avoidance, IEEE Transactions on Robotics and Automation, Vol-13, August 1997.

[3] J. Borenstein, Member, IEEE and Y. Koren, Senior Member, IEEE. The Vector Field

Histogram - Fast Obstacle Avoidance For Mobile Robots

[4] Paul Viola, Michael Jones. Rapid Object Detection using a Boosted Cascade of Simple

Features, in IEEE Conference on Computer Vision and Pattern Recognition 2001, 2001.

[5] Bruno Siciliano, Oussama Khatib (2007) . Springer Handbook of Robotics

[6] J. Borenstein1, H. R. Everett2, and L. Feng (1996). Where am I? Sensors and Methods for

Mobile Robot Positioning, Technical Report, Michigan University

[7] Raul Rojas and Alexander Gloye F̈ rster (2006) . Holonomic Control of a robot with an

omni directional drive, K̈ nstliche Intelligenz, B̈ ttcherIT Verlag

[8]Y. Koren, Senior Member, IEEE and J. Borenstein, Member, IEEE. Potential Field

Methods and Their Inherent Limitations for Mobile Robot Navigation ,Proceedings of the

IEEE Conference on Robotics and Automation, Sacramento, California, April 7-12, 1991 [9] ThomasBräunl. Embedded Robotics, Springer

[10] Phan Tuấn Hải (2009).

[11] Nguyễn Hữu Tân (2009). Xây dựng thuật toán nhận dạng cảm xúc mặt người. Luận văn

đại học, Đại Học Bách Khoa Tp. Hồ Chí Minh.

[12] Phần Help của OpenCv

Robot trán h hướng ngại vật - GVHD: TS.Nguyễn Đức Thành Trang 92

LÝ LCH SINH VIÊN

Họ và tên : Dương Quốc Việt

Ngày tháng năm sinh : 20/10/1987 Nơi sinh : Tân An, Long An

Địa chỉ thường trú : 294/28A Quốc lộ 62, F6, Thị xã Tân An, Long An Chỗở hiện nay : 15/4 Hồng Hà F2, Q.Tân Bình TPHCM

Dân tộc : Kinh

Tôn giáo : Không

Ngày vào đoàn : 26/3/2001 Quá trình học tập :

- Từ 1993 đến 1998 : học tại trường tiểu học Tân An, thị xã Tân An , Long An

- Từ 1998 đến 2002 : học tại trường THCS Thống Nhất, thị xã Tân An, Long An

- Từ 2002 đến 2005 : học tại trường PTTH Lê Quý Đôn, thị xã Tân An, Long An

- Từ 2005 đến nay : học tại trường Đại Học Bách Khoa thành phố Hồ Chí Minh

Một phần của tài liệu LUẬN VĂN ĐIỀU KHIỂN TỰ ĐỘNG ROBOT TRÁNH CHƯỚNG NGẠI VẬT (Trang 94 - 101)