Tải bản đầy đủ
3 Khởi tạo và thiết lập các gói thư viện của OpenGL

3 Khởi tạo và thiết lập các gói thư viện của OpenGL

Tải bản đầy đủ

Hình 2.10: Thiết lập các gói thư viện OpenGL
Để tạo được ngữ cảnh biểu diễn của OpenGL thì trước tiên ta phải include
tất cả các tập thư viện của OpenGL vào trong Project này đó là: “opengl32.lib
glu32.lib glut32.lib”.
Ta tiến hành thiết lập môi trường đồ họa OpenGL trong file
RobotKUKAView.cpp như sau:
CRobotKUKAView::CRobotKUKAView()
{
m_pInitGL = new CInitOpenGL(this); //con tro khoi tao thuvien OPENGL
m_pInitGL->SetScale(1.3); //ty le 1,3
m_pInitGL->m_TranslateX = -500; //dich vi tri goc toa do theo phuong –X
500 (ve trai man hinh).
m_pInitGL->m_TranslateZ = -100; //dich vi tri goc toa do theo phuong –Z
100(xuong duoi man hinh).
m_pInitGL->m_RotateY = 20; //quay truc Y goc 20 rad

Thêm vào hàm OnCreate() đáp ứng thông báo VM_CREATE như sau:

37

Hình 2.11: Chọn hàm OnCreate() để thiết lập OpenGL
Ta cài đặt cho hàm này như sau:
int CRobotKUKAView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView:: OnCreate(lpCreateStruct) == -1)
return -1;
//doan chuong trinh khoi tao moi truong do hoa OPENGL
m_pInitGL->OnCreateGL();
m_pInitGL->BeginGLCommand();
m_Enviroment.EnableLighting();
m_Enviroment.TurnOnLight();
m_pInitGL->EndGLCommand();
return 0;
}
Tiếp theo ta thêm vào hàm OnDestroy() đáp ứng thông báo WM_DESTROY
để hủy bỏ ngữ cảnh biểu diễn khi chương trình kết thúc:

38

Hình 2.12: Chọn hàm OnDestroy() để hủy OpenGL
Và mã lệnh của hàm này như sau:
void CRobotKUKAView::OnDestroy()
{
CView::OnDestroy();
m_pInitGL -> OnDestroyGL();
}
Như vậy ta đã tiến hành xong quá trình khởi tạo, tại ra môi trường đồ họa
để có thể thực hiện các thao tác mô phỏng. Bước tiếp theo, chúng ta sẽ tìm hiểu
làm thế nào để thực hiện được một chương trình mô phỏng đơn giản. Sau khi
thực hiện các thao tác trên, nếu chạy chuơng trình thì vẫn chưa có gì mặc dù
OpenGL đã được khởi tạo. Đó là do chúng ta chưa tạo ra Viewport và thiết lập
các Matrix Mode. Để thực hiện điều này, ta sử dụng ClassWizard, thêm vào hàm
OnSize() đáp ứng thông báo WM_SIZE:

39

Hình 2.13: Chọn hàm OnSize() để thiết lập các ứng dụng OpenGL
Và mã lệnh như sau:
void CRobotKUKAView::OnSize(UINT nType, int cx, int cy)
{

CView::OnSize(nType, cx, cy);
m_pInitGL ->OnSizeGL(cx,cy);

}
Sau đó lại sử dụng ClassWizard thêm vào hàm OnDraw() như sau :

Hình 2.14: Chọn hàm OnDraw() để vẽ các đối tượng OpenGL
Mã lệnh của hàm này như sau:
void CRobotKUKAView::OnDraw(CDC* pDC)
{

CRobotKUKADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
Paint(); //goi ham ve robot

}
40

Ta thêm hàm OnInitialUpdadte() để cập nhật sự thay đổi của hệ thống:

Hình 2.15: Chọn hàm OnInitialUpdadte() để cập nhật sự thay đổi của hệ thống
Mã lệnh của hàm này như sau:
void CRobotKUKAView::OnInitialUpdate()
{
CView::OnInitialUpdate();// cap nhat du lieu
m_pInitGL->SetBkgColor(RGB(44, 167, 255));// tao mau nen khung ve
m_pInitGL->BeginGLCommand(); // bat dau su dung cac lenh trong
OPENGL
glShadeModel(GL_SMOOTH); // Smooth shading in our scenes.
glEnable(GL_DEPTH_TEST); // Enable desth testing for hidden surface
removal.
m_pInitGL->EndGLCommand();// ket thuc cac lenh GL.
}
Đó là một số hàm được sử dụng trong khởi tạo và thiết lập các gói thư viện
của OpenGL trên ứng dụng MFC, bước tiếp theo là chúng ta phải đi vào xây
dựng chương trình mô phỏng của Robot sau khi đã thiết kế mô hình trên
Solidworks và vẽ lại trên OpenGL theo quỹ đạo đã được tính toán và số hóa.

41

2.4 Thiết kế mô hình Robot trên Solidwork
Mô hình robot Kuka ba bậc tự do với ba khớp quay RRR được thiết kế như sau:

Hình 2.16: Mô hình Robot
Thiết kế mô hình robot bao gồm: phần đế có chiều dài d1, khâu 1 chiều dài
a1, khâu 2 chiều dài a2, khâu 3 chiều dài a3.
Mô hình robot được thiết kế trên phần mềm Solidwork như sau:
 Phần đế ta extrude theo trục Z theo mô hình thiết kế hình 2.16

42

Hình 2.17: Phần đế robot

43