Bài giảng Lập trình mô phỏng robot và hệ cơ điện tử ME4291: Bài 3 - PGS. Phan Bùi Khôi, TS. Phan Mạnh Dần
lượt xem 33
download
Bài 3 - Mô phỏng chuyển động của robot với OpenGL. Trong bài này, các kỹ thuật sau sẽ được giới thiệu: Đọc và hiển thị các tệp STL (được xuất ra từ AutoCAD, Solidworks...); sử dụng ma trận đồng nhất để hiển thị vị trí các đối tượng hình học trong không gian 3 chiều; mô phỏng chuyển động của robot bằng OpenGL.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình mô phỏng robot và hệ cơ điện tử ME4291: Bài 3 - PGS. Phan Bùi Khôi, TS. Phan Mạnh Dần
- BÀI 3 MÔ PHỎNG CHUYỂN ĐỘNG CỦA ROBOT VỚI OPENGL 1
- Tóm tắt Trong bài này, các kỹ thuật sau sẽ được giới thiệu – Đọc và hiển thị các tệp STL (được xuất ra từ AutoCAD, Solidworks…) – Sử dụng ma trận đồng nhất để hiển thị vị trí các đối tượng hình học trong không gian 3 chiều – Mô phỏng chuyển động của robot bằng OpenGL 2
- Nội dung • Cấu trúc file ASCII STL 1. Đọc và hiển thị • Lớp CSTL_File các tệp STL • Hiển thị đối tượng trong tệp STL 2. Sử dụng ma trận • Mô hình hệ mặt trời-trái đất-mặt trăng đồng nhất trong • Ma trận chuyển vị đồng nhất mô phỏng • Sử dụng các phép dịch chuyển đơn lẻ 3. Mô phỏng • Các bước thực hiện chuyển động của • Minh họa: Mô phỏng cơ cấu 4 khâu robot bằng OpenGL • Bài tập: Mô phỏng robot Scorbot 3
- Cấu trúc file ASCII STL solid AutoCAD facet normal 1.0000000e+000 facet normal 0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000 1.0000000e+000 outer loop outer loop vertex 1.0000010e+000 vertex 1.0000010e+000 1.0000000e-006 1.0000000e-006 1.0000010e+000 1.0000010e+000 vertex 1.0000010e+000 vertex 1.0000000e-006 1.0000010e+000 1.0000000e-006 1.0000010e+000 1.0000010e+000 vertex 1.0000010e+000 vertex 1.0000010e+000 1.0000010e+000 1.0000010e+000 1.0000000e-006 1.0000010e+000 endloop endloop endfacet endfacet endsolid AutoCAD … 4
- Cấu trúc file STL Dạng văn bản Dạng nhị phân • solid name • UINT8[80] – Tiêu đề • Danh sách tam giác • UINT32 – Số tam giác – facet normal ni nj nk • Danh sách tam giác – outer loop – REAL32[3] – véc-tơ pháp • vertex v1x v1y v1z – REAL32[3] – Đỉnh 1 • vertex v2x v2y v2z – REAL32[3] – Đỉnh 2 • vertex v3x v3y v3z – REAL32[3] – Đỉnh 3 • endloop – UINT16 – Thuộc tính – endfacet • endsolid name 5
- Lớp CSTL_File • Là một lớp đối tượng C++ dùng để thao tác các tệp STL • Lấy từ project AMF tại http://amff.wikispaces.com/STL+to+AMF+converter • Các thao tác chính – Đọc file STL (nhị phân & văn bản) vào bộ nhớ – Tính toán hình hộp bao – Vẽ đối tượng bằng các lệnh OpenGL 6
- Lớp CSTL_File class CSTL_File int Size() const; { bool Load(std::string public: filename); CSTL_File(void); bool LoadBinary(std::string ~CSTL_File(void); filename); bool Save(std::string bool LoadAscii(std::string filename, bool Binary = true) filename); const; void Draw(bool void ComputeBoundingBox bModelhNormals, bool (Vec3D& pmin, Vec3D& pmax); bShaded); }; 7
- Lớp CSTL_File • Đọc tệp STL vào bộ nhớ • Vẽ đối tượng bằng bool Load(std::string OpenGL filename); void Draw(bool bool LoadBinary(std::string bModelhNormals, bool filename); bShaded); bool LoadAscii(std::string filename); bModelhNormals = true: • Tìm hình hộp chứa trọn vẽ véc-tơ pháp vật thể bShaded = true: vẽ mặt ComputeBoundingBox trơn thay vì khung dây (Vec3D& pmin, Vec3D& pmax); 8
- Sử dụng Lớp CSTL_File để hiển thị đối tượng trong tệp STL 1. Copy 3 file Vec3D.h, STL_File.h và STL_File.cpp vào thư mục project 2. Thêm 3 file Vec3D.h, STL_File.h và STL_File.cpp vào project 3. Thêm dòng #include "STL_File.h" ở đầu chương trình 4. Thêm dòng CSTL_File stl; để khai báo biến stl 5. Thêm dòng stl.Load(“sphere.stl”); vào trong hàm InitGraphics() để đọc tệp sphere.stl 6. Thêm hàm stl.Draw(false, false); để vẽ đối tượng 9
- Kết quả 10
- Dùng lớp CSTL_File vẽ nhiều đối tượng • Nếu có nhiều đối tượng trong các tệp STL khác nhau cần vẽ thì cần khai báo thêm các biến: – CSTL_File stl1, stl2, stl3; hoặc – CSTL_File stl[3]; 11
- Tọa độ âm trong file STL • Theo mặc định, các phần mềm CAD không cho phép xuất ra các tọa độ âm trong file STL. Điều này là để tạo ra các file STL tương thích với các máy in khắc hình (stereolithography). • Nếu phát hiện tọa độ âm, phần mềm sẽ tự động tịnh tiến đối tượng để đảm bảo tọa độ xuất ra không âm. Điều này làm cho việc định vị đối tượng trong chương trình OpenGL có thể bị sai lệch. • Một giải pháp là trong phần mềm CAD, dịch các đối tượng sao cho tọa độ dương, ghi nhận véc-tơ dịch chuyển, rồi trong chương trình OpenGL sử dụng lớp CSTL_File, truyền thêm tham số véc-tơ này cho hàm Load() stl.Load(“sphere.stl”, Vec3D(100, 20, 50)); 12
- Câu hỏi?
- Nội dung • Cấu trúc file ASCII STL 1. Đọc và hiển thị • Lớp CSTL_File các tệp STL • Sử dụng lớp CSTL_File 2. Sử dụng ma trận • Mô hình hệ mặt trời-trái đất-mặt trăng đồng nhất trong • Ma trận chuyển vị đồng nhất mô phỏng • Sử dụng các phép dịch chuyển đơn lẻ 3. Mô phỏng • Các bước thực hiện chuyển động của • Minh họa: Mô phỏng cơ cấu 4 khâu robot bằng OpenGL • Bài tập: Mô phỏng robot Scorbot 14
- Mô hình hệ mặt trời-trái đất-mặt trăng 15
- Làm thế nào?
- Sử dụng ma trận chuyển vị đồng nhất 17
- Sử dụng ma trận chuyển vị đồng nhất 4x4 • Vẽ mặt trời glMultMatrixf( mSunMatrix.m ); glColor4f( 1.0f, 1.0f, 0.0f, 1.0f ); renderWireSphere( 1.0f, 20, 20 ); • Vẽ trái đất glMultMatrixf( mEarthMatrix.m ); glColor4f( 0.0f, 0.0f, 1.0f, 1.0f ); renderWireSphere( 1.0f, 10, 10 ); 18
- Vẽ mặt trời matrix4x4f mSunMatrix; mSunMatrix.rotate_y ( fSunSpin ); glPushMatrix(); { glMultMatrixf( mSunMatrix.m ); glColor4f( 1.0f, 1.0f, 0.0f, 1.0f ); renderWireSphere( 1.0f, 20, 20 ); } glPopMatrix(); 19
- Vẽ trái đất matrix4x4f mEarthMatrix = mEarthTranslationToOrbit; mEarthOrbitRotation * matrix4x4f mEarthSpinRotation; mEarthTranslationToOrbit * matrix4x4f mEarthOrbitRotation; mEarthSpinRotation; matrix4x4f mEarthMatrix; glPushMatrix(); mEarthSpinRotation.rotate_y( { fEarthSpin ); glMultMatrixf( mEarthMatrix.m ); mEarthTranslationToOrbit.translate( glColor4f( 0.0f, 0.0f, 1.0f, 1.0f ); vector3f(0.0f, 0.0f, -12.0f) ); renderWireSphere( 1.0f, 10, 10 ); } mEarthOrbitRotation.rotate_y( glPopMatrix(); fEarthOrbit ); 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Power System - Phân tích hệ thống điện sử dụng Matlad Toolboxes
26 p | 430 | 99
-
Bài giảng Điện tử công suất: Hướng dẫn mô phỏng Matlab-Simulink - PGS.TS Lê Minh Phương
29 p | 260 | 62
-
Bài giảng Lập trình mô phỏng robot và hệ cơ điện tử ME4291: Bài 1 - PGS. Phan Bùi Khôi, TS. Phan Mạnh Dần
20 p | 339 | 54
-
Bài giảng Lập trình mô phỏng robot và hệ cơ điện tử ME4291: Bài 5 - PGS. Phan Bùi Khôi, TS. Phan Mạnh Dần
50 p | 213 | 52
-
Bài giảng Lập trình mô phỏng robot và hệ cơ điện tử ME4291 - PGS. Phan Bùi Khôi & TS. Phan Mạnh Dần
20 p | 294 | 51
-
Bài giảng Lập trình mô phỏng robot và hệ cơ điện tử ME4291: Bài 2 - PGS. Phan Bùi Khôi, TS. Phan Mạnh Dần
39 p | 160 | 44
-
Bài giảng Lập trình mô phỏng robot và hệ cơ điện tử ME4291: Bài 4 - PGS. Phan Bùi Khôi, TS. Phan Mạnh Dần
32 p | 179 | 33
-
Bài giảng Vi điều khiển - Lưu Thế Mạnh
122 p | 127 | 25
-
Bài giảng Công nghệ sản xuất LNG: 2 chu trình lạnh độc lập
72 p | 142 | 23
-
Bài giảng Mạng lưới cấp thoát nước: Chương 3 - PGS.TS. Nguyễn Thống
12 p | 68 | 7
-
Bài giảng Mô phỏng hệ thống truyền thông: Chương 2 - PGS. TS. Võ Nguyễn Quốc Bảo
161 p | 43 | 5
-
Bài giảng Prove Wildfire chương Mechanism: Lắp ráp chuyển động - Nguyễn Minh Tuân
19 p | 92 | 4
-
Bài giảng Xây trụ bằng phương pháp dựng thước - Bài 6: Xây trụ
55 p | 13 | 4
-
Bài giảng Vi xử lý - Vi điều khiển: Chương 4 và 5 - GV. Đỗ Văn Cần
37 p | 9 | 2
-
Bài giảng Mô phỏng hệ thống truyền thông: Chương 2 - TS. Nguyễn Đức Nhân
59 p | 5 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn