Bài toán tìm miền làm

Một phần của tài liệu đồ án kỹ thuật cơ khí Chương trình tính toán động học ngược và mô phỏng Robot song song sáu bậc tự do bằng phần mềm ứng dụng OpenGL có sự hỗ trợ của CAD 3D. (Trang 49)

5. Bài toán tìm miền làm việc của Robot

6.3.Bài toán tìm miền làm

- Kắch vào nút để ghi dữ liệu vào file ỀData.txtỂ. Dữ liệu được ghi vào là 3 toạ độ của các điểm trên bao hình của miền làm việc mà ta đã lập trình tắnh toán ra. Sau khi kắch nút này, của sổ Save as sẽ hiện ra. Chọn file ỀData.txtỂ để ghi dữ liệu. Nếu chưa có file này vào phần file name gõ Data.txt vào.

Hình 4.17.

- Kắch nót Save để ghi dữ liệu. Nếu đã có dữ liệu cũ, chương trình sẽ hiện lên hộp thoại hỏi ta có ghi đè dữ liệu không, nếu có kắch Yes, không kắch No:

Đồ án tốt nghiệp Cơ tin kỹ thuật

Hình 4.18.

- Sau khi ghi dữ liệu có thể kắch nút trên thanh công cụ để xem thông số toạ độ y của các điểm.

- Kắch nót khi muốn thể hiện bao hình miền làm việc lên màn hình. Một hộp thoại sẽ hiện ra hái ta có muốn xem bao hình hay không, nếu có kắch Show (Hoặc phắm S) OK (Hoặc phắm O), không kắch Cancel (Hoặc phắm C). Hình 4.19. - Kết quả mô phỏng: Nguyễn Quang Cảnh 50 ớé dẺch chuyốn mçi chờn Bao hÈnh Vĩng mỡ pháng Quü ợÓo c¾t ớạ thẺ thỡng sè dẺch chuyốn mçi chờn theo thêi gian

Đồ án tốt nghiệp Cơ tin kỹ thuật

Hình 4.20. KẾT LUẬN

Trong đồ án này, em đã khảo sát một số đặc điểm hình động học của Robot Hexapod cấu trúc kiểu SPS, giải bài toán động học ngược và khái quát qua hai bài toán động học thuận và bài toán tìm miền làm việc của Robot, tìm hiểu ngôn ngữ lập trình C/C++, tìm hiểu công nghệ mô phỏng đồ hoạ động bằng OpenGL, cập nhập những ứng dụng mới của công nghệ mô phỏng đồ hoạ động trong kỹ thuật.

Kết quả tắnh toán được đưa ra dưới dạng bảng số, file dữ liệu và đồ thị Do thời gian có hạn và việc tìm tài liệu nghiên cứu trong điều kiện nước ta còn khó khăn nên với khả năng của một mình em giải quyết đề tài này không khỏi còn tồn tại nhiều sai sót và hạn chế. Đề tài này chắnh là đề tài mở và đặt bước đầu cho các nghiên cứu tiếp theo.

Em xin chân thành cảm ơn thầy giáo Th.s Phạm Minh Hải, Th.s Nguyễn Hồng Thái và các thầy trong bộ môn Cơ sở thiết kế máy và Robot trường đại học Bách Khoa Hà Nội đã gợi ý cho em những ý kiến vô cùng quý báu để giúp em hoàn thành đồ án này.

Đồ án tốt nghiệp Cơ tin kỹ thuật

PHỤ LỤC I

CÔNG NGHỆ MÔ PHỎNG ĐỒ HOẠ ĐỘNG BẰNG OPENGL. I.TỔNG QUAN CHUNG VỀ MÔ PHỎNG ĐỒ HOẠ ĐỘNG BẰNG OPENGL.

1. Lịch sử phát triển của OpenGL:

Công nghệ đồ hoạ động đang ngày càng được ứng dụng trong cuộc sống và ngày nay nó đã phát triển tương đối mạnh mẽ ở Việt Nam. Trong kỹ thuật, việc ứng dụng OpenGL vào nghiên cứu mô phỏng các máy móc, cơ cấu trước khi đem thử nghiệm bằng mô hình thực là giải pháp mà rất nhiều kĩ sư cơ khắ cũng như các viện nghiên cứu lựa chọn do tắnh ưu việt của nó trong việc thể hiện đồ hoạ động trong không gian 3D.

OpenGL là chữ viết tắt của Open Graphic Library là một thư viện đồ hoạ tốc độ cao, độc lập với hệ thống giao diện các hệ điều hành. Tiền thân của OpenGL là IRIS GL do hãng Silicon Graphic Library Inc phát triển cho các Work station đồ hoạ tốc độ cao từ năm 1982. Từ năm 1992, OpenGL đã trở thành một chuẩn công nghiệp và đặc tắnh kỹ thuật của OpenGl do uỷ ban kỹ thuật (ARB Ố Architechtural Review Board) phê chuẩn.

Kể từ lần đầu ra mắt (Phiên bản 1.0) cho đến nay OpenGL đã cho ra đời các phiên bản 1.1 ; 1.2 ; 1.3 ; 1.4 ; 1.5 và phiên bản gần đây là phiên bản 2.0 (Ra đời 7/9/2004). Ưu điểm vượt trội của OpenGL chắnh là tắnh tương thắch

Đồ án tốt nghiệp Cơ tin kỹ thuật

cao với rất nhiều hệ điều hành và được hỗ trợ nhiều bởi nhiều ngôn ngữ lập trình.

2. Đặc điểm OpenGL:

2./. Khả năng của thư viện OpenGL:

OpenGL gồm khoảng 150 hàm hỗ trợ một số tắnh năng cơ bản sau:

+ Khả năng thể hiện các đối tượng đồ hoạ cơ bản:

Các đối tượng đồ hoạ cơ bản nh: điểm, đoạn thẳng, đa giác. v.v., các đường cong hay mặt cong bậc hai.

Dưới đây là một số hàm thể hiện các đối tượng cơ bản:

- GL_POINT vẽ điểm.

- GL_LINE vẽ đường thẳng nối hai điểm.

- GL_LINE_STRIP tập hợp của những đoạn thẳng được nối với nhau. - GL_LINE_LOOP đường gấp khúc khép kắn.

- GL_TRIANGLES vẽ hình tam giác. - GL_QUADS vẽ tứ giác. (adsbygoogle = window.adsbygoogle || []).push({});

- GL_TRIANGLES_STRIP vẽ tập hợp các tứ giác liền nhau chung một cạnh

- GL_TRIANGLE_FAN vẽ hình quạt.

Đồ án tốt nghiệp Cơ tin kỹ thuật

Ngoài ra còn có một số đối tượng 3 chiều cơ bản nh: Hình cầu, hình trụ,hình hộp. v.v. từ đó ta xây dựng được các đối tượng 3 chiều phức tạp hơn, thậm chắ có thể tự định nghĩa hay thiết kế các phần mềm hỗ trợ thiết kế 3 chiều nh Autocad, SolidWork, 3D Max. v.v.

+ Khả năng quan sát đối tượng:

Các đối tượng có thể quan sát từ nhiều góc độ khác nhau thông qua các phép biến đổi vị trắ mắt nhìn hay phép biến đổi vị trắ vật cũng như các phép chiếu...

+ Khả năng định màu sắc vật liệu đối tượng:

Có thể thể hiện màu sắc đối tượng một cách đa dạng và đặc biệt là khả năng thể hiện thuộc tắnh vật liệu.

+ Khả năng tạo hiệu ứng ánh sáng OpenGL:

Cho phép tạo ra hiệu ứng ánh sáng nh trong thực tế tạo nên cảm giác thật cho các mô hình và khung cảnh 3 chiều.

Đồ án tốt nghiệp Cơ tin kỹ thuật

+ Khả năng tạo khung cảnh mô phỏng thực tế OpenGL

Hỗ trợ các kỹ thuật tạo các khung cảnh giống với thực tế nh kỹ thuật dán ảnh (texture mapping ) để tạo các khung cảnh thực tế, kỹ thuật sương mù (fog) cho phép tạo hiệu ứng hình ảnh mờ dần khi đối tượng chuyển động xa khỏi mắt nhìn.

Kỹ thuật trộn màu (Blending) cho phép tạo các vật thể trong mờ có thể nhìn xuyên qua được. Kỹ thuật loại bỏ răng cưa (Antialiasing)...

+ Khả năng cải thiện tốc độ OpenGL:

Cho phép cải thiện tốc độ hiển thị bằng kỹ thuật danh sách hiển thị (display list).

+ Khả năng chọn các đối tượng đồ hoạ (selection and hitting derect):

Kỹ thuật này cho phép chọn các đối tượng đồ hoạ 3 chiều và ứng dụng trong kỹ thuật mô phỏng va trạm của các vật thể.

2.2. Các thư viện hỗ trợ lập trình OpenGL:

Ngoài các thư viện chuẩn OpenGL nh GLU32.lib, OpenGL.lib, còn một số thư viện hỗ trợ lập trình OpenGL.

Như đã đề cập ở trên OpenGL là một thư viện đồ hoạ đã được chuẩn hoá. Vì vậy các chương trình sử dụng các hàm OpenGL cơ bản có khả năng tương thắch với các chương trình biên dịch trên các hệ điều hành khác nhau mà không cần sửa đổi hoặc chỉ sửa không đáng kể. Tuy nhiên do OpenGL độ lập với các hệ thông giao diện, nên các chương trình muốn sử dụng OpenGL trên các hệ điều hành khác nhau thì cần sử dụng các thư viện hỗ trợ giao tiếp giao diện ứng với từng hệ điều hành riêng. Vắ dụ các chương trình đồ hoạ sử dụng OpenGL trên Microsoft Windows phải sử dụng thư viện giao tiếp WGL, trên Apple Macintosh phải sử dụng thư viện AGL, trên Unix / Linux. X Window system phải sử dụng thư viện GLX... Phần giao tiếp này phải phù hợp với từng hệ điều hành khác nhau.

Đồ án tốt nghiệp Cơ tin kỹ thuật

Một thư viện giao tiếp khác, thư viện GLUT (OpenGL Utility Toolkit của tác giả Mark Kilgard ) giúp tạo các ứng dụng đồ hoạ hỗ trợ các giao diện giao tiếp trên nhiều hệ điều hành như tạo các cửa sổ chương trình, menu, sử lắ đầu vào: bàn phắm, chuột... Thư viện này được xây dựng độc lập với nhiều hệ điều hành do đó các chương trình đồ hoạ sử dụng OpenGL và GLUT có khả năng tương thắch cao trong các hệ điều hành hỗ trợ GLUT. Hiện đã có phiên bản trên tất cả các hệ điều hành chủ yếu nh Microsoft Windows, Unix / Linux, X Window system, Apple Macintosh...

Ngoài ra, các thư viện thương phẩm như Open Inventer, Performer... được xây dựng dựa trên OpenGL cung cấp những thao tác phức tạp hơn như: Tạo các khung cảnh (Scane ), giao tiếp với người dùng, khả năng trao đổi dữ liệu đồ hoạ với các phần mềm đồ hoạ khác... Nhờ được xây dựng các ứng dụng đồ hạo 3 chiều trở nên nhanh chóng và dễ dàng hơn. Đặc biệt phiên bản OpenInventer trên hệ điều hành Linux của hãng SGI.

2.3. Các bước tổng quan khi xây dựng ứng dụng đồ hoạ với thư viện OpenGL:

2.3.1. Khởi tạo môi trường hỗ trợ OpenGL:

OpenGL là một thư viện đồ hoạ độc lập với hệ thống giao diện của các hệ điều hành, do đó các ứng dụng đồ hoạ sử dụng OpenGL trên các hệ điều hành khác nhau đều phải có một quá trình khởi tạo thắch hợp với các hàm xử lắ đồ hoạ của OpenGL. Quá trình này được thực hiện bằng việc gọi một số hàm thắch hợp của các thư viện hỗ trợ giao tiếp với OpenGL trong chương trình ứng dụng. Quá trình khởi tạo bao gồm: định nghĩa một kiểu cấu trúc dữ liệu đồ hoạ phù hợp với quản lắ thông tin về định dạng điểm ảnh và lựa chọn các thông số phù hợp với hệ thống. Các thông số này bao gồm: kiểu điểm ảnh (RGBA hay color index), bộ đệm hoán đổi đơn hay kép

Đồ án tốt nghiệp Cơ tin kỹ thuật

(single/double buffer), độ phân giải màu sắc, khả năng hỗ trợ bộ đệm chiều sâu (depth buffer), bộ đệm stencil(stencil buffer), bộ đêmj tắch luỹ (accumulation buffer). Dưới đây là kiểu cấu trúc dữ liệu đồ hoạ trên các hệ điều hành khác nhau:

Hệ điều hành Kiểu cấu trúc dữ liệu đồ hoạ (adsbygoogle = window.adsbygoogle || []).push({});

X Window X Visualinfo

Apple Macintosh AGLPixelFmtID

IBM OS/2 Warp VISUALCONFIG

Microsoft Window PIXELFORMATDESCRIPTOR

2.3.2. Điều khiển Rendering(Control Rendering)

Sau khi thiết lập và lựa chọn định dạng điểm ảnh phù hợp với từng hệ thống, tất cả các hệ thống đều phải thực hiện việc điều khiển quá trình tô vẽ (Rendering). Quá trình này thực hiện các việc sau: Tạo và sử dụng ngữ cảnh tô vẽ (rendering context ), thực hiện quá trình đồng bộ hoá (synchronizing execution), hoán đổi các bộ đệm (swaping buffers), sử dungk các phông hệ thống...

Tô vẽ (rendering) là một quá trình toạ và hển thị điểm ảnh hai chiều lên các thiết bị kết xuất đồ hoạ như: màn hình máy tắnh, máy in... từ các đối tượng đồ hoạ ba chiều.

- Ngữ cảnh (context): Trong OpenGL, ngữ cảnh là một khái niệm chỉ một tập hợp đầy đủ các biến trạng thái của OpenGL.

- Biến trạng thái: Các trạng thái trong OpenGl nh: định dạng điốm ảnh, màu sắc, ánh sáng... đêuf được điều khiển bằng các biến trạng thái tương ứng.

- Ngữ cảnh tô vẽ (rendering context): Có thể coi ngữ cảnh tô vẽ của OpenGL nh một cổng mà tất cả các hàm của OpenGL phải đi qua để giao tiếp với thiết bị đồ hoạ phần cứng. Ngữ cảnh tô vẽ tạo ra định

Đồ án tốt nghiệp Cơ tin kỹ thuật

dạng điểm ảnh giống hệt với định dạng điểm ảnh của ngữ cảnh thiết bị (divice context) gắn với nó. Tuy vậy ngữ cảnh tô vẽ không giống với ngữ cảnh thiết bị. Một ngữ cảnh thiết bị lưu giữ các thông tin của GDI (Graphic Divice Interface), còn một ngữ cảnh tô vẽ lưu giữ các thông tin của OpenGL. Về mặt nào đó, chức năng của ngữ cảnh tô vẽ đối với OpenGL cũng giống nh chức năng của ngữ cảnh thiết bị đối với GDI. Một chương trình ứng dụng có thể có nhiều ngữ cảnh tô vẽ. - Quá trình đồng bộ hoá: Quá trình này buộc các hàm của OpenGL hay các hàm đồ hoạ của hệ thống phải chờ cho đến khi hàm trước đó được thực hiện xong. Điều này có nghĩa các lệnh của OpenGL ở trước lệnh chờ của hệ thống sẽ được đảm bảo được thực hiện trước các lệnh của hệ thống nằm ở sau lệnh chờ đó. Ngược lại các lệnh của OpenGL ở phắa sau lệnh chờ của OpenGL chỉ được thực hiện khi các lệnh của hệ thống nằm ở trước lệnh chờ của OpenGL đã thực hiện xong.

- Hoán đổi bộ đệm(Swaping buffer): Mục đắch chắnh của các chương trình đồ hoạ là thể hiện các hình ảnh trên màn hình. Một hình ảnh chuyển động cần có 24 hình/giây. Các hình ảnh trước khi được đưa lên màn hình vẽ sẽ được vẽ lên bộ đệm trung gian, sau đó toàn bộ hình ảnh trên bộ đệm mới được đưa ra màn hình cùng một lúc. Nếu hệ thống chỉ hỗ trợ một bộ đệm, những phần vẽ đầu của khung hình sẽ tồn tại trong suốt 1/24 giây, nhưng các phần vẽ sau của khung hình sẽ bị xoá ngay khi vừa được vẽ để chuẩn bị cho khung hình tiếp theo. Giải pháp để nâng cao chất lượng điểm ảnh và hạn chế nhược điểm trên là sử dụng bộ đệm kép. Khi hình ảnh trên bộ đệm thứ nhất được đưa ra màn hình trong suốt 1/24 giây, thì cùng lúc, hình ảnh cho khung hình tiếp theo được vẽ trên bộ đệm kia. Sau 1/24 giây thì các

Đồ án tốt nghiệp Cơ tin kỹ thuật

bộ đệm hoán đổi vị trắ cho nhau. Quá trình liên tục như vậy sẽ giúp cải thiện chất lượng đồ hoạ

3. Xây dựng đối tượng 3 chiều:

Công việc đầu tiên khi tạo cảnh trong OpenGL là xây dựng các mô hình 3 chiều.

Một sè thư viện mở rộng như GLUT hay AUX cung cấp thêm các đối tượng 3 chiều cơ bản khác như: Hình nón, hình tứ diện hình thập nhị diện...Tuy nhiên trong thực tế các đối tượng thực tế nói chung và các cơ cấu máy nói riêng rất phức tạp nhưng cũng có thể xây dựng từ các đa giác nhỏ cơ sở. Việc xây dựng đối tượng 3 chiều phức tạp bằng OpenGL được thực hiện như sau

- Thiết kế các mô hình 3 chiều bằng một phần mềm nhỏ hỗ trợ thiết kế chuyên dùng như Autocad hay SolidWork, 3D Max...

- Sử dụng các lệnh trong các phần mềm đó để xuất đối tượng 3 chiều ra các dạng tập tin nhị phân hay ASCII có chứa các thông tin của đối tượng dưới dạng các đỉnh và quy tắc nối các đỉnh đó thành đa giác. Vắ dụ các tập tin *.bdf, *.SLT

- Đọc thông tin các đối tượng từ các tập tin đó và sử dụng các hàm vẽ đối tượng cơ bản của OpenGL xây dựng lại đối tượng 3 chiồu cơ bản ban đầu.

Trong chương trình này các đối tượng 3 chiều được em dựng nên từ Autocad 2000, sau đó sử dụng mô đun FF được viết bằng thư viện ObjectARX do nhóm mô phỏng số tại bộ môn cơ học ứng dụng, ĐHBKHN thực hiện. Mô đun này mô hình hoá bề mặt các đối tượng 3 chiều thành nhiều đa giác nhỏ và ghi các thông tin này lên tập tin

Đồ án tốt nghiệp Cơ tin kỹ thuật

*.bdf (body definition file). Mô đun này có thể mô hình hoá được kiểu đối tượng 3 chiều như Solid, wireframe hay surface.

Object ARX là một thư viện lập trình hướng đối tượng cho môi trường Autocad. Object ARX được triển khai bằng ngôn ngữ C++ với hàng trăm lớp đối tượng, phục vụ hầu hết các nhu cầu cần thiết để phát triển AutoCAD:

- Truy cập tới cơ sở dữ liệu bản vẽ. - Tương tác với AutoCAD editor.

- Tạo giao diện người dùng (user interface ) sử dụng MFC (Microsoft Foundation Class).

- Định nghĩa các đối tượng mới (custom object) ngoài các đối tượng có sẵn trong AutoCAD.

- Tương tác với với các môi trường lập trình khác .

Việc đọc tập tin và xây dựng lại đối tượng ban đầu bằng các lệnh của OpenGL được tác giả đóng gói trong một lớp hướng đốiượng viết bằng C+ +. Lắp Cmodel nằm trong hai tập tin Model.h và Model.cpp . (adsbygoogle = window.adsbygoogle || []).push({});

4. Quan sát các đối tượng 3 chiều:

5.1 Khái niệm:

Quan sát các đối tượng là một khái niệm cho phép các đối tượng hình học

Một phần của tài liệu đồ án kỹ thuật cơ khí Chương trình tính toán động học ngược và mô phỏng Robot song song sáu bậc tự do bằng phần mềm ứng dụng OpenGL có sự hỗ trợ của CAD 3D. (Trang 49)