Tải bản đầy đủ - 0 (trang)
3 Kết quả chế tạo và điều khiển robot.

3 Kết quả chế tạo và điều khiển robot.

Tải bản đầy đủ - 0trang

Khớp tịnh tiến theo phương y



Khơng gian ảnh

Vị trí đặt Webcame, cảm biến

Khớp tịnh tiến theo phương z



Mạch điện



Động cơ



Khớp tịnh tiến theo phương x



HÌNH 4.42 Robot ứng dụng xư lý anh

4.3.3 Điều khiển robot.

Robot điều khiển theo nguyên lý nhận tín hiệu từ màn hình giao diện Matlab

gưi tín hiệu xuống vi điều khiển, điều khiển 2 động cơ DC đưa đối tượng được chọn

vào tâm khung hình. Ngoài ra, tín hiệu từ cam biến đưa vào dùng để hiển thị khoang

cách vật và điều khiển động cơ theo phương z.

Trong không gian anh nếu có nhiều đối tượng thì chương trình sẽ gưi tín hiệu

tọa độ mà chương trình xác định đã chọn xuống vi điều khiển. Từ đây, vi điều khiển

xuất tín hiệu điều khiển robot.

Giai thuật điều khiển.



50



start



Xtâm , Ytâm



Nhận tọa độ

X Y của vật thể từ

máy tính



Trái



(X→Xtâm)



Phải

(X→Xtâm)



S



X

>

Xt

â

m



Đ

S



X=

Xtâ

m?



Lên

(Y→Ytâm)

Đ



Đ



Y=

Ytâ

m?

?



Đ



S



Y

>

Yt

â

m



Z yêu cầu

Nhận tọa độ Z của

vật thể từ máy tính

Z=

Ztâ

m ?

?



S



Đ



Kết thúc

HÌNH 4.43 Giai tḥt điều khiển robot



51



Tiến ra



S



Xuống



4.3.4 Kết qua khao nghiệm sơ bộ.

 Khao nghiệm hệ thống nhận dạng và xư lý anh với các yếu tố sau:

-



Với cùng một độ nhạy bắt màu đỏ là 0.2 (giá trị khao nghiệm của



hệ thống với độ bắt được màu đỏ đậm)

-



Đối tượng khao nghiệm có màu đỏ với độ nhạy màu là 0.2 và có



kích thước không đổi.

-



Khao nghiệm với chương trình xư lý anh này thì ứng với từng độ



phân giai của Webcame thì phát hiện và nhận dạng được đối tượng với khoang

cách bắt được đối tượng xa nhất là bao nhiêu.

Phương thức khao nghiệm: thực hiện lần lược với từng độ phân giai của

webcame để xác định khoang cách xa nhất của đối tượng.

Kết qua khao nghiệm.



Độ phân giai



320x240



640x480



800x600



1600x1200



1



45(cm)



94(cm)



111(cm)



192(cm)



2



44



86



106



197



3



42



89



109



195



4



46



92



105



194



5



47



87



108



195



Số lần lặp lại



Khao nghiệm hệ thống làm việc sau 5 lần với từng độ phân giai khác nhau ta

xác định khoang cách từ webcame đến vật như trên. Được thể hiện theo biểu đồ sau:



52



250



độ xa (khoảng cách)(cm)



200



150

lần 1

lần 2

lần 3

lần 4

lần 5



100



50



0



320x240



640x480



800x600



1600x1200



độ phận giải (pixel)



HÌNH 4.23 Biểu đờ khao nghiệm đợ phận giai xác định khoang cách

 Tốc độ chương trình xư lý anh từng frame hình tương ứng với từng độ phân

giai.

Độ phân giai(pixel)



Tốc độ xư lý (second)/frame



320x240



0.133



640x480



0.173



800x600



0.236



1600x1200



1.27



53



Thời gian đáp ứng

1.4



1.27



t hời giain đáp ứng(s)



1.2

1

Series 1



0.8

0.6

0.4

0.2

0.13

0

2320x240



0.17



640x480



0.24



800x600



1600x1200



HÌNH 42.4 Biểu đờ thời gian đáp ứng

4.4 Nhận xét.

Qua kết qua khao nghiệm hệ thống xư lý anh độ xa của quá trình phát hiện nhận

dạng đối tượng tỉ lệ thuận với độ phận giai của webcame, mà trong đó độ phân giai

1600x1200 là lớn nhất. Ngược lại, tốc độ xư lý lại tỉ lệ nghịch với độ phân giai. Do đó

để đáp ứng nhu cầu điều khiển robot thì độ phân giai 800x600 thích hợp nhất.

Từ kết qua khao nghiệm hệ thống, ta thấy hệ thống xư lý anh hoạt động tương

đối ổn định và kịp thời cho quá trình điều khiển.



54



Chương 5

KẾT LUẬN VÀ ĐỀ NGHỊ

5.1 Kết luận.

Qua thời gian tìm hiểu và thực hiện đề tài, chúng tôi đã xây dựng được chương

trình nhận dạng và xư lý hình anh( hình anh trái cà chua) dựa trên khơng gian màu

RGB và các tḥt tốn trong xư lý anh để đạt được yêu cầu đề ra. Chúng tôi đã thiết kế

thành công mô hình robot hái cà chua ứng dụng công nghệ xư lý anh để điều khiển.

Kết qua xây dựng chương trình:





Chương trình được xây dựng trên phần mềm Matlab 2010a, giao diện



được thiết kế trong Guide của Matlab.





Chương trình đã nhận dạng được vật có màu đỏ, định được vị trí tọa độ



đối tượng trong khung anh, xuất tín hiệu điều khiển robot. Ngoài ra, chương trình còn

giao tiếp với vi điều khiển để nhận tín hiệu từ cam biến.

Kết qua thiết kế, chế tạo robot và khao nghiệm hệ thống.





Đã chế tạo thành công mô hình robot hái cà chua lấy tín hiệu điều khiển



từ xư lý anh và tín hiệu từ cam biến.





Kết qua khao nghiệm cho thấy phần mềm hoạt động tương đối ổn định.



5.2 Đề nghị.

Qua những kết qua đã đạt được trong quá trình xư lý anh và điều khiển robot,

chúng tôi mong muốn rằng chương trình xư lý anh này được hoàn thiện hơn và công

nghệ xư lý anh ứng dụng trong điều khiển được thực hiện trong thực tế.



TÀI LIỆU THAM KHẢO

Tài liệu tiếng Việt:

[1]



PGS.TS Nguyễn Quang Hoan 2006, xử lý ảnh, học viện công nghệ bưu chính



viễn thông, 117 trang.

55



[2]



Lương Mạnh Bá, Nguyễn Thanh Thủy (2002), Nhập Môn Xư lý anh số, Nxb



Khoa học và Kỹ thuật, 2002.

[3]



TS. Đỗ Năng Toàn, TS. Phạm Việt Bình, Giáo Trình Xư Lý Ảnh,Khoa Công



Nghệ Thông Tin Trường Đại Học Thái Nguyên.

[4]



Võ Đức Khánh, Hoàng Văn Kiếm. Giáo trình xư lý anh số. Nhà xuất ban Đại



học Quốc gia Thành phố Hồ Chi Minh.

Tài liệu tiếng Anh:

[5]



Anil K.Jain (1989), Fundamental of Digital Image Processing. Prentice Hall,



Engwood cliffs.

[6]



J.R.Paker (1997), Algorithms for Image processing and Computer Vision. John



Wiley & Sons, Inc.



PHỤ LỤC

Chương trình Matlab xử lý ảnh.

function varargout = nhandangmau(varargin)

% NHANDANGMAU M-file for nhandangmau.fig

% NHANDANGMAU, by itself, creates a new NHANDANGMAU or raises the existing

% singleton*.

%

% H = NHANDANGMAU returns the handle to a new NHANDANGMAU or the handle to

% the existing singleton*.

%

% NHANDANGMAU('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in NHANDANGMAU.M with the given input arguments.

%

% NHANDANGMAU('Property','Value',...) creates a new NHANDANGMAU or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before nhandangmau_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to nhandangmau_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help nhandangmau

% Last Modified by GUIDE v2.5 06-Jun-2011 21:53:12



56



% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name',

mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @nhandangmau_OpeningFcn, ...

'gui_OutputFcn', @nhandangmau_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT



% --- Executes just before nhandangmau is made visible.

function nhandangmau_OpeningFcn(hObject, ~, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to nhandangmau (see VARARGIN)

% Choose default command line output for nhandangmau

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes nhandangmau wait for user response (see UIRESUME)

% uiwait(handles.figure1);

set(handles.axes1,'visible','off');



% --- Outputs from this function are returned to the command line.

function varargout = nhandangmau_OutputFcn(~, ~, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(~, ~, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

s_port=serial('COM1');

%setup cong com

set(s_port,'baudrate',9600);

s_port.DataBits =8;

s_port.Parity = 'none';

s_port.StopBit = 1;



57



s_port.OutputBufferSize=512;

s_port.InputBufferSize=512;

s_port.BytesAvailableFcnCount = 1;

s_port.Terminator = 'LF';

s_port.ReadAsyncMode = 'continuous';

s_port.BytesAvailableFcnMode = 'Byte';

fopen(s_port);

%tat tin hieu nhan

slider_step(1) = 0.01/(1-0); % xac dinh do day cua thanh truot

slider_step(2) = 0.1/(1-0);

set(handles.slider1,'sliderstep',slider_step,'max',0.9,'min',0);

set(handles.axes1,'visible','on');

vid=videoinput('winvideo',1,'RGB24_1600x1200');

triggerconfig(vid,'manual');

set(vid,'FramesPerTrigger',1 );

set(vid,'TriggerRepeat', Inf);

%bat dau thu hinh

start(vid);

trigger(vid);

try

while(1)

tic

% Get the snapshot of the current frame

data = getsnapshot(vid);

% Now to track red objects in real time

% subtract the red component from the grayscale image to extract the red components in the image.

diff_im = imsubtract(data(:,:,1), rgb2gray(data)); % thay doi data(:,:,thay doi)

%Use a median filter to filter out noise

diff_im = medfilt2(diff_im, [3 3]);

% Convert the resulting grayscale image into a binary image.

x = 0.1+ get(handles.slider1,'value');

diff_im = im2bw(diff_im,x); %thay doi trong khoang 0 -> 1

% Remove all those pixels less than 300px

diff_im = bwareaopen(diff_im,300);

% Label all the connected components in the image.

bw = bwconncomp(diff_im,8); %sai lenh nay tiet kiem duoc 2 mb bo nho va nhanh hon so voi sai bwlabel

% Measure properties of image regions

stats = regionprops(bw, 'BoundingBox', 'Centroid');

% Display the image

axes(handles.axes1);

imshow(data)

hold on

%Day la vong lap de dong khung chu nhat khu vuc co mau do

for object = 1:length(stats)

%nhan tin hieu tu cong com (dua vao vong lap chuong trinh chay nhanh hon)

bb = stats(object).BoundingBox; %tim gi?i h?n

bc = stats(object).Centroid; %tim tr?ng tâm

plot(bc(1),bc(2),'-m+') % v? tr?ng tâm v?i Line Specification hinh ch? th?p tai t?a ?? tâm

rectangle('Position',bb,'EdgeColor','g','LineWidth',1) % ve hình ch? nh?t bao quanh khu v?c gi?i h?n

% strcat: Concatenate strings horizontally (bu?c 2 kich th??c ph?i n?m ngang)

% text: Create text object in current axes

i=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1)-400)), ' Y: ', num2str(round(bc(2)-300))));

set(i, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow');

x= 400; y= 300; %toa do tam cua camera

% ve quy dao chuyen dong

hl = line('XData',x,'YData',y,'Marker','.','Color','m','MarkerEdgeColor','c','LineStyle',':');



58



xdat = [x,bc(1)]; ydat = [y,bc(2)]; %toa do trong tam

set(hl,'XData',xdat,'YData',ydat); % set thuoc tinh cua duong quy dao

% vung cho phep hien thi toa do thu 3

if ( 3500 < bc(1) && bc(1) < 4500),

if (2500 < bc(2) && bc(2) < 3500),

%nhan tin hieu tu cong COM

val1 = GetSerialData('com1', 9600, 4); %su dung file GetSerialData.DLL cua VC++

h= char (val1(1,1));

a= char (val1(1,2)); %chuyen ma ascii sang str hang tram

b= char (val1(1,3)); %chuyen ma ascii sang str hang chuc

c= char (val1(1,4)); %chuyen ma ascii sang str hang don vi

if (h == 'a'),

%kiem tra du lieu co hop le khong ?

d= str2double (a); %doi tu string sang so hang tram

e= str2double (b); %doi tu string sang so hang chuc

f= str2double (c); %doi tu string sang so hang donvi

g= (d*100+e*10+f); %rap lai thanh so do hoan chinh he mm

end

% stats Statistics Toolbox (h?p công c? th?ng kê)

rectangle('Position',bb,'EdgeColor','r','LineWidth',2) % ve hình ch? nh?t bao quanh khu v?c gi?i

h?n

% strcat: Concatenate strings horizontally (bu?c 2 kich th??c ph?i n?m ngang)

% text: Create text object in current axes

i=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1)-400)), ' Y: ', num2str(round(bc(2)-300)),

' Z: ',num2str(round(g)),' mm'));

k=text(bc(1)-60,bc(2)-50, strcat('Target locked'));

set(i, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'green');

set(k, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow');

end

end

end

%xac dinh vat the can lay

if (object > 0),

rectangle('Position',bb,'EdgeColor','b','LineWidth',1) % ve hình ch? nh?t bao quanh khu v?c gi?i h?n

if ( bc(1) > 450 ),

fprintf(s_port,'b');

else

if (bc(1) < 350),

fprintf(s_port,'c');

else

fprintf(s_port,'f');

end

end

if ( bc(2) > 350 ),

fprintf(s_port,'d');

else

if ( bc(2) < 250 ),

fprintf(s_port,'e');

else

fprintf(s_port,'g');

end

end

end

toc

hold off

flushdata(vid,'triggers');

end

fclose(s_port);



59



stop(vid);

flushdata(vid,'triggers');

delete(vid);

clear all

catch

fclose(s_port);

stop(vid);

flushdata(vid);

delete(vid);

clear all

end

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(~, ~, ~)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% global vid;

% stop(vid);

% flushdata(vid);

% delete(vid);

% clear all

close(nhandangmau)



% --- Executes during object creation, after setting all properties.

function axes4_CreateFcn(~, ~, ~)

% hObject handle to axes4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

imshow('giaodien.bmp');

% Hint: place code in OpeningFcn to populate axes4



Chương trình vi điều khiển nhận tín hiệu và điều khiển robot

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

This program was produced by the

CodeWizardAVR V2.03.4 Standard

Automatic Program Generator

© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Chip type

Program type

Clock frequency

Memory model



: ATmega16

: Application

: 8.000000 MHz

: Small



60



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

3 Kết quả chế tạo và điều khiển robot.

Tải bản đầy đủ ngay(0 tr)

×