1. Trang chủ
  2. » Luận Văn - Báo Cáo

LVTN Cánh tay robot 6 bậc phân loại vật theo màu sắc

72 4,7K 56

Đ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 72
Dung lượng 3,4 MB

Nội dung

Sử dụng cánh tay robot 6 bậc ( dùng động cơ servo) và webcamera để nhận dạng vị trí và phân loại vật theo màu sắc , cánh tay robot đến được vị trí chính xác của vật ở trong tầm hoạt động và gắp đúng vật có màu theo yêu cầu

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG LUẬN VĂN TỐT NGHIỆP Điều khiển cánh tay robot phân loại vật theo màu sắc KỸ SƯ NGÀNH KỸ THUẬT ĐIỀU KHIỂN & TỰ ĐỘNG HÓA TP HỒ CHÍ MINH, 2015 TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG LUẬN VĂN TỐT NGHIỆP Điều khiển cánh tay robot phân loại vật theo màu sắc KỸ SƯ NGÀNH KỸ THUẬT ĐIỀU KHIỂN & TỰ ĐỘNG HÓA TP HỒ CHÍ MINH, 2015 TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN – ĐIỆN TỬ Độc lập - Tự - Hạnh phúc BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG TP HCM, ngày….tháng… năm…… NHẬN XÉT LUẬN VĂN TỐT NGHIỆP CỦA CÁN BỘ HƯỚNG DẪN Tên luận văn: Người nhận xét (Ký tên ghi rõ họ tên) TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN – ĐIỆN TỬ Độc lập - Tự - Hạnh phúc BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG TP HCM, ngày….tháng… năm…… NHẬN XÉT LUẬN VĂN TỐT NGHIỆP CỦA CÁN BỘ PHẢN BIỆN TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN – ĐIỆN TỬ Độc lập - Tự - Hạnh phúc BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG TP HCM, ngày….tháng… năm…… ĐỀ CƯƠNG CHI TIẾT DANH SÁCH HỘI ĐỒNG BẢO VỆ LUẬN VĂN Hội đồng chấm luận văn tốt nghiệp, thành lập theo Quyết định số …………………… ngày ………………… Hiệu trưởng Trường Đại học Bách khoa TP.HCM ………………………………………… – Chủ tịch ………………………………………… – Thư ký ………………………………………… – Ủy viên MỤC LỤC DANH MỤC HÌNH VẼ DANH MỤC BẢNG DANH MỤC TỪ VIẾT TẮT TÓM TẮT LUẬN VĂN Luận văn gồm phần : 1.Điều khiển cánh tay robot : Sinh viên nghiên cứu robot theo mô hình động học Denavit-Hartenberg (DH) , xác định tọa độ gắn khâu sau xác định thông số DH để thiết lập hệ phương trình động học thuận động học ngược.Mục tiêu gắp vật theo tọa độ từ xử lý ảnh trả sinh viên sử dụng phương trình động học ngược để giải toán xử lý thông qua máy tính vi điều khiển STM32F4 điều khiển động RC servo nhằm đạt trạng thái cần đến cánh tay robot 2.Xử lý ảnh phân loại vật theo màu sắc : Sinh viên sử dụng web camera , thư viện EmguCV C# số công cụ Visual Studio để lập trình phát vật theo màu sắc , đồng thời phân loại trả tọa độ vật Sau phát hiện,phân loại vật theo màu sắc , tọa độ vật trả cho máy tính, vi điều khiển lấy liệu từ máy tính điều khiển cánh tay gắp phân loại vật Mô hình thực tế bao gồm : cánh tay robot join link , web camera ,và số chi tiết khác Bố cục luận văn bao gồm tổng quan , hướng thực hiện, sở lý thuyết cánh tay robot xử lý ảnh ,các thuật toán điều khiển robot , nhận dạng phân biệt màu sắc,quá trình thực chi tiết, kết đạt được, hạn chế hướng khắc phục đề tài 10 -Bit_RESET: Clear giá trị chân PORT GPIO_WriteBit(GPIOA, GPIO_Pin_7, Bit_SET); j) GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal): -Xuất giá trị PORT -GPIOx, x PORT A -> I -PortVal, giá trị ghi PORT GPIO_Write(GPIOA, 0x1101); B stm32f4xx_rcc.h Có nguồn xung clock khác sử dụng để điều khiển nguồn xung clock hệ thống (SYSCLK) : -Bộ dao động xung clock HIS -Bộ dao động xung clock HSE -Xung clock PPL -Thiết bị có nguồn xung clock thứ cấp: 32kHz tốc độ thấp RC (LSI RC) mà điều khiển độc lập watchdog (nó có chức bảo vệ có dao động tách biệt bên với xung hệ thống Khi phát lỗi bên ngoài, chuyển từ dao động bên sang dao động 8MHz) RTC sử dụng cho Auto-wakeup từ chế độ Stop/Standby 32.768 kHz tốc độ thấp sử dụng dao động thạch anh bên (LSE crystal) mà điều khiển xung clock RTC (RTCCLK) -Mỗi nguồn xung clock bật tắt độc lập không sử dụng lựa chọn điện tiêu thụ thấp -Bộ điều khiển xung clock cung cấp mức cao độ linh hoạt cho ứng dụng việc lựa chọn nguồn xung từ thạch anh hay nguồn xung nội để chạy thiết bị ngoại vi tần số cao Như Ethernet, USB OTG FS HS, I2S, SAI, LTDC, SDIO -Một vài chi dao động sử dụng như: the AHB frequency, the high-speed -APB (APB2), the low-speed APB (APB1) -Tần số tối đa AHB 180 MHz (Bộ chia 1) -Tần số tối đa cho phép the high-speed APB2 90MHz (Bộ chia 2) 58 -Tần số tối đa cho phép the low-speed APB1 45 MHz (Bộ chia 4) Nguồn cấp xung clock từ bên RCC Cortex System Timer (SysTick hệ thống thời gian thực) với nguồn xung clock AHB chia -Tần số xung clock timer set tự động phần mềm Có trường hợp dựa vào giá trị bit TIMPRE ghi RCC_CFGR -Nếu bit TIMPRE reset: Nếu chia APB thiết lập chia 1, TIMxCLK = PCLKx Những trường hợp khác TIMxCLK = 2PCLKx -Nếu bit TIMPRE set: Nếu chia APB thiết lập chia 1, TIMxCLK = HCLK Nếu trường hợp khác TIMxCLK = 4PCLK 6.2 Phần mềm điều khiển Xác định tọa độ Xử lí ảnh màu 59 Thu nhận ảnh Truyền thông tin điều khiển Xuất tín hiệu điều khiển cho servo Hình 6.2.1 Tổng quan hoạt động luận văn Sử dụng Visual studio C# 2015 để tạo giao diện phần mềm giao tiếp người dùng Sử dụng KeilC for ARM 5.1 để lập trình cho vi điều khiển STM32F4 Giao diện phần mềm 60 Mode tự động Trong mode tự động cánh tay robot tự động gắp vật theo màu nhiều màu với điếm đến cài đặt trước Chọn màu click Pick color để cánh tay gắp vật có màu chọn trả vị trí đặt trước Chọn EXECUTE ALL cánh tay robot tự động gắp toàn vật có màu thiết lập sẵn chương trình đưa đến vị trí mong muốn Mode chỉnh định Mode chỉnh định nhằm mục đích điều chỉnh điểm home động cơ, thay đổi chỉnh định vị trí cho cánh tay hoạt động sai số sau nhiều lần hoạt động Nhập độ lớn xung PWM cấp cho Servo, canh chỉnh cho phù hợp lưu giá trị đạt để lấy làm chuẩn 61 Mode điều khiển Điều khiển robot đến vị trí mong muốn để thực nhiệm vụ, thử nghiệm khác Trong mode điều khiển trackbar dùng để kéo thay đổi giá trị x,y,z Hoặc dùng chuột click vào biểu đồ vùng hoạt động để điều khiển Giao diện xử lý ảnh Nhận ảnh thông qua camera 62 Scale lại vùng nhận ảnh để có kết xác Code phần scale lấy vùng ảnh : private void pictureBox2_Click(object sender, EventArgs e) { if (time_click < 4) { p[time_click] = new PointF(lastx, lasty); kp[time_click] = new PointF(lastx * cap.Width / pictureBox2.Width, lasty * cap.Height / pictureBox2.Height); time_click++; } } private void pictureBox2_MouseMove(object sender, MouseEventArgs e) { lastx = e.X; lasty = e.Y; } private void pictureBox2_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawLine(new Pen(Color.Red, 2f), new Point(lastx, lasty - 10), new Point(lastx, lasty + 10)); e.Graphics.DrawLine(new Pen(Color.Red, 2f), new Point(lastx - 10, lasty), new Point(lastx + 10, lasty)); for (int i = 0; i < 4; i++) { e.Graphics.DrawLine(new Pen(Color.Blue, 5f), new Point((int)p[i].X + 1, (int)p[i].Y + 1), new Point((int)p[i].X - 1, (int)p[i].Y - 1)); e.Graphics.DrawLine(new Pen(Color.Blue, 5f), new Point((int)p[i].X + 1, (int)p[i].Y - 1), new Point((int)p[i].X - 1, (int)p[i].Y + 1)); } if(time_click == 4) { 63 e.Graphics.DrawLine(new Pen(Color.Yellow, 2f), new Point((int)p[0].X, (int)p[0].Y), new Point((int)p[1].X, (int)p[1].Y)); e.Graphics.DrawLine(new Pen(Color.Yellow, 2f), new Point((int)p[0].X, (int)p[0].Y), new Point((int)p[3].X, (int)p[3].Y)); e.Graphics.DrawLine(new Pen(Color.Yellow, 2f), new Point((int)p[1].X, (int)p[1].Y), new Point((int)p[2].X, (int)p[2].Y)); e.Graphics.DrawLine(new Pen(Color.Yellow, 2f), new Point((int)p[2].X, (int)p[2].Y), new Point((int)p[3].X, (int)p[3].Y)); } } Sau canh chỉnh ta tạo đường bao quanh vật đồng thời tìm tâm điểm đường bao từ thu hình ảnh toạ độ vật phù hợp với vùng ảnh mong muốn “Code phần xử lý để tìm toạ độ “ Contour contours = gray[i].FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_LIST, storage); while (contours != null) { Rectangle rect = contours.BoundingRectangle; if (rect.Width > 20 && rect.Width < 150 && rect.Height > 20 && rect.Height < 180 && !(rect.X < 200 && rect.Y < 200)) { CvInvoke.cvDrawContours(color, contours, list_color[i], new MCvScalar(0, 0, 255), -1, 3, Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, new Point(0, 0)); color.Draw(rect, new Bgr(list_color[i].v0, list_color[i].v1, list_color[i].v2), 2); XY[i].Add(new double[] { rect.X + rect.Width / 2, rect.Y + rect.Height / }); } contours = contours.HNext; } 64 “Code phần giải thuật xử lý tìm góc Servo” private double[] xuly(double x, double y, double z) { double alpha1; double alpha2; double alpha2_1; double alpha2_2; double alpha2_3; double alpha2_4; double alpha3; double delta1; double d4; double d1; double a1, a2, a3; double B, C; double saiso = 0.1; d4 = -1.5; d1 = 14.2; a1 = 1.5; a2 = 9; a3 = 14.2; delta1 = d4 * d4 * y * y - (x * x + y * y) * (d4 * d4 - x * x); if (x >= 0) { alpha1 = (Math.Atan(y / x) - Math.Asin(-d4 / Math.Sqrt(x * x + y * y))); } else { alpha1 = (Math.Atan(y / x) + Math.Asin(-d4 / Math.Sqrt(x * x + y * y))); } if (x >= 0) { alpha3 = -Math.Acos((Math.Pow(x * Math.Cos(alpha1) + y * Math.Sin(alpha1) - a1, 2) + Math.Pow(z d1, 2) - a2 * a2 - a3 * a3) / (2 * a2 * a3)); } else { alpha3 = Math.Acos((Math.Pow(x * Math.Cos(alpha1) + y * Math.Sin(alpha1) - a1, 2) + Math.Pow(z d1, 2) - a2 * a2 - a3 * a3) / (2 * a2 * a3)); } B = a3 * Math.Cos(alpha3) + a2; 65 C = a3 * Math.Sin(alpha3); delta1 = Math.Pow(C*z-d1*C,2)-(B*B+C*C)*(z*z+d1*d1-2*d1*z-B*B); alpha2_1 = Math.Acos((z*C-d1*C+Math.Sqrt(delta1))/(B*B+C*C)); alpha2_2 = Math.Acos((z*C-d1*C+Math.Sqrt(delta1))/(B*B-C*C)); alpha2_3 = -Math.Acos((z*C-d1*C+Math.Sqrt(delta1))/(B*B+C*C)); alpha2_4 = -Math.Acos((z*C-d1*C+Math.Sqrt(delta1))/(B*B-C*C)); if (Math.Abs(kiemtra(alpha1, alpha2_1, alpha3)[0] - x) [...]... em đã chọn đề tài : “ Điều khiển cánh tay robot phân loại vật theo màu sắc “ làm đề tài luận văn của mình Mục tiêu, nhiệm vụ của luận văn là trình bày ý tưởng, xây dựng mô hình cơ bản của cánh tay robot và ứng dụng thực tế về phân loại vật trong công nghiệp của nó Luận văn bao gồm 7 chương : Chương 1 Mở đầu Nội dung của chương là trình bày một số dứng dụng của cánh tay robot và xử lý ảnh trong thực tế,nêu... khảo có được Chương 3 Cơ bản về cánh tay robot và xử lý ảnh Nội dung của chương trình bày lý thuyết cơ bản về cánh tay robot và xử lý ảnh Chương 4 Điều khiển cánh tay robot 11 Nội dung của chương trình bày thuật toán điều khiển cánh tay robot và phương pháp điều khiển để thực hiện đúng mục đích của luận văn Chương 5 Xử lý ảnh phân loại màu sắc và phát hiện tọa độ của vật Nội dung của chương bao gồm... các kênh màu kết hợp với nhau ta sẽ được một màu khác nhau, như vậy ta sẽ có tổng cộng 255x255x255 = 1 .66 triệu màu sắc Ví dụ: màu đen là sự kết hợp của các kênh màu (R, G, B) với giá trị tương ứng (0, 0, 0) màu trắng có giá trị (255, 255, 255), màu vàng có giá trị (255, 255, 0), màu tím đậm có giá trị (64 , 0, 128) Nếu ta dùng 16bit để mã hóa một kênh màu (48bit cho toàn bộ 3 kênh màu) thì dãi màu sẽ... 3.2.5.Không gian màu HSV Theo đó, đi theo vòng tròn từ 0 - 360 độ là trường biểu diễn màu sắc( Hue) Trường này bắt đầu từ màu đỏ đầu tiên (red primary) tới màu xanh lục đầu tiên (green primary) nằm trong khoảng 0-120 độ, từ 120 - 240 độ là màu xanh lục tới xanh lơ (green primary - blue primary) Từ 240 - 360 là từ màu đen tới lại màu đỏ 25 Hình 3.2 .6. Hình tròn biểu diễn màu sắc (Hue) Theo như cách biểu... đánh giá độ đúng của mô hình robot trong một vài môi trường khác nhau 12 Chương 2 Phương pháp thực hiện đề tài 2.1 Nhiệm vụ của luận văn  Thiết kế mô hình cánh tay Robot  Xây dựng phần mềm điều khiển cánh tay Robot mô phỏng quá trình phân loại sản phẩm theo màu sắc trong công nghiệp 2.2 Hướng giải quyết các yêu cầu chức năng -Sử dụng camera để nhận dạng đối tượng theo màu sắc rồi gửi về máy tính vị... mà giá trị màu sắc là đậm đặc nhất Như vậy với mỗi giá trị (H, S, V) sẽ cho ta một màu sắc mà ở đó mô tả đầy đủ thông tin về màu sắc, độ đậm đặc và độ sáng của màu đó Chính vì vậy trong quá trình nhận dạng màu sắc , ta nên chọn không gian màu HSV Không gian màu CMYK CMYK là không gian màu được sử dụng phổ biến trong ngành công nghiệp in ấn.Ý tưởng cơ bản của hệ không gian này là dùng 4 màu sắc cơ bản... tiết có 26 màu đen thay vì phải kết hợp 3 màu sắc trên Và như vậy ta có hệ màu CMYK chữ K ở đây là để kí hiệu màu đen (Black), có nhẽ chữ B đã được dùng để biểu diễn màu Blue nên người ta lấy chữ cái cuối K để biểu diễn màu đen? Nguyên lý làm việc của hệ màu này như sau : Trên một nền giấy trắng, khi mỗi màu này được in lên sẽ loại bỏ dần đi thành phần màu trắng 3 màu C, M, Y khác nhau in theo những... dạng màu sắc -Tìm hiểu về động cơ RC servo, phương pháp điều khiển và calib -Tìm hiểu hoạt động của các khớp trong một cánh tay robot và mối liên hệ giữa các khớp thông qua hệ phương trình Denavit-Hartenberg -Tìm hiểu cách tạo giao diện sử dụng bằng C# và cách kết nối giao diện với vi điều khiển 14 Chương 3 Cơ bản về cánh tay robot và xử lý ảnh 3.1 Cánh tay robot 3.1.1 Các thành phần chính của Robot. .. không gian màu trong OpenCV Để chuyển đổi các không gian màu trong OpenCV ta dùng hàm sau: 28 cvCvtColor(const CvArr *src, CvArr *dst, int code) Trong đó, src là ảnh đầu vào, dst là ảnh đích chứa kết quả chuyển đổi code là mã chuyển đổi, ví dụ ta cần chuyển từ RGB sang HSV thì code là CV_RGB2HSV 29 Chương 4 Điều khiển cánh tay robot 4.1 Thiết kế cánh tay robot Robot có 6 bậc trong đó có 4 bậc tự do... khác nhau sẽ loại bỏ đi thành phần đó một cách khác nhau và cuối cùng cho ta màu sắc cần in Khi cần in màu đen, thay vì phải in cả 3 màu người ta dùng màu đen để in lên Nguyên lý này khác với nguyên lý làm việc của hệ RGB ở chỗ hệ RGB là sự kết hợp của các thành phần màu, còn hệ CMYK là sự loại bỏ lẫn nhau của các thành phần màu Hình 3.2.7 Không gian màu CMYK Chuyển đổi giữa các không gian màu Chuyển

Ngày đăng: 18/04/2016, 21:20

TỪ KHÓA LIÊN QUAN

w