1. Trang chủ
  2. » Thể loại khác

Nghiên cứu phát triển hệ thống robot thông minh dùng trong giảng dạy (Research and develop an intelligent robot system used for education) : Đề tài NCKH.QC.01.06

51 19 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 17,14 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Nghiên cửu phát triển một số chươno trình phần mềm xử lí, nhận dạng ánh sáng, hình ảnh, âm thanh, khoang cách, v.v.., điều khiến các trục robot trên cơ sở các phép tính toán biến đổi t

Trang 1

(Research and develop an intelligent robot system

used for education)

Trang 2

- N ghiên cứu các bài toán động học điều khiển chu yển đ ộng của robot

di độno trên cơ sờ các phép biến đổi ma trận đồng nhất.

- Bước đầu tiếp cận với những vấn đề liên quan đến robot thông m inh thuộc các bài toán về cảm nhận, nhận thức và hành đ ộ n g trong các lĩnh vực điện tử, tin học ( các đối tượng điện tử Iihư sensor, m ạch đo lường và điều khiển, các bài toán thuộc về trí tuệ nhân tạo v.v ).

K hoa C ông nghệ

K hoa C ông nghệ

K hoa C ông nghệ

TT K H T N & C N Q G

Trang 3

- Phát triển c ác phấn m ềm đo lường và diều khiên trên cơ sở triển khai lắp rá p m ộ t số mẫu robot thương phẩm từ các kit san c ó và các kỹ thuật đo lường g h é p nối máy lính trong phòng thí nghiệm.

- T hiết k ế xây dựnu một mẫu robot đơn giàn ch o phòng thí nghiệm

Đ iện tử & Kỹ thuật m á y tính dùng cho giảng dạy đào tạo.

- Đ ã phân c ô n g dịch sách c hu yên m ôn về robot, tổ chức được 11 buổi

x ê m in a kh oa học T ừ đó đã nghiên cứu lắp ráp được 3 robot trên cơ sở các kit củ a h ã n g L ynxm otion: một tay m áy 5 bậc tự do cố định, m ộ t tay m áy di

đ ộ n g 5 bậc tự do với các m ôtơ xung và m ột robot di chuyển 12 trục khuỷ hoạt đ ộ n g kiểu tự q uản trị (autonomous).

- Đ ã phát triển các chương trình phần m ềm điều khiển được ghép nối

t h ô n s tin q u a cổng C O M và cổng USB của m áy vi tính.

- Đ ã và đang hướng dẫn 1 sinh viên cao học, 6 khoá luận tốt nghiệp Đại học và 2 sinh viên nghiên cứu khoa học các đề tài về robotics.

- Có 02 báo cáo về Robotics tại Hội nghị K hoa học K hoa CN.

- Đ ã hirớng dẫn nhóm sinh viên thiết kế, xây dựng 1 robot di dộng có trọ n g lượng trên 40 kg, 1 robot tự động đơn giản tham gia cuộc thi Robocon

2 00 2 tại TP Hồ Chí Minh.

3 T ìn h hình sử dụ ng kinh phí củ a đề tài:

3.1 K in h p h í được cấp: 4 0.000.000 V N Đ

3 2 C h i:

1 T ran g thiết bị: 31.203.000 đ chiếm 78%

2 Tài liệu, sách chuyên m ôn, in ấn: 2.330.000 đ chiếm 5%

Trang 4

B B Á O CẢ O K Ế T Q U Ả N C K H C A P Đ H Q G

I M ở đầu

C ách mạng k h o a học côns, n g h ệ trên th ế giới hiện đang phát triển với tốc

độ rất nhanh, k h ò n o n ? ừ n 2 vươn lên chiếm lĩnh nhữns, đinh cao mới T r o n s

đó p hải kể đến cúc thàn h tựu về kỹ thuật tự động hoá và thôn» m inh hoá trong sản xuất và c á c dịch vụ ch o cuộc sốno hàng ngày Một trong những ứ n s

d ụng c ủ a kỹ th uatạ này là việc nghiên cứu thiết kế, phát triển các hệ thỏnơ robot cũng như robot xử lý th ô n g minh M ột hệ thống như vậy là một c ơ cấu

th ông minh có sự tham gia x â y dựnơ của nhiều ngành khao học công nơhệ như đ iệ n tử, cơ k h í chính xác, tin học, vật lý học, đ iề u khiến học và thậm chí

cả các ngành kh oa học như y, sinh, hoá học và khoa học xã hội như tâm lý học.

K ho a Côn« n g h ệ là m ột đơn vị của đại học Q uố c gia H à nội, m ột c ơ sở phải đ ạt được tiêu c h í củ a Đ ảng v à N hà nước giao cho là một trung tâm đào tạo chất lượng cao, đa ngành, đa lĩnh vực Vì vậy, cơ sở này với 2 n g àn h chính là Công n »h ệ T h ô n g tin và Điện tử Viễn thông không thể k h ô n s đi sâu vào tìm hiểu n gh iên cứu côn g nghệ liên quan đến lĩnh vực Robotics.

Do đặc thù là m ộ t đon vị mới thành lập, tiềm lực c ơ sở vật chất chưa nh iề u tuy đ ã và đang g iả n g dạy các đề tài có liên quan đến robot (như lý thuyết điều khiển-hệ điều k h iể n , kỹ thuật gh ép nối m áy tính, trí tuệ nhân tạo V V ) nên cách tiếp cận tốt nhất là bước đ ầ u tập trung vào nghiên cứu các hệ th ôn g robot dùng cho đà o tạo, ơiảng dạy.

Đ ó là lý do để xin thực hiện để tài “ N ghiên cứu phát triển hệ thống robot thông minh dùng tro n g giảng cỉạy”

II N hữ n g nội d u n g chính c ủ a đề tài

T rên cơ sở kiến thức tích luỹ trong nhiều năm của các cán bộ trong ng à n h

Đ iện tử-Viễn th ô n g về lý thuyết điều khiển, hệ điều khiển, các c ơ sở kỹ thu ật điện tử, tin học, g h é p nối vi tính, kỹ thuật đo các đại lượng không điện bằng phương pháp đ iệ n bằng các c ả m biến, v.v cùng các tài liệu tham k hảo

ch u y ên môn về ro b o t và robotics đề tài đã tập trung thực hiện các nội d u n g

ch ín h như sau:

- Tiến hành c ác x e m in a kho a học trong khuôn khổ đề tài.

Trang 5

- Nghiên cứu láp ráp, xây dựng các robot nhỏ dùng cho đào tạo trên cơ

nhằm xây dựng các bài thực hành về robot phục vụ cho giáng dạv lí thuyết

- Nghiên cửu phát triển một số chươno trình phần mềm xử lí, nhận dạng ánh sáng, hình ảnh, âm thanh, khoang cách, v.v , điều khiến các trục robot trên cơ sở các phép tính toán biến đổi toạ độ

- Đưa giáo trình cơ sở vể robot (cấu tạo, động học, động lực học, v.v ) siáng dạy cho sinh viên năm thứ 4 chuyên ngành Điện tử & KTMT

III Các kết quả cụ thể đã đạt được

- Đã tiến hành 11 buổi Xemina khoa học của Bộ môn về Robotics, trong

đó 90% là do các cán bộ trẻ tron® ngành Điện tử-Viễn thông đảm nhận Các buổi xemina khoa học như vậy đã nâng cao được trình độ hiểu biết của anh chị em trong lĩnh vực chuyên môn hẹp và còn mới mẻ này của ngành, nội

du no của chúng sẽ được sử dụng làm tiền đề cho việc phát triển các giáo trình chuyên sâu về robotics

- Trong khuôn khổ kinh phí của đề tài, đã nghiên cứu lắp ráp được 3 robot trên cơ sở các kit của hãng Lynxmotion: một tay máy 5 bậc tự do cố định, một tay máy di động 5 bậc tự do với các môtơ xung và một robot di chuyển 12 trục khuý hoạt động kiểu tự quản trị (autonomous) Từ các robot này, các cán bộ bộ môn đã phát triển các chương trình phần mềm điều khiển được ghép nối thông tin qua cổng COM của máy vi tính Các chương trình cho phép điều khiển chính xác chuyển động của các trục khuỷ, cho phép tính toán và đưa đầu kẹp đến các toạ độ cục bộ qua hệ toạ độ toàn cục Các tay máy này và 1 tay máy chính xác có sẩn cùng phần mềm được phát triển là tiền đề để xây dựng các bài tập thực hành cho sinh viên năm cuối của Bộ môn Điện tử & KTMT

2002, đã thử nghiệm 1 mô hình hệ thống thị giác máy (machine vision) trên

cơ sở ghép nối 1 camera ghi ảnh tĩnh với máy vi tính và điều khiển tay máy qua cổng ghép nối nối tiếp nhằm tạo bước đầu cho việc phát triển hệ thống robot thông minh Đã thử nghiệm bước đầu việc kết nối điều khiển Robot di động bằng máy tính qua sóng vô tuyến 24 MHz Đày là tiền đề cho việc tham

Trang 6

gia các báo cáo khoa học về Robotics tron? Hội nshị Vò tuyến toàn quốc vào tháno 11/2002 tới.

- Đĩi thiết kế, xây dựng 01 robot di độns điều khiển bằng tuy với cácsensor và 01 robot tự động đơn giàn tham gia cuộc thi sáng tạo robot 2002

Do thừi gian và điều kiện kinh phí hạn hẹp, trình độ chuyên môn còn có hạn nên đội tham gia không lọt được vào được vòng chung kết Tuy nhiên các yêu cầu ban đầu đặt ra cho nhóm tham gia đều đã đạt đựợc (robot bó được bón« vào tất cả các loại mục tiêu, tham gia để học hỏi kinh nohiệm của các cơ sở

- Các kết quả trên được thể hiện tại các việc sau:

+ 02 báo cáo khoa học tại HNKH Khoa Công nghệ

+ 01 Luận án cao học đang được tiến hành sẽ được bảo vệ vào cuối tháng 6/2002

+ 06 Khoá luận tốt nghiệp của sinh viên TCK5 và K43

+ 02 sinh viên NCKH (lang thực hiện

IV Những kết quả đã được ứng (lụng triển khai

Xemina, đang xây dựng các bài thực hành robot qua 3 robot Lynxmotion dùng cho sinh viên năm thứ 4 Khoa CN Bước đầu đã kết hợp với Viện Điện tử-Tin học, đưa môn robotics vào giảng dạy cho sinh viên chuyên ngành điện

tử & KTMT trong năm thứ 4 Soạn thảo tài liệu hướng dẫn thực hành trên 3 robot kể trên và 1 robot đào tạo chất lượng cao ED-7220 sắn có

- Đã đưa robot di động và 1 robot tự động đon giản tham gia vào cuộc thi sáng tạo robot Việt nam 2002 "Robocon" tại TP HCM Mặc dù chưa vào được vòng chuns kết nhưng các yêu cầu đặt ra ban đầu đều đạt được Các cán

bộ và sinh viên đã học hỏi được nhiều kinh nghiệm qua cuộc thi

V Những mục tiêu, nội dung chưa thực hiện được

- Chưa có báo cáo tại Hội nghị chuyên ngành và bài báo tại tạp chí chuyên ngành, nhưng đề tài sẽ đãng ký báo cáo tại phân ban Robotics tại Hội nghị Vô tuyến điện tử toàn quốc tháng 11/2002 tới trên cơ sở phát triển các báo cáo tại HNKH Khoa

6

Trang 7

VI Danh mục các thiẻt bị và tài liệu kèm theo Háo cáo

• 01 tập tài liệu các báo cáo điển hình tại các xemina về robot.

• 01 tập tài liệu soạn cho các bài tập thực hành robot

• 02 bài báo tại Hội nghị NCKH khoa Công nghệ 2002

• 03 robot Lynxmotion đã được lắp ráp gồm:

- A nn ro b o t 5 axis được điều khiển qua cổng COM của máy vi tính

- Mobile arm ro b o t 5 axis được điều khiển qua cổng COM của máy vi

- Hexapol mobile robot 12 axis, hoạt dộng theo nguyên tắc hệ tự quản trị (autonomous) bằng các vi điều khiển (microcontroller) hoặc được điều khiển qua cổng COM của máy vi tính Hệ gồm các sensors hồne ngoại, sensor siêu âm, chỉ thị tinh thể lỏng LCD, vi điều khiển

và bộ nhớ EPROM v.v

• 03 sách chuyên môn về phần cứng và phát triển phần mềm robot

• 01 robot di động điều khiển bằng tay và 1 robot di động tự động.tính

Hà nội, ngày 30/4/2002

C H Ủ TR Ì Đ Ề T À I

PGS.TS Pham Tế Thế

Trang 8

BRIEF OF TH E PR O JE C T

RESEARCH AND DEVELOP

AN INTELLIGENT ROBOT SYSTEM USED FOR EDUCATION

The code number: QC.01.06

The coodinator:

Ass Prof Dr Pham Te The

The participants of the project:

BSc Hoàng Hưng Hải

BSc Hoàng Gia Hưng

Ass.Prof Nguyễn Quốc Toàn

Ass Prof Dr Đào Khác An

1 Purpose and contents of the research

1.1 Purpose

training and education

- Understand kinetics problems controlled the moving of mobile robots based on homogeneous matrix conversions

- Approch problems related to intelligent robots, those problems belong to one of perception, cognition and action in the fields of electronics, information (sensors, measurement and control circuits, problems of artificial intelligent)

1.2 Contents

in lectures at the Hanoi National University

Faculty of Technology Faculty of Technology Faculty of Technology Faculty of Technology Faculty of Technology Faculty of Technology Faculty of Technology Faculty of Technology Faculty of Technology Faculty of Technology NTSC

8

Trang 9

- Develop measurement and control soft wares based on installing some of robotic commercial patterns from the available kids and interfacing techniques in laboratories.

- Design and build a simple robot used for the laboratory of electronics and computer engineering which will be used for practice and learning

2 Results

- Special book have been translated 11 scientific seminar on robotics have been organized 3 robots have been installed based on Lynxmotion Co kids which include: a 5 free order arm-robot, a mobile arm robot and a mobile robot with 12 axis acted by an autonomous model

- Controlling software programs interfaced via COM and USB ports of PC which have been developed

- Instruct a MSc student, 6 theses of undergraduate students and 2 scientific researching students under robotics projects

- There are 2 scientific reports at the scientific conference of the faculty of technology 2002

- Instruct a student group to design and develop a mobile manual robot which has a 40 kg weigh and a automatic mobile robot Both of them were brought to take part to the Robotcon contest at the Ho Chi Minh city on April 2002

Trang 10

PHỤ LỤC

a, 2 bài báo tại HNKH khoa Công Nghệ

b, 6 trang bìa khoá luận tốt nghiệp Đại học

c, 1 Báo cáo về công việc thiết kế, xây dựng và chế tạo robot Fotech

Trang 11

ĐIỂU KHIỂN ROBOT 4 BẬC T ự DO

VẼ CÁC ĐƯỜNG CONG BẰNG HỆ THỐNG THỊ GIÁC MÁY

(Controlling of the four degrees of freedom robot

to draw paths by a machine vision system)

Nguyễn thị Thanh Vân, Hoàng Hưng Hải, Trần Quang Vinh, Chừ Văn An và Phạm Tế Thế.

B ộ m ôn Đ iện từ vù K ỹ tliuật m á y tính.

K h o a C ông nghệ Đ ụi học Q uốc gia H à nội.

O ne o f the in te re s tin g p ro b le m on the a u to m a tic c o n tro llin g fie ld in the w o rld is research

o f in te llig e n t ro b o ts B a sin g on the k n o w le d g e o f e le ctro n ics, in fo rm a tic s and co m p u te r

in te rfa c in g , such as m o d e l has been developed at the departm en t o f e le c tro n ic s and com puter

e n g in e e rin g A m a c h in e v is io n system is b u ilt su cce ssfu lly b y to lin k a C C D -ca m e ra w ith a

c o m p u te r as w e ll as a s o ftw a re o f the s im p le im age process and c o g n itio n T o c o m b in e w ith a

c o n tro llin g p ro g ra m o f d y n a m ic p ro b le m o f ro b o t tra je c to ry , the system can in s tru c t a greeper

o f the fo u r degrees o f fre e d o m ro b o t to d ra w paths w h ic h are " lo o k e d " b y cam era.

1 Giói thiệu.

Những năm gần đây, nhờ sự phát triển vượt bậc của kĩ thuật điện tử và máy tính,

thị giác máy đã được sử dụng rộng rãi tại các lĩnh vực đo lường điều khiển trong công

học về rôbốt (robotics) cũng được phát triển hết sức nhanh chóng Cùng với các cảm biến khác, khi hệ thống thị giác máy được gắn với một rôbốt sẽ làm cho nó trở nên

"thông minh" hơn và cho phép sử dụng nó trong nhiều ứng dụng Một hệ thống kiểu như vậy bước đầu đã được nghiên cứu thử nghiêm tại phòng thí nehiệm ghép nối máy tính, bộ môn Điện tử và Kỹ thuật máy tính Bằng một camera ghi ảnh tĩnh ghép nối máy tính cùng phần mềm xử lý ảnh, khi kết hợp với một chương trình động học điểu khiển quỹ đạo của một tay máy 4 bậc tự do; hệ thống cho phép điều khiển đầu kẹp của tay máy vẽ lại các đường cong được "nhìn" thấy

Sơ đổ thí nghiệm được trình bày trên hình 1 Hình đường cong cần bắt rôbốt vẽ lại dược một camera CCD (charge-coupled device) thu nhận, được số hoá và lưu trữ vào

bộ nhớ của máy tính qua ghép nối USB (universal serial bus) Số liệu đó được một chương trình xử lí qua các bưóc để có được một tập toạ độ xy của đường cong Tập toạ

độ này được quy chiếu vào hệ toạ độ toàn cục của tay máy Từ đó chương trình điều khiển sẽ tính ra các toạ độ cục bộ gắn trên 4 trục khuỷ của tay máy nhằm cho phép máy vi tính điều khiển các cánh tay quay các góc tương ứng, cho phép đẩu kẹp di chuyển qua các điểm đổ vẽ một đường cong với các toạ độ cục bộ tại một mặt phẳng tương ứng với tập toạ độ toàn cục xy

Abstract:

Ta y

m á y

C a m e r a CCD

C ô n g

US B

H ìn h 1. H ệ thống th ị giác m áy đ iề u k h iể n ró b ố t.

Trang 12

2 Hệ thống thị giác máy và chương trình xử lí ảnh.

Tín hiệu thị tần hình ảnh cần vẽ được ghi nhận và số hoá qua camera và được ghi vào bộ nhớ máy tính trone, một file dạng bitmap Thông tin giữa camcra và máy tính được giao tiếp qua cổng USB Chương trình xử lý ảnh được phát triển thu nhận khung cảnh hoặc ảnh ở đầu vào, sau đó thực hiện một dãy các xử lý đa dạng dể tạo ra một ảnh

ở đẩu ra mang thông tin cần thiết, phân tích rút ra được các đặc trưng cho phép hiểu được khung cảnh hoặc ảnh đó

Xử lý ảnh là một quá trình phức tạp và đa dạng liên quan đến nhiều lĩnh vực khác nhau trong đó có 3 khâu chính: thu nhận và sô' hoá ảnh, xử lý và phán tích ảnh, hiển thị

và mã hoá ảnh

Trong quá trình xử lý ảnh số, các vị trí toạ độ của đối tượng ảnh sẽ được tính toán

và sau đó được đưa ra chương trình điều khiển rôbốt Có các loai ảnh số là ảnh đa mức xám, ảnh nhị phân, ảnh màu và ảnh đa phổ

Do yêu cầu của bài toán là điều khiển rôbốt đi theo một đường định trước nên chỉ cần xử lý ảnh nhị phân là đủ, các điểm đen biểu diễn đường đi còn các điểm trắng biểu diễn nền ảnh Một điểm ảnh X với toạ độ [m,n] được biểu diễn như sau:

Khi dã có được ảnh nhị phân, cần xử lý ảnh này để dẫn đường cho rôbốt đi theomốt đường bất kỳ trong một mật phẳnu Chương trình xử lí được thực thi qua các côngđoạn: phân vùng ảnh, tìm xương ảnh và cuối cùng là tỉa ảnh (tỉa ảnh chỉ cần thiết trong trường hợp muốn robot đi theo một đường kín)

2.1 Phân vùng ảnh.

Một vùng ảnh R (Region) là tâp hợp các điểm ảnh có cùng chung các thuộc tính thuộc về một đối tượng trong ảnh Trong trường hợp ảnh nhị phân, vùng ảnh được tạo bởi các điểm đen nằm liền sát nhau

Phân vùng ảnh là quá trình phân hoạch tập hợp các điểm ảnh X thành các tập con các vùng ảnh R, thoả mãn các diều kiện

Rị * 0 V i và X = u R|

R , n R j = 0 Vi, j i * j

0 đây chỉ quan tâm đến vùng ảnh lớn nhất vì chính vùng ảnh này chứa các thông

tin vê đối tượng cần xử lý Các vùng ảnh khác xuất hiện khi chuyển từ ảnh đa mức xám

sang ảnh nhị phân hoặc do nhiễu đều bị loại bỏ

Xương phải thể hiện hình dáng của đối tượng,

Xương phải có cùng số thành phần liên thông, các nhánh, các khe như hình dángđối tượng,

Xương phải khórm chịu ảnh hirờncr của nhiễu và có thể cho phép khôi phục lại hìnhdáng dối tượng

Tìm xươns ảnh là quá trình biến đổi sự biểu diễn hình dạng ban đầu của đối tượng ảnh nhị phân sang dạng biểu diễn bởi xương ảnh Tuỳ vào khả năng cho phép khôi phục ảnh từ xươnq ảnh, có 2 phương pháp tìm xươnu ảnh: phương pháp không có khả năng khôi phục ảnh từ xương và có khả nãng khôi phục lại dạnc ban đđu

Trang 13

Xuất phát từ mủe đích của bài toán, phương pháp tìm xương ảnh không có khả năng khôi phục ảnh từ xương dược sử dụng Ưu điểm của phương pháp này là thuât toán dơn giản, ít bị ảnh hưởng bởi nhiễu và khá chính xác.

Về mặt nguyên tấc, xương ảnh dược tìm bởi quá trình làm mảnh dẩn dần hình dạng ban đầu của ảnh bằng cách xoá dần các điểm đen từ biên ảnh vào trong cho đến khi đạt xương ảnh

Một trong những cách tìm xương ảnh là dùng các ma trận mặt nạ như hình 2

2.3 Tỉa ảnh.

Tỉa ảnh là quá trình loại bỏ những nhánh không mong muốn khỏi xương ảnh Quá trình này chỉ được thực hiện khi muốn điều khiển robot đi theo một đường kín trong khi ảnh gốc bị rẽ nhánh

Quá trình tỉa ảnh cũng dùng các ma trận mặt nạ theo tương quan 8 phía để loại bỏ dần các điểm ngọn của các nhánh như hình 3

3 Chương trình điều khiển động học của rỏbốt 4 trục tự do.

Rôbốt được cấu tạo bởi các khớp quay hoặc tịnh tiến, tương ứng với mỗi khớp làmột bậc tự do Một phương pháp để điều khiển Robot tới một vị trí bất kì trong không gian làm việc là thông qua các phép toán ma trận Thiết lập hộ toạ độ gốc cho toàn hệ gọi là hệ toạ độ toàn cục (global), tiếp theo xác định cho mỗi khớp một hệ toạ độ riêng, các hệ toạ độ này gọi là hệ toạ độ cục bộ (local) hay còn gọi là các hệ toạ độ suy rộng Mối quan hệ giữa 2 hệ toạ độ này được biểu diễn thông qua ma trận chuyển đổi tuân iheo các phép biến đổi đồng nhất Bài toán thuận là trên cơ sở các trục quay, góc quay

biết trước toạ độ vị trí đầu kẹp, tìm các góc quay, trục quay tương ứng Với nhiệm vụ đặt ra, bài toán ncược được xây dựng trên cơ sở các phương trình động học và được giải để điều khiển rồbốt chuyển động đến một vị trí bất kỳ trong vùng làm việc

3

Trang 14

Đối với tay Iĩiáy có 4 bậc tư do và một đầu kẹp, từ hệ toạ độ toàn cuc và khoảng cách giữa các khớp ta xác định dược các toạ độ cục bộ Rồbốt dược xét trong khồng gian hai chiều do sự thay đổi khoảng cách chỉ ở trong mặt phảng x-z Giá trị của các khâu của rôbốt Lynxmotion được

xác định như hình 4 Để xác định vị

trí của các khớp quay cần phải tìm

các góc tương ứng giữa các hệ toạ

độ Các góc này được xác định như ỏ'

hình 5 Do cấu tạo hình học và sự di

chuyển các khớp của rôbốt nên các

góc đều có RÍỚi hạn Giới hạn này để

đảm bảo cho rôbối không bị phá huỷ

trong khi hoạt động Tương ứng với

toàn cục Hệ toạ độ thứ hai quay

bằng với chiều dài của đầu kẹp so với hệ toạ độ thứ tư 5 ma trận chuyển đổi được xác định như sau:

Trang 15

với các khớp quay Điều này thực hiện dược thông qua việc giải phương sau:

Việc giải phương trình (1) liên quan đến nhiều phương trình siêu việt, thực hiện nhiều phép tính toán khi đồng nhất hai ma trận, đồng thời việc xác định hướng và vị trí của dầu kẹp so với hệ toạ độ toàn cục 16] Trong trường hợp cụ thể chọn mặt phẳng vẽ vuông góc với mặt phẳng xy của hê toạ độ toàn cục có thể tính trực tiếp từ kích thước hình học của rôbốt Khi đó đầu kẹp bị giới hạn ở các vị trí vuông góc với mặt phẳng xy

và quay quanh trục X toàn cục một góc 0 [5]

Dưới đây là các biểu thức tính toán các góc quay trên hình 5 của 4 trục khuỷ tay máy từ toạ độ toàn cục xy cuả điểm định vẽ:

4 Kết quả và tháo luận.

Trong phạm vi đề tài nghiên cứu này, hệ thống được mô tả ở trên đã được lắp ráp Kết hợp với chương trình bắt hình (graber) chạy trong môi trường Windows kèm theo camera; một chương trình xử lý ảnh đã được viết cùng một chương trình tính toán quỹ đao của rôbốt tay máy Lynxmotion 5 trục Để bài toán được đơn giản, bút vẽ được gắn

cố định với khóp thứ tư và như vậy có thể coi mô hình hoạt động với 4 bậc tự do Các chương trình được viết bằng ngôn ngữ c++ Bốn môtơ của tay máy được điều khiển bằng các lệnh 3 byte qua cổng ghép nối nối tiếp COM theo chuẩn RS232C [7] Vì vậy, chương trình điều khiển đã phải xây dựng một hàm chuyển đổi các giá trị góc quay ra các byte lệnh tương ứng; trong đó byte thứ nhất là byte đồng bộ, byte thứ hai là số thứ

chương trình chính Hìnhób là lưu đồ chương trình phụ xử lý ảnh và hình 6c là lưu đồ chương trình phụ điều khiển chuyển động của rôbốt

Kết quả đã điều khiển được robot đi theo những đường dẫn được vẽ trên giấy đặt trước camera Tuy nhiên, do rôbốt Lynxmotion thuộc loại dùng cho các mục đích giải trí nên độ chính xác cơ khí khône cao Vì vậy, dườntĩ đi của robot mới chỉ dừng ờ mức đẩy đủ các đường nét chứ chưa thật tối ưu Hướng nghiên cứu tiếp tục của đề tài là tiếp tục hoàn thiện các chương trình xử lí ảnh và tính toán quỹ đạo đầu kẹp áp dụim cho tay máy đào tạo có độ chính xác cơ khí cao hơn nhằm mở rộng khả năng ứng dụng của hệ thốnc thị giác máy tronc phònc thí nchiộm và dân dụng

5

Trang 16

H ìn h 6 Lư u đ ổ chương trìn h ch ín h (a), chương trìn h phụ xử lý ảnh (b ) và

điể u k h iể n tay m á y (c)

TÀI LIỆU THAM KHẢO

1 J A E S L IM ; T w o -D im e n s io n a l Signal and Im age Processing, P rcn tice H a ll, E n g le w o o d ,

Trang 17

const unsigned char home_pos[4] = {145,50,63,115};

const unsigned char init_posf4] = {127,127,177,127};

unsigned char servo_pos[4] - {127,127,127.50};

unsigned char new_pos[4] = {145,200,63,115};

float theta;//servo 0

float phi; //servo 1

float psi; //servo 2

200

int i;

Trang 18

float Thinning(int i, int j);

void Refresh(int nw, int old, int k);

void Read_image(char ftlename[40]);

void W rite_image(char filename[40], int colours);

void Draw(float x, float y);

float angle_3(float x, float z);

float calc_phi(float x, float zy,

float calc_psi(float x, float y);

{

fscanf(infile,"%c",&aa); fscanf(infile,"%c",&bb); fscanfiinfile,”%c",&cc);

if (aa> 128) image[i][j]= I ; else image[i][j]=0;

}}

Trang 19

int iJ,n,m,bien,bacloc=3;

unsigned char median;

unsigned char filter_matrix[160][120];

//The purpose o f this function is to segment the image into as many

//segments as necessary The black pixels are changed to another colour

//which determines its label

Trang 20

for(i= 1 ;i<max_x-1 ;i++)

{

//printf("\n Column = %d",i);

for(j=1 j< m ax _ y -1 :j++){

if(image[i][j]==0)

{if(image[i- i ][)]> I) //check o f above pixel

image[i][j] = image[i-l][j];

if(image[i][j-1 ]> 1 && image[i][j]!=image[i][j-l])

//check o f left pixel{

if(image[i][j]==0)

image[i][j] = im age[i][j-l];

else

Refresh(image[i][j],image[i][j-]],i); //image refresh for connection labels}

if(image[i][j] = 0)//check if the pixel have been given

//a label{

image[i][j] = seg_no;//give new label

}}

}}

}

n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

//Function Refresh

//Refreshes the image and change old numbers in the image with the new

//number, k is the limit for the refreshment

void Refresh(int nw, int old, int k)

if(image[i][j]==old) image[i][j]=nw;

}}

}

//Function Find_segment

//Find the biggest segment in the image and sets the value to 0

//and the rest to 1

I I * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

void Find_segment()

{

Trang 21

ini b ig g e s tn o = 0;//thc biggest no in the image

int i j , count,local_size;

int s e g m e n ts iz e = 0;

int lgst_segm ent;

//this loop find the biggest no in the image

for(i=0;i<max_x;i++)

{

for(j=0J<max_y;j++)(

if(image[i](j]>biggest_no)

b ig g e stn o = image[i][j];

}}

//find the size o f all the segments and chose the biggest

for(count=2;count<=biggest_no;count++)

{loca!_size = 0;

for(i=0;i<max x;i++)

{for(j=0y<m ax_yj++)

{if(im age[i][j]= count) local_size++;

}}

if(local_size>segment_size) //is the segment bigger than the

//previous biggest{

seg m en tsize = lo c a lsiz e ; lgst_segment = count;

//printf("largest segment = %d\n",lgst_segment);

//getchar();

}}

//change all other labels than the biggest to 1 (white)

for(i=0;i<m ax_x;i+u)

{for(j=0y<m ax_yj++)

{if(image[i][j] != lgst_segment) image[i][j] = 1;

else image[i]|j] = 0;

}}

}

;<* **************** ******************************************************** //Function Skeletonize

//The function skeletonize the image by thinning until a thinning cause no

//changes

//* * * * * ,,* * * ,♦ * * * * * * « ,♦ ,* ♦ ♦ ,* * ♦ * * * * * * * * * * * ♦ * * * * * * * * * ,,* * * * * * * * * * * * * * * * * void Skcletonize()

{

int i.j;

int outerpoints[10000][2];

Trang 22

int cliangcs = I ;

int o_points;

while(changes != 0)

{changes = 0;

o p o in ts = 0;

for(i=l ;i<max_x-l ;i++)

{for(j= I u<max_y-1 y ++)

{if(image[i](j]==0)//find the biack pixels

{//checks if one o f the connected pixels is white if(im age[i-l][j]= = 1 || image[i+l ][j] = 1 ||

im age[i][j-l] == 1 || im ag e [i][j+ l] == I){

//write the co-ordinates to the outerpoints array outerpoints[o_points][0] = i;

outerpoints[o_points][l] = j;

o_points++;

}}

}}

/ / ♦ * * * * * * * * ♦ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

//Function Thinning

//Thin the pixel given to it if it is allowed according to the mask.

//inverted masks are used which means that they shall not fit to "fit".

{{ 2 1 , 1 },{ 0 , 1 , 1 },{ 0 , 0 , 2 }}, { { 1 1 , 2 },{ 1 , 1,0}, { 2 , 0,0}}, {{0.0,2},{0,1,1},{2,1,1}}};

char a,b.c;

float chg = 0;

for(a=0;a<8;a++)//loop for masks

{for(b=0;b<3;b++)

Trang 23

{if(im age[i-1 +b][j-1 +c]==thin_mask[a][b][c])

{b=c=4 ¡//terminate the two first loops if mask fitted }

}

>

if(b == 3 && c == 3)//masks fit if this is obtained

{chg = 1 ;//set changes to one

a 8;//terminates the first for loop if mask fits image[i][j] = 1 ¡//change the pixel to white }

}return(chg);

}

y / * * » * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

//Function Prun_image

//This function pruns the image by calling the pruning function until no

//pixels are changed

//for the last iteration{

changes = J;

for(i= 1 ;i<m ax_x-1 ;i++)

{for(j= 1 j< m ax _ y -1J+ +)

{if(image[i][j]==0)

{changes += Pruning(i j);//calls the pruning function }

}}

}}

y y * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

//Function Pruning

//Prun the pixel passed to it if a mask fits and return one if it is

//pruned Inverted masks are used so they shall not fit to "lit".

Trang 24

{{0.0.2}.{0,1,1},{0.0,2}},{{0.0.0},{0,1,0},{1,0,0}},{{1,0,0},{0,1,0},{0.0,0}}, {{0.0,1},{0,1,0},{0.0,0}},{{0.0.0},{0,1,0},{0,0,1}}};

char a,b,c;

float chg = 0;

for(a=0;a<8;a++)//loop for the masks

{for(b=0;b-'3;b++)

{for(c=0;c<3;c++)

{if(im age[i-l+b][j-l+c]==Prun_m ask[a][b][c])

' {

b=c=4;//terminate if a pixel fit }

}}

if(b == 3 && c == 3)// mask fit if this is true

{chg = 1;

a = 8; //terminates the firts for loop imaoe[i][j] = I ¡//changes the pixel to white }

}return(chg);

//This function find the first black pixel in the image and send the

//co-ordinates to the draw function It then tracks the path in the image

//and output the co-ordinates to the draw function The co-ordinates

//are furthermore written to the file data.txt

l l * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * v * * * * * * * * * * * * * * * * * * + * * * * * * * * * + * * * * * * * * * * *

void Path()

{

int ij,la s t_ i,la s tj,th is _ i,th is j,n e x t_ i,n e x tj = 0;

int initial_ i,in itialj;

int increment = 1000;

Trang 25

{if(image[i][j]==0)//find the first black pixel

{

in itia lj = t h i s j = i;//initialise initial J = t h i s j = j;//initialise i=max_x;//terminate loop j=max_y;//terminate loop }

}}

while(next_i != initial_i || next j != in itia lj)

{

increment-H-;

//the next check the neighbouring pixels and find the one which is not

//the same as the previous

if(image[this i)[th is j-l]= = 0 && ( t h i s j != l a s t j || th isj-1 != last J ) )

{

n e x tj = this_i;

n e x tj = t h is j- 1;

}if(im age[thisj][this j + l ] = = 0 && ( th is j != l a s t j || thisJ-t-1 != la s tj) )

{

n e x t i = this i;

n e x t j = this J + l ;}

if(im ag e[th isj-l][th is j]= = 0 && (this_i-l != l a s t j || t h i s j != la s tj) )

{

n e x t j = this i-1;

n e x t j = th is j;

}if(im a g e [th isj+ l][th isj]= = 0 && ( th is j+ l != Iast_i || t h i s j != la s tj) )

{

n e x t j = t h i s j + l ;

n e x tj = th is j;

}if(increment >= STEPSIZE/unitJength)

//This number decides how many pixels the program shall //run through before it moves the arm

{Pixel_X Y Z (thisJ,thisJ);//cals the function to output the pixel // image[this i] [ th is j] = l;

putpixel(250+thisi,320-thisj,14);delav(20);

increment = 0;

}last i = this i;

l a s t j = t h is j;

Ngày đăng: 26/09/2020, 22:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w