Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
2,84 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ ĐỒ ÁN TỐT NGHIỆP NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO ROBOT DELTA PHÂN LOẠI SẢN PHẨM Người hướng dẫn: TS ĐẶNG PHƯỚC VINH Người duyệt: TS LÊ HOÀI NAM Sinh viên thực hiện: TRẦN NHẬT TRÌNH HUỲNH HỒNG VŨ Số thẻ sinh viên : 101140204 101140208 Lớp: 14CDT2 Đà Nẵng, 6/2019 TÓM TẮT Tên đề tài: THIẾT KẾ VÀ CHẾ TẠO ROBOT DELTA PHÂN LOẠI SẢN PHẨM Họ tên sinh viên: TRẦN NHẬT TRÌNH MSSV: 101140204 HUỲNH HỒNG VŨ MSSV: 101140208 Lớp: 14CDT2 Nội dung đồ án đề cập sở lý thuyết phương pháp phân tích, tính toán động học, động học ngược điều khiển robot Delta kết hợp công nghệ xử lý ảnh Dựa phương pháp đó, tác giả vào thiết kế chế tạo mẫu robot điển hình robot Delta để có nhìn tồn diện loại robot trọng phát triển công nghiệp Đồ án gồm chương, cụ thể: Chương 1: Tổng quan robot Delta Chương chủ yếu cung cấp cho người đọc nhìn ban đầu robot Delta, từ lịch sử phát triển, đến lợi so với robot thơng thường khác, ứng dụng đời sống công nghiệp, đồng thời khái quát sơ đồ tổng quan hệ thống, đặt vấn đề để xây dựng robot Delta ứng dụng cơng nghiêp Chương 2: Thiết kế khí Chương này, tác giả phân tích phương án thiết kế tính tốn thiết kế dẫn động cho robot, giải vấn đề động học robot song song Delta tính tốn động học thuận, động học ngược sở phương trình liên kết phương pháp hình học Chương 3: Thiết kế hệ thống điều khiển Chương giải vấn đề liên quan đến việc chọn dòng vi điều khiển trung tâm modun thích hợp mạch điều khiển cho robot thiết kế mạch điện điều khiển nhằm đảm bảo chức robot Chương 4: Xây dựng chương trình điều khiển Chương giới thiệu lý thuyết xử lý ảnh nói chung bước xử lý ảnh nói riêng Chương xây dựng nguyên lý làm việc cho robot từ tạo sơ đồ thuật toán áp dụng vào chương trình điều khiển cho vi điều khiển xây dựng giao diện giao tiếp máy tính vi điều khiển nhằm giúp robot thực theo theo nguyên lý, sơ đồ thuật toán hoạt động robot Delta Chương 5: Kết luận Chương đánh giá rút hạn chế kinh nghiệm để có hướng phát triển đề tài I ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ CỘNG HỊA XÃ HƠI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: TRẦN NHẬT TRÌNH HUỲNH HỒNG VŨ MSSV: 101140204 MSSV: 101140208 Lớp: 14CDT2 Khoa: Cơ Khí Ngành: Kỹ Thuật Cơ Điện Tử Tên đề tài đồ án: Thiết kế chế tạo robot Delta phân loại sản phẩm Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ kết thực Các số liệu liệu ban đầu: Tham khảo tài liệu thực tế Nội dung phần thuyết minh tính tốn: Chương 1: Tổng quan robot Delta Chương 2: Thiết kế khí Chương 3: Thiết kế hệ thống điều khiển Chương 4: Xây dựng chương trình điều khiển Chương 5: Kết luận Các vẽ, đồ thị ( ghi rõ loại kích thước vẽ ): Bản vẽ tổng thể robot (1A0) Bản vẽ sơ đồ động (1A0) Bản vẽ sơ đồ mạch điện (1A0) Bản vẽ lưu đồ thuật toán (1A0) Bản vẽ cụm chi tiết (1A0) Họ tên người hướng dẫn: TS.Đặng Phước Vinh Đà Nẵng, ngày tháng năm 2019 Trưởng Bộ môn Người hướng dẫn TS Đặng Phước Vinh II LỜI NÓI ĐẦU Ngày nay, với ứng dụng khoa học kỹ thuật tiên tiến, giới ngày thay đổi, văn minh đại Sự phát triển kỹ thuật điện tử tạo hàng loạt thiết bị với đặc điểm bật xác cao, tốc độ nhanh, gọn nhẹ yếu tố cần thiết góp phần cho hoạt động người đạt hiệu Có thể nói Robot mang tới cho sống người sống mới, cách trải nghiệm sống đơi cịn người bạn Những hãng Robot từ nước tiếng giới từ Đức, Nhật Bản, Nga, Hoa Kỳ ngày khẳng định diện robot phần không thiếu sống tương lai phía trước Nó xuất tất lĩnh vực từ khoa học vĩ mô vi mô ngày đa dạng Sau thời gian học tập rèn luyện, với hướng dẫn bảo tận tình thầy giáo TS Đặng Phước Vinh, trợ giúp quý thầy cô môn tài liệu có liên quan, mà em hoàn thành xong đề tài Đề tài hoàn thành xong, khơng thể tránh nhiều thiếu sót mong q thầy cô giáo thông cảm bảo thêm để đề tài phát triển ứng dụng rộng rãi thực tế Em xin chân thành gửi lời cảm ơn đến quý thầy cô! Sinh viên thực Trần Nhật Trình Huỳnh Hồng Vũ III CAM ĐOAN Kính gửi: - Ban Giám hiệu Trường Đại học Bách khoa; - Khoa Cơ Khí Tơi tên Lớp : TRẦN NHẬT TRÌNH HUỲNH HỒNG VŨ : 14CDT2 Khoa: Cơ Khí Đề tài: Thiết kế chế tạo robot Delta phân loại sản phẩm Tôi xin cam đoan đồ án tốt nghiệp thực không chép hay trùng với đề tài thực hiện, sử dụng tài liệu tham khảo nêu báo cáo Các số liệu, kết nêu đề tài trung thực Nếu sai, tơi xin chịu hồn tồn trách nhiệm Sinh viên thực Trần Nhật Trình Huỳnh Hồng Vũ IV MỤC LỤC Tóm tắt I Nhiệm vụ đồ án tốt nghiệp II Lời nói đầu III Cam đoan IV Mục lục V Danh sách bảng, hình ảnh VIII CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Giới thiệu chung robot Delta 1.1.1 Khái niệm 1.1.2 Ứng dụng robot Delta 1.2 Tổng quan hệ thống 1.2.1 Các thành phần của robot 1.2.2 Đặt vấn đề CHƯƠNG 2: THIẾT KẾ CƠ KHÍ 2.1 Phân tích cấu trúc 2.1.1 Lựa chọn cấu trúc 2.1.2 Cơ cấu dẫn động động 2.1.3 Hệ khớp dẫn động 2.1.4 Hệ hình bình hành 2.1.5 Gá động 10 2.1.6 Gá cấu chấp hành 10 2.1.7 Cơ cấu xoay cấu chấp hành 11 2.1.8 Cơ cấu gắp 11 2.2 Mơ hình tổng quan 12 2.3 Thiết kế băng tải 14 V 2.4 Thiết kế hệ dẫn động robot 15 2.4.1 Tính chọn động 15 2.4.2 Tính chọn truyền đai 16 2.5 Động học robot Delta 17 2.5.1 Động học thuận robot: 18 2.5.2 Động học ngược robot: 20 CHƯƠNG 3:THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN 23 3.1 Cấu trúc hệ thống điều khiển 23 3.2 Các thành phần hệ thống 23 3.2.1 Bộ điều khiển 23 3.2.2 Driver a4988 25 3.2.3 Động bước 26 3.2.4 Ramps 1.4 27 3.2.5 Động servo 28 3.2.6 Cơng tắc hành trình 29 3.2.7 Động encorder 30 3.3 sơ đồ nguyên lý mạch 31 CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH ĐIỀU KHIỂN 32 4.1 Giới thiệu phần mềm visual studio thư viện emgu 32 4.1.1 Giới thiệu phần mềm visual studio 32 4.1.2 Giới thiệu thư viện Emgu CV 33 4.2 Lí thuyết xử lí ảnh 33 4.2.1 Các kiểu ảnh 33 4.2.2 Quy trình xử lý ảnh 33 4.2.3 Một số hàm xử lý ảnh dùng thư viện Emgu CV 34 4.3 Thiết lập bắt điểm băng tải 37 4.4 Nguyên lý hoạt động hệ thống 37 VI 4.5 Sơ đồ thuật toán điều khiển 40 CHƯƠNG 5: KẾT LUẬN 43 TÀI LIỆU THAM KHẢO 45 PHỤ LỤC 1: CHƯƠNG TRÌNH TRONG ARDUINO MEGA 46 PHỤ LỤC 2: CHƯƠNG TRÌNH TRONG VISUAL STUDIO 50 VII DANH SÁCH CÁC BẢNG, HÌNH ẢNH Bảng 1: Các cổng giao tiếp 24 Bảng 2: Thông số kĩ thuật Arduino Mega 24 Bảng 3: Bảng thông số chế độ Driver A4988 25 Hình 1.1: Robot Delta Hình 1.2: Robot Delta hãng ABB ứng dụng công nghiệp nhẹ Hình 1.3: Robot Delta hãng Fanuc ứng dụng cơng nghệ thực phẩm Hình 1.4: Robot SurgiScope vận hành Hình 1.5: Robot CRIGOS dùng để phẫu thuật tái tạo xương Hình 1.6: Các thành phần hệ thống Hình 1: Cơ cấu robot Delta bậc tự Hình 2: Hệ khớp dẫn động Hình 3: Hệ hình bình hành Hình 4: Gá động 10 Hình 5: Gá cấu chấp hành 10 Hình 6: Hệ thống bánh 11 Hình 7: Cơ cấu gắp 11 Hình 8: Bản vẽ 3D robot Delta 12 Hình 9: Hình ảnh robot 13 Hình 10: Bản vẽ băng tải 14 Hình 11: Mơ hình băng tải thực tế 14 Hình 12: Động bước NIDEC SERVO KH42KM2R015E 15 Hình 13: Bộ truyền đai 16 Hình 14: Ký hiệu tham số tính tốn 17 Hình 15: Hình chiếu lên mặt phẳng OXY 18 Hình 16: Ký hiệu tham số tính tốn 20 Hình 17: Hình chiếu lên mặt phẳng OXZ 20 Hình 18: Ký hiệu tọa độ tính tốn 21 Hình 1: Vi điều khiển 23 Hình 2: Driver A4988 25 Hình 3: Động bước 26 Hình 4: Ramps 1.4 27 Hình 5: Động servo MG90S 28 VIII Hình 6: Cơng tắc hành trình 29 Hình 7: Động encoder 30 Hình 8: Sơ đồ nguyên lý mạch 31 Hình 1: Lưu đồ thuật tốn xử lí ảnh 36 Hình 2: Giao diện chương trình hoạt động 38 Hình 3: Giao diện xử lí ảnh 38 Hình 4: Xử lí ảnh vật thể hình chữ nhật 39 Hình 5: Xử lí ảnh vật thể hình trịn 39 Hình 6: Đếm số lượng sản phẩm 40 Hình 7: Lưu đồ thuật toán gắp sản phẩm 41 Hình 8: Sơ đồ chương trình 42 Hình 1: Mơ hình thực tế robot 43 IX Thiết kế chế tạo robot Delta phân loại sản phẩm thống khả bắt vật thể phụ thuộc nhiều vào tốc độ robot so với tốc độ băng tải mật độ đối tượng băng tải Hạn chế khó khăn khâu lắp ráp, đồng thời kết cấu khí chưa thực xác nên độ xác mơ hình chưa cao Đây đề tài có ứng dụng thực tế nên chúng em cố gắng để hoàn thiện đề tài để phù hợp với nhu cầu thực tế Qua kết đạt ta phát triển thêm chức dạy học tự nhận diện sản phẩm thơng qua webcam, từ đưa sản phẩm phát triển ứng dụng không cơng nghiệp nhẹ, mà cịn nhiều lĩnh vực đời sống xã hội Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 44 Thiết kế chế tạo robot Delta phân loại sản phẩm TÀI LIỆU THAM KHẢO [1] Tính tốn thiết kế hệ dẫn động khí - tập - Trịnh Chất, Lê Văn Uyển – NXB Giáo dục 2003 [2] Tính tốn thiết kế hệ dẫn động khí - tập - Trịnh Chất, Lê Văn Uyển – Giáo dục 2003 [3] Robot công nghiệp – Phạm Đăng Phước - NXB xây dựng 2007 NXB [4] The Delta Parallel Robot: Kinematics Solutions Robert L Williams II, Ph.D., williar4@ohio.edu Mechanical Engineering, Ohio University, October 2016 [5] Kỹ thuật vi điều khiển PIC - TS Đặng Phước Vinh - Nhà xuất Xây dựng 2019 [6] Cảm biến cơng nghiệp – Hồng Minh Cơng – NXB Xây dựng [7] Xử lí ảnh http://www.emgu.com Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 45 Thiết kế chế tạo robot Delta phân loại sản phẩm PHỤ LỤC 1: CHƯƠNG TRÌNH TRONG ARDUINO MEGA #include "stepp.h" #include "inverse.h" #include "seriall.h" #include "servo2.h" int encoder; int endX = 3; int endY = 14; int endZ = 18; float the1, the2, the3; float x,y,z; int XstepNow, YstepNow, ZstepNow; int XstepNeed, YstepNeed, ZstepNeed; int p; float S; float v = 17.4; int Smin = 200; int Smax = 400; unsigned long newtime; unsigned long oldtime=0; void CalcuStep(float the1, float the2, float the3) { float Xtam = (the1*3)/0.1125; float Ytam = (the2*3)/0.1125; float Ztam = (the3*3)/0.1125; XstepNeed = Xtam - XstepNow; YstepNeed = Ytam - YstepNow; ZstepNeed = Ztam - ZstepNow; XstepNow = Xtam; YstepNow = Ytam; ZstepNow = Ztam; } void movetoXYZ(float x, float y, float z) { delta_calcInverse(x,y,z,the1,the2,the3); CalcuStep(the1,the2,the3); prepareMovement( 3, XstepNeed ); prepareMovement( 4, YstepNeed ); Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 46 Thiết kế chế tạo robot Delta phân loại sản phẩm prepareMovement( 5, ZstepNeed ); runAndWait(); } void tocdo() { encoder ++; } void setup() { Serial.begin(9600); setstep(); pinMode(endX, INPUT_PULLUP); pinMode(endY, INPUT_PULLUP); pinMode(endZ, INPUT_PULLUP); pinMode(10, OUTPUT); pinMode(2, INPUT_PULLUP); // sử dụng điện trở kéo lên cho chân số 2, ngắt attachInterrupt(0, receive, LOW); attachInterrupt(4, tocdo, FALLING); } void loop() { while(digitalRead(endX) || digitalRead(endY)||digitalRead(endZ)) { digitalWrite(X_DIR_PIN, HIGH); digitalWrite(Y_DIR_PIN, HIGH); digitalWrite(Z_DIR_PIN, HIGH); if(digitalRead(endX)==HIGH) { digitalWrite(X_STEP_PIN , HIGH); delayMicroseconds(200); digitalWrite(X_STEP_PIN , LOW); delayMicroseconds(200); } if(digitalRead(endY)==HIGH) { digitalWrite(Y_STEP_PIN , HIGH); delayMicroseconds(200); digitalWrite(Y_STEP_PIN , LOW); delayMicroseconds(200); Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hoàng Vũ Hướng dẫn: TS Đặng Phước Vinh 47 Thiết kế chế tạo robot Delta phân loại sản phẩm } if(digitalRead(endZ)==HIGH) { digitalWrite(Z_STEP_PIN , HIGH); delayMicroseconds(200); digitalWrite(Z_STEP_PIN , LOW); delayMicroseconds(200); } } digitalWrite(X_ENABLE_PIN, LOW); digitalWrite(Y_ENABLE_PIN, LOW); digitalWrite(Z_ENABLE_PIN, LOW); prepareMovement( 3, 1268 ); prepareMovement( 4, 1268 ); prepareMovement( 5, 1268 ); runAndWait(); XstepNow = 0; YstepNow = 0; ZstepNow = 0; movetoXYZ(0, 0, -390); servoInit(); servoSetPosition(1000); //Serial.println("okroianh;"); while (true) { newtime = millis(); if (newtime - oldtime >= 10000) { v =(float)(((encoder*PI*40)/334)/(newtime - oldtime))*1000; oldtime = newtime; encoder = 0; } sss(); delay(1); } } void sss() { if(n= Smin) key = 0; } if(S < Smax) { movetoXYZ(S-300+10,-xx,-360); servoSetPosition(a); digitalWrite(10, HIGH); S = ((millis()- D[p])*v)/1000; movetoXYZ(S-300,-xx,-400); movetoXYZ(S-300,-xx,-360); servoSetPosition(550); if(t == 1) { movetoXYZ(10, 90, -360); movetoXYZ(10, 90, -390); } if(t == 2) { movetoXYZ(-50, 90, -360); movetoXYZ(-50, 90, -390); } digitalWrite(10, LOW); Serial.println(p); data[p]=""; } else {} } } Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 49 Thiết kế chế tạo robot Delta phân loại sản phẩm PHỤ LỤC 2: CHƯƠNG TRÌNH TRONG VISUAL STUDIO using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.Structure; using Emgu.CV.CvEnum; using Emgu.CV.Util; using System.IO; using System.IO.Ports; using System.Diagnostics; namespace OKOK { public partial class Form1 : Form { Capture capture; Mat imgInputmat; int temp, sl, ll; int xrec, yrec, goc; float xcir, ycir; int t; int mov, movX, movY; int vuong, tron; float[] xtron = new float[10]; float[] ytron = new float[10]; float xtronmin; float ytronmin; public Form1() { InitializeComponent(); } private void button1_Click_1(object sender, EventArgs e) { paneldoc.Height = buttonCam.Height; paneldoc.Top = buttonCam.Top; groupBoxHome.Visible = true; groupBoxSp.Visible = false; groupBoxIn4.Visible = false; try { if (capture == null) { Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 50 Thiết kế chế tạo robot Delta phân loại sản phẩm capture = new Capture(); } capture.ImageGrabbed += _capture_ImageGrabbed; capture.Start(); timer1.Enabled = true; } catch { } } private void _capture_ImageGrabbed(object sender, EventArgs e) { Mat frame = new Mat(); capture.Retrieve(frame); //pictureBox1.Image = frame.ToImage().Bitmap; } private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; imgInputmat = capture.QueryFrame(); FindColors(); // timer1.Enabled = true; } private void FindColors() { //RGB MCvScalar Red_Color = new MCvScalar(255, 0, 0); MCvScalar Yellow_Color = new MCvScalar(250, 2, 250); // Mat ImgHsv = new Mat(imgInputmat.Size, DepthType.Cv8U, 3); Mat Red = new Mat(imgInputmat.Size, DepthType.Cv8U, 1); Mat Green = new Mat(imgInputmat.Size, DepthType.Cv8U, 1); CvInvoke.CvtColor(imgInputmat, ImgHsv, Emgu.CV.CvEnum.ColorConversion.Bgr2Hsv); CvInvoke.PyrUp(ImgHsv, ImgHsv, Emgu.CV.CvEnum.BorderType.Default); CvInvoke.PyrDown(ImgHsv, ImgHsv, Emgu.CV.CvEnum.BorderType.Default); // Thong so HSV // Hmax = 189; Hmin = 0; Smax = 242; Smin = 142; Vmax = 255; Vmin = 87; red // Hmax = 87; Hmin = 38; Smax = 160; Smin = 55; Vmax = 255; Vmin = 47; green ScalarArray Red_Lower = new ScalarArray(new MCvScalar(152, 24, 167)); ScalarArray Red_Upper = new ScalarArray(new MCvScalar(255, 255, 255)); //ScalarArray Yellow_Lower = new ScalarArray(new MCvScalar(22, 60, 200)); //ScalarArray Yellow_Upper = new ScalarArray(new MCvScalar(60, 255, 255)); CvInvoke.InRange(ImgHsv, Red_Lower, Red_Upper, Red); //CvInvoke.InRange(ImgHsv, Yellow_Lower, Yellow_Upper, Green); Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 51 Thiết kế chế tạo robot Delta phân loại sản phẩm morphops(Red, Red); //morphops(Green, Green); CvInvoke.GaussianBlur(Red, Red, new Size(13, 13), 1.5, 0, BorderType.Default); CvInvoke.GaussianBlur(Green, Green, new Size(13, 13), 1.5, 0, BorderType.Default); FindCircle(Red, imgInputmat, Red_Color); //FindCircle(Green, imgInputmat, Yellow_Color); CvInvoke.Threshold(Red, Red, 150, 255, ThresholdType.Binary); //CvInvoke.Threshold(Green, Green, 150, 255, ThresholdType.Binary); FindAy(Red, imgInputmat, Red_Color); //FindAy(Green, imgInputmat, Yellow_Color); CvInvoke.Line(imgInputmat, new Point((0), (100)), new Point((640), (100)), new MCvScalar(255, 255, 0), 1, LineType.EightConnected, 0); CvInvoke.Line(imgInputmat, new Point((0), (80)), new Point((640), (80)), new MCvScalar(255, 255, 0), 1, LineType.EightConnected, 0); pictureBox1.Image = imgInputmat.Bitmap; ShowForm(); } private void morphops(Mat thresh, Mat Outthresh) { Mat structuringElement1 = CvInvoke.GetStructuringElement(Emgu.CV.CvEnum.ElementShape.Rectangle, new Size(3, 3), new Point(-1, -1)); CvInvoke.MorphologyEx(thresh, thresh, Emgu.CV.CvEnum.MorphOp.Erode, structuringElement1, new Point(-1, -1), 1, Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(0, 0, 0)); CvInvoke.MorphologyEx(thresh, thresh, Emgu.CV.CvEnum.MorphOp.Erode, structuringElement1, new Point(-1, -1), 1, Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(0, 0, 0)); Mat structuringElement2 = CvInvoke.GetStructuringElement(Emgu.CV.CvEnum.ElementShape.Rectangle, new Size(4, 4), new Point(-1, -1)); CvInvoke.MorphologyEx(thresh, thresh, Emgu.CV.CvEnum.MorphOp.Dilate, structuringElement2, new Point(-1, -1), 1, Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(0, 0, 0)); CvInvoke.MorphologyEx(thresh, thresh, Emgu.CV.CvEnum.MorphOp.Dilate, structuringElement2, new Point(-1, -1), 1, Emgu.CV.CvEnum.BorderType.Default, new MCvScalar(0, 0, 0)); //loc nhieu CvInvoke.GaussianBlur(thresh, Outthresh, new Size(13, 13), 1.5, 0, Emgu.CV.CvEnum.BorderType.Default); } private void FindCircle(Mat ImgColor, Mat ImgShow, MCvScalar color) { double CannyThreshold = 150; double CircleAccumulatorThresld = 110; CircleF[] Circle = CvInvoke.HoughCircles(ImgColor, HoughType.Gradient, 2, 100, CannyThreshold, CircleAccumulatorThresld, 0, 0); for (int i = 0; i < Circle.Count(); i++) { if (Circle[i].Area > 8000) Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hoàng Vũ Hướng dẫn: TS Đặng Phước Vinh 52 Thiết kế chế tạo robot Delta phân loại sản phẩm { CvInvoke.Circle(ImgShow, Point.Round(Circle[i].Center), 60, color, 2, LineType.EightConnected, 0); xcir = Circle[i].Center.X; ycir = Circle[i].Center.Y; int x = int.Parse(xcir.ToString()); int y = int.Parse(ycir.ToString()); ytron[i] = Circle[i].Center.Y; xtron[i] = Circle[i].Center.X; CvInvoke.PutText(ImgShow, x.ToString()+";"+y.ToString(), new Point((x - 30), (y - 10)), FontFace.HersheyTriplex, 0.4, color, 1, LineType.EightConnected, false); } } temp = Circle.Count(); ytronmin = 1000; for(int i = 0; i < temp; i++) { if (ytron[i] < ytronmin) { ytronmin = ytron[i]; xtronmin = xtron[i]; } } } private void FindAy(Mat ImgColor, Mat ImgShow, MCvScalar color) { string vitri; Emgu.CV.Util.VectorOfVectorOfPoint contours = new Emgu.CV.Util.VectorOfVectorOfPoint(); Mat hier = new Mat(); CvInvoke.FindContours(ImgColor, contours, hier, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple); Emgu.CV.Util.VectorOfVectorOfPoint Contour_poly = new Emgu.CV.Util.VectorOfVectorOfPoint(contours.Size); Rectangle Rect = new Rectangle(); double now = 0; if (contours.Size > 0) { for (int i = 0; i < contours.Size; i++) { CvInvoke.ApproxPolyDP(contours[i], Contour_poly[i], CvInvoke.ArcLength(contours[i], true) * 0.05, true); now = CvInvoke.ContourArea(Contour_poly[i], false); if (now > 14000) { VectorOfPoint ChuNhat_contour = Contour_poly[i]; LineSegment2D[] Edges = PointCollection.PolyLine(ChuNhat_contour.ToArray(), true); Rectangle BoundRect = CvInvoke.BoundingRectangle(Contour_poly[i]); Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 53 Thiết kế chế tạo robot Delta phân loại sản phẩm Rect = BoundRect; if (ChuNhat_contour.Size == 4) { RotatedRect CN = new RotatedRect(); for (int j = 0; j < Edges.Length; j++) { double Angle = Math.Abs(Edges[(j + 1) % Edges.Length].GetExteriorAngleDegree(Edges[j])); if (Angle > 80 || Angle < 100) //xác định góc 90 độ { CN = CvInvoke.MinAreaRect(ChuNhat_contour); break; } } CvInvoke.Polylines(imgInputmat, Array.ConvertAll(CN.GetVertices(), Point.Round), true, color, 2, LineType.EightConnected, 0); goc = (-(int)(2 * CN.Angle)) / 2; vitri = (Rect.X + Rect.Width / 2).ToString() + ";" + (Rect.Y + Rect.Height / 2).ToString(); CvInvoke.PutText(ImgShow, vitri, new Point((Rect.X + Rect.Width / 30), (Rect.Y + Rect.Height / - 10)), FontFace.HersheyTriplex, 0.4, color, 1, LineType.EightConnected, false); CvInvoke.PutText(ImgShow, goc.ToString()+"*", new Point((Rect.X + Rect.Width / - 10), (Rect.Y + Rect.Height / + 10)), FontFace.HersheyTriplex, 0.4, color, 1, LineType.EightConnected, false); xrec = Rect.X + Rect.Width / 2; yrec = Rect.Y + Rect.Height / 2; label3.Text = goc.ToString(); ll = contours.Size; } } } } } private void Form1_Load(object sender, EventArgs e) { string[] comlist = SerialPort.GetPortNames(); comboBoxlist.Items.AddRange(comlist); combobaud.Text = "9600"; groupBoxHome.Visible = false; groupBoxSp.Visible = false; groupBoxIn4.Visible = true; paneldoc.Height = buttonIn4.Height; paneldoc.Top = buttonIn4.Top; pictureBoxrec.Visible = false; pictureBoxcir.Visible = false; } private void ShowForm() { double xtam; Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 54 Thiết kế chế tạo robot Delta phân loại sản phẩm int xta; string send = ""; if (temp > 0) { if ((ytronmin > 80) && (ytronmin < 100)) { if (t > 3) { pictureBoxrec.Visible = false; pictureBoxmodel.Visible = false; pictureBoxcir.Visible = true; sl++; tron++; xtam = + xtronmin * 0.3375; xta = Convert.ToInt32(xtam); label1.Text = xta.ToString(); send = "2X" + xta.ToString() + "A0;"; if (serialPortDelta.IsOpen) { serialPortDelta.Write(send); serialPortDelta.Write(";"); } label2.Text = send; labelcir.Text = tron.ToString(); t = 0; send = ""; ytronmin = 1000; } } } if (ll > 0) { if ((yrec > 80) && (yrec < 100)) { if (t > 3) { pictureBoxrec.Visible = true; pictureBoxcir.Visible = false; pictureBoxmodel.Visible = false; sl++; vuong++; xtam = + xrec * 0.3375; xta = Convert.ToInt32(xtam); label1.Text = xta.ToString(); label3.Text = goc.ToString(); send = "1X" + xta.ToString() + "A" + goc.ToString() + ";"; if (serialPortDelta.IsOpen) { serialPortDelta.Write(send); serialPortDelta.Write(";"); Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 55 Thiết kế chế tạo robot Delta phân loại sản phẩm } label2.Text = send; labelrec.Text = vuong.ToString(); t = 0; send = ""; yrec = 1000; } } label4.Text = sl.ToString(); } } private void buttonCnt_Click(object sender, EventArgs e) { if (comboBoxlist.Text == "") { MessageBox.Show("Vui lịng chọn cổng COM", "Thơng báo", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (combobaud.Text == "") { MessageBox.Show("Vui lịng chọn BaudRate", "Thơng báo", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (serialPortDelta.IsOpen) { serialPortDelta.Close(); buttonCnt.Text = " Connect"; buttonCnt.BackColor = Color.Red; comboBoxlist.Enabled = true; combobaud.Enabled = true; } else { try { serialPortDelta.PortName = comboBoxlist.Text; serialPortDelta.BaudRate = Convert.ToInt32(combobaud.Text); serialPortDelta.Open(); buttonCnt.Text = " Disconnect"; buttonCnt.BackColor = Color.Green; comboBoxlist.Enabled = false; combobaud.Enabled = false; } catch { MessageBox.Show("Không thể kết nối cổng COM", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 56 Thiết kế chế tạo robot Delta phân loại sản phẩm } } private void timer2_Tick(object sender, EventArgs e) { t++; } private void button2_Click(object sender, EventArgs e) { this.Close(); } private void panel1_MouseDown(object sender, MouseEventArgs e) { mov = 1; movX = e.X; movY = e.Y; } private void panel1_MouseMove(object sender, MouseEventArgs e) { if (mov == 1) this.SetDesktopLocation(MousePosition.X - movX, MousePosition.Y - movY); } private void panel1_MouseUp(object sender, MouseEventArgs e) { mov = 0; } private void buttonIn4_Click(object sender, EventArgs e) { groupBoxHome.Visible = false; groupBoxSp.Visible = false; groupBoxIn4.Visible = true; paneldoc.Height = buttonIn4.Height; paneldoc.Top = buttonIn4.Top; } private void buttonSp_Click(object sender, EventArgs e) { groupBoxHome.Visible = false; groupBoxIn4.Visible = false; groupBoxSp.Visible = true; paneldoc.Height = buttonSp.Height; paneldoc.Top = buttonSp.Top; } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Process.Start("http://www.dut.udn.vn/"); } private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Process.Start("https://www.facebook.com/dangphuocvinh"); } private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 57 Thiết kế chế tạo robot Delta phân loại sản phẩm { Process.Start("https://www.facebook.com/nhattrinh.tran"); } private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Process.Start("https://www.facebook.com/profile.php?id=100004965736895"); } } } Sinh viên thực hiện: Trần Nhật Trình Huỳnh Hồng Vũ Hướng dẫn: TS Đặng Phước Vinh 58 ... Đặng Phước Vinh Thiết kế chế tạo robot Delta phân loại sản phẩm 1.1.2 Ứng dụng robot Delta a) Ứng dụng công nghiệp Robot Delta ứng dụng rộng rãi công nghiệp Robot Delta sáng chế với ý tưởng dùng... dẫn: TS Đặng Phước Vinh Thiết kế chế tạo robot Delta phân loại sản phẩm CHƯƠNG 2: THIẾT KẾ CƠ KHÍ 2.1 PHÂN TÍCH CẤU TRÚC 2.1.1 Lựa chọn cấu trúc Hình 1: Cơ cấu robot Delta bậc tự Để khâu thao... Vinh 39 Thiết kế chế tạo robot Delta phân loại sản phẩm • b: Tọa độ vật thể so với trục x • c: góc nghiêng vật thể so với trục x Sau kết thúc trình phân loại, ta chuyển sang khung sản phẩm để