Tải bản đầy đủ - 0 (trang)
Hình 2.9 : Hình tay máy.

Hình 2.9 : Hình tay máy.

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

Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



START



N

RUN = 1?

Y

Lấy ảnh từ Camera



Chuyển từ ảnh màu sang

ảnh xám



Chuyển từ ảnh xám sang

ảnh nhị phân



Loại bỏ những điểm

trắng nhỏ



Lấp đầy lỗ trống



3.2 Lưu đồ giải thuật cho xử lý ảnh:

Chương trình xử lý ảnh dùng để tìm tâm vật cần gắp, từ đó lấy tọa độ tâm của

vật cần gắp trong khung ảnh. Sau khiLấy

lấybiên

tọa vật.

độ tâm vật ta chuyển tọa độ đó thành tọa

độ so với tay máy.

Lấy tâm vật dựa vào

biên đã xác định.



Võ Hồng Trơvi – Nguyễn Sĩ Bích

END



Hiển thị kết quả.



78



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



3.3 Lưu đồ giải thuật cho chương trình PLC:

3.3.1 Lưu đồ giải thuật cho chương trình chính:



Võ Hồng Trơvi – Nguyễn Sĩ Bích



79



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



START



KHỞI TẠO COUNTER

KHỞI TẠO ĐIỂU XUNG

NẠP GIÁ TRỊ BAN ĐẦU CHO

BIẾN,BIT



LOAD GIÁ TRỊ ĐIỀU XUNG

LẤY GIÁ TRỊ COUNTER

CHUYỂN ĐỔI CÁC GIÁ TRỊ



N



START=1

?



Y

N



MANUAL=

0?



N



Y

CONTRO

L=10?



Y

ĐIỀU KHIỂN BẰNG TAY



RESET

COUNTER



START



N

CONTRO

L=11?



Y

CÔNG TẮC

1=1?



-



+

END



CHẠY GẮP VẬT



VITRI_BANDAU



BẬT MOTOR1,

ROLE1



TẮT MOTOR1,



3.3.2 Lưu đồROLE1

giải thuật cho chương trình con

3.3.2.1 Chương trình con quay về vị trí ban đầu:

CƠNG TẮC

2=1?



-



+



BẬT MOTOR2,

ROLE2



TẮT MOTOR2,

ROLE2



CƠNG TẮC

3=1?



-



+



BẬT MOTOR3,

ROLE3



TẮT MOTOR3,

ROLE3



Võ Hồng Trơvi – Nguyễn Sĩ Bích

END



80



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



3.3.2.2 Chương trình con khởi tạo Motor:

START



KHỞI TẠO ĐIỀU

XUNG Q0.0



KHỞI TẠO ĐIỀU

XUNG Q0.1



END



STAR

T



3.3.2.3 Chương trình con Reset các Byte sử dụng:

CHO CÁC BYTE LƯU

GIÁ TRỊ HSC =0.



CHO CÁC BYTE LƯU

GIÁ TRỊ GẮP VẬT CỦA

KHÂU 1,2,3 =0.



CHO CÁC BYTE LƯU

GIÁ TRỊ ĐẬT VẬT CỦA

KHÂU 1,2,3 =0.



CHO CÁC BYTE LƯU

GIÁ TRỊ NĂNG =0.

CHO CÁC BYTE LƯU

GIÁ TRỊ ĐIỀU KHIỂN

=0.



Võ Hồng Trơvi – Nguyễn Sĩ Bích



81

END



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



3.3.2.4 Chương trình con reset Counter:



START



KHỞI TẠO LẠI COUNTER 0

(ĐẾM ENCODER KHÂU 1)



KHỞI TẠO LẠI COUNTER 4

(ĐẾM ENCODER KHÂU 2)



KHỞI TẠO LẠI COUNTER 1

(ĐẾM ENCODER KHÂU 3)



END



3.3.2.5 Chương trình con dừng Motor:

START



XĨA BIT MOTOR,

RELAY



XĨA BIT CHẠY TRONG

CHƯƠNG TRÌNH



XĨA BIT ĐIỀU XUNG



Võ Hồng Trơvi – Nguyễn Sĩ Bích



END

82



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



3.4 Giao diện điều khiển bằng MATLAB:



PHẦN C



Võ Hồng Trơvi – Nguyễn Sĩ Bích



83



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



1. Đánh giá:

- Luận văn hoàn thành đúng thời hạn và đạt được yêu cầu đặt ra.

- Thi công phần cứng gọn gàng, mạch hoạt động ổn định đáp ứng yêu cầu của

luận văn. Khi tay máy hoạt động mặc dù vấn đề điều khiển vẫn chưa thực sự tối ưu

nhưng tay máy vẫn gắp được vật.



2. Kết luận:

Đề tài này không phải là một đề tài dễ, vì có nhiều bài tốn cần phải giải quyết

trong một thời gian ngắn. Với kết quả đạt được thì có thể xem như cơ bản giải quyết

các vấn đề cốt lõi, nhưng cần phát triển hơn nữa.



Võ Hồng Trơvi – Nguyễn Sĩ Bích



84



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



Sau khi hoàn thành luận văn, chúng em đã học tập được rất nhiều nhiều kiến

thức về PLC, lý thuyết về tay máy robot, về xử lý ảnh v.v… Chúng sẽ là hành trang

quý báu cho chúng em ra trường và công việc sau nay.



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

Mặc dù luận văn hoàn thành mục tiêu đề ra nhưng để ứng dụng thực tế thì còn

khoảng cách rất lớn, do vậy cần phải phát triển các vấn đề sau:

- Điều khiển tối ưu lộ trình của tay máy.

- Sử dụng cảm biến góc với độ phân giải cao hơn và kết cấu cơ khí tốt hơn để

táy máy khi hoạt động ít bị sai số góc.

- Thiết kế và điều khiển tay máy với số bậc tự do lớn 3 bậc, bởi vì với 3 bậc tự

do tay máy không đáp ứng được yêu cầu thực tế cho nhiều ứng dụng.

- Xử lý ảnh cần phải tốt hơn, loại bỏ được nhiễu do ánh sáng và màu nền gây ra.



PHỤ LỤC

1. Code chương trình MATLAB:



function varargout = arm(varargin)

% ARM M-file for arm.fig

%

ARM, by itself, creates a new ARM or raises the existing

%

singleton*.

%

%

H = ARM returns the handle to a new ARM or the handle to

%

the existing singleton*.

%

%

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

%

function named CALLBACK in ARM.M with the given input arguments.

%

%

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



Võ Hoàng Trơvi – Nguyễn Sĩ Bích



85



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



%

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

are

%

applied to the GUI before arm_OpeningFunction gets called. An

%

unrecognized property name or invalid value makes property

application

%

stop. All inputs are passed to arm_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 arm

% Last Modified by GUIDE v2.5 08-Jul-2009 19:01:33

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;0

gui_State = struct('gui_Name',

mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @arm_OpeningFcn, ...

'gui_OutputFcn', @arm_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 arm is made visible.

function arm_OpeningFcn(hObject, eventdata, 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 arm (see VARARGIN)

% Choose default command line output for arm

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

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

% uiwait(handles.figure1);

global val_bright run isconnect l1 l2 l3 x_cen y_cen

global goc1 goc2 goc3 tam1 tam2 tam3 byte_control

global chieu1 byte_cao_ic1 byte_thap_ic1

global chieu2 byte_cao_ic2 byte_thap_ic2

global chieu3 byte_cao_ic3 byte_thap_ic3

global byte_1 byte_2 byte_3 bit_manual

set(handles.Brightness,'Value',0.3);

set(handles.Threshold,'Value', 0.7);

val_bright = get(handles.Brightness,'Value');



Võ Hồng Trơvi – Nguyễn Sĩ Bích



86



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



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

run = 1 ;

isconnect = 0

l1=13

l2=20

l3=34

goc1=0

goc2=180

goc3=90

tam1=0;

tam2=0;

tam3=0;

bit_manual=0;

byte_control=1;

byte_1=0

byte_2=0

byte_3=0

chieu1=0;

byte_cao_ic1=0;

byte_thap_ic1=0;

%--------------chieu2=0;

byte_cao_ic2=0;

byte_thap_ic2=0;

%--------------chieu3=0;

byte_cao_ic3=0;

byte_thap_ic3=0;

%--------------%save data ;

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

function varargout = arm_OutputFcn(hObject, eventdata, 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)

% Get default command line output from handles structure

varargout{1} = handles.output;

%==================================================

function stringPopup = get_stringPopup(hObject,handles)

val = get(hObject,'Value');

string_list = get(hObject,'String');

stringPopup = string_list{val}; % convert from cell array

% to string

% Function to

function doublePopup = get_doublePopup(hObject,handles)

val = get(hObject,'Value');

string_list = get(hObject,'String');

selected_string = string_list{val}; % convert from cell array

% to string

doublePopup = str2double(selected_string);

% --- Executes on button press in button_ClearTX.

function Brightness_Callback(hObject, eventdata, handles)

global val_bright;

val_bright = get(handles.Brightness,'Value');



Võ Hoàng Trơvi – Nguyễn Sĩ Bích



87



Đồ án tốt nghiệp



GVHD: ThS. Trần Văn Trinh



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

function Brightness_CreateFcn(hObject, eventdata, handles)

if isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor',[.9 .9 .9]);

end

% --- Executes on slider movement.

function Threshold_Callback(hObject, eventdata, handles)

function Threshold_CreateFcn(hObject, eventdata, handles)

if isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor',[.9 .9 .9]);

end

function Start_camera_Callback(hObject, eventdata, handles)

global val_bright vidobj run x_cen y_cen

vidobj = videoinput('winvideo');

preview(vidobj);

triggerconfig(vidobj, 'manual');

x = 1;

while (run == 1 )

rad =0;

len =0;

rai =0;

radi =0;

RGB = getsnapshot(vidobj);

I = rgb2gray(RGB);

bw = im2bw(I,val_bright);

bw = bwareaopen(bw,200);

se = strel('disk',1);

bw = imclose(bw,se);

bw = imfill(bw,'holes');

[B,L] = bwboundaries(bw,'noholes');

imshow(label2rgb(L, @jet, [.5 .5 .5]))

hold on;

for k = 1:length(B)

boundary = B{k};

plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)

%x=length(B);

end ;

stats = regionprops(L,'Area','Centroid');

%center_obj = stats.Centroid;

for k = 1:length(B)

boundary = B{k};

delta_sq = diff(boundary).^2;

perimeter = sum(sqrt(sum(delta_sq,2)));

area = stats(k).Area;

metric = 4*pi*area/perimeter^2;

if metric > 0.7

imshow(RGB);

centroid = stats(k).Centroid;

plot(centroid(1),centroid(2),'ok','LineWidth',1,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',5);

len =length(boundary);

for count = 1:len



Võ Hoàng Trơvi – Nguyễn Sĩ Bích



88



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

Hình 2.9 : Hình tay máy.

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

×