157239n.com · web viewtrước hết, chúng em xin gửi lời cảm ơn đến cô lê thị...

29
Cuộc thi khoa học kĩ thuật cấp Thành phố dành cho học sinh trung học Năm học 2016 – 2017 Nghiên cứu, thiết kế và chế tạo máy quét 3d ứng dụng trong máy in 3d Nhóm tác giả: 1. Hồ Ngọc Quang Lớp 11A1 2. Nguyễn Quốc Anh Huy Lớp 12A4 Giáo viên hướng dẫn: Ths. Lê Thị Thúy Thời gian thực hiện dự án: 24/10/2016 – 30/11/2016 Địa điểm thực hiện dự án: Phòng thí nghiệm trường THPT Lê Quý Đôn 1

Upload: others

Post on 25-Dec-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Cuộc thi khoa học kĩ thuật cấp Thành phố dành cho học sinh trung học

Năm học 2016 – 2017

Nghiên cứu, thiết kế và chế tạo máy quét 3d ứng dụng trong máy in 3d

Nhóm tác giả: 1. Hồ Ngọc Quang Lớp 11A1

2. Nguyễn Quốc Anh Huy Lớp 12A4

Giáo viên hướng dẫn: Ths. Lê Thị Thúy

Thời gian thực hiện dự án: 24/10/2016 – 30/11/2016

Địa điểm thực hiện dự án: Phòng thí nghiệm trường THPT Lê Quý Đôn

Lĩnh vực: Hệ thống phần mềm – Thuật toán

1

Page 2: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Tp.hcm, tháng 11/2016

Mục lục

Lời cảm ơn...........................................................................................................................3

Phần A: Mở đầu...................................................................................................................4

- Tính cấp thiết của đề tài.............................................................................................4- Lý do chọn đề tài.......................................................................................................4- Mục tiêu nghiên cứu đề tài........................................................................................4- Phương pháp nghiên cứu...........................................................................................4- Đối tượng và phạm vi nghiên cứu.............................................................................4

Phần B: Nội dung.................................................................................................................5

Chương I: Tổng quan...........................................................................................................5

1.1 Tìm hiểu về cách in 3d.............................................................................................51.2 Tìm hiểu về cách quét 3d..........................................................................................61.3 Tìm hiểu chung về các ngôn ngữ lập trình...............................................................7

Chương 2: Cơ sở lý thuyết...................................................................................................9

2.1 Tìm hiểu chung về không gian 3d............................................................................92.2 Nguyên lý hoạt động của máy quét........................................................................102.3 Phần chương trình...................................................................................................11

Chương 3: Tính toán, lắp đặt hệ thống..............................................................................13

3.1 Phần khung.............................................................................................................133.2 Phần máy................................................................................................................15

Chương 4: Kết quả thực nghiệm........................................................................................17

Chương 5: Kết luận, các vấn đề và hướng phát triển.........................................................18

Tài nguyên thêm................................................................................................................19

Tài liệu tham khảo.............................................................................................................19

2

Page 3: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

LỜI CẢM ƠNĐể hoàn thành tốt đề tài này, bên cạnh sự nỗ lực của nhóm tác giả, chúng em luôn nhận

được sự động viên, quan tâm và giúp đỡ từ thầy cô, gia đình và bạn bè.

Trước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài

này – cô đã động viên, giúp đỡ và tạo điều kiện thuận lợi cho chúng em trong suốt quá trình

thực hiện và hoàn tất dự án. Chúng em cảm ơn cô đã tận tình truyền đạt những kinh nghiệm,

kiến thức quý báu trong suốt quá trình học, đó là nền tảng để chúng em có thể hoàn thành tốt dự

án này.

Xin cảm ơn gia đình và bạn bè đã luôn ủng hộ chúng em trong suốt thời gian học cũng

như trong thời gian tiến hành thực hiện dự án.

Dù đã cố gắng hết sức nhưng do thời gian ngắn nên dự án không thể tránh khỏi những

hạn chế, thiếu sót. Kính mong nhận được sự góp ý, phê bình, xây dựng từ phía thầy cô và bạn

bè.

Chúng em xin chân thành cám ơn.

Nhóm tác giả

Tp. Hồ Chí Minh, tháng 11 năm 2016.

3

Page 4: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Phần A: Mở đầuI. Tính cấp thiết của đề tài

Khi kinh tế phát triển và con người ngày càng có được sự tự do khám phá khoa học thì nhu cầu để tạo các vật thể thực tế, do chính người dùng thiết kế để học hỏi được hình dáng và tính năng cũng tăng theo. Nền kinh tế hiện giờ với quá trình công nghiệp hóa đã tạo ra các thiết bị với giá thành rẻ và với số lượng nhiều đã đáp ứng được phần nào nhưng để đáp ứng phần lớn mục tiêu đề ra thì cần phải dùng máy in 3d. Nhưng phần mềm cho máy in 3d cũng có các mẫu đã được định sẵn, vì thế nhu cầu cho máy quét 3d ngày càng cao và nhóm nghiên cứu đã đưa ra một dự án đó là “Máy quét 3d tự động”Hệ thống có những lợi ích như sau:- Nhanh, gọn, tiện lợi, đơn giản và rẻ: không như các buồng lớn chứa hàng chục máy

xoay với vài chuyên viên mà hiện tại chúng ta đang có thì hệ thống sẽ cho phép 1 người với kiến thức nhất định dùng 1 máy xoay để có kết quả gần giống như vậy.

II. Lý do chọn đề tàiTừ những lý do thực tiễn trên, đồng thời với mong muốn đóng góp giúp cho việc tương tác với vật thể 3d dễ dàng hơn, giúp việc học hình học trở nên thú vị, sinh động hơn, chúng em quyết định chọn đề tài “hệ thống quét 3d tự động”.

III. Mục tiêu nghiên cứu đề tàiTìm hiểu về các phương thức quét và các điểm mạnh, yếu của nóNghiên cứu, chế tạo và lắp ráp hệ thống quét thành côngThí nghiệm với các phương thức khác để quét

IV. Phương pháp nghiên cứuĐể thực hiện đề tài, nhóm tác giả đã sử dụng phương pháp nghiên cứu:- Tìm kiếm, đọc, phân tích và tổng hợp tài liệu- Tính toán, thiết kế, chế tạo và lắp ráp hệ thống bàn xoay- Phương pháp thực nghiệm

V. Đối tượng và phạm vi nghiên cứu- Đối tượng nghiên cứu: hệ thống được quét bằng 1 máy xoay tĩnh, ghi nhận hình

ảnh của vật thể được xoay ở các góc khác nhau.- Phạm vi nghiên cứu: hệ thống được thiết kế để mang tính đơn giản, người dùng có

thể dễ dàng lắp ráp cho chính mình một hệ thống mà không cần nhiều kiến thức. Nhưng cũng vì tính đơn giản đó nên nhóm không thể đảm bảo loại vật liệu, thiết bị người dùng sẽ dùng để tạo ra.

4

Page 5: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Phần B: Nội dungChương 1: Tổng quan

1.1Tìm hiểu về cách in 3d (AM – Additive manufacturing):+ Loại 1 (layering): phủ lên vật thể theo lớp: cũng giống như máy in giấy 2d thông thường, máy in 3d sẽ chiết ra một loại nhựa nóng chảy và dần dần đưa đầu in (hoặc đưa bàn) đến đúng vị trí và chiết nhựa ra theo từng lát cắt.Ở hình bên, (1) là đầu in chiết ra vật liệu lỏng, (2) là vật thể đang được tạo ra còn (3) là bàn in có thể di chuyển để chiết đúng chỗ.

Ưu điểm: dễ dàng thực hiện, dễ dàng chỉnh sửa và sửa đổi, giá thành rẻ, kiến thức chuyên môn không cần thiết, dễ làm đối với nghiệp dư và học sinh, sinh viênNhược điểm: chậm (bình thường vài tiếng), độ chính xác tùy thuộc vào cơ cấu và vật liệu của khung mà có thể thay đổi dưới nhiều yếu tố (nhiệt, độ ẩm,…).

+ Loại 2 (CLIP – Continuous liquid interface production): có một bể chứa dung dịch photopolymer, là chất khi tiếp xúc với tia cực tím sẽ hình thành cấu trúc trong môi trường thiếu oxy (quá trình UV-Curing, hình α 1.1 .2). Sau khi đã hình thành cấu trúc sẽ có một khung nâng toàn bộ cấu trúc ra khỏi mặt chất lỏng và ta có được vật thể 3d. Trong hình bên, UV Curable Resin là dung dịch photopolymer, Dead Zone là nơi mà các lát của cấu trúc được hình thành, Build Platform là khung để nâng cấu trúc lên và Projector là nơi tia UV được chiếu ra để làm các lát cấu trúc.

Ưu điểm: chính xác, nhanh gấp nhiều lần loại 1, cấu trúc không vững chãi (có lợi cho một vài ứng dụng)Nhược điểm: đòi hỏi kiến thức chuyên môn, không thích hợp cho học sinh và nghiệp dư, giá thành cho bộ phận còn đắt, các tia UV khó tạo ra đúng yêu cầu, tạo sai số nếu tia UV không

chuẩn, cấu trúc không vững chãi (có hại cho một vài ứng dụng).

5

Page 6: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

+ Loại 3 (Photolithography): mặt phẳng được đổ lên một lớp photoresist nhạy cảm với ánh sáng, khi gặp sẽ bị tiêu hủy. Nhờ đó mà có thể khắc lên mặt phẳng hình thù bất kì với độ chính xác cực cao, lên đến 22nm. Chính vì đặc tính chính xác đến như vậy mà phương pháp này được dùng để chế tạo các vi mạch trong các công ty như AMD, Intel,… Tuy nhiên phương thức tạo ra vi mạch có nhiều công đoạn hơn và sẽ có ở hình α 1.1 .3. Hình trên là mô phỏng việc làm tiêu hủy lớp photoresist, còn hình dưới là hình ảnh thực tế qua kính hiển vi electron của 1 phần vi mạch được khắc lên.

Ưu điểm: độ chính xác cực cao, có thể làm với nhiều loại vật liệuNhược điểm: yêu cầu kỹ thuật cao: ở trong phòng sạch, dùng các thiết bị đắt tiền, dùng bước sóng ánh sáng thích hợp cho kích cỡ, phải làm việc với nhiều hóa chất và nhiều phương pháp để xử lý các hóa chất đó, không thích hợp cho nghiệp dư và học sinh.

1.2 Tìm hiểu về cách quét 3d:Có 2 cách chủ đạo để quét: time-of-flight và triangulation+ Time-of-flight: đây là thiết bị mà phóng ra các tia laser và đo thời gian ánh sáng đi từ máy đến nới và về lại máy. Nhờ thời gian này và sự thật là vận tốc ánh sáng không đổi thì ta có thể tính toán ra được khoảng cách. Cứ như thế ta đo được rất nhiều các khoảng cách mà qua đó có thể tạo ra một bản đồ điểm, từ đó mà dựng lại các mặt phẳng ban đầu.

Ưu điểm: vì dùng tia sáng nên có thể hoạt động rất xa, lên tới vài cây số và thích hợp để quét các tòa nhà lớn hoặc các vị trí địa lýNhược điểm: độ chính xác không cao, có thể lệch tới vài milimeters do ánh sáng đi rất nhanh (3 ∙105km / s) và thiết bị đo thời gian thiếu chính xác.

+ Triangulation: dùng laser để phản xạ tia sáng lên một máy ảnh cách xa và đo góc máy ảnh nhận được, từ đó qua các công thức tam giác ta có thể tinh được khoảng cách. Cơ chế hoạt động khá giống với lại coincident range finderƯu điểm: rất chính xác (trong khoảng 10−2cm), có thể quét các cạnh sắc và mượtNhược điểm: Không thể quét chính xác nếu vật ở cách xa hơn 9m

1.3 Tìm hiểu chung về các ngôn ngữ lập trình:

6

Page 7: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Hiện tại, các ngôn ngữ lập trình thích hợp để làm công cụ cho máy quét là: Matlab, Python, Java.+ Matlab (Matrix laboratory): là ngôn ngữ thế hệ 4 (cấu trúc bậc cao), cho phép người lập trình làm việc với các ma trận (phù hợp cho các phép xoay 3d), đánh giá các hàm và dữ liệu và kết nối với các ngôn ngữ lập trình khác.

Ưu điểm: cấu trúc đơn giản, dễ học cách sử dụng. Tiết kiệm thời gian để mô phỏng các khái niệm trong khoa học.Nhược điểm: thiếu sự linh hoạt vì là ngôn ngữ bậc khá cao, không thuận tiện khi dùng lâu dài, khó tạo nên những thứ matlab không làm sẵn.

+ Python: là ngôn ngữ bậc cao, với mục tiêu giúp người lập trình đọc code dễ hiểu hơn và dùng ít code để diễn tả cùng 1 công việc khi so với C++ và Java. Python cũng được thiết kế để có thể mở rộng thành ứng dụng lớn được.

Ưu điểm: cấu trúc trung bình, dễ học, dễ chỉnh sửa, linh hoạt cho nhiều công việc. Có các thư viện như numpy, scipy cho phép sử dụng ma trận và vectơ dễ dàng. Hoạt động tốt trên nhiều hệ điều hành.Nhược điểm: Khó biểu thị thành các sơ đồ, các công cụ tương tác để có thể hình dung được khái niệm khoa học.

+ Java: là ngôn ngữ bậc trung mà hiện đại và theo lối lập trình object-oriented và được xây dựng để dựa vào các thư viện ít nhất có thể. Nó cũng được làm để các lập trình viên “viết 1 lần, chạy mọi nơi” thay vì C+ +. Java còn là nguồn cảm hứng cho các ngôn ngữ lập trình khác như Android Studio, Eclipse, Processing hay Arduino.

Ưu điểm: dễ hiểu, có xu hướng trừu tượng hóa, gây ít lỗi hơn, thời gian debug nhanh hơn. Ngoài ra Java được dùng khắp nơi, khiến việc chạy chương trình dễ dàng, ít phải cài đặt cấu hình.

Nhóm nghiên cứu đã chọn Java để làm nền móng cho dự án hay cụ thể hơn là Processing vì các tính cơ động và linh hoạt của nó.

7

Page 8: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

+ Lego Mindstorms: là ngôn ngữ bậc cao, sử dụng các block để lập trình.Các thành phần chính của lego: ev3 brick (vi điều khiển), các cảm biến (input) và các động cơ (output)

Trong vi xử lý: có màn hình chính, chứa các tab có chức năng riêng.

Tab 1, 2: Liệt kê các chương trình có thể chạy

Tab 3, 4: Dùng để test nhanh chóng các động cơ và cảm biến, có 2 mục chính là Port View và Motor Control

Hình bên là khi đã chọn mục Port View. Hàng trên (Output), đầu tiên là cổng A, kết nối với động cơ và ô sẽ hiện thị số vòng xoay của động cơ

Hàng dưới (Input), cổng 1 được kết nối với 1 touch sensor hiển thị giá trị 0 (chưa nhấn), cổng 2 kết nối với color sensor, sẽ đo độ trắng đen của vật (từ 0 đến 100) và cổng 3 kết nối với ultrasonic sensor, sẽ đo khoảng cách đến vật cản nào đó.

Lập trình trong môi trường này sẽ là đối với các block và Lego đã đưa ra khá nhiều công cụ để có thể lập trình như các ngôn ngữ khác và cũng dễ để hình dung hơn. Nhược điểm là có thể tạo ra các cấu trúc giống như spaghetti code và tiêu tốn nhiều RAM của máy tính. Hình bên là một chương trình tương đối phức tạp mà lego có thể tạo ra.

8

Page 9: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Chương 2: Cơ sở lý thuyết:2.1Tìm hiểu chung về không gian 3d:

Không gian chúng ta cảm nhận hằng ngày là không gian 3d. Nếu chúng ta chỉ xét về vật lý cổ điển thì mọi thứ, kể cả chúng ta đều sống trong không gian này. Không gian 3d đơn giản được định nghĩa là mọi vectơ khi kết hợp tuyến tính 3 vectơ ban đầu đó lại, với span(v1, v2), span(v2, v3), span(v3, v1) khác nhau đôi một.

Các hệ thống dùng để biểu diễn không gian 3d thường dùng nhất là Spherical coordinate, là 3-tuple với giá trị (r, theta, azimuthal) mà trong đó r là khoảng cách từ điểm đến tâm, theta là góc tạo bởi đường thẳng nối điểm với (0, 0) (gọi là a) với trục Oz, azimuthal là góc tạo bởi hình chiếu của a lên mặt phẳng Oxy với trục Ox. Ngoài ra con có Cartesian coordinate, là 3-tuple với giá trị (x, y, z) mà trong đó x là độ dài khi chiếu điểm xuống tia Ox với tia chiếu song song với mặt phẳng Oyz. Tương tự đối với các độ dài y và z.

Để xoay một vật trong 3D, ta dựa vào ý tưởng đơn giản sau:Chọn một mặt mà ta sẽ xoay theo trục vuông góc với nó, giả sử mặt OxyTa lấy các điểm có trên mặt và biến đổi về dạng r ∙ eiθ

Để xoay một góc α , ta biến đổi điểm trên thành r ∙ eiθ ∙e iα=r ∙e i(θ+α ), hay tương đương là hai công thức sin (θ+α )=sinθ ∙cosα+sinα ∙cosθ và cos (θ+α )=cosθ ∙cosα−sin θ ∙ sin α

Vận dụng trong code: ban đầu ta có một vectơ 2 chiều (50,0) và sau đó, qua hàm spin, vectơ đó sẽ xoay dần. Để chứng minh thì qua mỗi frame chương trình sẽ giữ lại những vị trí trước nhưng mờ hơn như ở hình bên. Đây chính là thuật toán để xoay vật theo trục Oz (vì lấy 2 chỉ số x và y)

9

Page 10: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Từ đó, ta có thể dễ dàng chuyển sang 3d bằng cách cho dr thành vectơ 3 chiều và định nghĩa 2 phép xoay theo trục Ox và Oy. Hình bên là cách để áp dụng ý tưởng xoay 3d này được dùng trong chương trình chính.

Để xây dựng nên một mô hình có thể dễ dàng tạo mô hình 3d thì nhóm nghiên cứu đã thêm vào các hàm để thêm điểm, thêm đoạn thẳng và mặt vào mô hình hiện có:

Qua các phép xoay này, ta có thể xoay các điểm tùy thích và từ điểm mới ta có thể nối lại các đường thẳng mới, các mặt mới và dựng lại hình ảnh sau khi đã xoay:

10

Page 11: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Nhưng nhóm nghiên cứu trong quá khứ đã xoay bằng cách tính từng tọa độ cho mỗi điểm tồn tại. Kết quả là chương trình đã sử dụng lượng RAM đáng kể từ máy tính và chấ lượng hình ảnh cũng không được tốt lắm. Cách này khi đó đã có độ sắc nét là 10 pixel và độ mượt của hình ảnh động là 0.3 fps và chỉ gồm khoảng 3000 voxel, không đạt chỉ tiêu mà nhóm nghiên cứu đề ra. Hơn nữa, khi dùng cách xoay này, các tọa độ ban đầu không còn tồn tại khi xoay nữa và dẫn đến sự thiếu linh hoạt (phải hủy vật và tạo lại vật mới tại tọa độ mong muốn và phải xoay lại từ đầu)

Và qua quá trình nghiên cứu tìm tòi thì nhóm nghiên cứu đã tạo được phương pháp mới:

Chỉ xoay các vectơ đại diện cho các tia Ox, Oy, Oz là: dr [ 0 ]=(1 ,0 ,0 ) , dr [1 ]= (0 ,1 ,0 ) , dr [2 ]=(0 ,0 ,1) và sau đó ta lấy kếp hợp tuyến tính 3 vectơ trên, nhận được điểm mới trong khi vẫn giữ được điểm đầu: r '=r x ∙i+r y ∙ j+r z ∙ k với r là vectơ chỉ điểm ban đầu. Đoạn code phía trên về xoay 3d ta cũng có thể thấy chương trình chỉ xoay 3 vectơ đơn vị.

Phần kết hợp tuyến tính các vectơ chỉ được thực hiện sau khi đã xoay xong và chuẩn bị xuất ra ngoài màn hình như hình dưới (node là các điểm gốc còn nodes là các điểm sau khi xoay và sẽ được hiển thị lên màn hình):

11

Page 12: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

2.2Nguyên lý hoạt động của máy quét:Dùng phương thức quét gọi là space carving: cắt bỏ trên phôi những phần nào thuộc về nền.

Điểm xanh là camera và sẽ theo quỹ đạo hình tròn, chụp vật từ nhiều góc khác nhau. Khi có được hình ảnh, ta đối chiếu với màn hình trong hệ thống, phân biệt pixel nào thuộc về vật, pixel nào thuộc về nền và loại bỏ những phần thuộc về nền trong phôi.

Chú thích các hình được quét:+ Hình 1 (trên trái): vật thể mô phỏng+ Hình 2 (trên phải): vật thể sau khi lọc bởi camera+ Hình 3 (dưới trái): vật thể quét được+ Hình 4 (dưới phải): các số liệu để tiện điều khiển

Ngoài cách xoay 3d ít tiêu hao bộ nhớ thì nhòm nghiên cứu còn dùng phương thức chia để trị. Tức khi khởi tạo phôi chỉ gồm một voxel. Nếu voxel nào qua camera bị phân chia sẽ hình thành 8 voxel khác nhỏ hơn. Quá trình này cứ lặp đi lặp lại đến khi nào các voxel có bán kính 2 thì không phân chia nữa. Dùng cách này, ta có thể tập trung nguồn lực máy tính vào những chỗ cần sắc nét như cạnh của vật và ngơ các chỗ trọng tâm vật. Ta có thể thấy ở lần quét đầu của máy, các voxel lớn sẽ được tập trung tại tâm và các voxel nhỏ sẽ tập trung ở rìa.

Cách mới có độ phân giải 2px, 8fps và dao động từ 3000 đến 12000 điểm tùy vào số lần quét. Vậy cách mới cải thiện hơn cách cũ hơn 400 lần

12

Page 13: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

2.3

Phần chương trình:

Có 2 mảng chính: 1 là trên Processing, 2 là trên Lego Mindstorm

Chương trình trên Processing được chia làm 4 phần:

1) Space Carving Adaptive (http://157239n.com/proc/space%20carving%20adaptive.html)Đây là nơi hoạt động chính của chương trình và cũng là nơi để điều khiển hầu hết các biến.Hàm setup sẽ khởi tạo các yếu tố cần thiết (camera, phôi, emulator).Hàm draw sẽ thông báo các thông số ra ngoài màn hình và sẽ vẽ lại màn hình. Các thông số được hiển thị:

- frameRate: độ mượt của ảnh động. frameRate càng cao thì hình ảnh động càng mượt- moved: chuột có đang xoay vật thể hay không- bias: có đang xoay tự động hay không- nodes: số voxel kích thước khác nhau đang tồn tại- isCutting: liệu phôi có đang được cắt hay không- ready to input: liệu chương trình có sẵn sàng để nhận tín hiệu từ camera hay không- camera plugged in: liệu có camera nào được cắm vô hay không

13

Page 14: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

- cam…: camera số mấy đang được dùng (list của các camera được liệt kê trong console)Hàm mouseDragged sẽ nhận và xử lý các tín hiệu từ chuột (hiển thị như phép xoay 3d).

Hàm keyTyped sẽ nhận và xử lý các tín hiệu từ bàn phím. Một vài phím cơ bản của chương trình:- “>” có tác dụng xoay phôi và emulator tự động.- “s” có tác dụng toggle từ trạng thái cắt sang trạng thái không cắt và ngược lại- “k” có tác dụng toggle từ emulator sang chụp ảnh thực tế và ngược lại- “c” có tác dụng xoay phôi 30 độ để biết phôi đang như thế nào trong lúc quét vật từ camera (chuột bị vô hiệu hóa trong khi quét vật thực tế)- space có tác dụng chụp màn hình (trong khi làm việc với emulator) và sẽ cắt và xoay 30 độ (trong khi làm việc với vật thực tế). Để chụp ảnh màn hình khi làm với vật thực tế, nhấn “k”, sau đó là space- Các số từ 0 đến 9: chọn các camera khác nhauCác hàm khác cũng không kém phần quan trọng: - prepare và nextSlice để nhận dữ liệu từ camera- update sẽ vẽ lên màn hình thực trạng hiện tại, cụ thể hơn là xoay emulator, phôi, cắt phôi từ emulator và hiển thị lên màn hình

2) Cell (http://157239n.com/proc/cell%20adaptive.html)Đây là class cho một voxel. Voxel là các hình lập phương đơn vị, như pixel đối với màn hình. Ở đây thì nhóm nghiên cứu đã không làm hình lập phương vì sẽ làm tăng lượng công việc máy phải làm, giảm độ mượt của hình ảnh động và tăng nguy cơ có sai số.

3) Object (http://157239n.com/proc/object%20adaptive.html)Đây là class cho emulator (vật ảo để quét)Một vài hàm chủ đạo:- addPoint, addLine,… để khởi tạo vật thể- pointColor, lineColor,… để biểu diễn vật theo màu sắc mình muốn (để phân biệt các mặt,…). Hàm này thường xuyên được dùng trong colorScheme của phần 1- getFrame sẽ xuất ra hình ảnh của vật thể dưới dạng hình ảnh (PGraphics)- rotateZ3D,… sẽ xoay vật thể theo ý mình muốn

14

Page 15: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

4) Plaster (http://157239n.com/proc/plaster%20adaptive.html)Đây là class cho phôi đang cắt và cũng gồm các hàm chủ đạo:- getFrame: xuất ra hình ảnh của phôi dưới dạng hình ảnh (PGraphics)- splitCell: để phân chia các voxel ra nhỏ hơn khi cần thiết, làm tăng độ sắc nét của vật- cut: nhận vào hình ảnh trắng đen (từ camera đã qua xử lý) để cắt phôi- rotateZ3D,… : xoay vật thể theo ý muốn- updateNodes: để update các vị trí mới của voxel

Chương trình trên Lego Mindstorms để xoay khi một nút (cổng 1) được nhấn

15

Page 16: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Chương 3: Tính toán, lắp đặt hệ thống:

Máy quét gồm 2 thành phần chính: Khung và ruột.

Phần khung:

1) Các trụ giữ giấy:Tổng cộng 8 mảnh, bản vẽ:

16

Page 17: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

2) Các mặt trên dưới:Tổng cộng 2 mảnh, bản vẽ:

3) Mặt xoay vật:Tổng cộng 1 mảnh, là

nơi đặt vật chính, bản vẽ:

17

Page 18: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Phần máy:

Có chứa

Một động cơ (EV3 Large Motor) để xoay một touch sensor (MS, EV3, Touch Sensor) để làm nút kích hoạt và kèm theo 1 vi điều khiển

Một hộp số đơn giản để động cơ có thể xoay chính xác hơn và một webcam

Bộ máy hoàn chỉnh

18

Page 19: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Bộ khung hoàn chỉnh:

Và toàn bộ máy quét sau khi lắp đặt:

19

Page 20: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Chương 4: Kết quả thực nghiệmVật thể quét được sau khi quét con chuột:

Nhận xét kết quả:

+ Đẹp, sắc nét nhưng chưa phác họa chính xác hình dáng của vật+ Nền của thiết bị có vấn đề về ánh sáng+ Tuy vậy vật này có lợi thế vì có màu đen đặc trưng và không có cấu trúc bên trong nhiều

+ Mặt phẳng đứng yên bị nghiêng

+ Khi xoay vật thì vật không đối xứng trục hoàn toàn → vẫn có sai số

Vật thể khác, chất lượng quét được cải thiện

Nhận xét kết quả:

+ Đẹp, sắc nét, phác họa được hình dáng chính của vật

+ Đã chỉnh được vấn đề về nền và ánh sang

+ Mặc dù có bất lợi là một vài bộ phận vật có màu xám nhưng vẫn quét tốt

+ Sai số ít hẳn đi, khi xoay được vật khá gần với thực tế

20

Page 21: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Chương 5: Kết luận và hướng phát triểnTuy dự án đã đạt được một số thành công nhưng vẫn còn các thiếu sót và vấn đề chưa khắc phục được:

- Phương thức quét này chỉ quét được hình dạng bên ngoài, cấu trúc như ly nước máy sẽ không quét được phần rổng bên trong. Kết quả là máy quét sẽ cho ra được ly ruột đặc. Lý do chủ đạo vì chưa áp dụng các thiết bị đo khoảng cách chính xác

- Ngoài ra phương thức này không thể quét màu sắc. Lý thuyết cho phép quét cả màu sắc nhưng để giữ năng suất của máy quét tối ưu, giảm thời gian quét và làm dự án có tính khả thi hơn thì nhóm nghiên cứu đã loại bỏ tính năng này

- Phép xoay trong mô hình máy tính có chút khác so với việc xoay ngoài thực tế: Ở trong máy, 2 đường thẳng song song sẽ không cắt nhau nhưng ở ngoài thực tế, 2 đường thẳng song song cắt nhau tại đường chân trời. Thế nên khi quét sẽ có một vài phần của vật bị cắt thừa.

Hướng phát triển:

- Nghiên cứu và ứng dụng các thiết bị đo khoảng cách. Ngoài ra nhóm cũng định nghiên cứu về cách sóng âm di chuyển bên trong cấu trúc của vật để xác định được chính xác các bộ phận bên trong

- Nghiên cứu hình học phản chiếu để làm mô hình 3d sát với thực tế hơn

21

Page 22: 157239n.com · Web viewTrước hết, chúng em xin gửi lời cảm ơn đến cô Lê Thị Thúy, giáo viên hướng dẫn đề tài này – cô đã động viên, giúp

Tài nguyên thêm:

Hình α 1.1 .2

Hình α 1.1 .3

Tài liệu tham khảo:

Về phương pháp quét space carving: https://www.youtube.com/watch?v=cGs90KF4oTc

Về đại số tuyến tính: https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab

22