LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Tất cả các số liệu và kết quả nghiên cứu trong luận án là trung thực và chưa từng được công bố trong bất kỳ công trình nghiên cứu nào khác.
Người hướng dẫn khoa học
Nghiên cứu sinh
GS. TSKH. Bành Tiến Long
Nguyễn Hữu Quang
i
LỜI CẢM ƠN Tôi xin gửi lời cảm ơn chân thành và sâu sắc nhất tới GS. TSKH. NGND. Bành Tiến Long, người Thầy đã hết lòng hướng dẫn và động viên tôi hoàn thành luận án này. Tôi xin chân thành cảm ơn Bộ môn Gia công vật liệu và Dụng cụ công nghiệp, Viện Cơ khí, Trường Đại học Bách khoa Hà Nội đã tạo mọi điều kiện thuận lợi và giúp đỡ tôi hoàn thành luận án này. Tôi xin gửi lời cảm ơn tới gia đình, bạn bè, đồng nghiệp, những người đã luôn luôn giúp đỡ và ủng hộ tôi. Hà nội, ngày …. tháng … năm 2017 Nghiên cứu sinh
Nguyễn Hữu Quang
ii
MỤC LỤC DANH MỤC CÁC CHỮ VIẾT TẮT ..................................................................... vi DANH MỤC CÁC KÝ HIỆU ................................................................................ vii DANH MỤC CÁC BẢNG....................................................................................... ix DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ ............................................................ x MỞ ĐẦU .................................................................................................................... 1 CHƯƠNG 1. TỔNG QUAN .................................................................................... 5 1.1. Khái quát về hệ thống điều khiển số CNC và phương pháp nội suy NURBS ............... 5 Cấu trúc bộ điều khiển số CNC .............................................................................. 5 Chức năng nội suy trên máy công cụ điều khiển số CNC ...................................... 7 Gia công CNC các chi tiết với biên dạng và bề mặt tự do.................................... 10 Phương pháp nội suy biên dạng tự do NURBS theo thời gian thực (nội suy NURBS) .............................................................................................................. 14 1.2. Tổng quan tình hình nghiên cứu phương pháp nội suy biên dạng tự do NURBS theo thời gian thực trên các hệ thống điều khiển số CNC ................................................... 16 Kết luận chương 1 ............................................................................................................... 23
CHƯƠNG 2. PHƯƠNG PHÁP BIỂU DIỄN ĐƯỜNG VÀ MẶT TRONG CÁC HỆ CAD/CAM SỬ DỤNG PHƯƠNG TRÌNH THAM SỐ NURBS ........ 24 2.1. Đường NURBS ............................................................................................................. 24 Hàm cơ sở B-spline............................................................................................... 24 Định nghĩa đường NURBS ................................................................................... 26 Một số trường hợp đặc biệt của đường NURBS ................................................... 28 Đường NURBS và phép chiếu xuyên tâm ............................................................ 30 2.2. Thuật toán chèn nút và thuật toán DeBoor ................................................................... 31 2.3. Đạo hàm cấp một và cấp hai của đường NURBS ........................................................ 35 2.4. Một số tính chất hình học vi phân của đường NURBS ................................................ 37 2.5. Phương pháp tham số biểu diễn bề mặt trong hệ CAD/CAM ...................................... 39 Kết luận chương 2 ............................................................................................................... 41
CHƯƠNG 3. XÂY DỰNG PHƯƠNG PHÁP NỘI SUY THEO THỜI GIAN THỰC CÁC BIÊN DẠNG TỰ DO NURBS......................................................... 43 3.1. Giới thiệu ...................................................................................................................... 43 iii
3.2. Nguyên lý cơ bản nội suy biên dạng tự do NURBS theo thời gian thực...................... 43 3.3. Đánh giá sai số nội suy ................................................................................................. 46 3.4. Yêu cầu điều khiển tốc độ tiến dao khi nội suy biên dạng tự do NURBS theo thời gian thực ....................................................................................................................... 48 3.5. Các điều kiện giới hạn tốc độ tiến dao trong chuyển động nội suy .............................. 49 Điều kiện giới hạn sai số nội suy .......................................................................... 49 Điều kiện đảm bảo giới hạn gia tốc hướng tâm .................................................... 50 Điều kiện đảm bảo giới hạn gia tốc tiếp tuyến ..................................................... 50 Điều kiện tổng hợp giới hạn tốc độ tiến dao ......................................................... 51 Khó khăn khi điều khiển tốc độ tiến dao qua vùng giới hạn ................................ 53 3.6. Phương pháp điều khiển tốc độ tiến dao ...................................................................... 53 Những vị trí “quan trọng” trên biên dạng tự do NURBS ..................................... 54 So sánh miền ảnh hưởng của hai điểm “quan trọng” ............................................ 56 Tiền xử lý biên dạng tự do NURBS...................................................................... 57 Thuật toán tính tốc độ tiến dao theo thời gian thực .............................................. 59 3.7. Đề xuất phương pháp nội suy biên dạng tự do NURBS theo thời gian thực ............... 61 3.8. Tính chiều dài đường NURBS ..................................................................................... 62 3.9. Kết quả mô phỏng ........................................................................................................ 63 Mô phỏng nội suy biên dạng chữ alpha ................................................................ 63 Mô phỏng nội suy biên dạng NURBS phức tạp - biên dạng hình cánh bướm ..... 69 Mô phỏng nội suy biên dạng đường tròn theo phương pháp nội suy NURBS ..... 71 Kết luận chương 3 ............................................................................................................... 74
CHƯƠNG 4. NGHIÊN CỨU PHÁT TRIỂN PHẦN MỀM NỘI SUY BIÊN DẠNG TỰ DO NURBS THEO THỜI GIAN THỰC DỰA TRÊN HỆ ĐIỀU KHIỂN CÓ KIẾN TRÚC MỞ .............................................................................. 75 4.1. Giới thiệu về hệ điều khiển có kiến trúc mở (OAC - Open Architecture Controller) ...................................................................................................................................... 75 4.2. Hệ điều khiển số có kiến trúc mở - LinuxCNC ............................................................ 77 4.3. Phát triển phần mềm nội suy biên dạng tự do NURBS theo thời gian thực ................. 80 Xây dựng các cấu trúc dữ liệu .............................................................................. 81 Xây dựng các hàm xử lý mức thấp ....................................................................... 82 Xây dựng các hàm xử lý mức cao......................................................................... 86 Mã lệnh nội suy NURBS: G6.2 ............................................................................ 87 iv
Kết quả phát triển phần mềm nội suy NURBS ..................................................... 88 4.4. Giao diện CAD/CAM cho phần mềm nội suy NURBS ............................................... 88 4.5. Kết quả thử nghiệm phần mềm nội suy NURBS.......................................................... 91 Thử nghiệm 1: Gia công biên dạng phức tạp biểu diễn bằng một đường NURBS ................................................................................................................ 93 Thử nghiệm 2: Gia công biên dạng phức tạp biểu diễn bằng nhiều đường NURBS ................................................................................................................ 97 Thử nghiệm 3: Gia công biên dạng đường thân khai ........................................... 99 Kết luận chương 4 ............................................................................................................. 103
KẾT LUẬN VÀ KIẾN NGHỊ .............................................................................. 105 TÀI LIỆU THAM KHẢO.................................................................................... 108 DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ CỦA LUẬN ÁN ............ 111 PHỤ LỤC .............................................................................................................. 112 Phụ lục 1: Thông số NURBS của biên dạng hình cánh bướm. ......................................... 112 Phụ lục 2: Chương trình mô phỏng trên phần mềm Matlab .............................................. 113 Phụ lục 3: Chương trình xuất file NC sử dụng định dạng G6.2 để mô tả biên dạng NURBS, được phát triển trong môi trường RhinoScript của phần mềm Rhinoceros .................................................................................................................................... 116 Phụ lục 4: Một số cấu trúc dữ liệu và chương trình con được phát triển cho phần mềm nội suy NURBS.......................................................................................................... 118
v
DANH MỤC CÁC CHỮ VIẾT TẮT Chữ viết tắt 2D, 3D, 2.5D CAD/CAM NC CNC DNC NCK MMI PLC BLU DDA OAC STEP STEP-NC SERCOS
NURBS ADCBI ADCAI CC CL APT
Giải thích ý nghĩa Các chữ viết tắt chỉ số chiều trong công nghệ gia công CNC Computer Aided Design / Computer Aided Manufacturing Thiết kế / Sản xuất với sự hỗ trợ của máy tính Numerical Control Điều khiển số Computerized Numerical Control Điều khiển số trên nền tảng máy tính Direct Numerical Control Numerical Control Kernel Lõi điều khiển số Man Machine Interface Giao diện người máy Programmable Logic Controller Bộ điều khiển logic khả trình Basic Length Unit Độ phân giải vị trí của hệ thống điều khiển số Digital Differential Analyzer Mạch tích phân cứng, được sử dụng trong thời kỳ đầu của bộ nội suy Open Architecture Controller Hệ điều khiển số có kiến trúc mở STandard for the Exchange of Product model data Tiêu chuẩn về định dạng dữ liệu mô hình sản phẩm Mô hình trao đổi dữ liệu giữa hệ CAD/CAM và CNC tương thích với chuẩn STEP SErial Realtime COmmunication System Hệ thống truyền thông số phục vụ trao đổi dữ liệu giữa bộ điều khiển CNC và thiết bị điều khiển truyền động Non-Uniform Rational B-Spline Một mô hình tham số biểu diễn đường và mặt trong các hệ CAD/CAM Accelleration/Deccelleration Control Before Interpolation Điều khiển tăng tốc, giảm tốc trước nội suy Accelleration/Deccelleration Control After Interpolation Điều khiển tăng tốc, giảm tốc sau nội suy Cutter Contact Vị trí tiếp xúc của dụng cụ và phôi Cutter Location Vị trí tâm dụng cụ Automatically Programmed Tool Ngôn ngữ định nghĩa đường dụng cụ trên các máy CNC
vi
DANH MỤC CÁC KÝ HIỆU Các đại lượng vector được ký hiệu bằng các chữ cái in đậm (ví dụ, P, C, …). Các đại lượng vô hướng được ký hiệu bằng các chữ cái in thường (ví dụ, V, A,…).
A
Phép tính biên độ của một vector.
A, B
Phép tính tích vô hướng của hai vector.
AB
Phép tính tích có hướng của hai vector.
AT
Phép tính chuyển vị của một vector.
a
Phép tính giá trị tuyệt đối của một đại lượng vô hướng.
d dt
Phép tính đạo hàm theo biến thời gian, t.
d du
Phép tính đạo hàm theo biến tham số, u.
m
Đơn vị đo chiều dài: mét
mm
Đơn vị đo chiều dài: mili-mét (10-3 m)
µm
Đơn vị đo chiều dài: micro-mét (10-6 m)
s
Đơn vị đo thời gian: giây
ms
Đon vị đo thời gian: mili-giây
mm/min
Đơn vị đo tốc độ: mili-mét/phút
mm/s
Đơn vị đo tốc độ: mili-mét/giây
mm/s2
Đơn vị đo gia tốc: mili-mét/giây bình phương
1/mm
Đơn vị đo độ cong
V chord (u )
Giá trị giới hạn tốc độ tiến dao tại vị trí C(u ) nhằm đảm bảo điều kiện sai số nội suy
Vkchord
Giá trị V chord (uk )
V acc (u )
Giá trị giới hạn tốc độ tiến dao tại vị trí C(u ) nhằm đảm bảo điều kiện gia tốc hướng tâm
Vkacc
Giá trị V acc (uk )
Vmax
Tốc độ tiến dao được lập trình trong chương trình NC (đã nhân với hệ số điều chỉnh của người vận hành máy)
Vr (u )
Giá trị nhỏ nhất trong các giá trị V chord (u ) , V acc (u ) , Vmax vii
Vr ,k
Giá trị Vr (uk )
At (u )
Gia tốc tiếp tuyến tại vị trí C(u )
At ,k
Giá trị At (uk )
An (u )
Gia tốc hướng tâm tại vị trí C(u )
An ,k
Giá trị An (uk )
At ,max
Giá trị giới hạn của gia tốc tiếp tuyến
An ,max
Giá trị giới hạn của gia tốc hướng tâm
emax
Giá trị giới hạn của sai số nội suy
L(u )
Chiều dài đường NURBS từ vị trí bắt đầu tới vị trí C(u )
T
Chu kỳ nội suy (ms)
viii
DANH MỤC CÁC BẢNG Bảng 1.1: Chức năng nội suy đường NURBS trên các bộ điều khiển CNC thương mại ..... 22 Bảng 3.1: Các thông số NURBS của biên dạng chữ alpha. ................................................ 63 Bảng 3.2: Các tham số của chương trình mô phỏng nội suy biên dạng chữ alpha. ............ 64 Bảng 3.3: Giá trị tham số của các điểm “quan trọng” và các điểm có độ cong lớn nhất cục bộ trên biên dạng chữ alpha khi Vmax 50(mm/s) .............................................................. 64 Bảng 3.4: Các tham số sử dụng trong chương trình mô phỏng nội suy NURBS với biên dạng hình cánh bướm ................................................................................................................... 70 Bảng 3.5: Các thông số NURBS của biên dạng đường tròn. .............................................. 71 Bảng 3.6: Các tham số sử dụng trong chương trình mô phỏng nội suy NURBS với biên dạng đường tròn ........................................................................................................................... 72 Bảng 4.1: Quy ước cách đặt tên một số biến được sử dụng bởi các hàm xử lý mức thấp... 83 Bảng 4.2: Thời gian gia công biên dạng cánh bướm theo phương pháp nội suy NURBS (mã G6.2) và phương pháp nội suy tuyến tính (mã G01). .......................................................... 97 Bảng 4.3: Thời gian gia công biên dạng thân khai theo phương pháp nội suy NURBS (mã G6.2) và phương pháp nội suy tuyến tính (mã G01). ........................................................ 102
ix
DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ Hình 1.1: Các thành phần cơ bản của hệ thống điều khiển số .............................................. 5 Hình 1.2: Luồng thông tin trong hệ thống điều khiển số CNC. ............................................. 6 Hình 1.3: Hai phương án thực hiện chuyển động điểm-điểm từ vị trí A tới vị trí B. ............. 7 Hình 1.4: Phối hợp tốc độ của các trục thành phần trong chuyển động nội suy. ................. 8 Hình 1.5: Minh họa chuyển động nội suy tuyến tính và nội suy cung tròn ........................... 8 Hình 1.6: Xấp xỉ biên dạng phức tạp bằng chuỗi đoạn thẳng. .............................................. 9 Hình 1.7: Biểu đồ hình thang (a) Tốc độ tiến dao; (b) Gia tốc tiếp tuyến; (c) Biểu đồ hình thang suy biến thành biểu đồ tam giác .................................................................................. 9 Hình 1.8: Một số kiểu đường dụng cụ khi gia công bề mặt tự do trên máy công cụ CNC. . 10 Hình 1.9: Độ phân giải của dữ liệu đường dụng cụ. .......................................................... 11 Hình 1.10: Giao diện STEP-NC trên một bộ điều khiển CNC, cho phép xử lý nhiều thông tin hơn của chi tiết gia công ..................................................................................................... 13 Hình 1.11: So sánh phương pháp nội suy tuyến tính xấp xỉ và phương pháp nội suy NURBS ............................................................................................................................................. 14 Hình 1.12: Giao diện phần mềm chuyển đổi từ chương trình NC do phần mềm CAM thông dụng tạo ra (với mã G1) thành chương trình NC sử dụng định dạng NURBS được công bố trong [50]. ............................................................................................................................ 16 Hình 1.13: Cấu trúc bộ nội suy NURBS trong [16]. ............................................................ 19 Hình 1.14: Biểu đồ tốc độ tại vị trí xung đột trình bày trong [20]. ..................................... 21 Hình 1.15: Tổng hợp các kết quả nghiên cứu về phương pháp nội suy biên dạng tự do NURBS theo thời gian thực ............................................................................................................... 22 Hình 2.1: Các hàm cơ sở B-spline bậc 1 với vector tham số nút U={0,0,1,2,3,4,4}. ......... 25 Hình 2.2: Các hàm cơ sở B-spline bậc 2 với vector tham số nút U={0,0,0,1,2,3,4,4,4}. ... 25 Hình 2.3: Các hàm cơ sở B-spline bậc 3 với vector tham số nút U={0,0,0,0,1,2,3,4,4,4,4} ............................................................................................................................................. 25 Hình 2.4: Minh họa việc hình thành đường NURBS. .......................................................... 26 Hình 2.5: Điều chỉnh hình dạng đường NURBS thông qua điểm điều khiển và trọng số. .. 27 Hình 2.6: Biểu diễn góc phần tư đường tròn dưới dạng đường Bezier phân thức .............. 29 Hình 2.7: Minh họa đường Bezier với bậc khác nhau. ........................................................ 29 Hình 2.8: Ứng dụng đường Bezier trong việc thiết kế font chữ........................................... 30 Hình 2.9: Quan hệ giữa đường NURBS và phép chiếu xuyên tâm. ..................................... 31 Hình 2.10: Các điểm điều khiển được tính trong thuật toán DeBoor. ................................ 34 Hình 2.11: Minh họa thuật toán DeBoor............................................................................. 35 x
Hình 2.12: Các đường tham số tiêu chuẩn (isoparametric curves) trên bề mặt. ................ 40 Hình 3.1: Nguyên lý cơ bản nội suy biên dạng tự do NURBS theo thời gian thực.............. 45 Hình 3.2: Chuyển động của dụng cụ trong một chu kỳ nội suy biên dạng tự do NURBS. .. 45 Hình 3.3: Ước lượng sai số dây cung trong phương pháp nội suy NURBS. ....................... 46 Hình 3.4: Đường giới hạn tốc độ tiến dao phụ thuộc vào độ cong. .................................... 47 Hình 3.5: Cấu trúc thuật toán nội suy biên dạng tự do NURBS với khả năng điều khiển tốc độ tiến dao theo thời gian thực ............................................................................................ 48 Hình 3.6: (a) Minh họa biên dạng tự do NURBS có các vùng giới hạn tốc độ tiến dao; (b) Dạng biểu đồ tốc độ tiến dao cho phép khi đi qua một vùng giới hạn .......................... 52 Hình 3.7: Vị trí của bộ tiền xử lý đường NURBS. ............................................................... 54 Hình 3.8: Miền ảnh hưởng của điểm “quan trọng”. ........................................................... 55 Hình 3.9: So sánh miền ảnh hưởng của hai điểm “quan trọng”......................................... 56 Hình 3.10: Minh họa các điểm “quan trọng” phân chia đường NURBS thành các phân đoạn ............................................................................................................................................. 59 Hình 3.11: Tính tốc độ tiến dao trên một phân đoạn đường NURBS.................................. 60 Hình 3.12: (a) Biên dạng chữ alpha (nét liền) và đa giác điều khiển (nét đứt); (b) Biểu đồ độ cong của biên dạng chữ alpha (nét liền) và một số giá trị độ cong giới hạn (nét đứt) ....... 64 Hình 3.13: (a),(c),(e) Các điểm “quan trọng” được xác định bởi bước tiền xử lý; (b),(d),(f) Tốc độ tiến dao bị giới hạn theo điều kiện (3.17) ............................................... 65 Hình 3.14: Kết quả mô phỏng tốc độ tiến dao khi nội suy biên dạng chữ alpha theo thời gian thực. ..................................................................................................................................... 66 Hình 3.15: Kết quả mô phỏng gia tốc tiếp tuyến khi nội suy biên dạng chữ alpha theo thời gian thực. ............................................................................................................................. 67 Hình 3.16: Kết quả mô phỏng sai số dây cung khi nội suy biên dạng chữ alpha................ 68 Hình 3.17: Biên dạng hình cánh bướm ............................................................................... 69 Hình 3.18: Biểu đồ độ cong của biên dạng hình cánh bướm. ............................................. 69 Hình 3.19: Kết quả mô phỏng nội suy NURBS với biên dạng hình cánh bướm. ................. 70 Hình 3.20: Biên dạng đường tròn (R = 25 mm). ................................................................. 72 Hình 3.21: Kết quả mô phỏng nội suy NURRBS với biên dạng đường tròn. ...................... 73 Hình 4.1: Xu hướng thay đổi tỉ lệ giá trị giữa phần cứng và phần mềm ............................. 75 Hình 4.2: Cấu trúc cơ bản của hệ điều khiển số sử dụng phần mềm LinuxCNC. ............... 77 Hình 4.3: Kiến trúc module hóa của phần mềm LinuxCNC ............................................... 78 Hình 4.4: Giao diện phần mềm Eclipse được sử dụng để phát triển chức năng nội suy NURBS ............................................................................................................................................. 80 Hình 4.5: Minh họa cách sử dụng mã lệnh G6.2 để định nghĩa đường NURBS. ................ 87 xi
Hình 4.6: (a) Giao diện phần mềm Rhinoceros; (b) Chương trình viết bằng ngôn ngữ RhinoScript để vẽ biên dạng chữ alpha ............................................................................... 89 Hình 4.7: Chương trình CreateNurbsCode() để sinh ra file NC sử dụng mã G6.2............. 90 Hình 4.8: Giao diện CAD/CAM cho phần mềm nội suy NURBS. ....................................... 91 Hình 4.9: Hệ thống thiết bị được sử dụng để thử nghiệm thuật toán nội suy NURBS. ....... 91 Hình 4.10: (a) Biên dạng cánh bướm được thiết kế trên phần mềm Rhinoceros; (b) Chương trình gia công biên dạng cánh bướm sử dụng mã lệnh G6.2........................... 92 Hình 4.11: Giao diện AXIS của phần mềm LinuxCNC cho phép xem trước đường dụng cụ được mô tả bằng mã G6.2 ................................................................................................... 93 Hình 4.12: Kết quả gia công biên dạng hình cánh bướm theo phương pháp nội suy NURBS ............................................................................................................................................. 93 Hình 4.13: Giao diện phần mềm Rhinoceros và RhinoCAM............................................... 94 Hình 4.14: Tọa độ các điểm nội suy trong phương pháp nội suy NURBS và nội suy tuyến tính xấp xỉ (kết quả thực nghiệm). ....................................................................................... 96 Hình 4.15: So sánh tốc độ tiến dao khi nội suy NURBS và nội suy tuyến tính xấp xỉ (kết quả thực nghiệm). ......................................................................................................... 96 Hình 4.16: Đồ thị so sánh thời gian gia công biên dạng cánh bướm theo phương pháp nội suy NURBS và nội suy tuyến tính xấp xỉ .............................................................................. 97 Hình 4.17: Biên dạng gia công gồm nhiều đoạn đường NURBS. ....................................... 98 Hình 4.18: Gia công biên dạng phức tạp biểu diễn bằng nhiều đường NURBS: (a) Giao diện của phần mềm điều khiển số; (b) Kết quả gia công ............................................................ 98 Hình 4.19: Nguyên lý hình thành đường thân khai của đường tròn. ................................... 99 Hình 4.20: Cặp bánh răng trụ thân khai ............................................................................. 99 Hình 4.21: Thiết kế biên dạng thân khai bằng công cụ đường NURBS trên phần mềm Rhinoceros. ........................................................................................................................ 100 Hình 4.22: Chương trình gia công biên dạng thân khai sử dụng mã lệnh G6.2 ............... 101 Hình 4.23: Giao diện AXIS của phần mềm điều khiển số khi nạp chương trình gia công biên dạng thân khai theo phương pháp nội suy NURBS ........................................................... 102 Hình 4.24: Kết quả gia công biên dạng thân khai theo phương pháp nội suy NURBS ..... 102 Hình 4.25: Đồ thị so sánh thời gian gia công biên dạng thân khai theo phương pháp nội suy NURBS và nội suy tuyến tính xấp xỉ. ................................................................................. 103
xii
MỞ ĐẦU 1. Lý do chọn đề tài Sự ra đời của công nghệ điều khiển số các máy công cụ (CNC) là một bước tiến quan trọng của công nghệ sản xuất, mang lại năng suất và chất lượng cho sản phẩm. Với việc các hệ thống máy tính và vi xử lý ngày càng có năng lực tính toán mạnh, các hệ thống điều khiển số ngày nay có nhiều tính năng tiên tiến và ngày càng trở nên “thông minh hơn”. Xu hướng hiện nay trong các hệ thống điều khiển số là tăng tỉ lệ phần mềm và giảm tỉ lệ phần cứng. Đồng thời các hệ thống điều khiển số đang được phát triển theo hướng “mở” hơn, linh hoạt hơn, có khả năng đáp ứng những yêu cầu chuyên biệt hơn. Chức năng nội suy là một trong những chức năng thuộc phần lõi điều khiển số (numerical control kernel), có ý nghĩa rất quan trọng đối với việc tạo nên sự chính xác và linh hoạt của các máy CNC. Trong hệ thống điều khiển số, chức năng nội suy được định nghĩa là quá trình tổng hợp chuyển động của dụng cụ theo một quỹ đạo xác định từ các chuyển động theo bước cơ sở (Basic Length Unit - BLU) của các trục thành phần. Mỗi bước cơ sở có giá trị rất bé, thường là 0.001 mm. Các hệ thống điều khiển CNC thông thường hỗ trợ hai thuật toán nội suy cơ bản là nội suy tuyến tính và nội suy cung tròn. Các thuật toán này đáp ứng tốt trong các trường hợp mà đường dụng cụ là đường thẳng hoặc cung tròn. Trong những trường hợp đường dụng cụ là những đường cong phức tạp thì phương pháp phổ biến hiện nay là xấp xỉ đường dụng cụ bằng chuỗi các đoạn thẳng để đưa về việc sử dụng thuật toán nội suy tuyến tính. Quá trình xấp xỉ như vậy gặp phải vấn đề mâu thuẫn sau đây: Một mặt, số lượng đoạn thẳng cần phải đủ lớn để sai số xấp xỉ nằm trong giới hạn cho phép, cũng như làm giảm ảnh hưởng của chuyển động không liên tục giữa các đoạn thẳng. Mặt khác, số lượng đoạn thẳng lớn lại dẫn tới nhiều nhược điểm không mong muốn, như kích thước lớn của file G-code, sự không ổn định và suy giảm tốc độ tiến dao dẫn tới giảm chất lượng bề mặt chi tiết và tăng thời gian gia công, …[26]. Vấn đề mâu thuẫn nói trên càng trở nên quan trọng khi xuất hiện ngày càng nhiều nhu cầu gia công các chi tiết phức tạp với các biên dạng và bề mặt tự do (free-form curve, freeform surface). Điều này đặt ra yêu cầu cần phải nghiên cứu và đề xuất các thuật toán nội suy mới nhằm loại bỏ việc xấp xỉ các đường dụng cụ phức tạp bằng chuỗi đoạn thẳng. Hiện nay nhiều nhà nghiên cứu trên thế giới đã tập trung phát triển các thuật toán nhằm tổng hợp chuyển động của dụng cụ theo các biên dạng tự do. Các thuật toán này tổng quát và phức tạp hơn nhiều so với các thuật toán nội suy tuyến tính và nội suy cung tròn. Các biên dạng tự do thường được mô tả bởi các phương trình tham số, như Bezier, B-spline, NURBS, ... Mỗi phương trình tham số biểu diễn các hình dạng khác nhau thông qua một tập hợp các thông số hình học, như bậc, điểm điều khiển, trọng số, tham số nút, ... Các thuật toán nội suy biên dạng tự do cần phải xử lý trực tiếp các thông số hình học của phương trình tham số để tính toán theo thời gian thực các giá trị đặt cho các vòng điều khiển vị trí của các trục máy. Đây là các thuật toán nội suy tiên tiến, có thể mang tới những khả năng mới cho hệ điều khiển số, giúp nâng cao hơn nữa năng suất và chất lượng bề mặt chi tiết. Hiện nay, công nghệ CAD/CAM/CNC đã được ứng dụng rộng rãi trong nền sản xuất của nước ta. Do những hiệu quả mà các công nghệ này mang lại nên các vấn đề thuộc lĩnh vực CAD/CAM/CNC luôn được quan tâm và theo dõi. Tuy nhiên, các nghiên cứu trong 1
nước thuộc lĩnh vực này còn tương đối ít. Đặc biệt, các nghiên cứu về bản chất và các thuật toán bên trong hệ thống điều khiển số thì hầu như không có công bố. Chính vì thế, NCS thấy rằng việc nghiên cứu phương pháp nội suy theo thời gian thực các biên dạng tự do trên hệ thống CNC vừa có tính khoa học vừa có tính thực tiễn cao, làm phong phú thêm các nghiên cứu trong nước, cũng như cập nhật theo xu hướng nghiên cứu của thế giới trong lĩnh vực công nghệ điều khiển số. Được sự đồng ý của giáo viên hướng dẫn, NCS đã lựa chọn đề tài luận án: “Nghiên cứu xây dựng phương pháp nội suy theo thời gian thực các biên dạng tự do trong tạo hình bề mặt chi tiết gia công trên máy công cụ CNC 3 trục”. 2. Mục đích nghiên cứu Nghiên cứu phương pháp nội suy theo thời gian thực các biên dạng tự do nhằm đáp ứng các yêu cầu ngày càng cao về năng suất và chất lượng khi gia công tạo hình bề mặt các chi tiết phức tạp trên máy công cụ CNC. 3. Đối tượng, phạm vi và phương pháp nghiên cứu Luận án nghiên cứu phương pháp nội suy theo thời gian thực các biên dạng tự do trong tạo hình bề mặt chi tiết gia công trên máy công cụ CNC. Các biên dạng tự do thường được mô tả bởi các phương trình tham số, như Bezier, B-spline, NURBS, ... Trong đó, phương trình tham số NURBS là tổng quát nhất, phương trình Bezier hay B-spline đều có thể xem là các trường hợp đặc biệt của NURBS. Trong luận án, phương trình tham số NURBS được lựa chọn làm công cụ biểu diễn các biên dạng tự do. Như vậy, đối tượng nghiên cứu của luận án được xác định là phương pháp nội suy theo thời gian thực các biên dạng tự do NURBS, hay phương pháp nội suy NURBS trong hệ thống điều khiển số. Phạm vi nghiên cứu được giới hạn ở các hệ thống CNC 3 trục, với dụng cụ cắt không thay đổi hướng khi di chuyển trên quỹ đạo. Do đó, thuật toán nội suy theo thời gian thực chỉ có nhiệm vụ tính toán vị trí của dụng cụ trong không gian tọa độ Đề-các, và vị trí này có thể chuyển đổi một cách tự nhiên thành vị trí các trục thành phần X, Y, Z của máy công cụ trong không gian khớp mà không cần giải bài toán động học ngược. Phương pháp nghiên cứu là kết hợp giữa nghiên cứu lý thuyết với mô phỏng kiểm chứng trên phần mềm Matlab/Simulink và nghiên cứu thực nghiệm trên hệ thống thiết bị và phần mềm cụ thể. 4. Ý nghĩa khoa học và thực tiễn của đề tài Ý nghĩa khoa học -
-
-
Đã phát triển được một phương pháp nội suy theo thời gian thực các biên dạng tự do được biểu diễn bằng phương trình tham số NURBS (gọi ngắn gọn là biên dạng tự do NURBS, hoặc biên dạng NURBS). Đã đặt ra và giải quyết được các vấn đề quan trọng khi thực hiện chuyển động tạo hình theo các biên dạng tự do NURBS, đó là: vấn đề giới hạn sai số nội suy và vấn đề điều khiển tốc độ tiến dao trong giới hạn của máy công cụ về gia tốc tiếp tuyến và gia tốc hướng tâm. Các nội dung nghiên cứu của luận án góp phần làm phong phú và sâu sắc thêm các kiến thức chuyên ngành trong lĩnh vực điều khiển số các máy công cụ. 2
Ý nghĩa thực tiễn -
-
Phương pháp nội suy theo thời gian thực các biên dạng tự do NURBS có ý nghĩa quan trọng đối với việc nâng cao năng suất và chất lượng khi gia công tạo hình bề mặt các chi tiết phức tạp trên máy công cụ CNC. Do đó các kết quả nghiên cứu của luận án mang ý nghĩa thực tiễn, có nhiều tiềm năng ứng dụng trong công nghiệp và nền sản xuất tự động hóa. Ngoài ra, luận án cũng đã nghiên cứu hệ điều khiển số có kiến trúc mở (OAC - Open Architecture Controller) và dựa trên nền tảng mở để cài đặt và thử nghiệm các thuật toán nội suy mới. Kết quả là đã phát triển được một phần mềm điều khiển số kiểu PC-based với khả năng nội suy các biên dạng tự do NURBS theo thời gian thực. Phần mềm hoạt động trên nền tảng máy tính PC và có thể tích hợp với các hệ truyền động servo thông dụng để tạo thành một hệ thống điều khiển CNC hoàn chỉnh.
5. Những kết quả đạt được và đóng góp mới của luận án Những kết quả chính và cũng là những đóng góp mới của luận án như sau: -
-
-
-
-
Đã nghiên cứu những nguyên lý cơ bản của phương pháp nội suy theo thời gian thực các biên dạng tự do NURBS và nêu lên những ưu điểm nổi trội của phương pháp trong việc nâng cao chất lượng bề mặt chi tiết và năng suất gia công, đặc biệt là khi gia công với tốc độ tiến dao lớn. Đã đề xuất được một phương pháp điều khiển tốc độ tiến dao khi thực hiện chuyển động nội suy theo biên dạng tự do NURBS. Phương pháp đề xuất bao gồm hai bước: bước tiền xử lý đường NURBS (offline) và bước tính tốc độ tiến dao theo thời gian thực (online). Với phương pháp đề xuất, sai số nội suy được đảm bảo nằm trong giới hạn cho phép, đồng thời tốc độ tiến dao trong chuyển động nội suy được tự động điều chỉnh, phù hợp với các giới hạn động học của máy công cụ (về gia tốc tiếp tuyến và gia tốc hướng tâm). Đã phát triển được một phần mềm nội suy biên dạng tự do NURBS theo thời gian thực dựa trên hệ điều khiển số có kiến trúc mở. Phần mềm hoạt động trên nền tảng máy tính PC (PC-based controller) và có thể tích hợp với các hệ truyền động servo thông dụng để tạo thành một hệ thống điều khiển CNC hoàn chỉnh. Đã xây dựng được một hệ thống thiết bị để phục vụ cho các thử nghiệm trong thực tế của phương pháp nội suy NURBS. Hệ thống thiết bị gồm có máy phay CNC mini 3 trục NOVAMILL với phần điện và phần điều khiển số được thiết kế lại hoàn toàn theo hướng sử dụng máy tính PC làm bộ điều khiển trung tâm (PC-based). Đã gia công thử nghiệm được một số biên dạng phức tạp theo phương pháp nội suy NURBS, dựa trên hệ thống thiết bị được xây dựng trong luận án. Các kết quả ghi nhận được trong quá trình gia công thực tế đã làm sáng rõ thêm các ưu điểm của phương pháp nội suy NURBS.
6. Bố cục của luận án Sau phần Mở đầu với các mục theo quy định, các nội dung nghiên cứu của luận án được trình bày trong 4 chương như sau: Chương 1: Tổng quan
3
Chương 2: Phương pháp biểu diễn đường và mặt trong các hệ CAD/CAM sử dụng phương trình tham số NURBS. Chương 3: Xây dựng phương pháp nội suy theo thời gian thực các biên dạng tự do NURBS. Chương 4: Nghiên cứu phát triển phần mềm nội suy biên dạng tự do NURBS theo thời gian thực dựa trên hệ điều khiển có kiến trúc mở. Phần cuối cùng là Kết luận và Kiến nghị sẽ tổng kết các kết quả nghiên cứu của đề tài và đề xuất một số hướng nghiên cứu tiếp theo.
4
CHƯƠNG 1. TỔNG QUAN 1.1. Khái quát về hệ thống điều khiển số CNC và phương pháp nội suy NURBS Cấu trúc bộ điều khiển số CNC Các máy CNC là những sản phẩm cơ điện tử điển hình, có cấu tạo cơ bản gồm có máy công cụ với các thành phần cơ khí và hệ thống điều khiển số. Mục đích khi phát triển các máy CNC là để gia công chính xác các chi tiết phức tạp. Ban đầu hệ thống điều khiển số chủ yếu được áp dụng cho các máy phay (milling machines) và máy doa (boring machines). Sau đó, việc ứng dụng công nghệ điều khiển số được mở rộng cho các loại máy công cụ khác, như máy tiện, máy tạo ren, trung tâm gia công, ... Hiện nay, công nghệ điều khiển số còn được ứng dụng cho cả các máy gia công phi truyền thống, như máy gia công tia lửa điện, máy cắt dây, máy cắt laser, máy cắt tia nước, máy cắt plasma, …, bên cạnh các máy gia công truyền thống [7, 11, 42].
Hình 1.1: Các thành phần cơ bản của hệ thống điều khiển số [42].
Cấu trúc cơ bản của hệ thống điều khiển số bao gồm ba thành phần chính, đó là: -
-
Thành phần giao diện người-máy, MMI (Man Machine Interface). Thành phần này thực hiện chức năng giao diện giữa người và máy, tiếp nhận các thao tác điều khiển máy từ người vận hành, hiển thị thông tin trạng thái của máy, cũng như cung cấp các chức năng cho phép người vận hành nhập và chỉnh sửa các chương trình gia công NC. Thành phần lõi điều khiển số, NCK (Numerical Control Kernel). Đây là thành phần quan trọng nhất, quyết định chất lượng của một hệ điều khiển số. Thành phần này thực hiện các chức năng cơ bản, như dịch các mã lệnh trong chương trình gia công (NC code interpreter), thực hiện các thuật toán nội suy (interpolator), điều khiển vị trí các trục máy (position control) và bù sai số (error compensation), … Tín hiệu từ
5
-
NCK được đưa tới hệ thống điều khiển truyền động để thực hiện các chuyển động chính xác của máy CNC. Thành phần điều khiển logic, PLC (Programmable Logic Controller). Thành phần này thực hiện các chức năng điều khiển logic trên máy, như điều khiển tuần tự quá trình thay dao tự động, thay phôi tự động, điều khiển tốc độ trục chính, điều khiển hệ thống bôi trơn, làm mát, hệ thống đèn tín hiệu cảnh báo, chức năng dừng khẩn cấp E-STOP, …
Các thành phần của hệ thống điều khiển số được minh họa trên Hình 1.1. Trên Hình 1.2 minh họa luồng thông tin trong hệ thống điều khiển số CNC. Chương trình gia công NC khi truyền tới bộ điều khiển CNC được xử lý qua bộ dịch mã (interpreter). Với các lệnh chuyển động nội suy (G01/G02/G03), bộ dịch mã sẽ trích xuất dữ liệu đường dụng cụ và tốc độ tiến dao để gửi tới bộ nội suy. Tại đây, bộ nội suy tính giá trị đặt cho các vòng điều khiển vị trí của các trục máy. Các chức năng dịch mã, nội suy và điều khiển vị trí thường được tích hợp trong phần lõi điều khiển số của bộ điều khiển CNC.
Hình 1.2: Luồng thông tin trong hệ thống điều khiển số CNC.
Tín hiệu ra từ module điều khiển vị trí thường là giá trị đặt tốc độ cho từng trục, và được đưa tới hệ thống truyền động servo để thực hiện chuyển động của máy công cụ. Ban đầu, tín hiệu giá trị đặt tốc độ thường được truyền từ bộ điều khiển CNC tới hệ thống điều khiển truyền động dưới dạng điện áp tương tự (analog velocity command). Tuy nhiên, giải pháp này có nhược điểm là dễ bị nhiễu, dẫn tới yêu cầu phát triển các giao diện truyền thông số. SERCOS là chuẩn truyền thông số phổ biến nhất được sử dụng cho mục đích giao tiếp giữa hệ thống điều khiển số và hệ thống truyền động servo. Các giao diện số có ưu điểm là có khả năng chống nhiễu tốt hơn, đồng thời có khả năng mang nhiều thông tin hơn, nên cho phép thực hiện các chức năng tiên tiến, như cài đặt tham số của hệ truyền động từ trên hệ thống điều khiển số, giám sát trạng thái hệ truyền động, … 6
Chức năng nội suy trên máy công cụ điều khiển số CNC Các máy CNC thường có một số trục chuyển động thẳng hoặc tròn, được điều khiển vị trí và tốc độ chính xác nhờ ứng dụng các loại động cơ servo và công nghệ điều khiển truyền động. Các chuyển động trên máy CNC có thể chia thành hai dạng cơ bản: chuyển động điểmđiểm (point-to-point) và chuyển động nội suy (còn gọi là chuyển động theo quỹ đạo, contour motion). Chuyển động điểm-điểm có chức năng đưa dụng cụ (hoặc phôi) tới vị trí công tác. Trong chuyển động điểm-điểm, chỉ có vị trí cuối là quan trọng, các vị trí trung gian có thể thay đổi tùy theo thuật toán khác nhau. Hình 1.3 minh họa hai phương án thực hiện chuyển động điểm-điểm từ vị trí A tới vị trí B được hỗ trợ trên các bộ điều khiển số của hãng Fanuc. Trong phương án 1, cả hai trục X và Y đều chuyển động với tốc độ chạy nhanh (rapid rate). Do hành trình theo trục Y ngắn hơn hành trình theo trục X, nên chuyển động theo trục Y sẽ kết thúc trước tại vị trí trung gian C. Sau đó trên đoạn từ C tới B chỉ còn chuyển động theo trục X. Trong phương án 2, chuyển động được thực hiện theo đường thẳng từ A tới B. Do hành trình theo trục Y ngắn hơn hành trình theo trục X nên chuyển động theo trục X được thực hiện với tốc độ chạy nhanh, còn chuyển động theo trục Y được thực hiện với tốc độ được điều chỉnh giảm đi theo tỉ lệ hành trình trên mỗi trục.
Hình 1.3: Hai phương án thực hiện chuyển động điểm-điểm từ vị trí A tới vị trí B.
Chuyển động nội suy là chuyển động phối hợp của một số trục máy, nhằm tạo ra chuyển động tổng hợp của dụng cụ (so với phôi) bám theo một quỹ đạo xác định. Khác với chuyển động điểm-điểm, tốc độ của các trục máy trong chuyển động nội suy được phối hợp sao cho từng trục di chuyển đến vị trí đích trong cùng một khoảng thời gian. Ngoài ra, sự phối hợp tốc độ của các trục máy còn phải tạo ra vector vận tốc tổng hợp của dụng cụ luôn có phương tiếp tuyến với quỹ đạo chuyển động, đồng thời có độ lớn được lập trình trong chương trình gia công NC. Yêu cầu phải phối hợp tốc độ của các trục thành phần trong chuyển động nội suy được minh họa trên Hình 1.4. Để thực hiện chuyển động nội suy theo đường thẳng từ vị trí A tới vị trí B với tốc độ tiến dao yêu cầu là V thì tốc độ của trục X là Vx , còn tốc độ của trục Y là Vy . Hai trục X và Y đồng thời chuyển động trong cùng một khoảng thời gian. Trên các máy CNC 3 trục, chuyển động nội suy là chuyển động phối hợp của các trục vuông góc X, Y, Z. Các máy CNC thông thường hỗ trợ hai dạng chuyển động nội suy cơ bản, đó là nội suy tuyến tính và nội suy cung tròn (Hình 1.5). Với dạng nội suy tuyến tính, 7
chuyển động của dụng cụ được thực hiện theo đường thẳng, với tọa độ điểm đầu, tọa độ điểm cuối và tốc độ tiến dao được xác định trong chương trình NC. Với dạng nội suy cung tròn, chuyển động của dụng cụ bám theo một cung tròn có tọa độ tâm hoặc bán kính, cùng với tọa độ điểm đầu, tọa độ điểm cuối và tốc độ tiến dao xác định. Ta có nhận xét rằng, mặc dù trên các hệ thống điều khiển số CNC tiên tiến, nhưng các dạng chuyển động nội suy được hỗ trợ vẫn là những chuyển động theo các biên dạng rất cơ bản (đường thẳng và cung tròn).
Hình 1.4: Phối hợp tốc độ của các trục thành phần trong chuyển động nội suy.
Hình 1.5: Minh họa chuyển động nội suy tuyến tính và nội suy cung tròn trên các hệ điều khiển số.
Trong khi đó, các chuyển động tạo hình cần được thực hiện trên các máy công cụ CNC không chỉ gồm có chuyển động thẳng và chuyển động tròn. Với các chuyển động tạo hình phức tạp hơn, thông thường đường dụng cụ được xấp xỉ thành chuỗi các đoạn thẳng hoặc cung tròn (như minh họa trên Hình 1.6), để phù hợp với khả năng thực hiện chuyển động nội suy của hệ thống điều khiển số. 8
Hình 1.6: Xấp xỉ biên dạng phức tạp bằng chuỗi đoạn thẳng.
Thành phần trên hệ thống điều khiển số thực hiện chức năng nội suy được gọi là bộ nội suy, và là thành phần rất quan trọng, quyết định tới độ chính xác và chất lượng của hệ thống. Các bộ nội suy có thể thực hiện bằng phần cứng hoặc phần mềm. Trong giai đoạn đầu của công nghệ điều khiển số, bộ nội suy được thực hiện bằng phần cứng, với việc sử dụng các mạch tích phân DDA (Digital Differential Analyzer) [42]. Hiện nay, các bộ nội suy thường được thực hiện bằng phần mềm, sử dụng các thuật toán khác nhau. Theo [25, 27, 33, 42], các phương pháp thực hiện bộ nội suy (bằng phần mềm) có thể chia thành hai nhóm: các phương pháp nội suy kiểu xung tham chiếu (reference pulse interpolator) và các phương pháp nội suy kiểu từ tham chiếu (reference word interpolator). Trong đó, phương pháp nội suy kiểu từ tham chiếu là phương pháp phổ biến hơn trong các hệ thống điều khiển số hiện đại [42]. Trong phương pháp nội suy kiểu từ tham chiếu, thuật toán nội suy được thực hiện theo chu kỳ, gọi là chu kỳ nội suy.
Hình 1.7: Biểu đồ hình thang (a) Tốc độ tiến dao; (b) Gia tốc tiếp tuyến; (c) Biểu đồ hình thang suy biến thành biểu đồ tam giác.
9
Ngoài ra, cần lưu ý trong chuyển động nội suy không chỉ có vị trí của điểm công tác cần bám theo đường dụng cụ với độ chính xác nhất định, mà tốc độ và gia tốc của các trục máy cũng phải được xem xét sao cho không vượt quá các giới hạn động học (kinematics limits) của máy công cụ. Do đó, các hệ thống điều khiển số thường phối hợp bộ nội suy với chức năng điều khiển tăng tốc/giảm tốc (acceleration/decceleration control). Biểu đồ tốc độ hình thang (trapezoidal velocity profile) là dạng biểu đồ tốc độ thường được sử dụng trong các hệ điều khiển chuyển động. Trên Hình 1.7 minh họa biểu đồ tốc độ dạng hình thang, gồm có một khoảng thời gian tăng tốc, khoảng thời gian tốc độ bằng hằng số và khoảng thời gian giảm tốc. Với một tốc độ yêu cầu là Vmax , chiều dài quãng đường cần phải đủ lớn thì biểu đồ hình thang mới có đầy đủ ba phần như vậy. Trong trường hợp quãng đường dịch chuyển ngắn thì biểu đồ tốc độ dạng hình thang có thể mất đi phần tốc độ bằng hằng số và suy biến thành biểu đồ hình tam giác (như Hình 1.7(c)). Gia công CNC các chi tiết với biên dạng và bề mặt tự do Hiện nay, nhu cầu gia công CNC các chi tiết phức tạp với các biên dạng và bề mặt tự do (sculptured surface, free-form surface) xuất hiện ngày càng nhiều, đặc biệt trong một số ngành sản xuất như công nghiệp ô-tô, công nghiệp hàng không, tàu thủy, gia công khuôn mẫu, … Các bề mặt tự do được sử dụng trong các thiết kế nhằm tạo ra tính thẩm mỹ hoặc do yêu cầu về tính năng của sản phẩm. Trên các phần mềm CAD, bề mặt tự do thường được biểu diễn dưới dạng tham số (parametric models), hoặc dạng dữ liệu tam giác hóa (tessellated models). Sau khi được thiết kế trên phần mềm CAD, bề mặt tự do thường được đưa sang phần mềm CAM để thực hiện công việc sinh đường dụng cụ (toolpath generation). Kết quả của bước tính toán này là dữ liệu đường dụng cụ (Cutter Location Data), biểu diễn dưới dạng mã lệnh G-code (hoặc mã lệnh APT), và có thể gửi tới máy CNC để thực hiện quá trình gia công. Dữ liệu đường dụng cụ do phần mềm CAM tính toán bao gồm hai khía cạnh: tô-pô và độ phân giải. Trong đó, dạng tô-pô mô tả chiến lược sử dụng một tập hợp các đường chạy của dụng cụ để phủ hết một bề mặt. Trên Hình 1.8 minh họa hai trong số rất nhiều dạng tôpô được sử dụng trên các phần mềm CAM hiện nay, đó là dạng zigzag (Hình 1.8(a)) và dạng contour (Hình 1.8(b)). Từ một dạng tô-pô xác định, bề mặt tự do được rời rạc hóa thành một tập hợp các đường chạy của dụng cụ.
Hình 1.8: Một số kiểu đường dụng cụ khi gia công bề mặt tự do trên máy công cụ CNC. (a) Kiểu zigzag; (b) Kiểu contour.
10
Tiếp theo, mỗi đường chạy lại được xấp xỉ bằng một chuỗi các đoạn thẳng. Kích thước và số lượng các đoạn thẳng được quyết định bởi bước tính (forward step) khi xấp xỉ. Bước tính và khoảng cách giữa hai đường chạy liên tiếp xác định độ phân giải của dữ liệu đường dụng cụ và có ảnh hưởng quyết định tới sai số khi gia công 3D các bề mặt tự do trên máy CNC (minh họa trên Hình 1.9).
Hình 1.9: Độ phân giải của dữ liệu đường dụng cụ. (a) Bước tính; (b) Khoảng cách giữa hai đường dụng cụ liên tiếp.
Trong trường hợp gia công 2D và/hoặc 2.5D, dụng cụ có thể được yêu cầu chuyển động theo các biên dạng phức tạp (biên dạng tự do). Khi đó, biên dạng phức tạp thông thường cũng được xử lý trên phần mềm CAM để xấp xỉ bằng một chuỗi đoạn thẳng trước khi gia công trên máy CNC. Sai số khi xấp xỉ một biên dạng phức tạp bằng chuỗi đoạn thẳng phụ thuộc vào giá trị bước tính được lựa chọn. Như vậy, các biên dạng và bề mặt tự do sau khi được thiết kế trên phần mềm CAD, thường phải được xấp xỉ bằng chuỗi đoạn thẳng thông qua các bước tính toán trên phần mềm CAM, trước khi được gia công trên máy CNC với mã lệnh G01. Đây là phương pháp đang được sử dụng phổ biến hiện nay. Tuy nhiên, phương pháp này (trong luận án gọi là phương pháp nội suy tuyến tính xấp xỉ) có một số nhược điểm quan trọng, đặc biệt là trong những trường hợp gia công với tốc độ tiến dao lớn. Các nhược điểm đó như sau: Nhược điểm thứ nhất là kích thước chương trình gia công NC rất lớn. Để đạt được độ chính xác yêu cầu thì số lượng đoạn thẳng cần thiết để xấp xỉ đường dụng cụ thường rất lớn, dẫn tới kích thước chương trình gia công NC rất lớn. Kích thước lớn của chương trình NC thường vượt quá khả năng lưu trữ của bộ nhớ trên các bộ điều khiển CNC, nên phải chia thành một số chương trình nhỏ hơn, hoặc sẽ phải lưu chương trình trên bộ nhớ ngoài và sử dụng phương pháp DNC để tiếp tục truyền dữ liệu ngay trong lúc đang thực hiện một phần chương trình đã có trong bộ nhớ đệm của bộ điều khiển CNC. Tuy nhiên, phương pháp DNC cũng có nhược điểm là khi các đoạn thẳng quá nhỏ và quá trình gia công được thực hiện với tốc độ tiến dao lớn thì có thể xảy ra trường hợp máy CNC thực hiện xong các lệnh trong bộ nhớ đệm trước khi các lệnh mới được gửi đến, dẫn tới có thời điểm máy bị dừng do không còn lệnh trong bộ nhớ. Điều này không những làm giảm năng suất gia công, mà còn ảnh hưởng tới chất lượng bề mặt chi tiết. Ngoài ra, khi truyền chương trình NC từ bộ nhớ ngoài tới bộ điều khiển CNC sẽ có xác suất xảy ra sai lệch dữ liệu trên đường truyền khi kích thước file rất lớn.
11
Nhược điểm thứ hai là không đạt được tốc độ tiến dao như yêu cầu trong chương trình gia công NC. Mỗi đoạn thẳng xấp xỉ được mã hóa thành một dòng lệnh (block) với mã G01. Trên bộ điều khiển CNC, các mã lệnh G-code được thực hiện lần lượt theo từng dòng. Với mỗi dòng lệnh đều phải thực hiện cơ chế điều khiển tăng tốc/giảm tốc, và việc này sẽ làm tăng thời gian gia công. Quá trình điều khiển tăng tốc/giảm tốc thường thực hiện theo biểu đồ hình thang. Nếu chiều dài mỗi đoạn thẳng rất nhỏ (điều này thường xảy ra khi số lượng đoạn thẳng tăng lên), biểu đồ hình thang bị suy biến thành biểu đồ tam giác, tức là tốc độ tiến dao khi tăng tốc chưa đạt tới tốc độ yêu cầu thì đã bắt đầu phải giảm tốc để dừng lại chính xác tại vị trí cuối của đoạn thẳng. Trong trường hợp như vậy, tốc độ tiến dao trung bình bị suy giảm đáng kể, và không thể đạt được tốc độ yêu cầu trong chương trình gia công NC. Hiện tượng này càng trở nên quan trọng khi tốc độ yêu cầu trong chương trình có giá trị lớn, thậm chí nó chính là yếu tố cản trở việc thực hiện gia công CNC với tốc độ tiến dao lớn. Nhược điểm thứ ba là tốc độ tiến dao không ổn định. Mỗi đoạn thẳng xấp xỉ được xử lý bởi thuật toán nội suy tuyến tính. Thuật toán nội suy hoạt động theo chu kỳ. Trong một chu kỳ nội suy, thuật toán nội suy tính toán và gửi tín hiệu đặt tới các vòng điều khiển vị trí của các trục máy dưới dạng các xung tham chiếu (reference pulses) hoặc từ nhị phân (binary word) [26]. Nếu tốc độ là V và chu kỳ là T, thì bước dịch chuyển của dụng cụ trong một chu kỳ là L VT . Gọi L là chiều dài của một đoạn thẳng xấp xỉ. Thế thì, để đi hết chiều dài L cần số chu kỳ tối thiểu là: L N int L
(1.1)
Trong (1.1), int(.) chỉ phép lấy phần nguyên. Nếu chiều dài L không phải là một số nguyên lần của L thì sau N chu kỳ nội suy, vẫn còn lại một phần dư. Thông thường phần dư này sẽ được thực hiện trong một chu kỳ nội suy tiếp theo nữa. Tức là, đoạn thẳng với chiều dài L sẽ được thực hiện trong (N+1) chu kỳ nội suy. Trong đó, khoảng dịch chuyển trong chu kỳ cuối không đều, tùy thuộc vào khoảng chiều dài còn lại sau N chu kỳ đầu. Hiện tượng này làm cho tốc độ tiến dao không ổn định. Nếu chiều dài của đoạn thẳng xấp xỉ không quá bé thì hiện tượng này không gây ảnh hưởng nghiêm trọng. Nhưng khi chiều dài của mỗi đoạn thẳng xấp xỉ rất bé (để tăng độ chính xác) thì hiện tượng này sẽ dẫn tới suy giảm chất lượng bề mặt chi tiết gia công [26, 34]. Nhược điểm thứ tư là khó theo dõi quá trình gia công. Chương trình gia công NC có kích thước rất lớn, nhưng chỉ mang thông tin về các đoạn thẳng xấp xỉ các biên dạng và bề mặt chi tiết. Do đó, người vận hành máy rất khó theo dõi quá trình gia công khi quan sát các dòng lệnh với mã G01 được thực hiện trên máy công cụ điều khiển số. Các nhược điểm kể trên có nguồn gốc từ việc các bộ điều khiển CNC chỉ hỗ trợ các dạng chuyển động nội suy cơ bản là nội suy tuyến tính và nội suy cung tròn. Chính vì vậy, một đường dụng cụ phức tạp phải xấp xỉ thành chuỗi các đoạn thẳng có chiều dài rất bé, để phù hợp với khả năng nội suy trên bộ điều khiển CNC. Nhằm khắc phục các nhược điểm và 12
cho phép gia công CNC với tốc độ tiến dao lớn và độ chính xác cao các chi tiết phức tạp với nhiều biên dạng và bề mặt tự do, nhiều nhà nghiên cứu trên thế giới đã tập trung vào việc đề xuất các thuật toán nội suy theo thời gian thực các biên dạng tự do.
Hình 1.10: Giao diện STEP-NC trên một bộ điều khiển CNC, cho phép xử lý nhiều thông tin hơn của chi tiết gia công.
Các biên dạng tự do thường được biểu diễn bằng các phương trình tham số. Từ những năm 1950, các đường tham số (parametric curves) như Bezier, B-spline và NURBS đã được phát triển. Trong đó, đường NURBS là tổng quát nhất, các loại đường Bezier và B-spline đều là những trường hợp đặc biệt của NURBS. NURBS có nhiều ưu điểm, như có khả năng biểu diễn mạnh, có thể biểu diễn cả các biên dạng cơ bản (như đường tròn, e-lip, …) và các biên dạng tự do (free-form curves); các thuật toán xử lý có hiệu năng tốt và ổn định; linh hoạt trong biểu diễn các biên dạng phức tạp thông qua lựa chọn các điểm điều khiển, các trọng số và vector tham số nút,... [36]. NURBS được xem là công cụ biểu diễn tiêu chuẩn cho các đường và mặt tự do từ khoảng năm 1991 [28]. Gần đây, ngôn ngữ lập trình máy công cụ mới STEP-NC được thiết kế nhằm thay thế cho ngôn ngữ G-code, với mục đích cung cấp nhiều thông tin hơn về quá trình gia công, cũng như về sản phẩm cho các bộ điều khiển CNC, thay vì chỉ cung cấp thông tin về chuyển động của các trục máy (Hình 1.10). Trong STEP-NC, NURBS cũng được lựa chọn như giao diện tiêu chuẩn cho trao đổi dữ liệu giữa các hệ thống CAD/CAM và bộ điều khiển CNC. Chính vì thế, xu hướng chính hiện nay khi nghiên cứu đề xuất các thuật toán nội suy mới là sử dụng phương trình tham số NURBS làm công cụ biểu diễn các biên dạng tự do, và phát triển các thuật toán để nội suy theo thời gian thực các biên dạng NURBS. Nội dung của luận án cũng nằm trong xu hướng này. 13
Phương pháp nội suy biên dạng tự do NURBS theo thời gian thực (nội suy NURBS) Phương trình tham số NURBS (Non-Uniform Rational B-Spline) biểu diễn các biên dạng tự do thông qua các thông số hình học gồm có: (n+1) điểm điều khiển (control points), (n+1) trọng số (weights), (m+1) tham số nút (knot values) và bậc p (degree), với điều kiện m n p 1 . Thông qua điều chỉnh các thông số hình học, phương trình NURBS có khả năng biểu diễn các hình dạng rất phong phú, bao gồm các đường cơ bản (đường thẳng, đường tròn, các đường conic, ...) và các dạng đường tự do (free-form curves). Phương pháp nội suy NURBS có mục đích thực hiện các tính toán trong thời gian thực để tổng hợp chuyển động của dụng cụ theo một biên dạng phức tạp mô tả bằng phương trình tham số NURBS. Trong phương pháp này, ta sẽ không thực hiện trước một bước xấp xỉ trên phần mềm CAM để chuyển đổi biên dạng tự do thành chuỗi đoạn thẳng. Thay vào đó, ta truyền trực tiếp các thông số NURBS (điểm điều khiển, trọng số, tham số nút và bậc) biểu diễn biên dạng tự do tới bộ điều khiển CNC, sau đó bộ điều khiển sẽ sử dụng các dữ liệu này để tính toán và đưa ra tín hiệu điều khiển các trục máy. Quá trình này cũng tương tự như khi ta truyền thông số hình học của một đoạn thẳng (tọa độ điểm đầu, điểm cuối) tới thuật toán
(a) Phương pháp nội suy tuyến tính xấp xỉ
(b) Phương pháp nội suy NURBS Hình 1.11: So sánh phương pháp nội suy tuyến tính xấp xỉ và phương pháp nội suy NURBS.
14
nội suy tuyến tính, hoặc truyền thông số hình học của một cung tròn (tọa độ điểm đầu, điểm cuối, tọa độ tâm hoặc bán kính) tới thuật toán nội suy cung tròn. Yêu cầu thời gian thực ở đây có ý nghĩa là, thuật toán nội suy tính toán các vị trí tiếp theo của dụng cụ ngay trong khi chuyển động nội suy đang diễn ra. Điều này hoàn toàn khác với phương pháp nội suy tuyến tính xấp xỉ, bởi vì trong phương pháp xấp xỉ, phần mềm CAM đã tính toán từ trước (offline) tất cả các vị trí mà dụng cụ sẽ đi qua. Ngoài ra, về mặt điều khiển, yêu cầu thời gian thực còn đặt ra giới hạn về mức độ phức tạp của thuật toán nội suy, sao cho thuật toán luôn được hoàn thành trước khi kết thúc chu kỳ nội suy, và kịp thời cập nhật tín hiệu đưa tới các thiết bị chấp hành. Hình 1.11 minh họa và so sánh phương pháp nội suy tuyến tính xấp xỉ (sử dụng phần mềm CAM) với phương pháp nội suy NURBS. Phương pháp nội suy NURBS có thể khắc phục các nhược điểm đã trình bày trong mục 1.1.3 của phương pháp nội suy tuyến tính xấp xỉ vì những lý do sau: -
-
-
-
Đường NURBS biểu diễn đường dụng cụ trên một chiều dài lớn hơn nhiều so với mỗi đoạn thẳng xấp xỉ, do đó một đoạn đường NURBS sẽ thay thế cho rất nhiều đoạn thẳng, nhờ đó kích thước chương trình gia công NC sẽ giảm đi rất nhiều. Trong phương pháp nội suy NURBS, chương trình gia công có thể đủ nhỏ để lưu trữ hoàn toàn trên bộ nhớ của bộ điều khiển CNC. Trong trường hợp chương trình vẫn lớn và phải sử dụng giải pháp truyền DNC, thì khả năng các lệnh trong bộ nhớ đã thực hiện hết mà chưa kịp nhận lệnh tiếp theo, dẫn tới chuyển động trên máy công cụ có thời điểm bị tạm dừng cũng khó xảy ra, do chiều dài lớn của đường NURBS so với các đoạn thẳng xấp xỉ. Do chiều dài đường NURBS lớn hơn các đoạn thẳng xấp xỉ, hệ thống điều khiển số có đủ hành trình để đưa tốc độ tiến dao tới giá trị yêu cầu trong chương trình NC, trước khi phải giảm tốc để dừng ở cuối đường NURBS. Do đó, các hiện tượng suy giảm tốc độ, cũng như hiện tượng suy giảm chất lượng bề mặt chi tiết gia công do tốc độ không ổn định sẽ được hạn chế. Đặc biệt, đặc điểm này rất quan trọng trong các trường hợp gia công với tốc độ tiến dao lớn. Với phương pháp nội suy NURBS, hệ thống điều khiển số có thể thực hiện nhiều chức năng mới, tiên tiến, do trong khi thực hiện thuật toán nội suy NURBS, hệ thống có thông tin về quãng đường dài hơn so với khi nội suy các đoạn thẳng xấp xỉ (hệ thống có khả năng “nhìn trước” - look ahead - xa hơn). Người vận hành máy có thể nhận biết được chuyển động của dụng cụ đang được thực hiện trên đoạn đường NURBS nào, nên sẽ thuận lợi hơn trong việc giám sát quá trình gia công.
Một câu hỏi được đặt ra đó là làm sao để có dữ liệu mô tả đường dụng cụ biểu diễn dưới dạng phương trình tham số NURBS, để truyền tới các bộ điều khiển CNC với khả năng nội suy NURBS đã được tích hợp ? Mặc dù chưa phổ biến, một số phần mềm CAM hiện nay đã hỗ trợ khả năng sinh dữ liệu đường dụng cụ theo định dạng NURBS. Chẳng hạn, phần mềm Catia V5 hỗ trợ khả năng này cho một số nguyên công như phay contour (profile contouring), phay mặt theo chế độ iso-parametric, phay theo biên dạng (curve machining), ... Ngoài ra, một phương án khác cũng được các nhà nghiên cứu đặt ra, đó là hậu xử lý (post-processor) chương trình NC do các phần mềm CAM thông dụng tạo ra, và sử dụng các thuật toán xấp xỉ (NURBS curve fitting) để gộp một số lượng đoạn thẳng lại thành một đường NURBS tùy theo yêu cầu về sai số cho phép. Một số nghiên cứu theo hướng này đã cho kết quả khả quan, 15
như [48, 50]. Trên Hình 1.12 là giao diện phần mềm chuyển đổi từ chương trình NC do các phần mềm CAM thông dụng tạo ra (sử dụng mã G01) thành chương trình NC sử dụng định dạng NURBS được công bố trong bài báo [50].
Hình 1.12: Giao diện phần mềm chuyển đổi từ chương trình NC do phần mềm CAM thông dụng tạo ra (với mã G1) thành chương trình NC sử dụng định dạng NURBS được công bố trong [50].
1.2. Tổng quan tình hình nghiên cứu phương pháp nội suy biên dạng tự do NURBS theo thời gian thực trên các hệ thống điều khiển số CNC Tổng quan tình hình nghiên cứu trong nước Các công nghệ CAD/CAM/CNC đã được ứng dụng trong nền sản xuất của nước ta từ khá lâu. Do những hiệu quả mà các công nghệ này mang lại, nên các vấn đề thuộc lĩnh vực CAD/CAM/CNC luôn được quan tâm và theo dõi. Cũng đã có một số luận án tiến sĩ được thực hiện trong lĩnh vực này. Một số đề tài luận án đã nghiên cứu về chế độ cắt trên máy CNC, như [5, 9, 10]. Đề tài luận án [6] nghiên cứu về ứng dụng công nghệ CAD/CAM trong tạo hình bề mặt các bánh răng côn răng cong - một dạng chi tiết quan trọng trong ngành Cơ khí. Đề tài luận án [14] thì đã nghiên cứu vấn đề tính toán đường dụng cụ trong tạo hình bề mặt, cũng như vấn đề mài mòn dụng cụ cắt (cho trường hợp dao phay đầu bằng) khi gia công khuôn mẫu trên máy phay CNC. Nhằm nâng cao khả năng công nghệ của máy công cụ điều khiển số, đề tài luận án [12] đã đề xuất một mô hình điều khiển thích nghi dựa trên việc giám sát lực cắt để tự động hiệu chỉnh tham số công nghệ (cụ thể là lượng chạy dao) khi gia công trên máy CNC. Có thể nhận xét rằng các đề tài kể trên thuộc nhóm các đề tài nghiên cứu ứng dụng công nghệ CNC, và chưa đề cập tới các thuật toán tiên tiến bên trong hệ thống điều khiển số. Chức năng nội suy NURBS được đề cập tới trong bài báo [4]. Trong bài báo này các tác giả đã sử dụng đường NURBS để xử lý trơn láng đường chạy dao. Cụ thể, các tác giả đã sử dụng đường NURBS bậc 3 để tạo đường chạy dao chuyển tiếp, kết nối hai đường chạy 16
dao gia công không liên tục thành đường chạy dao trơn láng. Nội dung nghiên cứu của bài báo đề cập tới việc ứng dụng hệ điều khiển số có trang bị chức năng nội suy NURBS, và đã gợi mở một hướng ứng dụng chức năng nội suy NURBS trong việc “đảm bảo ổn định động lực học, chất lượng và năng suất cho quá trình gia công tốc độ cao” [4]. Ngoài ra, cũng đã có một số nghiên cứu khác về ứng dụng chức năng nội suy NURBS trong gia công các bề mặt chi tiết phức tạp, chẳng hạn [8]. Tuy nhiên, các nghiên cứu này đều chưa đi sâu vào bản chất và các vấn đề phức tạp của thuật toán nội suy NURBS. Cũng quan tâm tới vấn đề “gia công các quỹ đạo phức hợp”, bài báo [13] đã xem xét việc thực hiện quỹ đạo gia công trên robot hàn, với minh họa cho trường hợp quỹ đạo gia công là giao tuyến giữa mặt trụ và mặt nón. Nội dung bài báo [13] về cơ bản chưa đề cập tới vấn đề nội suy theo thời gian thực các biên dạng phức tạp trên các máy CNC. Nhìn chung, có thể đánh giá rằng các nghiên cứu trong nước đã đề cập tới nhiều khía cạnh khác nhau của việc ứng dụng công nghệ CAD/CAM/CNC, hoặc ứng dụng chức năng nội suy NURBS. Nhưng vẫn chưa có nhiều kết quả nghiên cứu được công bố liên quan tới các thuật toán để thực hiện chức năng nội suy NURBS, cũng như các thuật toán tiên tiến khác bên trong hệ thống điều khiển số CNC. Tổng quan tình hình nghiên cứu trên thế giới Phương pháp nội suy biên dạng tự do NURBS theo thời gian thực đã thu hút sự quan tâm của rất nhiều nhà nghiên cứu trên thế giới. Gọi u là tham số độc lập trong phương trình NURBS biểu diễn một biên dạng tự do, mỗi vị trí trên đường NURBS đều tương ứng với một giá trị xác định của tham số u. Do đó, các thuật toán nội suy biên dạng tự do NURBS trước hết đều cần phải tính giá trị của tham số u trong mỗi chu kỳ nội suy. Trong công trình nghiên cứu [15], Bedi và cộng sự đã đề xuất thuật toán nội suy đường B-spline (trường hợp riêng của đường NURBS), trong đó giá trị tham số u được tăng đều sau mỗi chu kỳ, hay nói cách khác bước tham số (parametric step size) được giữ là hằng số. Đây là thuật toán nội suy đơn giản, vì không đòi hỏi phải thực hiện các phép tính đạo hàm phức tạp. Tuy nhiên, do không có mối liên hệ giữa bước tham số và biến thời gian nên phương pháp này không có khả năng xử lý tốc độ tiến dao. Vì vậy, trong trường hợp các biên dạng cần nội suy rất phức tạp thì tốc độ tiến dao có thể dao động lớn, gây ra ảnh hưởng xấu đối với chất lượng bề mặt chi tiết gia công cũng như tới tuổi thọ của máy và dụng cụ cắt. Shpitalni, Koren và Lo trong bài báo [39] đã nghiên cứu vấn đề nội suy theo thời gian thực một đường cong tổng quát. Các tác giả này đã đề xuất các thuật toán nội suy cho trường hợp đường cong được biểu diễn dưới dạng ẩn và dạng tham số, trong đó dạng tham số được chỉ ra là có nhiều ưu điểm hơn so với dạng ẩn. Với thuật toán nội suy đường cong tham số, Shpitalni, Koren và Lo nêu quan điểm rằng, bước dịch chuyển của dụng cụ trong một chu kỳ nội suy cần phải được giữ ổn định, chứ không phải bước tham số được giữ ổn định. Khi bước dịch chuyển của dụng cụ trong một chu kỳ được giữ ổn định thì tốc độ tiến dao sẽ được giữ ổn định. Phương pháp của Shpitalni, Koren và Lo là sử dụng phép xấp xỉ Taylor bậc nhất hoặc bậc hai để xây dựng công thức truy hồi tính giá trị tham số u. Trong trường hợp chu kỳ nội suy nhỏ và đường cong không có những vị trí mà bán kính cong rất bé thì chỉ cần sử dụng phép xấp xỉ Taylor bậc nhất [39]. Tốc độ tiến dao trong thuật toán của Shpitalni, Koren và Lo được giữ không đổi và lấy từ giá trị yêu cầu trong chương trình gia công NC. 17
Mặc dù là một trong những công trình công bố sớm nhất về vấn đề nội suy theo thời gian thực các biên dạng đường cong, bài báo của Shpitalni, Koren và Lo [39] lại có nhược điểm là chưa đề cập tới các dạng phương trình tham số có khả năng biểu diễn mạnh như NURBS hay B-spline. Đường cong được minh họa trong bài báo [39] có phương trình tham số dạng đa thức, nên việc tính đạo hàm tương đối đơn giản. Một số tác giả đã tiếp nối ý tưởng sử dụng phép xấp xỉ Taylor khi xây dựng công thức cập nhật giá trị tham số u và quan tâm tới việc giảm sai lệch giá trị tham số do việc xấp xỉ gây ra. Yeh và Hsu trong bài báo [51] đã sử dụng phép xấp xỉ Taylor bậc nhất để xây dựng công thức cập nhật giá trị tham số u, và đề xuất một phương pháp để tính giá trị bù sai lệch của phép xấp xỉ bậc nhất. Các kết quả mô phỏng cho thấy phương pháp của Yeh và Hsu giữ được tốc độ tiến dao ổn định hơn so với khi chỉ sử dụng phép xấp xỉ Taylor bậc nhất hoặc bậc hai. Tuy nhiên, phương pháp của Yeh và Hsu có nhược điểm là khá phức tạp, và chỉ thuận lợi trong những trường hợp đường cong có bán kính cong không quá bé. Các bài báo [17] và [44] đã trình bày thuật toán nội suy NURBS sử dụng phương pháp tính lặp (PCI, Predictor-Corrector Interpolator), trong đó từ một giá trị ước lượng ban đầu (predictor), giá trị tham số u được hiệu chỉnh (corrector) cho tới khi sai lệch giữa giá trị tính toán của tốc độ tiến dao và giá trị yêu cầu trong chương trình gia công nằm trong giới hạn cho phép. Phương pháp tính lặp có ưu điểm trong việc giảm sai lệch tốc độ tiến dao, nhưng lại có nhược điểm là tốc độ hội tụ không ổn định và thường đòi hỏi thời gian tính toán lâu hơn so với các phương pháp sử dụng phép xấp xỉ Taylor. Ngoài ra, trong bài báo [17], Cheng và các cộng sự đã so sánh các thuật toán nội suy NURBS được xây dựng theo các phương xấp xỉ Taylor bậc nhất, xấp xỉ Taylor bậc hai và phương pháp tính lặp, và đưa ra nhận xét rằng phương pháp xấp xỉ Taylor bậc hai là sự lựa chọn thích hợp, do có thể dung hòa giữa mức độ chính xác và tốc độ tính toán. Erkorkmaz và Altintas trong bài báo [23] đã nghiên cứu trường hợp nội suy đường Bspline bậc 5, và đưa ra khái niệm đa thức điều chỉnh tốc độ (feed correction polynomial) để xấp xỉ quan hệ phi tuyến giữa giá trị tham số u và chiều dài của đường B-spline. Đa thức điều chỉnh tốc độ là một đa thức bậc 7 được xác định theo phương pháp bình phương tối thiểu, dựa trên một tập dữ liệu giá trị tham số và chiều dài tương ứng (tính xấp xỉ theo phương pháp số), và được sử dụng trong thuật toán nội suy để ước lượng chính xác giá trị tham số theo bước dịch chuyển của dụng cụ trong chu kỳ. Cũng có ý tưởng tương tự, Lei và cộng sự trong bài báo [29] đã xấp xỉ quan hệ giữa tham số u và chiều dài đường NURRBS bằng một tập hợp các hàm ILF (Inverse Length Functions). Mỗi hàm ILF là một đa thức Hermite bậc 3 mô tả quan hệ giữa tham số và chiều dài đường NURBS trong một khoảng tham số. Số lượng hàm ILF cho một đường NURBS phụ thuộc vào quá trình tính chiều dài theo phương pháp Simpson thích nghi [29]. Phương pháp của Lei và cộng sự có ưu điểm là các hàm ILF được tính offline từ trước, nên thuật toán nội suy NURBS trở nên đơn giản, vì không phải tính đạo hàm của đường NURBS trong mỗi chu kỳ. Tuy nhiên, dữ liệu các hàm ILF có thể tương đối lớn, gây khó khăn cho việc lưu trữ và xử lý. Các nghiên cứu kể trên chủ yếu tập trung vào phương pháp tính giá trị tham số u của đường NURBS theo thời gian thực, để từ giá trị tham số u xác định được tọa độ điểm nội suy. Một số vấn đề quan trọng khác như giới hạn sai số nội suy, và đảm bảo khả năng động học của máy công cụ chưa được xem xét. Yeh và Hsu trong bài báo [52] đã lần đầu tiên đặt ra vấn đề giới hạn sai số khi nội suy đường NURBS theo thời gian thực, và đưa ra phương 18
pháp điều chỉnh thích nghi tốc độ tiến dao (adaptive feedrate interpolation) tại các vị trí có độ cong lớn (tức là có bán kính cong nhỏ) trên đường NURBS. Phương pháp của Yeh và Hsu dựa trên việc thiết lập được biểu thức xấp xỉ thể hiện quan hệ giữa sai số dây cung với tốc độ tiến dao và độ cong tại một vị trí trên đường NURBS. Đây là một công bố rất quan trọng, và được trích dẫn nhiều trong các công trình nghiên cứu về sau. Ý nghĩa của nó là đã nêu lên vấn đề: tốc độ tiến dao không nên được giữ không thay đổi trong suốt quá trình nội suy một đường NURBS, việc điều chỉnh tốc độ tiến dao online trong quá trình nội suy có thể mang đến những khả năng mới cho phương pháp nội suy NURBS so với phương pháp nội suy tuyến tính xấp xỉ. Đồng thời, công thức điều chỉnh tốc độ tiến dao theo độ cong nhằm giới hạn sai số nội suy mà Yeh và Hsu trình bày trong bài báo [52] cũng được kế thừa trong nhiều công trình nghiên cứu khác. Tiếp nối Yeh và Hsu, Tikhon và cộng sự đã sử dụng ý tưởng điều chỉnh thích nghi tốc độ tiến dao để đưa ra thuật toán làm ổn định tốc độ bóc tách vật liệu khi nội suy đường NURBS theo thời gian thực, qua đó gián tiếp làm ổn định lực cắt [43]. Choi và cộng sự thì đã xem xét khả năng điều chỉnh thích nghi tốc độ tiến dao nhằm nâng cao chất lượng bề mặt chi tiết gia công [18]. Tuy các kết quả nghiên cứu này rất thú vị, nhưng vẫn có hạn chế là chưa xét tới khả năng động học của máy. Chẳng hạn, phương pháp của Yeh và Hsu trình bày trong [52] thực hiện giảm tốc độ tiến dao tại các vị trí có độ cong lớn để giới hạn sai số nội suy, nhưng nếu độ cong thay đổi quá nhanh, thì việc điều chỉnh giảm tốc độ cũng diễn ra đột ngột, dẫn tới vượt quá khả năng gia tốc của máy công cụ. Một vấn đề quan trọng trong khi thực hiện chuyển động nội suy là vấn đề điều khiển tăng tốc/giảm tốc: tốc độ tiến dao cần phải được điều khiển tăng dần (với giá trị gia tốc bị giới hạn) khi bắt đầu vào đường NURBS và giảm dần ở cuối đường NURBS. Cheng và Tsai trong bài báo [16] đã thực hiện điều khiển tăng tốc/giảm tốc trước nội suy (ADCBI Accelleration/Deccelleration Control Before Interpolation), qua đó đảm bảo khả năng động học của máy khi tăng tốc/giảm tốc ở đầu và cuối đường NURBS. Cấu trúc bộ nội suy đường NURBS của Cheng và Tsai bao gồm hai phần: phần xử lý offline và phần xử lý thời gian thực, như trên Hình 1.13. Trong phần xử lý offline, chiều dài đường NURBS được tính xấp xỉ theo phương pháp số. Dựa trên dữ liệu chiều dài đường NURBS đã có, biểu đồ tốc độ tiến dao được lên kế hoạch từ trước khi bắt đầu thực hiện thuật toán nội suy theo thời gian thực. Các biểu đồ tốc độ tiến dao được xem xét trong bài báo [16] bao gồm: biểu đồ hình thang, biểu đồ hình chuông và biểu đồ hàm mũ. Trong phần xử lý thời gian thực, tham số u được cập nhật sau mỗi chu kỳ theo công thức xây dựng từ phép xấp xỉ Taylor. Từ giá trị tham số
Hình 1.13: Cấu trúc bộ nội suy NURBS trong [16].
19
u, tọa độ điểm nội suy mới được tính và gửi tới hệ truyền động của các trục máy. Tốc độ tiến dao trong bài báo [16] không được xem là hằng số, mà đã được xử lý như một hàm của biến thời gian t. Do đó, công thức cập nhật tham số u cho kết quả chính xác hơn khi đang tăng tốc hoặc giảm tốc. Tuy nhiên, kết quả nghiên cứu của Cheng và Tsai vẫn có nhược điểm là các biểu đồ tốc độ tiến dao không xét tới sự biến đổi độ cong trên biên dạng đường NURBS, và không điều chỉnh được trong khi đang thực hiện thuật toán nội suy theo thời gian thực. Yong và Narayanaswami trong bài báo [53] đã xem xét vấn đề giới hạn gia tốc tiếp tuyến khi điều chỉnh giảm tốc độ tiến dao nhằm giữ sai số nội suy không vượt quá một giá trị cho phép. Phương pháp được đề xuất là sử dụng một bước tiền xử lý đường NURBS để xác định các vị trí cần bắt đầu giảm tốc và vị trí bắt đầu tăng tốc trở lại khi đi qua các đoạn có độ cong lớn. Bước tiền xử lý của Yong và Narayanaswami lại bao gồm hai bước con. Trong bước con thứ nhất, đường NURBS được “quét” từ vị trí đầu tới vị trí cuối cùng và tốc độ tiến dao cho phép tại mỗi vị trí được xác định từ điều kiện giới hạn sai số nội suy (như trình bày trong bài báo của Yeh và Hsu [52]). Sau đó, các vị trí liên tiếp có tốc độ tiến dao cho phép giảm dần rồi tăng dần được lưu lại trong một cấu trúc dữ liệu dạng ma trận. Mỗi ma trận như vậy tương ứng với một vùng có độ cong lớn trên đường NURBS mà tốc độ tiến dao cần phải điều chỉnh giảm nhỏ hơn giá trị yêu cầu trong chương trình gia công NC. Trong bước con thứ hai, mỗi ma trận tìm được từ bước con thứ nhất được xử lý để xác định điểm bắt đầu giảm tốc và điểm bắt đầu tăng tốc trở lại. Các kết quả mô phỏng cho thấy phương pháp của Yong và Narayanaswami có thể giới hạn được sai số nội suy và gia tốc tiếp tuyến. Tuy nhiên, nhược điểm của phương pháp này là thuật toán tương đối phức tạp và chưa đề cập tới vấn đề điều khiển tăng tốc/giảm tốc khi bắt đầu và kết thúc đường NURBS, cũng như vấn đề giới hạn gia tốc hướng tâm. Một số công trình nghiên cứu, chẳng hạn [20–22, 45, 47] đã đề xuất sử dụng kỹ thuật look-ahead để giải quyết đồng thời vấn đề giới hạn sai số nội suy và đảm bảo các giới hạn động học của máy. Trong đó, phương pháp được Du và các cộng sự trình bày trong [20, 21] là tường minh hơn cả. Ý tưởng của các phương pháp này là luôn duy trì một khoảng vượt trước so với vị trí điểm nội suy hiện tại trên đường NURBS, và trong khoảng vượt trước, tốc độ tiến dao cho phép được tính toán và lưu trong một vùng nhớ đệm (memory buffer). Chiều dài khoảng vượt trước được xác định từ điều kiện tốc độ tiến dao có thể thay đổi từ tốc độ yêu cầu Vmax về 0 mà không vi phạm điều kiện giới hạn về gia tốc tiếp tuyến. Sau mỗi chu kỳ nội suy, tọa độ điểm nội suy được cập nhật, đồng thời khoảng vượt trước cũng được cập nhật. Mỗi khi một vị trí mới được cập nhật vào trong khoảng vượt trước thì tốc độ tiến dao cho phép tại đó được phân tích. Nếu tốc độ tiến dao cho phép tại vị trí mới giảm quá nhanh so với tốc độ tại điểm cuối cùng được lưu trong vùng nhớ đệm thì một quá trình tính lùi (trace back) được thực hiện để tìm ra một điểm đứng trước, sao cho nếu bắt đầu giảm tốc từ điểm đó thì có thể đưa tốc độ tiến dao tới giá trị cho phép tại vị trí mới mà gia tốc tiếp tuyến không vượt quá giá trị giới hạn. Từ vị trí cần bắt đầu giảm tốc tới vị trí mới, tốc độ tiến dao cho phép được tính toán lại và cập nhật lại vào trong vùng nhớ đệm. Hình 1.14 minh họa phương pháp tính tốc độ tiến dao trong khoảng vượt trước được trình bày trong bài báo [20]. V2 Trên Hình 1.14, P[0] là tọa độ điểm nội suy hiện tại và Smin max là độ dài của khoảng 2 At ,max vượt trước. P[n] là điểm được cập nhật cuối cùng trong khoảng vượt trước. Khi tốc độ tiến 20
dao cho phép tại P[n] giảm quá nhanh so với tốc độ tại vị trí trước đó đã lưu trong bộ nhớ đệm thì cần lùi về một điểm P[m] và bắt đầu thực hiện giảm tốc từ đó. Ký hiệu S mn là khoảng cách giữa P[m] và P[n] thì điều kiện để xác định điểm P[m] là Smn Stb
2 Vmax VN2 . Trong đó, VN là tốc độ tiến dao cho phép tại điểm P[n] và được xác 2 At ,max
định theo điều kiện giới hạn sai số nội suy (như trong bài báo của Yeh và Hsu [52]). Stb là quãng đường cần thiết để tốc độ tiến dao có thể thay đổi từ giá trị yêu cầu Vmax tới VN .
Hình 1.14: Biểu đồ tốc độ tại vị trí xung đột trình bày trong [20].
Kết quả trình bày trong [20] là tương đối rõ ràng, và cho thấy nhiều tiềm năng trong việc ứng dụng thực tế. Tuy nhiên, việc duy trì một khoảng tính trước đòi hỏi hệ vi xử lý phải có khả năng tính toán mạnh. Ngoài ra, phương pháp trình bày trong [20] cũng chưa đề cập tới vấn đề điều khiển tăng tốc/giảm tốc khi bắt đầu và kết thúc đường NURBS, và vấn đề giới hạn gia tốc hướng tâm. Nhìn chung, các nghiên cứu về phương pháp nội suy đường NURBS theo thời gian thực đã tập trung giải quyết các vấn đề khó khăn nằm trong hai khía cạnh chính, đó là tính tham số u và điều khiển tốc độ tiến dao. Vấn đề tính tọa độ điểm nội suy từ giá trị tham số u thì hầu hết các nghiên cứu đều dựa trên thuật toán DeBoor, do ưu điểm về tính ổn định và hiệu năng tốt của thuật toán. Để dễ đưa ra định hướng nghiên cứu cho luận án, NCS đề xuất chia các phương pháp đã được công bố thành hai nhóm: nhóm phương pháp cơ bản và nhóm phương pháp tiên tiến. Trong đó, tiêu chí để xem một phương pháp thuộc nhóm tiên tiến là phải xét tới các yêu cầu điều khiển tốc độ tiến dao, giới hạn sai số nội suy và đảm bảo các điều kiện động học của máy (chẳng hạn, gia tốc tiếp tuyến và gia tốc hướng tâm bị giới hạn, …). Theo tiêu chí này thì các phương pháp trình bày trong [20–22, 45, 47, 53] được xếp vào nhóm các phương pháp tiên tiến. Nhóm các phương pháp tiên tiến có mức độ phức tạp cao hơn so với nhóm các phương pháp cơ bản, tuy nhiên các vấn đề được đặt ra và giải quyết toàn diện hơn, do đó đã gần với thực tiễn hơn. Hai xu hướng chính của việc điều khiển tốc độ tiến dao ở nhóm các phương pháp tiên tiến là sử dụng một bước tiền xử lý để phân tích trước biên dạng tự do NURBS và sử dụng kỹ thuật look-ahead. Các xu hướng này vẫn cần phải được nghiên cứu kỹ lưỡng hơn. Trên Hình 1.15 là tổng hợp các kết quả nghiên cứu 21
quan trọng nhất đã được công bố về phương pháp nội suy đường NURBS theo thời gian thực.
Hình 1.15: Tổng hợp các kết quả nghiên cứu về phương pháp nội suy biên dạng tự do NURBS theo thời gian thực.
Về phía các hãng công nghệ, họ cũng đã có những nghiên cứu về phương pháp nội suy các đường tham số nói chung, và nội suy đường NURBS nói riêng, từ khá lâu. Chẳng hạn, hãng Fanuc đã đăng ký một bằng sáng chế về giải pháp nội suy các biên dạng tự do từ năm 1998 [35]. Trong bằng sáng chế này, họ đã đưa ra mã lệnh G06.2 để mô tả chức năng nội suy NURBS. Ngoài hãng Fanuc, chức năng nội suy các đường tham số hoặc đường NURBS cũng đã xuất hiện trên một số sản phẩm bộ điều khiển CNC thương mại cao cấp nhất của một số hãng hàng đầu, như Siemens, Mitsubishi, … Bảng 1.1 tóm tắt các sản phẩm bộ điều khiển CNC của các hãng có hỗ trợ các chức năng nội suy tiên tiến này. Tuy nhiên, chi tiết về cách thức thực hiện các thuật toán nội suy tham số trên các bộ điều khiển thương mại của Bảng 1.1: Chức năng nội suy đường NURBS trên các bộ điều khiển CNC thương mại [42].
các hãng thì không được công bố rõ ràng. Do đó, các nghiên cứu về phương pháp nội suy các biên dạng tự do NURBS vẫn đang thu hút sự quan tâm lớn của các nhà nghiên cứu trên 22
toàn thế giới, đặc biệt là các nhà nghiên cứu ở những nước đi sau trong công nghệ CNC và đang muốn vươn lên làm chủ công nghệ then chốt của nền sản xuất này. Kết luận chương 1 Từ các kết quả phân tích và đánh giá tổng quan đã trình bày trong chương này, NCS đi đến một số kết luận như sau: -
-
-
Phương pháp nội suy NURBS có nhiều ưu điểm hơn so với phương pháp nội suy tuyến tính xấp xỉ. Đồng thời, phương pháp nội suy NURBS là một phương pháp tiên tiến, thu hút sự quan tâm của giới nghiên cứu học thuật cũng như các hãng công nghệ. Nhìn chung có thể đánh giá rằng các phương pháp nội suy NURBS đã được công bố, mỗi phương pháp đều có những ưu điểm, nhưng vẫn còn những nhược điểm cần phải được cải tiến. Hơn nữa, các công bố đều rất cô đọng và không đề cập nhiều đến các chi tiết của việc thực hiện các thuật toán nội suy NURBS trên một hệ thống cụ thể. Các hệ thống thử nghiệm thuật toán nội suy NURBS trong các công bố thường là các hệ DSP được thiết kế chuyên biệt cho mục đích thử nghiệm thuật toán, mà chưa xem xét tới vấn đề tích hợp thuật toán trong một hệ điều khiển số với đầy đủ tính năng. Điều này khiến cho các kết quả nghiên cứu này vẫn còn có khó khăn khi đưa vào ứng dụng. Các vấn đề còn tồn tại chủ yếu thuộc nhóm các phương pháp tiên tiến, trong đó đòi hỏi việc thực hiện thuật toán nội suy phải được đặt song song với một giải pháp điều khiển tốc độ tiến dao thích hợp.
Nội dung luận án nhằm giải quyết các vấn đề cụ thể sau đây: 1. Nghiên cứu đề xuất phương pháp nội suy theo thời gian thực các biên dạng tự do NURBS với các yêu cầu: -
Giới hạn được sai số nội suy; Giới hạn được gia tốc tiếp tuyến và gia tốc hướng tâm, để phù hợp với khả năng của các hệ truyền động của các trục máy; Có giải pháp để tự động điều chỉnh tốc độ tiến dao theo thời gian thực trên toàn bộ chiều dài đường NURBS, từ điểm đầu tới điểm cuối. Có giải pháp thực hiện biểu đồ tốc độ tiến dao “mềm”, tức là có khoảng thời gian tăng tốc ở đầu đường NURBS, và khoảng thời gian giảm tốc ở cuối đường NURBS.
2. Phát triển và cài đặt thuật toán nội suy các biên dạng tự do NURBS trên một hệ thống thiết bị và phần mềm cụ thể. Hướng tiếp cận đối với vấn đề này là nghiên cứu và tìm giải pháp tích hợp thuật toán dựa trên các hệ thống điều khiển số có kiến trúc mở. 3. Làm sáng tỏ các vấn đề liên quan tới phương pháp nội suy NURBS thông qua các kết quả mô phỏng và kết quả thực nghiệm trên hệ thống thiết bị và phần mềm cụ thể.
23
CHƯƠNG 2. PHƯƠNG PHÁP BIỂU DIỄN ĐƯỜNG VÀ MẶT TRONG CÁC HỆ CAD/CAM SỬ DỤNG PHƯƠNG TRÌNH THAM SỐ NURBS Trên các phần mềm CAD/CAM, các đường và mặt phức tạp thường được biểu diễn bằng một số dạng phương trình tham số, như Bezier, B-spline, NURBS, … Trong đó, phương trình tham số NURBS (Non-Uniform Rational B-Spline) là tổng quát nhất, bao hàm các dạng phương trình tham số khác như những trường hợp đặc biệt. Hiện nay, NURBS được sử dụng ngày càng nhiều trong các hệ thống CAD/CAM, như một công cụ biểu diễn đường và mặt tiêu chuẩn. Ngoài ra, trong hệ thống STEP-NC, NURBS cũng được lựa chọn như giao diện tiêu chuẩn cho trao đổi dữ liệu giữa các hệ thống CAD/CAM và bộ điều khiển CNC. Chương này trình bày các kết quả nghiên cứu cơ bản về phương pháp biểu diễn đường và mặt trong các hệ CAD/CAM sử dụng phương trình tham số NURBS, làm tiền đề cho các nội dung trình bày trong các chương tiếp theo của luận án. 2.1. Đường NURBS Hàm cơ sở B-spline Định nghĩa. Hàm cơ sở B-spline bậc p với vector tham số nút U u0 , u1 ,..., um (
ui ui 1 , 0 i m 1 ) được xác định như sau [36]: 1 , u ui , ui 1 N i ,0 (u ) 0 , u ui , ui 1 ui p 1 u u ui N i 1, p 1 (u ) N i , p (u ) u u N i , p 1 (u ) u u i p i i p 1 i 1
(2.1)
Theo (2.1), hàm cơ sở B-spline được định nghĩa theo phương pháp truy hồi. Trong khi tính hàm cơ sở B-spline theo (2.1), nếu gặp phép chia 0/0 thì quy ước kết quả là 0. Các nút có thể lặp lại, khi đó ta có nút bội. Ngược lại ta có nút đơn. Trên các Hình 2.1, Hình 2.2, Hình 2.3 minh họa các hàm cơ sở B-spline không suy biến (không đồng nhất bằng 0) bậc 1, bậc 2 và bậc 3. Các hàm cơ sở B-spline có một số tính chất như sau [36]: -
Trên từng khoảng tham số nút có độ dài khác 0, hàm cơ sở B-spline Ni , p (u ) là một
-
đa thức bậc p của tham số u (tính chất đa thức từng đoạn). Tính chất không âm: Ni , p (u) 0, i, p, u .
-
Tính chất điều chỉnh cục bộ: Ni , p (u) 0 , u [ui , ui p 1 ] .
-
Trong mọi khoảng [ui , ui 1 ) chỉ có nhiều nhất (p+1) hàm cơ sở B-spline khác 0, là các hàm Ni p , p (u),..., Ni , p (u) . 24
Hình 2.1: Các hàm cơ sở B-spline bậc 1 với vector tham số nút U={0,0,1,2,3,4,4}.
Hình 2.2: Các hàm cơ sở B-spline bậc 2 với vector tham số nút U={0,0,0,1,2,3,4,4,4}.
Hình 2.3: Các hàm cơ sở B-spline bậc 3 với vector tham số nút U={0,0,0,0,1,2,3,4,4,4,4}.
25
i
-
Tính chất tổng bằng một:
N
j i p
-
j, p
(u ) 1 , u [ui , ui 1 ) .
Hàm Ni , p (u ) khả vi vô hạn lần tại các điểm nằm giữa các nút. Tại điểm nút, hàm Ni , p (u ) có đạo hàm liên tục tới cấp (p-s), với s là hệ số bội của nút.
Định nghĩa đường NURBS Đường NURBS được định nghĩa dựa trên bậc (degree), các điểm điều khiển (control points), các trọng số (weights) và tham số nút (knot values). Cụ thể, phương trình đường NURBS bậc p với tham số u trong không gian 3D được định nghĩa như sau [36]: n
C(u ) x(u ), y (u ), z (u )
N i 0 n
i, p
N i 0
(u )i Pi
i, p
, au b
(2.2)
(u )i
Trong đó, Pi ( xi , yi , zi ) (0 i n) là các điểm trong không gian 3D, được gọi là điểm điều khiển; i 0 là trọng số của điểm điều khiển Pi . Các điểm điều khiển tạo thành các đỉnh của đa giác điều khiển (control polygon). Ni , p (u ) là hàm cơ sở B-spline bậc p với vector tham số nút:
U {u0 , u1 ,, um } {a, , a , u p 1 , , un , b, , b} p 1
(2.3)
p 1
Số lượng tham số nút là (m+1), số lượng điểm điều khiển là (n+1). Từ (2.3) ta có nhận xét m n p 1 . Ngoài ra, vector tham số nút U có (p+1) phần tử đầu tiên và (p+1) phần tử cuối có giá trị lặp lại. Đặc điểm này của vector tham số nút làm cho đường NURBS đi qua điểm điều khiển đầu tiên P0 và điểm điều khiển cuối cùng Pn . Các phần tử của vector tham số nút có giá trị tăng dần và chia miền giá trị của tham số u thành các đoạn nút (knot span).
Hình 2.4: Minh họa việc hình thành đường NURBS.
26
Theo tính chất của các hàm cơ sở B-spline, trên mỗi đoạn nút có đúng (p+1) hàm cơ sở B-spline có giá trị khác 0, nên cũng chỉ có đúng (p+1) điểm điều khiển tham gia vào việc hình thành đường NURBS. Mỗi khi tham số u chuyển sang một đoạn nút mới, một điểm điều khiển mới bắt đầu có ảnh hưởng, đồng thời một điểm điều khiển khác kết thúc ảnh hưởng của nó tới đường NURBS. Hình 2.4 minh họa việc hình thành đường NURBS từ giá trị của tham số u, cũng như các tham số nút, điểm điều khiển và trọng số. Ký hiệu Ri , p (u )
Ni , p (u )i n
N i 0
i, p
, phương trình tham số của đường NURBS có thể viết
(u )i
lại dưới dạng: n
C(u ) Ri , p (u )Pi , a u b
(2.4)
i 0
Ri , p (u ) được gọi là hàm cơ sở, hay hàm trộn, của đường NURBS. Từ (2.4) ta có nhận
xét tọa độ một điểm nằm trên đường NURBS là tổ hợp tuyến tính của tọa độ các điểm điều khiển, trong đó hệ số của mỗi điểm điều khiển chính là giá trị của hàm cơ sở Ri , p (u ) . Hàm cơ sở Ri , p (u ) có đặc điểm là hàm phân thức trên từng đoạn nút. Các điểm điều khiển là công cụ để hiệu chỉnh hình dạng của đường NURBS. Khi thay đổi vị trí của một điểm điều khiển sẽ làm thay đổi một phần đường NURBS nằm trong phạm vi ảnh hưởng của điểm điều khiển đó (tính chất điều chỉnh cục bộ). Đây là tính chất có ý nghĩa rất quan trọng đối với các kỹ sư thiết kế, vì họ có thể giữ những phần đường NURBS đã được thiết kế tốt, trong khi tiếp tục điều chỉnh những phần còn chưa hoàn chỉnh.
Hình 2.5: Điều chỉnh hình dạng đường NURBS thông qua điểm điều khiển và trọng số.
Ngoài tọa độ điểm điều khiển, giá trị trọng số có tác dụng làm thay đổi mức độ ảnh hưởng của điểm điều khiển, nên cũng có thể sử dụng để điều chỉnh hình dạng đường NURBS. Cụ thể, khi tăng giá trị trọng số sẽ làm đường NURBS có xu hướng được “kéo” gần hơn về 27
phía điểm điều khiển. Ngược lại, việc giảm giá trị trọng số có tác dụng “đẩy” đường NURBS ra xa điểm điều khiển. Khả năng điều chỉnh hình dạng đường NURBS thông qua điểm điều khiển và trọng số được minh họa trên Hình 2.5. Trong Hình 2.5(a), khi điểm điều khiển P1 được điều chỉnh sang vị trí mới là P1 thì làm cho một phần đường NURBS thay đổi thành phần màu đỏ, trong khi các phần khác vẫn được giữ nguyên. Trong Hình 2.5(b), tọa độ của các điểm điều khiển không thay đổi, nhưng trọng số w6 của điểm điều khiển P6 được điều chỉnh và nhận các giá trị khác nhau lần lượt là 0, 0.3, 1, 3 và 100. Khi đó, một phần của đường NURBS bị ảnh hưởng và chuyển đổi dần từ phần nét mảnh sang phần nét đậm, với xu hướng được “kéo” về gần P6 . Một số trường hợp đặc biệt của đường NURBS Đường B-spline Xét trường hợp đặc biệt khi tất cả các trọng số của đường NURBS có giá trị bằng nhau. Khi đó ta có:
Ri , p (u )
Ni , p (u )i n
N i 0
i, p
(u )i
Ni , p (u )
(2.5)
n
N i 0
i, p
(u )
Từ tính chất tổng bằng một của các hàm cơ sở B-spline ta có
n
N i 0
i, p
(u ) 1 , suy ra
Ri , p (u) Ni , p (u) . Khi đó phương trình tham số của đường NURBS C(u ) trở thành: n
C(u ) Ni , p (u )Pi , a u b
(2.6)
i 0
Phương trình (2.6) là phương trình tham số của đường B-spline [36]. Như vậy, khi tất cả các trọng số có giá trị bằng nhau thì đường NURBS suy biến thành đường B-spline. Đường B-spline cũng là một dạng đường tham số được sử dụng trong nhiều phần mềm CAD/CAM. Do Ni , p (u ) là các hàm đa thức, thay vì là các hàm phân thức như Ri , p (u ) , nên công việc xử lý đường B-spline đơn giản và thuận lợi hơn nhiều so với đường NURBS. Tuy nhiên, đường B-spline có khả năng biểu diễn hạn chế hơn so với đường NURBS, chẳng hạn đường B-spline không biểu diễn được các đường conic như đường e-lip, đường tròn, … Đường Bezier Trường hợp vector tham số nút có dạng đơn giản U {a,, a , b,, b} thì các hàm cơ p 1
p 1
sở B-spline Ni , p (u ) suy biến thành đa thức Bernstein Bi ,n (t ) sau đây [36]:
Bi ,n (t )
n! t i (1 t )ni , 0 t 1 i !(n i)!
28
(2.7)
với t
ua . ba
Khi đó phương trình tham số của đường NURBS trở thành: n
C(t )
B i 0 n
i ,n
B i 0
(t )i Pi
i ,n
, 0 t 1
(2.8)
(t )i
Phương trình (2.8) là phương trình đường Bezier phân thức (rational Bezier) [36]. Đường Bezier phân thức có một đặc điểm quan trọng, đó là biểu diễn được các đường conic (như đường tròn, e-lip, parabol, hypebol). Trên Hình 2.6 minh họa một góc phần tư đường tròn được biểu diễn dưới dạng đường Bezier phân thức.
Hình 2.6: Biểu diễn góc phần tư đường tròn dưới dạng đường Bezier phân thức, với các điểm điều khiển P0 , P1 , P2 và các trọng số 0 1, 1 1, 2 2 .
Hình 2.7: Minh họa đường Bezier với bậc khác nhau.
Khi đường NURBS suy biến thành đường Bezier phân thức, nếu có thêm điều kiện tất cả các trọng số có giá trị bằng nhau thì phương trình tham số có dạng đơn giản hơn nữa như sau:
29
n
C(t ) Bi ,n (t )Pi , 0 t 1
(2.9)
i 0
Đây là phương trình đường Bezier [36]. Các đường Bezier được nghiên cứu bởi Pierre Bezier, một kỹ sư tại hãng sản xuất ô-tô Reunalt, vào đầu những năm 1960. Đường Bezier đi qua điểm điều khiển đầu, điểm điều khiển cuối và tiếp xúc với cạnh đầu và cạnh cuối của đa giác điều khiển. Đồng thời cũng có khả năng điều chỉnh hình dạng thông qua các điểm điều khiển. Hình 2.7 minh họa một số đường Bezier với bậc khác nhau. Một trong những ứng dụng thú vị của đường Bezier đó là trong việc thiết kế các font chữ trên máy tính, như minh họa trên Hình 2.8. So với đường B-spline và NURBS thì đường Bezier đơn giản hơn, nhưng có nhược điểm là thiếu khả năng điều chỉnh cục bộ. Vì lí do này, đường Bezier thường ít được sử dụng trong các hệ phần mềm CAD/CAM cơ khí hơn so với các đường B-spline và NURBS.
Hình 2.8: Ứng dụng đường Bezier trong việc thiết kế font chữ.
Đường NURBS và phép chiếu xuyên tâm Từ các điểm điều khiển Pi ( xi , yi , zi ) và trọng số tương ứng i của đường NURBS
C(u ) trong không gian 3D ta định nghĩa các điểm điều khiển mới trong không gian 4D như sau: Pi (i xi , i yi , i zi , i )
(2.10)
Tọa độ của Pi trong không gian 4D còn được gọi là tọa độ thuần nhất của Pi . Ta thấy rằng Pi ( xi , yi , zi ) là ảnh của Pi (i xi , i yi , i zi , i ) qua phép chiếu xuyên tâm. Tức là, tọa độ của Pi được xác định bằng cách lấy 3 thành phần tọa độ đầu tiên của Pi chia cho thành phần tọa độ thứ tư. Tiếp theo, từ các điểm điều khiển mới Pi ta định nghĩa đường Bspline C (u ) trong không gian 4D sau đây: n
C (u ) Ni , p (u )Pi , a u b
(2.11)
i 0
30
Bậc và vector tham số nút của đường B-spline C (u ) được giữ như bậc và vector tham số nút của đường NURBS C(u ) . Khi đó, giữa đường NURBS C(u ) và đường B-spline
C (u ) có một mối liên hệ thú vị: C(u ) là ảnh của C (u ) trong phép chiếu xuyên tâm. Tức là, với bất cứ một điểm nào trên đường C (u ) , khi lấy 3 thành phần tọa độ đầu chia cho thành phần tọa độ thứ tư thì sẽ nhận được tọa độ của điểm tương ứng trên đường C(u ) . Thật vậy, ký hiệu phép chiếu xuyên tâm là H, ta có: n
n
H {C (u )}=H { N i , p (u )Pi }=
i 0
N i 0 n
i, p
N i 0
(u )i Pi
i, p
C(u )
(2.12)
(u )i
Tính chất này có vai trò quan trọng khi xây dựng các thuật toán xử lý đường NURBS. Dựa trên tính chất này, thay vì xử lý trực tiếp các đường NURBS trong không gian 3D (gặp khó khăn do các hàm cơ sở là phân thức), ta chuyển đường NURBS thành đường B-spline trong không gian 4D (có các hàm cơ sở là đa thức), sau đó chuyển kết quả tìm được trong không gian 4D về lại không gian 3D qua phép chiếu xuyên tâm. Ý tưởng này được minh họa trên Hình 2.9.
Hình 2.9: Quan hệ giữa đường NURBS và phép chiếu xuyên tâm.
2.2. Thuật toán chèn nút và thuật toán DeBoor Một trong các yêu cầu cơ bản khi làm việc với đường NURBS là phải tính được tọa độ điểm nằm trên đường NURBS khi biết giá trị của tham số u. Mặc dù yêu cầu này có thể thực hiện bằng cách thay giá trị của tham số u vào phương trình (2.2), nhưng cách tính này không hiệu quả và đòi hỏi nhiều thời gian tính toán của CPU. Thuật toán DeBoor là thuật toán hiệu quả để tính tọa độ điểm nằm trên đường NURBS [32, 36], và là hệ quả của thuật toán chèn nút (knot insertion). Về cơ bản, các thuật toán chèn nút và thuật toán DeBoor là các thuật toán áp dụng cho đường B-spline. Do đó, để áp dụng các thuật toán này cho đường NURBS, ta phải sử dụng kỹ thuật chuyển một đường NURBS trong không gian 3D thành đường Bspline trong không gian 4D. Để phân biệt các đối tượng trong không gian 4D với các đối tượng trong không gian 3D ta sử dụng ký tự làm chỉ số trên cho các đối tượng trong không gian 4D (ví dụ, Pi (i xi , i yi , i zi , i ) là điểm trong không gian 4D tương ứng với điểm
Pi ( xi , yi , zi ) và trọng số i trong không gian 3D). Như vậy, trong cách biểu diễn điểm
31
Pi (i xi , i yi , i zi , i ) đã bao gồm cả thông tin về tọa độ của điểm Pi ( xi , yi , zi ) và trọng
số i . Thuật toán chèn nút n
Ký hiệu C (u ) Ni , p (u )Pi là đường B-spline trong không gian 4D, tương ứng với i 0
đường NURBS C(u ) trong không gian 3D. Giả sử u [uk , uk 1 ) là giá trị tham số mà ta muốn chèn thêm vào vector U để tạo thành vector tham số nút mới là U {a,..., a ,..., uk uk , uk 1 u , uk 2 uk 1 ,..., b,..., b} . Gọi {Ni , p (u )} là các hàm cơ sở Bp 1
p 1
spline bậc p được xác định từ vector tham số nút U . Thuật toán chèn nút nhằm xác định chuỗi điểm điều khiển mới {Qi } sao cho đường B-spline C (u ) có thể biểu diễn theo chuỗi điểm điều khiển mới và các hàm cơ sở B-spline mới như sau: n 1
C (u ) Ni , p (u )Qi
(2.13)
i 0
Theo [36], Qi là điểm nằm trên đoạn thẳng nối hai điểm điều khiển Pi và Pi1 và chia đoạn thẳng này theo một hệ số tỉ lệ. Công thức xác định chuỗi điểm điều khiển {Qi } như sau [36]: Qi i Pi (1 i )Pi1
(2.14)
Hệ số i trong công thức (2.14) được tính theo công thức: 1 u ui i ui p ui 0
ikp k p 1 i k
(2.15)
i k 1
Khi hệ số i có giá trị bằng 1 hoặc bằng 0 thì điểm điều khiển Qi trùng với một trong hai điểm điều khiển cũ là Pi hoặc Pi1 . Từ (2.15) suy ra chỉ có p điểm điều khiển mới là không trùng với bất cứ điểm điều khiển cũ nào. Do đó, thuật toán chèn nút chỉ cần tính p điểm điều khiển mới này. Các điểm điều khiển cũ có tham gia vào việc tính p điểm điều khiển mới là các điểm Pk p , …, Pk . Ví dụ 2.1 Xét đường B-spline C (u ) bậc 3, với vector tham số nút U={0,0,0,0,1,2,3,4,5,5,5,5}. Ký hiệu các điểm điều khiển là P0 , …, P7 . Áp dụng thuật toán chèn nút với u 5 . Ta 2 thấy u [u5 , u6 ) nên k=5. Do đó, Q0 P0 , …, Q2 P2 và Q6 P5 , …, Q8 P7 . Các điểm điều khiển mới được tính theo công thức (2.14) như sau: 32
3
5/ 20 5 5 1 Q3 3P3 (1 3 )P2 P3 P2 30 6 6 6
4
5 / 2 1 1 1 1 Q4 4 P4 (1 4 )P3 P4 P3 4 1 2 2 2
5
5/ 22 1 1 5 Q5 5 P5 (1 5 )P4 P5 P4 52 6 6 6
Thuật toán DeBoor Thuật toán DeBoor dựa trên nhận xét: khi một nút có hệ số bội tăng lên thì số hàm cơ sở B-spline có giá trị khác 0 tại nút sẽ giảm đi. Cụ thể, tại một nút có hệ số bội bằng s thì số hàm cơ sở B-spline có giá trị khác 0 nhiều nhất là (p-s+1). Nếu nút ui có hệ số bội đúng bằng p (bậc của hàm cơ sở B-spline) thì tại đó sẽ chỉ có đúng một hàm cơ sở B-spline có giá trị khác 0, đó là hàm Ni , p (u ) . Kết hợp với tính chất tổng bằng một của các hàm cơ sở Bspline ta suy ra Ni , p (ui ) 1 . Khi đó ta có:
C (ui ) Ni , p (ui )Pi Pi
(2.16)
Tức là nếu nút ui có bội p thì tọa độ của điểm C (ui ) trùng với tọa độ của điểm điều khiển Pi . Từ nhận xét này, để xác định tọa độ của điểm C (u ) với u là một giá trị của tham số u, ta có thể vận dụng thuật toán chèn nút đối với u cho tới khi u trở thành một nút bội p. Khi đó, điểm điều khiển cuối cùng xuất hiện trong quá trình thực hiện liên tiếp thuật toán chèn nút sẽ trùng với C (u ) . Đây là ý tưởng chính của thuật toán DeBoor. Giả sử u [uk , uk 1 ) là một điểm nút bội s (s=0 nếu u không trùng với điểm nút nào). Để biến u thành điểm nút bội p ta cần thực hiện liên tiếp thuật toán chèn nút (p-s) lần. Sau mỗi lần thực hiện thuật toán chèn nút ta có thêm các điểm điều khiển mới. Ký hiệu các điểm điều khiển sau lần thứ r là Qi ,r (với Qi ,0 Pi ). Phát triển từ công thức (2.14) ta có công thức sau [36]:
Qi ,r i ,r Qi ,r 1 (1 i ,r )Qi 1,r 1
(2.17)
Hệ số i ,r trong công thức (2.17) được tính theo công thức sau:
i ,r
1 u ui ui p r 1 ui 0
i k p r 1 k pr ik s
(2.18)
i k s 1
Cuối cùng ta có:
C (u ) Qk s , p s
(2.19)
33
Trên Hình 2.10 biểu diễn các điểm điều khiển được sinh ra trong quá trình thực hiện thuật toán DeBoor để tính tọa độ điểm C (u ) . Từ tọa độ 4D của C (u ) ta thực hiện phép chiếu xuyên tâm để xác định tọa độ 3D của điểm C(u ) trên đường NURBS.
Hình 2.10: Các điểm điều khiển được tính trong thuật toán DeBoor.
Ví dụ 2.2 Xét đường B-spline C (u ) bậc 3 (p=3), với vector tham số nút gồm 11 giá trị (m=10) như sau:
u0 u1 u2 u3
u4
u5
u6
u7 u8 u9 u10
0
0.25
0.5
0.75
1
Số lượng điểm điều khiển là (n+1)=m-p=7. Ký hiệu các điểm điều khiển là P0 , …, P6 . Với u 0.4 , ví dụ 2.2 minh họa việc sử dụng thuật toán DeBoor để tính tọa độ của
điểm C (0.4) . Vì giá trị 0.4 không trùng với bất cứ một giá trị nút nào nên thuật toán DeBoor được thực hiện chèn nút 3 lần. Vì u 0.4 [u4 , u5 ) nên các điểm điều khiển bị ảnh hưởng trong khi thực hiện thuật toán DeBoor là P4 , P3 , P2 , P1 . Thực hiện chèn nút lần thứ nhất, ta tính được các hệ số như sau:
4,1 (u u4 ) / (u43 u4 ) 0.2 3,1 (u u3 ) / (u33 u3 ) 0.53
2,1 (u u2 ) / (u23 u2 ) 0.8 Do đó, các điểm điều khiển xuất hiện trong bước chèn nút thứ nhất được tính như sau:
Q4,1 4,1P4 (1 4,1 )P3 0.2P4 0.8P3
34
Q3,1 3,1P3 (1 3,1 )P2 0.53P3 0.47P2 Q2,1 2,1P2 (1 2,1 )P1 0.8P2 0.2P1 Tiếp tục thực hiện chèn nút lần thứ hai, ta tính được các hệ số:
4,2 (u u4 ) / (u431 u4 ) 0.3
3,2 (u u3 ) / (u331 u3 ) 0.8 Các điểm điều khiển xuất hiện trong bước chèn nút thứ hai:
Q4,2 4,2Q4,1 (1 4,2 )Q3,1 0.3Q4,1 0.7Q3,1 Q3,2 3,2Q3,1 (1 3,2 )Q2,1 0.8Q3,1 0.2Q2,1 Cuối cùng, ta thực hiện chèn nút lần thứ ba, tính được hệ số:
4,3 (u u4 ) / (u432 u4 ) 0.6 Điểm điều khiển trong bước chèn nút thứ ba là:
Q4,3 4,3Q4,2 (1 4,3 )Q3,2 0.6Q4,2 0.4Q3,2 Ta có C (0.4) Q4,3 .
Hình 2.11: Minh họa thuật toán DeBoor.
Quá trình tính toán trong ví dụ 2.2 được minh họa trên Hình 2.11. Từ hình ảnh trên Hình 2.11(b), thuật toán DeBoor còn được gọi là thuật toán “cắt góc” (corner-cut algorithm). 2.3. Đạo hàm cấp một và cấp hai của đường NURBS Theo [36], đường NURBS bậc p có đạo hàm theo tham số u liên tục tới cấp p tại các vị trí không trùng với điểm nút, và có đạo hàm theo tham số liên tục tới cấp (p-s) tại các điểm nút có bội s. Trong mục này trình bày cách tính đạo hàm cấp một và đạo hàm cấp hai của 35
đường NURBS, vì đây là các đạo hàm có liên quan tới các tính chất hình học của đường NURBS, như tiếp tuyến, độ cong, chiều dài, …, cũng như sẽ được sử dụng khi phát triển thuật toán nội suy NURBS theo thời gian thực trên hệ thống điều khiển số CNC. dC(u ) dx(u ) dy(u ) dz (u ) là đạo hàm cấp một theo tham số u của , , du du du du đường NURBS C(u ) . Tương tự, ký hiệu đạo hàm cấp hai theo tham số của đường NURBS
Ký hiệu C(u )
C(u ) là C(u )
d 2C(u ) d 2 x(u ) d 2 y (u ) d 2 z (u ) , , . 2 du 2 du 2 du 2 du n
Xét C (u ) Ni , p (u )Pi là đường B-spline trong không gian 4D tương ứng với đường i 0
n
n
NURBS C(u ) . Ký hiệu A(u ) Ni , p (u )i Pi và B(u ) Ni , p (u )i . Khi đó, A(u ) là i 0
i 0
một vector hàm, tập hợp 3 thành phần đầu tiên của C (u ) , và B(u ) là hàm đa thức của tham số u, đồng thời là thành phần thứ tư của C (u ) . Ta có các quan hệ sau:
C (u) [ A(u); B(u)]
(2.20)
dC (u ) [ A(u ); B(u )] du
(2.21)
d 2C (u ) [ A(u ); B(u )] du 2
(2.22)
Từ công thức (2.2) ta còn có: C(u )
A(u ) B(u )
(2.23)
A(u ) B(u ) A(u ) B(u ) A(u ) C(u ) B(u ) B 2 (u ) B(u )
(2.24)
Suy ra: C(u )
A(u ) C(u ) B(u ) A(u ) 2C(u) B(u) C(u) B(u) C(u ) B(u ) B(u )
(2.25)
Như vậy, các đạo hàm bậc nhất và bậc hai của đường NURBS C(u ) có thể tính từ C(u ) và các đạo hàm bậc nhất và bậc hai của A(u ) và B(u ) . Để tính đạo hàm bậc nhất và bậc hai của A(u ) và B(u ) , ta tính các đạo hàm bậc nhất và bậc hai của đường B-spline C (u ) . Từ định nghĩa của C (u ) suy ra:
dC (u ) n Ni, p (u )Pi du i 0
(2.26)
36
d 2C (u ) n Ni, p (u )Pi 2 du i 0
(2.27)
Theo tài liệu [36], đạo hàm của đường B-spline bậc p là một đường B-spline bậc (p-1). Cụ thể, theo [36] ta có:
dC (u ) n 1 Ni , p 1 (u )Si du i 0
(2.28)
Trong đó, Ni , p 1 (u ) là các hàm cơ sở B-spline bậc (p-1) được tính trên vector tham số nút mới là U {a,, a , u p 1 ,, un , b,, b} , còn các điểm điều khiển Si được tính theo p
p
công thức: Si p
Pi1 Pi ui p 1 ui 1
(2.29)
Một cách tương tự, đạo hàm cấp hai của đường C (u ) cũng là một đường B-spline với bậc là (p-2) và có phương trình tham số như sau [36]:
d 2C (u ) n2 Ni , p 2 (u )Ti 2 du i 0
(2.30)
Trong (2.30), Ni , p 2 (u ) là các hàm cơ sở B-spline bậc (p-2) được tính trên vector tham số nút U {a,, a , u p 1 ,, un , b,, b} , còn các điểm điều khiển Ti được tính như sau: p 1
Ti ( p 1)
p 1
Si 1 Si ui p 1 ui 2
(2.31)
Sau khi tính được các điểm điều khiển Si và Ti thì có thể tính đạo hàm cấp một và cấp hai của đường C (u ) bằng cách áp dụng thuật toán DeBoor như trình bày trong mục 2.2. Từ đó ta có A(u), A(u), B(u), B(u) , thay vào (2.24) và (2.25) ta tính được C(u ) và C(u ) . 2.4. Một số tính chất hình học vi phân của đường NURBS Giả sử có một chất điểm chuyển động bám theo biên dạng đường NURBS C(u) x(u), y(u), z(u) , với vector vận tốc là V(u ) . Theo hình học vi phân ta có [19, 54]: dz (u ) dx(u ) dy(u ) dz (u ) dx(u ) dy(u ) V(u ) , , i j k dt dt dt dt dt dt
dx du dy du dz du i j k du dt du dt du dt
(2.32)
37
Trong đó, i (1,0,0), j (0,1,0), k (0,0,1) là các vector đơn vị của các trục tọa độ X, Y, Z. Ký hiệu V (u ) là độ lớn của vector V(u ) . Từ công thức (2.32) suy ra: 2
2
2
dx dy dz du V (u ) V(u ) du du du dt
(2.33)
Trong đó, . chỉ phép tính biên độ của một vector. Từ công thức (2.33) suy ra: du V (u ) V (u ) 2 2 2 dt C(u ) dx dy dz du du du
(2.34)
Các thành phần của vector vận tốc V(u ) có thể biểu diễn như sau:
Vx (u )
dx(u ) dx du dx V (u ) t x (u )V (u ) dt du dt du C(u )
(2.35)
Vy (u )
dy (u ) dy du dy V (u ) t y (u )V (u ) dt du dt du C(u )
(2.36)
Vz (u )
dz (u ) dz du dz V (u ) t z (u )V (u ) dt du dt du C(u )
(2.37)
Trong đó, t x , t y , t z được tính như sau:
t x (u )
1 dx C(u ) du
(2.38)
t y (u )
1 dy C(u ) du
(2.39)
t z (u )
1 dz C(u ) du
(2.40)
Theo hình học vi phân, t x (u), t y (u), t z (u) chính là các cosin chỉ hướng của vector tiếp tuyến của C(u ) , và vector T(u) t x (u), t y (u), t z (u) là vector tiếp tuyến đơn vị của C(u ) . Các công thức (2.35), (2.36) và (2.37) chính là các công thức thể hiện mối liên hệ giữa tốc độ của các trục thành phần và tốc độ tiến dao trong chuyển động nội suy. Ký hiệu A(u ) là vector gia tốc của chất điểm chuyển động trên đường NURBS C(u ) . Các thành phần của vector A(u ) có thể tính bằng cách lấy đạo hàm theo thời gian của các thành phần tương ứng của vector V(u ) . Ta có:
Ax (u )
dVx (u ) d dt ds dV dt x 2 (t xV ) V x tx V tx A dt dt ds dt dt ds 38
(2.41)
Trong (2.41), ds là chiều dài vi phân của đường NURBS. Theo hình học vi phân ta có
dt x x chính là thành phần theo phương X của vector độ cong của đường C(u ) . Do đó có ds thể viết [19]: Ax (u) xV 2 t x A
(2.42)
Trong công thức (2.42), xV 2 có ý nghĩa là thành phần theo phương X của gia tốc hướng tâm (xuất hiện khi hướng chuyển động thay đổi), còn t x A là thành phần theo phương X của gia tốc tiếp tuyến. Một cách tương tự ta có:
Ay (u) yV 2 t y A
(2.43)
Az (u) zV 2 t z A
(2.44)
Công thức tính vector độ cong như sau [19]: K (u ) K x i K y j K z k
C(u ) C(u ) C(u ) 4 C(u )
(2.45)
Trong đó, chỉ phép nhân có hướng của hai vector. Từ (2.45) suy ra công thức tính biên độ của vector độ cong (gọi đơn giản là độ cong, curvature):
K (u ) K (u )
C(u ) C(u ) C(u )
(2.46)
3
Nghịch đảo của K (u ) là bán kính cong của đường C(u ) . Do đó, công thức tính bán kính cong, ký hiệu là (u ) , như sau: C(u ) (u ) C(u ) C(u ) 3
(2.47)
2.5. Phương pháp tham số biểu diễn bề mặt trong hệ CAD/CAM Các đối tượng bề mặt trong các hệ CAD/CAM cũng thường được biểu diễn theo phương pháp tham số. Các phương pháp biểu diễn bề mặt trong hệ CAD/CAM là sự phát triển và mở rộng từ các phương pháp biểu diễn đường đã trình bày ở các mục trước. Nếu dạng biểu diễn tham số của đường là vector hàm của một tham số độc lập, thì dạng biểu diễn tham số của mặt là vector hàm của hai tham số độc lập. Dạng biểu diễn tham số tổng quát của mặt như sau:
S(u, v) [ x(u, v), y(u, v), z(u, v)]
(2.48)
Có một số phương pháp khác nhau để biểu diễn mặt, trong đó phương pháp tích tensor là một trong những phương pháp được sử dụng rộng rãi nhất, do sự đơn giản về mặt toán học và sự hiệu quả của các thuật toán liên quan. Trong phương pháp tích tensor, phương trình tham số biểu diễn mặt có dạng như sau:
39
n
m
S(u, v) [ x(u, v), y(u, v), z (u, v)] f i (u ) g j (v) Pi , j
(2.49)
i 0 j 0
Trong đó, Pi , j ( xi , j , yi , j , zi , j ), 0 u, v 1 . Phương trình (2.49) có thể viết dưới dạng ma trận như sau:
S(u, v) [ fi (u)]T [Pi , j ][ g j (v)]
(2.50)
Trong đó, [ fi (u )]T là vector hàng 1 (n 1) , g j (v) là vector cột (m 1) 1 , Pi , j là ma trận (n 1) (m 1) các điểm điều khiển.
Hình 2.12: Các đường tham số tiêu chuẩn (isoparametric curves) trên bề mặt.
Nếu giữ cố định một tham số và cho tham số còn lại thay đổi thì ta được các đường cong tham số tiêu chuẩn (isoparametric curves) nằm trên mặt. Cụ thể, Cv0 (u ) là đường-u và Cu0 (v) là đường-v nằm trên mặt S(u, v) (Hình 2.12).
Mặt Bezier Mặt Bezier là mặt tích tensor trong đó fi (u ) và g j (v) là các đa thức Bernstein của các tham số u, v. Phương trình tham số của mặt Bezier như sau: n
m
S(u, v) Bi ,n (u ) B j ,m (v)Pi , j ,
0 u, v 1
i 0 j 0
Mặt B-spline 40
(2.51)
Một cách tương tự, mặt B-spline là mặt tích tensor với fi (u ) và g j (v) là các hàm cơ sở B-spline. Phương trình tham số của mặt B-spline như sau: n
m
S(u, v) Ni , p (u ) N j ,q (v)Pi , j
(2.52)
i 0 j 0
Trong đó, các hàm cơ sở B-spline Ni , p (u ) , N j ,q (v) có bậc lần lượt là p và q, và có các vector nút như sau: U (0,..., 0, u p 1 ,..., ur p 1 ,1,...,1) p 1
(2.53)
p 1
V (0,..., 0, v p 1 ,..., vs p 1 ,1,...,1) q 1
(2.54)
q 1
Có thể mở rộng thuật toán DeBoor để xác định tọa độ điểm trên mặt B-spline [36]. Mặt NURBS Khác với mặt Bezier và mặt B-spline, mặt NURBS không có dạng tích tensor, do sự có mặt của các trọng số. Mặt NURBS bậc p theo tham số u và bậc q theo tham số v là vector hàm phân thức từng đoạn của hai biến u, v và được định nghĩa như sau: n
S(u, v)
m
N i 0 j 0 n m
i, p
N i 0 j 0
(u ) N j ,q (v)i , j Pi , j , 0 u, v 1
i, p
(2.55)
(u ) N j ,q (v)i , j
Mặt NURBS cũng có mối quan hệ với phép chiếu xuyên tâm tương tự như đường NURBS. Cụ thể, mặt NURBS biểu diễn bởi phương trình tham số (2.55) chính là hình chiếu của mặt B-spline trong không gian 4D sau đây: n
m
S (u, v) Ni , p (u ) N j ,q (v)Pi, j
(2.56)
i 0 j 0
Trong đó, Pi, j (i , j xi , j , i , j yi , j , i , j zi , j , i , j ) . Kết luận chương 2 Nội dung chương 2 đã trình bày định nghĩa và một số tính chất cũng như thuật toán quan trọng nhất của đường NURBS. Từ các nội dung trình bày trong chương này, ta thấy đường NURBS tổng quát hơn các dạng đường B-spline, Bezier, conic, … và có khả năng biểu diễn những hình dạng rất phức tạp. Mặc dù rất tổng quát, nhưng việc đưa vào các trọng số đã làm cho các tính toán đối với đường NURBS trở nên tương đối phức tạp so với đường B-spline. Phương pháp tính toán cơ bản đối với đường NURBS là kết hợp tọa độ và trọng số của điểm điều khiển trong không gian 3D thành tọa độ thuần nhất của điểm trong không gian 4D. Khi đó, trong không gian 4D, mỗi tọa độ thuần nhất không còn trọng số nữa và ta xây dựng được một đường B-spline 4D sao cho hình chiếu của mỗi điểm trên đường Bspline 4D là một điểm trên đường NURBS 3D. 41
Các thuật toán quan trọng nhất đối với đường B-pline và đường NURBS là thuật toán chèn nút và thuật toán DeBoor. Thuật toán DeBoor có ưu điểm là ổn định và có hiệu năng tính toán tốt, nên được ứng dụng rộng rãi trong việc tính tọa độ điểm, cũng như tính đạo hàm cấp một và đạo hàm cấp hai của đường NURBS. Để phục vụ cho việc thực hiện thuật toán nội suy NURBS theo thời gian thực trên các hệ thống điều khiển số ta cũng chỉ cần phải tính tới đạo hàm cấp một và cấp hai của đường NURBS.
42
CHƯƠNG 3. XÂY DỰNG PHƯƠNG PHÁP NỘI SUY THEO THỜI GIAN THỰC CÁC BIÊN DẠNG TỰ DO NURBS 3.1. Giới thiệu Thuật toán nội suy là thành phần rất quan trọng trong một hệ thống điều khiển số cho máy công cụ, có nhiệm vụ tính vị trí của dụng cụ trong mỗi chu kỳ tính toán, tức là tính tọa độ các điểm nội suy. Từ tọa độ điểm nội suy sẽ xác định được giá trị đặt cho các vòng điều khiển vị trí của các trục thành phần, và tạo ra chuyển động tạo hình trên máy công cụ. Dữ liệu đầu vào cho thuật toán nội suy trước hết là các thông số hình học của đường dụng cụ (tool-path). Chẳng hạn, khi đường dụng cụ là đường thẳng thì thông số hình học gồm có tọa độ điểm đầu và tọa độ điểm cuối. Khi đường dụng cụ là cung tròn thì thông số hình học gồm có tọa độ điểm đầu, tọa độ điểm cuối và tọa độ tâm hoặc bán kính. Trong trường hợp đường dụng cụ là một đường NURBS thì thông số hình học bao gồm nhiều dữ liệu hơn, đó là tọa độ các điểm điều khiển, các trọng số, tham số nút và bậc. Ngoài thông số hình học của đường dụng cụ, dữ liệu đầu vào cho thuật toán nội suy còn có thể là các thông tin khác, như tốc độ tiến dao (feedrate), giá trị sai số nội suy cho phép và các giá trị giới hạn của gia tốc tiếp tuyến, gia tốc hướng tâm, … Thuật toán nội suy được thực hiện theo chu kỳ, gọi là chu kỳ nội suy. Một trong những yêu cầu cơ bản trong hệ điều khiển số đó là các tính toán của thuật toán nội suy phải hoàn thành trước khi kết thúc chu kỳ. Do đó việc thực hiện thuật toán nội suy đòi hỏi nghiêm ngặt về tính thời gian thực. Điều này dẫn tới việc hạn chế đưa các tính toán phức tạp vào trong thuật toán nội suy. Tuy nhiên, hiện nay các hệ vi xử lý và máy tính có tốc độ tính toán và xử lý ngày càng mạnh, nên đã mở rộng khả năng cài đặt các thuật toán nội suy tiên tiến trên các hệ điều khiển số. Nội dung của chương này trình bày phương pháp nội suy theo thời gian thực các biên dạng tự do NURBS. Trong phương pháp đề xuất, tốc độ tiến dao được điều chỉnh tùy theo biên dạng đường NURBS nhằm giải quyết đồng thời các vấn đề: giới hạn sai số nội suy và giới hạn gia tốc tiếp tuyến, gia tốc hướng tâm. 3.2. Nguyên lý cơ bản nội suy biên dạng tự do NURBS theo thời gian thực Xét đường dụng cụ được mô tả bằng đường NURBS C(u ) . Để thực hiện chuyển động nội suy trên máy công cụ CNC bám theo C(u ) , ta cần thiết lập được mối liên hệ giữa tham số u và biến thời gian t. Cầu nối cho mối liên hệ này chính là khái niệm tốc độ tiến dao (feedrate). Dưới góc nhìn của người vận hành máy công cụ CNC thì tốc độ tiến dao là một tham số công nghệ quan trọng, thường là một hằng số được xác định trong chương trình gia công NC (với mã lệnh F) và có thể thay đổi thông qua một hệ số điều chỉnh (chức năng feedrate override). Tuy nhiên, về mặt điều khiển, tốc độ tiến dao thay đổi theo thời gian và thay đổi theo vị trí của dụng cụ trên đường NURBS, do tác dụng của thuật toán điều khiển tăng tốc/giảm tốc, hoặc các thuật toán điều chỉnh tốc độ khác bên trong bộ điều khiển số CNC. Ký hiệu V (u ) là hàm tốc độ tiến dao. Xem V (u ) là tốc độ chuyển động của một điểm công tác trên đường NURBS, ta có quan hệ sau đây (xem mục 2.4): 43
du V (u ) dt C(u )
(3.1)
Công thức (3.1) cho phép tính đạo hàm du / dt , và có ý nghĩa như một chiếc cầu nối giữa bản chất tĩnh của phương trình tham số NURBS với bản chất động của chuyển động nội suy. Từ (3.1) có thể tiếp tục rút ra công thức tính đạo hàm cấp hai d 2u / dt 2 như sau: 2 At (u ) V (u ) C(u ), C(u ) d 2u 4 dt 2 C(u ) C(u )
Trong (3.2), At (u )
(3.2)
dV (u ) là gia tốc tiếp tuyến, và ký hiệu chỉ tích vô hướng, dt
chỉ biên độ của vector. Một đặc điểm cơ bản của thuật toán nội suy là được thực hiện theo chu kỳ. Giả sử chu kỳ nội suy là T (s). Ký hiệu uk u (kT ) , Vk V (uk ) , At , k At (uk ) là giá trị của các đại lượng được tính tại chu kỳ thứ k. Áp dụng công thức khai triển Taylor cho hàm u (t ) tại thời điểm t kT ta có: uk 1 uk T
du T 2 d 2u dt 2 dt 2
(3.3)
Trong (3.3), là tổng các thành phần bậc cao hơn 2. Bỏ qua ta có công thức xấp xỉ Taylor bậc hai để tính giá trị tham số u như sau: uk 1 uk T
du T 2 d 2u dt 2 dt 2
At , k T 2 Vk2T 2 C(uk ), C(uk ) Vk T uk 4 C(uk ) 2 C(uk ) 2 C(uk )
(3.4)
Nếu bỏ qua các thành phần bậc cao từ bậc 2 trở lên, ta có công thức xấp xỉ Taylor bậc nhất đơn giản hơn như sau:
uk 1 uk
Vk T C(uk )
(3.5)
Các công thức (3.4), (3.5) có dạng truy hồi và có thể sử dụng để cập nhật giá trị của tham số u sau mỗi chu kỳ nội suy. Thay giá trị của u vào phương trình tham số của đường NURBS ta tính được tọa độ điểm nội suy cho chu kỳ mới. Đây là nguyên lý cơ bản để nội suy các biên dạng tự do NURBS theo thời gian thực. Cụ thể, trong một chu kỳ, tọa độ điểm nội suy được tính qua các bước như sau: (1) tính đạo hàm cấp một và cấp hai của đường NURBS; (2) tính giá trị tham số u theo Công thức (3.4) hoặc (3.5); và (3) tính tọa độ điểm nội suy mới (theo thuật toán DeBoor). Các bước tính toán này được minh họa trên Hình 3.1. Quá trình tính toán nội suy được thực hiện lặp lại cho tới khi đi qua hết khoảng giá trị của tham số u là đã đi hết chiều dài đường NURBS. Trong một chu kỳ nội suy, giá trị tham số thay đổi từ uk thành uk 1 , tương ứng với chuyển động của dụng cụ được thực hiện theo đoạn thẳng từ điểm C(uk ) tới điểm C(uk 1 ) (Hình 3.2). 44
So với (3.5) thì công thức (3.4) có mức độ phức tạp tính toán nhiều hơn đáng kể, nhưng cho kết quả tính tham số u chính xác hơn, đặc biệt trong những trường hợp chu kỳ T không đủ nhỏ, hoặc tại những vị trí trên đường C(u ) có độ cong lớn [39]. Cần lưu ý rằng việc lựa chọn chu kỳ T phụ thuộc vào khả năng tính toán của bộ xử lý số, sao cho các bước tính toán trên luôn được hoàn thành trước khi kết thúc chu kỳ nội suy.
Hình 3.1: Nguyên lý cơ bản nội suy biên dạng tự do NURBS theo thời gian thực.
Hình 3.2: Chuyển động của dụng cụ trong một chu kỳ nội suy biên dạng tự do NURBS.
Khi nội suy biên dạng NURBS theo nguyên lý minh họa trên Hình 3.1, trong bước tính tham số u, ngoài giá trị các đạo hàm có thể tính từ phương trình tham số của đường NURBS, còn cần tới các giá trị tốc độ Vk và gia tốc At , k . Trong các bài báo [26, 39], Vk được giữ là hằng số và bằng với tốc độ tiến dao yêu cầu trong chương trình gia công NC, khi đó gia tốc At , k 0 . Tuy nhiên, cách xác định giá trị tốc độ tiến dao và gia tốc như vậy có nhược điểm là không can thiệp được tới sai số nội suy. Như minh họa trên Hình 3.2, khi dụng cụ di chuyển trên dây cung từ C(uk ) tới C(uk 1 ) sẽ có sai số giữa đường dụng cụ thực tế và đường NURBS mong muốn. Sai số này sẽ giảm đi nếu giá trị tham số được thay bằng uk 1 nhỏ hơn so với uk 1 . Khi đó dụng cụ sẽ di chuyển trên một dây cung mới, từ C(uk ) tới C(uk 1 ) , thay 45
vì từ C(uk ) tới C(uk 1 ) . Dây cung mới có chiều dài thay đổi so với dây cung từ C(uk ) tới
C(uk 1 ) . Như vậy, để điều chỉnh được sai số nội suy thì cần phải điều chỉnh được chiều dài dây cung mà dụng cụ di chuyển trong một chu kỳ nội suy, tức là phải điều chỉnh tốc độ tiến dao Vk , thay vì giữ Vk là hằng số. Mối quan hệ giữa tốc độ tiến dao Vk và sai số nội suy sẽ được phân tích trong mục 3.3 của luận án. 3.3. Đánh giá sai số nội suy Trong một chu kỳ nội suy, dụng cụ di chuyển trên dây cung nối C(uk ) với C(uk 1 ) và gây ra sai số nội suy dưới dạng sai số hướng kính và sai số dây cung. Sai số hướng kính là sai số do điểm nội suy không nằm trên đường NURBS. Tuy nhiên, do các điểm nội suy được tính từ phương trình tham số của đường NURBS, nên sai số hướng kính chỉ phụ thuộc vào độ chính xác tính toán của máy tính, và thường được bỏ qua [20, 49]. Sai số dây cung là khoảng cách lớn nhất giữa dây cung nối C(uk ) với C(uk 1 ) , và phần đường NURBS tương ứng. Đây là sai số chính trong phương pháp nội suy các biên dạng tự do NURBS theo thời gian thực. Trong mục này sẽ trình bày một phương pháp để ước lượng sai số dây cung, qua đó có thể nhận xét về mối liên hệ giữa tốc độ tiến dao và loại sai số này. Trong một chu kỳ nội suy, giá trị của uk và uk 1 rất gần nhau, nên bán kính cong thay đổi rất nhỏ khi tham số u thay đổi từ uk tới uk 1 . Do đó, phần đường NURBS từ C(uk ) tới
C(uk 1 ) có thể coi là xấp xỉ như một cung tròn. Cụ thể, ta xét cung tròn tiếp xúc và có cùng bán kính cong với đường NURBS tại điểm C(uk ) , như minh họa trên Hình 3.3. Đặt
Lk C(uk 1 ) C(uk ) và k là bán kính cong của đường NURBS tại C(uk ) . Gọi P(uk ) và P(uk 1 ) là các điểm nằm trên cung tròn sao cho P(uk ) C(uk ) và P(uk 1 ) P(uk ) Lk . Do giá trị của uk và uk 1 rất gần nhau, nên sai số dây cung, ek , khi nội suy đường NURBS từ C(uk ) tới C(uk 1 ) có thể tính xấp xỉ bằng sai số dây cung khi nội suy cung tròn từ P(uk ) tới P(uk 1 ) .
Hình 3.3: Ước lượng sai số dây cung trong phương pháp nội suy NURBS.
Dựa trên các quan hệ hình học ta suy ra:
46
L ek k k2 k 2
2
(3.6)
Ngoài ra, Lk là chiều dài dây cung và chính là quãng đường dụng cụ di chuyển trong một chu kỳ T, tức là:
Lk VkT
(3.7)
Từ (3.6) và (3.7) suy ra:
VkT V T ek k k 2 2 Vk T 2 4 k k 2 2
2
2 k
(3.8)
Biểu thức (3.8) cho phép ước lượng được sai số dây cung. Từ (3.8) ta thấy sai số dây cung tỉ lệ với bình phương của tốc độ tiến dao, Vk , đồng thời, sai số dây cung có giá trị lớn hơn tại những vị trí có bán kính cong k nhỏ (tức là có độ cong lớn). Giả sử emax là giới hạn cho phép của sai số dây cung do thuật toán nội suy gây ra. Ta có điều kiện giới hạn sai số như sau:
ek emax Vk
2 k2 ( k emax )2 T
(3.9)
Điều kiện (3.9) cho thấy, để sai số dây cung không vượt quá emax thì tốc độ tiến dao cần phải nhỏ hơn một giá trị xác định phụ thuộc bán kính cong k . Nếu bán kính cong k càng nhỏ thì giá trị này càng nhỏ, dẫn tới phạm vi giá trị cho phép của tốc độ tiến dao càng nhỏ hơn. Để hình dung cụ thể hơn mối liên hệ giữa tốc độ tiến dao và bán kính cong, ta xét trường hợp khi emax 0.001 (mm) 1(μm) . Khi đó, đường giới hạn của tốc độ tiến dao phụ thuộc theo độ cong được vẽ bằng phần mềm Matlab dựa trên điều kiện (3.9) như Hình 3.4.
Hình 3.4: Đường giới hạn tốc độ tiến dao phụ thuộc vào độ cong.
47
Ta có nhận xét rằng, khi độ cong có giá trị là 10 (1/mm), tương ứng với bán kính cong k 0.1 (mm) , tốc độ tiến dao có thể nâng lên tới 25 (mm/s), hay 1500 (mm/min) mà vẫn giữ được sai số dây cung nhỏ hơn emax . Nếu độ cong nhỏ hơn, tương ứng với bán kính cong có giá trị là k 1 (mm) thì tốc độ tiến dao có thể nâng lên tới giá trị khoảng 90 (mm/s), hay 5400 (mm/min). Ta thấy rằng khoảng tốc độ tiến dao 0-5400 (mm/min) có thể đáp ứng được yêu cầu của rất nhiều ứng dụng gia công CNC thông thường. Như vậy, khi không đòi hỏi tốc độ tiến dao lớn, hoặc biên dạng đường NURBS không có những vị trí với bán kính cong rất bé, thì quá trình nội suy biên dạng tự do NURBS theo nguyên lý cơ bản trình bày trong mục 3.2 có thể đảm bảo sai số nhỏ hơn emax 1(μm) mà không cần có giải pháp giới hạn sai số nào. Tuy nhiên, một cách tổng quát thì thuật toán nội suy NURBS cần phải có giải pháp để giới hạn sai số nội suy. Từ biểu thức (3.9) ta thấy rằng có thể giới hạn sai số nội suy bằng cách theo dõi bán kính cong tại các vị trí trên đường NURBS và điều chỉnh giảm tốc độ tiến dao khi bán kính cong có giá trị nhỏ. Các tính toán cụ thể để điều chỉnh tốc độ tiến dao tại các vị trí có bán kính cong nhỏ sẽ được làm rõ trong các phần tiếp theo của luận án. 3.4. Yêu cầu điều khiển tốc độ tiến dao khi nội suy biên dạng tự do NURBS theo thời gian thực Tốc độ tiến dao có ảnh hưởng quan trọng tới sai số dây cung xuất hiện trong quá trình nội suy đường NURBS, cũng như có ảnh hưởng tới thời gian và chất lượng gia công. Từ mục 3.3 ta thấy tốc độ tiến dao cần phải điều chỉnh giảm tại những vị trí có bán kính cong nhỏ, nhằm giới hạn sai số nội suy. Nhưng đồng thời ta mong muốn tốc độ tiến dao bám chính xác theo tốc độ yêu cầu từ chương trình NC, nhằm thực hiện yêu cầu của công nghệ gia công, cũng như giảm thời gian và tăng năng suất gia công. Ngoài ra, tốc độ tiến dao cần được giữ ổn định và hạn chế những thay đổi đột ngột, nhằm nâng cao chất lượng bề mặt chi tiết gia công [20, 21].
Hình 3.5: Cấu trúc thuật toán nội suy biên dạng tự do NURBS với khả năng điều khiển tốc độ tiến dao theo thời gian thực.
48
Như vậy, có thể nhận xét rằng, vấn đề điều khiển tốc độ tiến dao có ý nghĩa quan trọng đối với chất lượng của thuật toán nội suy biên dạng NURBS. Chính vì lý do này, cấu trúc của thuật toán cần được điều chỉnh và bổ sung thêm một khâu tính tốc độ. Khâu tính tốc độ sẽ tính Vk , At , k trong từng chu kỳ nội suy, thay vì giữ Vk , At , k là hằng số. Cấu trúc của thuật toán nội suy được điều chỉnh lại như Hình 3.5. Các phần tiếp theo của chương 3 sẽ làm rõ các điều kiện giới hạn tốc độ tiến dao, đồng thời đề xuất phương pháp thực hiện khâu tính tốc độ trên Hình 3.5. Khi đó ta sẽ hoàn thiện được thuật toán nội suy biên dạng tự do NURBS theo thời gian thực. 3.5. Các điều kiện giới hạn tốc độ tiến dao trong chuyển động nội suy Tốc độ tiến dao của chuyển động nội suy được lập trình trong chương trình gia công NC với mã lệnh F. Chẳng hạn, xét dòng lệnh theo mã G-code như sau: G1 X10 Y10 F100 Dòng lệnh trên xác định một chuyển động nội suy tuyến tính với mã G1. Trong dòng lệnh trên, mã lệnh F cùng với giá trị 100 theo sau xác định tốc độ tiến dao được yêu cầu trong chuyển động nội suy tuyến tính là 100 mm/min (trong hệ mét). Ngoài ra, trong khi vận hành máy công cụ CNC, người vận hành có thể thay đổi tốc độ yêu cầu này thông qua điều chỉnh một hệ số tỉ lệ (chức năng feedrate override). Ký hiệu Vmax là tốc độ tiến dao yêu cầu (đã nhân với hệ số tỉ lệ do người vận hành điều chỉnh). Do một số điều kiện ràng buộc, tốc độ tiến dao khi thực hiện chuyển động nội suy theo biên dạng đường NURBS không phải luôn luôn bằng với Vmax mà có thể bị giới hạn tại một số vị trí. Tức là, nếu ký hiệu Vk là tốc độ tiến dao do khâu tính tốc độ đưa ra trong một chu kỳ nội suy thì Vk Vmax . Các điều kiện ràng buộc dẫn tới tốc độ tiến dao bị giới hạn sẽ được phân tích trong mục này. Điều kiện giới hạn sai số nội suy Từ mục 3.3 ta thấy rằng sai số nội suy phụ thuộc vào tốc độ tiến dao Vk và bán kính cong k của đường NURBS. Trong đó, bán kính cong là tính chất hình học của đường NURBS và không thay đổi được bởi thuật toán nội suy, còn tốc độ tiến dao thì có thể điều chỉnh bởi khâu tính tốc độ theo cấu trúc bộ nội suy mô tả trên Hình 3.5. Từ điều kiện (3.9) ta xác định được tốc độ tiến dao lớn nhất để sai số nội suy không vượt quá emax như sau: Vkchord V chord (uk )
2 k2 ( k emax )2 T
(3.10)
Trong công thức (3.10), V chord (u ) là hàm biểu diễn giá trị cho phép lớn nhất của tốc độ tiến dao tại vị trí C(u ) , nhằm giới hạn sai số nội suy, còn Vkchord V chord (uk ) . Như vậy, tốc độ tiến dao tại vị trí C(uk ) phải thỏa mãn điều kiện Vk Vkchord , trong đó Vkchord phụ thuộc bán kính cong k và sai số emax . Khi bán kính cong k có giá trị càng nhỏ thì Vkchord cũng có giá trị nhỏ theo. Tại những vị trí trên đường NURBS mà bán kính cong k nhỏ hơn một
49
giá trị nhất định thì Vkchord Vmax , khi đó tốc độ tiến dao Vk bị chặn trên bởi Vkchord và không đạt được tốc độ yêu cầu là Vmax . Điều kiện đảm bảo giới hạn gia tốc hướng tâm Gia tốc hướng tâm tại vị trí C(uk ) trên quỹ đạo đường NURBS phụ thuộc tốc độ tiến dao Vk và bán kính cong k theo công thức như sau:
An , k
Vk2
(3.11)
k
Giá trị của gia tốc hướng tâm không thể lớn tùy ý mà bị giới hạn bởi khả năng (về công suất và mô-men) của các hệ truyền động cho các trục máy. Gọi An , max là giá trị lớn nhất của gia tốc hướng tâm mà hệ truyền động cho các trục máy có thể đáp ứng được. Ta có điều kiện sau: An, k An, max Vk Vkacc V acc (uk ) An, max k
(3.12)
Như vậy, Vkacc là một giá trị giới hạn khác đối với tốc độ tiến dao. Vkacc cũng phụ thuộc vào bán kính cong k , và có giá trị càng nhỏ khi k càng nhỏ. Khi k nhỏ hơn một giá trị nhất định thì Vkacc Vmax , khi đó tốc độ tiến dao Vk bị giới hạn bởi Vkacc và cũng không thể đạt được tốc độ yêu cầu là Vmax . Điều kiện đảm bảo giới hạn gia tốc tiếp tuyến Ngoài gia tốc hướng tâm, gia tốc tiếp tuyến trong chuyển động nội suy theo biên dạng tự do NURBS cũng bị giới hạn bởi khả năng của hệ truyền động của các trục máy. Gọi At , max là giá trị lớn nhất của gia tốc tiếp tuyến mà hệ truyền động của các trục máy có thể đáp ứng được. Giới hạn At , max đặt ra các điều kiện ràng buộc đối với sự thay đổi tốc độ tiến dao. Thứ nhất, sự thay đổi của tốc độ tiến dao trong một chu kỳ nội suy, cụ thể là thay đổi từ Vk 1 sang
Vk , phải thỏa mãn điều kiện: Vk Vk 1 At , max T
(3.13)
Điều kiện (3.13) không cho phép tốc độ tiến dao biến đổi quá nhanh so với giá trị trong chu kỳ trước đó. Ngoài ra, giới hạn At , max còn đặt ra điều kiện ràng buộc đối với sự thay đổi tốc độ tiến dao trên một đoạn của biên dạng tự do NURBS. Xét một phần đường NURBS từ vị trí C(us ) tới C(ue ) . Tốc độ tiến dao tại vị trí C(us ) là V (us ) , và tại vị trí C(ue ) là V (ue ) . Ta có nhận xét như sau: để tốc độ tiến dao thay đổi từ V (us ) tới V (ue ) thì phương án tăng tốc đều (nếu V (us ) V (ue ) ) hoặc giảm tốc đều (nếu V (us ) V (ue ) ) với độ lớn gia tốc bằng 50
At , max chính là phương án chuyển động có chiều dài quãng đường ngắn nhất. Chiều dài quãng
đường ngắn nhất được tính như sau: Lmin
V 2 (us ) V 2 (ue )
(3.14)
2 At ,max
Ký hiệu L(u ) là chiều dài đường NURBS từ vị trí bắt đầu tới vị trí C(u ) . Ta có chiều dài phần đường NURBS từ C(us ) tới C(ue ) là L(ue ) L(us ) . Trên đoạn chiều dài đó, tốc độ tiến dao thay đổi từ V (us ) tới V (ue ) , nên để đảm bảo độ lớn của gia tốc tiếp tuyến không vượt quá At , max thì phải có điều kiện:
L(ue ) L(us ) Lmin L(ue ) L(us )
V 2 (us ) V 2 (ue )
(3.15)
2 At ,max
Điều kiện (3.15) yêu cầu chiều dài quãng đường từ C(us ) tới C(ue ) phải đủ lớn cho tốc độ thay đổi từ V (us ) tới V (ue ) . Trong trường hợp V (ue ) đã xác định thì từ điều kiện (3.15) ta rút ra được điều kiện ràng buộc đối với V (us ) như sau:
V (us ) V la (us , ue ) V 2 (ue ) 2 At ,max [ L(ue ) L(us )]
(3.16)
Điều kiện tổng hợp giới hạn tốc độ tiến dao Từ các điều kiện trình bày ở trên, ta suy ra tốc độ tiến dao Vk bị giới hạn như sau:
Vk Vr ,k Vr (uk ) min(Vmax , Vkchord , Vkacc )
(3.17)
Tốc độ tiến dao Vk phải không vượt quá Vr ,k . Ngoài ra, sự thay đổi của tốc độ tiến dao qua các chu kỳ nội suy phải thỏa mãn điều kiện giới hạn gia tốc tiếp tuyến. Nếu có ít nhất một trong hai điều kiện Vkchord Vmax hoặc Vkacc Vmax thì Vr ,k Vmax và tốc độ tiến dao Vk không đạt được tốc độ yêu cầu là Vmax . Xét trường hợp thứ nhất, Vkchord Vmax , ta có: Vkchord Vmax
k
2 k2 ( k emax )2 Vmax T
2 Vmax T 2 4e2max 8emax
(3.18)
Tương tự, xét trường hợp thứ hai, Vkacc Vmax , thì: Vkacc Vmax An, max k Vmax
51
k
2 Vmax An ,max
(3.19)
Từ (3.18) và (3.19) ta suy ra giá trị giới hạn của bán kính cong trên biên dạng tự do NURBS như sau: 2 2 Vmax T 2 4emax V2 ; max 8emax An ,max
cr max
(3.20)
Nghịch đảo của bán kính cong là độ cong của biên dạng tự do NURBS. Từ (3.20) suy ra giá trị giới hạn của độ cong như sau:
A 8e K cr min 2 2 max 2 ; n,2max VmaxT 4emax Vmax
(3.21)
Tại những vị trí trên đường NURBS mà bán kính cong nhỏ hơn cr , hay độ cong lớn hơn K cr , thì tốc độ tiến dao sẽ bị hạn chế và không thể nhận giá trị Vmax . Vì vậy các vùng có bán kính cong nhỏ hơn cr được gọi là vùng giới hạn tốc độ tiến dao. Để minh họa cho khái niệm vùng giới hạn tốc độ tiến dao, ta xét biên dạng NURBS trên Hình 3.6(a). Tại các vùng lân cận xung quanh các vị trí được khoanh tròn, bán kính cong có giá trị nhỏ, nên tốc độ tiến dao bị giới hạn theo điều kiện (3.17). Biểu đồ tốc độ tiến dao cho phép khi đi qua các vùng này có dạng tương tự như Hình 3.6(b) và gồm có hai phần: phần giá trị giới hạn tốc độ tiến dao giảm dần, theo sau bởi phần giá trị giới hạn tốc độ tiến dao tăng dần. Vị trí chuyển tiếp giữa hai phần là vị trí mà tốc độ tiến dao bị giới hạn sâu nhất, tương ứng với bán kính cong nhỏ nhất trong vùng giới hạn. Trước và sau khi đi vào vùng giới hạn, bán kính cong lớn hơn cr , nên tốc độ tiến dao có thể nhận giá trị Vmax . Từ công thức (3.20), ta có nhận xét: nếu
Vmax càng lớn thì giá trị cr càng lớn hơn, dẫn tới các vùng giới hạn tốc độ tiến dao càng mở rộng hơn. Tức là, khi tốc độ tiến dao yêu cầu Vmax càng lớn thì hệ thống điều khiển số và hệ truyền động của các trục máy càng khó đáp ứng hơn.
Hình 3.6: (a) Minh họa biên dạng tự do NURBS có các vùng giới hạn tốc độ tiến dao; (b) Dạng biểu đồ tốc độ tiến dao cho phép khi đi qua một vùng giới hạn.
52
Khó khăn khi điều khiển tốc độ tiến dao qua vùng giới hạn Tốc độ tiến dao được mong muốn có giá trị lớn nhất có thể, nhằm mục đích giảm thời gian và tăng năng suất gia công. Khi đi vào vùng giới hạn, tốc độ tiến dao lớn nhất chỉ có thể là Vr ,k Vmax . Liệu có thể thực hiện khâu tính tốc độ một cách đơn giản, đó là gán Vk Vr ,k tại mỗi vị trí nằm trong vùng giới hạn? Câu trả lời là không đơn giản như vậy, vì
tốc độ tiến dao không chỉ bị giới hạn bởi Vr ,k , mà còn phải thỏa mãn điều kiện giới hạn gia tốc tiếp tuyến. Tại vị trí C(uk ) trên đường NURBS, ta xét giá trị sau đây:
A
Vr ,k Vk 1
(3.22)
T
Có thể xảy ra các trường hợp: -
Trường hợp 1: At , max A At , max . Khi đó, Vr ,k thỏa mãn điều kiện gia tốc tiếp tuyến, nên tốc độ tiến dao và gia tốc tiếp tuyến có thể tính như sau: Vk Vr ,k và At ,k A .
-
Trường hợp 2: A At , max . Khi đó Vr ,k biến đổi quá nhiều so với tốc độ tiến dao trong chu kỳ trước, Vk 1 , nên không thể chọn là tốc độ tiến dao của chu kỳ hiện tại. Để thỏa mãn điều kiện gia tốc tiếp tuyến, tốc độ tiến dao cần được điều chỉnh như sau: Vk Vk 1 At ,max T . Theo cách tính này ta có Vk Vr ,k và At ,k At , max , nên thỏa mãn
-
các điều kiện giới hạn. Trường hợp 3: A At , max . Trong trường hợp cuối cùng này, việc đảm bảo tất cả các điều kiện giới hạn sẽ gặp khó khăn. Thật vậy, nếu tốc độ tiến dao Vk thỏa mãn điều
V V Vk Vk 1 At ,max r ,k k 1 , suy ra T T Vk Vr ,k . Nhưng như vậy lại mâu thuẫn với điều kiện Vk Vr ,k (điều kiện (3.17).
kiện giới hạn gia tốc tiếp tuyến thì phải có
Trường hợp 3 có thể xảy ra trong vùng giới hạn, khi bán kính cong trên đường NURBS giảm nhanh, dẫn tới giá trị Vr ,k giảm quá nhanh so với Vk 1 , khiến điều kiện giới hạn gia tốc tiếp tuyến bị vi phạm. Như vậy, việc điều khiển tốc độ tiến dao qua vùng giới hạn không thể thực hiện một cách đơn giản là tính giá trị Vr ,k theo công thức (3.17) và gán ngay cho Vk trong một chu kỳ nội suy. 3.6. Phương pháp điều khiển tốc độ tiến dao Như đã trình bày trong mục 3.4, vấn đề điều khiển tốc độ tiến dao có ý nghĩa rất quan trọng đối với việc giảm thời gian và nâng cao chất lượng gia công khi thực hiện chuyển động nội suy theo biên dạng tự do NURBS. Tốc độ tiến dao tại vị trí C(uk ) bị chặn trên bởi Vr ,k . Ta có nhận xét như sau: thông tin về tốc độ giới hạn Vr ,k cần phải có từ trước khi dụng cụ được đưa tới vị trí C(uk ) một khoảng cách nhất định, đủ để thuật toán nội suy có thể lập kế hoạch cho việc điều chỉnh tốc độ tiến dao (feedrate scheduling) thỏa mãn các điều kiện ràng 53
buộc. Nếu khi dụng cụ tới vị trí C(uk ) mới có thông tin về giá trị Vr ,k thì sẽ có trường hợp không kịp giảm tốc từ Vk 1 tới Vr ,k trong một chu kỳ nội suy với gia tốc tiếp tuyến không vượt quá At ,max (trường hợp 3 trong mục 3.5.5). Để có thông tin về tốc độ giới hạn Vr ,k , luận án sử dụng một bước tiền xử lý để phân tích trước biên dạng tự do NURBS, nhằm tập hợp các thông tin quan trọng phục vụ cho bước thực hiện thuật toán nội suy theo thời gian thực. Bước tiền xử lý được thực hiện sau khi bộ dịch mã tập hợp đầy đủ các thông số hình học của đường NURBS (điểm điều khiển, trọng số, tham số nút và bậc) và tốc độ tiến dao Vmax . Vị trí của bộ tiền xử lý nằm giữa bộ dịch mã G-code và bộ nội suy đường NURBS (Hình 3.7). Dựa trên các thông tin có được từ bước tiền xử lý, thuật toán nội suy có thể điều khiển tốc độ tiến dao theo thời gian thực sao cho thỏa mãn các điều kiện ràng buộc.
Hình 3.7: Vị trí của bộ tiền xử lý đường NURBS.
Những vị trí “quan trọng” trên biên dạng tự do NURBS Trong bước tiền xử lý, biên dạng tự do NURBS được phân tích bằng cách “quét” (scanning) từ vị trí đầu tới vị trí cuối để phát hiện và lưu lại thông tin về các vị trí “quan trọng”. Các vị trí cần quan tâm ở đây là các vị trí mà tại đó xảy ra trường hợp 3 như trình bày trong mục 3.5.5. Xét hai vị trí C(uk 1 ) và C(uk ) nằm trên đoạn giảm tốc của vùng giới hạn. Tốc độ tiến dao tại các vị trí này lần lượt bị hạn chế bởi Vr ,k 1 và Vr ,k . Nếu (Vr ,k Vr ,k 1 ) / T At ,max thì việc giảm tốc từ Vr ,k 1 tới Vr ,k trong một chu kỳ nội suy là quá
nhanh, vượt quá giới hạn gia tốc tiếp tuyến. Trong khi không thể tăng giá trị Vk lớn hơn Vr ,k , ta có thể giảm Vk 1 nhỏ hơn Vr ,k 1 để làm cho (Vk Vk 1 ) / T At ,max . Như vậy, có thể nhận xét rằng, vị trí C(uk ) đặt ra điều kiện ràng buộc ngược đối với vị trí C(uk 1 ) : Để tốc độ tiến dao tại C(uk ) có thể nhận giá trị Vr ,k thì tốc độ tiến dao tại C(uk 1 ) phải điều chỉnh nhỏ hơn Vr ,k 1 . Khi đó ta gọi C(uk ) là một điểm “quan trọng” (critical point).
Định nghĩa: Một điểm trên biên dạng đường NURBS được gọi là “quan trọng” nếu nó đặt ra điều kiện ràng buộc ngược và khiến cho ít nhất một vị trí đứng trước không thể nhận giá trị tốc độ tiến dao giới hạn bởi điều kiện (3.17). Thông thường, một điểm “quan trọng” trên đường NURBS không chỉ đặt ra điều kiện ràng buộc ngược cho một vị trí đứng trước, mà cho tất cả các vị trí nằm trong một miền ảnh hưởng nhất định. Giả sử C(uk ) là một điểm “quan trọng” và tốc độ giới hạn tại đó là Vr ,k .
54
Theo điều kiện (3.16) thì tốc độ tiến dao tại một vị trí C(u ) với u uk phải thỏa mãn điều kiện:
V (u) V la (u, uk ) Vr2,k 2 At ,max [ L(uk ) L(u)]
(3.23)
Kết hợp với điều kiện (3.17) suy ra: V (u) min(Vr (u), V la (u, uk ))
(3.24)
Tại những vị trí mà V la (u, uk ) Vr (u) thì điều kiện (3.17) có ảnh hưởng mạnh hơn điều kiện (3.23), nên là điều kiện quyết định tốc độ tiến dao tại các vị trí này. Nhưng giá trị V la (u, uk ) giảm dần khi tới gần C(uk ) , nên càng gần C(uk ) thì điều kiện (3.23) càng trở nên quan trọng hơn. Tới một khoảng cách nhất định thì V la (u, uk ) Vr (u) , và điều kiện (3.23) bắt đầu có ảnh hưởng mạnh hơn điều kiện (3.17). Trong khoảng cách đó, tốc độ tiến dao phải điều chỉnh giảm nhỏ hơn Vr ,k . Do đó, V la (u, uk ) Vr (u) chính là điều kiện để xác định miền ảnh hưởng của điểm C(uk ) . Trên Hình 3.8, đường nét liền biểu diễn biểu đồ tốc độ tiến dao bị giới hạn bởi điều kiện (3.17). Giả sử miền ảnh hưởng của C(uk ) bắt đầu từ vị trí
C(um ) . Trong miền ảnh hưởng của C(uk ) , tốc độ tiến dao tại mỗi vị trí phải giảm nhỏ hơn giá trị giới hạn theo điều kiện (3.17), nên biểu đồ tốc độ tiến dao được điều chỉnh thành đường nét đứt, nằm hoàn toàn dưới đường nét liền trong phạm vi từ C(um ) tới C(uk ) . Việc điều chỉnh biểu đồ tốc độ tiến dao thành đường nét đứt là nhằm giới hạn gia tốc tiếp tuyến không vượt quá At ,max . Ta có nhận xét rằng, trên đường nét đứt, tốc độ tiến dao giảm liên tục từ C(um ) tới C(uk ) , trong khi trên đường nét liền chỉ bắt đầu giảm từ điểm C(un ) . Như vậy, đường nét đứt điều chỉnh giảm tốc độ tiến dao trên một quãng đường dài hơn. Đó là lý do giúp gia tốc tiếp tuyến không vượt quá At ,max .
Hình 3.8: Miền ảnh hưởng của điểm “quan trọng”.
55
So sánh miền ảnh hưởng của hai điểm “quan trọng” Xét hai điểm “quan trọng” trên biên dạng tự do NURBS là C(uk1 ) và C(uk 2 ) , với
uk1 uk 2 . Tốc độ giới hạn tại các vị trí này ký hiệu lần lượt là Vr ,k1 và Vr ,k 2 . Giả sử miền ảnh hưởng của C(uk1 ) và C(uk 2 ) lần lượt bắt đầu từ vị trí C(um1 ) và C(um 2 ) . Xét một điểm
C(u ) đứng trước C(uk1 ) , tức là u uk1 uk 2 . Tốc độ tiến dao tại C(u ) bị giới hạn bởi các giá trị V la (u, uk1 ) và V la (u, uk 2 ) , do ảnh hưởng của điểm C(uk1 ) và C(uk 2 ) . So sánh V la (u, uk1 ) và V la (u, uk 2 ) có thể xảy ra hai trường hợp sau đây:
Hình 3.9: So sánh miền ảnh hưởng của hai điểm “quan trọng”.
Trường hợp 1: V la (u, uk1 ) V la (u, uk 2 ) . Trong trường hợp này, mặc dù C(u ) đứng gần
C(uk1 ) hơn, nhưng tốc độ tiến dao tại C(u ) chịu điều kiện ràng buộc ngược của điểm C(uk 2 ) chặt hơn so với điểm C(uk1 ) . Tức là ảnh hưởng của C(uk 2 ) đã lấn át ảnh hưởng của C(uk1 ) . Do đó thuật toán tiền xử lý khi “quét” tới vị trí C(uk 2 ) thì có thể sử dụng điều kiện ràng buộc bởi C(uk 2 ) để bỏ qua điều kiện ràng buộc của C(uk1 ) . Điều kiện xảy ra trường hợp 1 như sau: 56
V la (u, uk1 ) V la (u, uk 2 ) Vr2,k1 2 At ,max [ L(uk1 ) L(u )] Vr2,k 2 2 At ,max [ L(uk 2 ) L(u )]
L(uk 2 ) L(uk1 )
Vr2,k1 Vr2,k 2
(3.25)
2 At ,max
Trong (3.25), L(uk 2 ) L(uk1 ) là chiều dài đoạn đường NURBS từ C(uk1 ) tới C(uk 2 ) , còn (Vr2,k1 Vr2,k 2 ) / 2 At ,max chính là chiều dài ngắn nhất để tốc độ có thể thay đổi từ Vr ,k1 tới Vr ,k 2 với gia tốc tiếp tuyến không vượt quá At ,max .
Trường hợp 1 được minh họa trên Hình 3.9(a). Trường hợp 1 thường xảy ra giữa hai điểm “quan trọng” nằm trong cùng một vùng giới hạn. Các đường nét đứt trên Hình 3.9(a) biểu diễn tốc độ tiến dao trong miền ảnh hưởng của C(uk1 ) và C(uk 2 ) . Ta thấy, miền ảnh hưởng của C(uk 2 ) bao trùm và lấn át hoàn toàn miền ảnh hưởng của C(uk1 ) . Trường hợp 2: V la (u, uk1 ) V la (u, uk 2 ) . Trường hợp 2 xảy ra khi điều kiện (3.25) không được thỏa mãn. Trong trường hợp này, phần đường NURBS đứng trước C(uk1 ) chịu ảnh hưởng của C(uk1 ) chặt hơn so với C(uk 2 ) . Do đó, thuật toán tiền xử lý không sử dụng điều kiện ràng buộc bởi C(uk 2 ) để bỏ qua C(uk1 ) như trường hợp 1 được. Trường hợp 2 được minh họa trên Hình 3.9(b) và thường xảy ra giữa hai điểm “quan trọng” nằm trong hai vùng giới hạn khác nhau. Tốc độ tiến dao trong các miền ảnh hưởng được biểu diễn bằng nét đứt. Ta thấy, miền ảnh hưởng của C(uk 2 ) nằm phía sau và độc lập với miền ảnh hưởng của C(uk1 ) . Tiền xử lý biên dạng tự do NURBS Thuật toán tiền xử lý thực hiện “quét” từ vị trí đầu tới vị trí cuối trên biên dạng tự do NURBS và ghi nhận thông tin về các điểm “quan trọng”. Thông tin về mỗi điểm “quan trọng” bao gồm giá trị tham số và tốc độ tiến dao giới hạn tại vị trí đó theo điều kiện (3.17). Tức là, với mỗi điểm “quan trọng ” C(uk ) , thuật toán tiền xử lý sẽ ghi nhận cặp giá trị [uk ,Vr ,k ] . Để thuận tiện cho việc lưu lại dữ liệu tính toán trong bước tiền xử lý, ta định nghĩa
cấu trúc dữ liệu Point{u,V } , với u là giá trị tham số, V là tốc độ tiến dao giới hạn bởi điều kiện (3.17) tại vị trí C(u ) . Đồng thời, ta định nghĩa một mảng kiểu Point là critical _ point[] để lưu thông tin về các điểm “quan trọng”. Ký hiệu C(u0 ) và C(uend ) lần lượt là điểm đầu và điểm cuối trên biên dạng tự do NURBS. Giả thiết rằng tốc độ tiến dao tại điểm đầu và điểm cuối đều bằng 0. Các bước thực hiện thuật toán được trình bày trong phần sau đây. Thuật toán tiền xử lý biên dạng tự do NURBS: b1) Bắt đầu từ điểm đầu C(u0 ) , ta coi đây là điểm “quan trọng” đầu tiên. Tốc độ tiến dao tại điểm đầu C(u0 ) được giả thiết bằng 0. Do đó, với điểm C(u0 ) thuật toán lưu lại cặp giá trị [u0 , 0] trong mảng critical _ point[] : 57
critical _ point[0].u u0 critical _ point[0].V 0 b2) Tại mỗi vị trí C(uk ) ta tính tốc độ giới hạn Vr ,k theo điều kiện (3.17). Kiểm tra điều kiện (Vr ,k Vr ,k 1 ) / T At ,max , với quy ước Vr ,1 0 . Nếu điều kiện là đúng thì
C(uk ) là một điểm “quan trọng”. Trước khi cập nhật dữ liệu của điểm C(uk ) vào mảng critical _ point[] , ta đối chiếu C(uk ) với điểm “quan trọng” gần nhất được lưu trong mảng critical _ point[] , ký hiệu là critical _ point[end] . Giữa điểm
C(uk ) và điểm critical _ point[end] , nếu điều kiện (3.25) được thỏa mãn thì điểm
C(uk ) lấn át được điểm critical _ point[end] . Khi đó, ta thay thế điểm
critical _ point[end] bằng điểm C(uk ) (số lượng phần tử của mảng critical _ point[] không thay đổi). Nếu điều kiện (3.25) không thỏa mãn thì ta cập nhật thêm dữ liệu của điểm C(uk ) vào mảng critical _ point[] (số lượng phần tử của mảng critical _ point[] tăng lên 1). b3) Từ giá trị uk và Vr ,k , ta tính giá trị đạo hàm cấp một C(uk ) , sau đó thay vào công thức (3.5) để tính uk 1 . Nếu uk 1 uend với uend là giá trị tham số tương ứng với điểm cuối cùng trên đường NURBS thì gán k k 1 và quay lại bước b2. Ngược lại, nếu uk 1 uend thì chuyển sang bước b4. b4) Tốc độ tại vị trí cuối đường NURBS được giả thiết bằng 0. Coi điểm C(uend ) cũng là một điểm “quan trọng”, ta cập nhật cặp giá trị [uend , 0] trong mảng
critical _ point[] : critical _ point[end ].u uend critical _ point[end ].V 0 b5) Thực hiện thêm bước kiểm tra điều kiện (3.25) đối với các điểm “quan trọng” đã được lưu trong mảng critical _ point[] . Bắt đầu từ phần tử cuối cùng, critical _ point[end] , ta lần lượt kiểm tra điều kiện (3.25) đối với từng phần tử đứng trước. Nếu có bất cứ phần tử đứng trước nào thỏa mãn điều kiện (3.25) thì xóa bỏ phần tử đó khỏi mảng critical _ point[] . Quá trình kiểm tra đối với critical _ point[end] kết thúc khi gặp phần tử đầu tiên làm cho điều kiện (3.25) không thỏa mãn, hoặc khi gặp phần tử critical _ point[0] . Ta tiếp tục kiểm tra điều kiện (3.25) đối với điểm đứng ngay trước critical _ point[end] , và sau đó là các điểm đứng trước nữa, cho tới khi gặp phần tử đầu tiên critical _ point[0] . b6) Sau khi tập hợp được dữ liệu của các điểm “quan trọng” trong mảng critical _ point[] , ta tính chiều dài đường NURBS trên từng đoạn giới hạn bởi hai điểm “quan trọng” liên tiếp trong mảng critical _ point[] . Phương pháp tính chiều dài một đoạn đường NURBS được trình bày trong phần sau của luận án. 58
Sau bước b6 thuật toán tiền xử lý kết thúc và ta có dữ liệu của các điểm “quan trọng” được lưu trong mảng critical _ point[] , cũng như chiều dài của từng đoạn đường NURBS nằm giữa hai điểm “quan trọng”. Một số nhận xét: -
Sau bước tiền xử lý, các điểm “quan trọng” lưu trong mảng critical _ point[] đã phân chia đường NURBS ban đầu thành một số đoạn. Trên mỗi đoạn đường NURBS, thuật toán tiền xử lý đã xác định tốc độ tiến dao tại vị trí bắt đầu và kết thúc, cũng như chiều dài của đoạn (như minh họa trên Hình 3.10). Các dữ liệu này sẽ được sử dụng bởi khâu tính tốc độ của thuật toán nội suy (Hình 3.5) để tính tốc độ tiến dao theo thời gian thực, sao cho đảm bảo đồng thời các điều kiện ràng buộc.
Hình 3.10: Minh họa các điểm “quan trọng” phân chia đường NURBS thành các phân đoạn (mỗi vị trí chấm đen là một điểm “quan trọng”).
-
Trong bước b2, mỗi khi phát hiện một điểm “quan trọng” mới và thấy điểm này lấn át điểm “quan trọng” gần nhất trong mảng critical _ point[] thì điểm “quan trọng” gần nhất được thay thế bởi điểm mới phát hiện. Với cách thay thế như vậy, trong mỗi vùng giới hạn sẽ chỉ có một điểm “quan trọng” được giữ lại. Đó là điểm “quan trọng” có tốc độ tiến dao Vr giảm sâu nhất trong vùng giảm tốc.
-
Trong bước b5 thuật toán tiền xử lý kiểm tra điều kiện (3.25) với từng cặp điểm “quan trọng” liền kề nhau, theo thứ tự ngược từ điểm cuối tới điểm đầu. Với một cặp điểm “quan trọng” liền kề nhau mà thỏa mãn điều kiện (3.25) thì điểm đứng trước được loại bỏ khỏi mảng critical _ point[] . Việc này nhằm đảm bảo mỗi đoạn đường NURBS được phân chia bởi thuật toán tiền xử lý đều có đủ chiều dài cho quá trình biến đổi tốc độ tiến dao. Thuật toán tính tốc độ tiến dao theo thời gian thực
Khâu tính tốc độ tiến dao là một phần quan trọng trong cấu trúc của thuật toán nội suy biên dạng tự do NURBS trên Hình 3.5, và được thực hiện trong mỗi chu kỳ nội suy với nhiệm vụ tính tốc độ tiến dao Vk và gia tốc tiếp tuyến At ,k . Sau bước tiền xử lý, biên dạng tự do NURBS được chia thành một số phân đoạn. Việc tính tốc độ tiến dao có thể quy về 59
từng phân đoạn đường NURBS, dựa trên các thông tin đã có bao gồm: tốc độ tại vị trí đầu, vị trí cuối và chiều dài phân đoạn. Ý tưởng này được minh họa trên Hình 3.11.
Hình 3.11: Tính tốc độ tiến dao trên một phân đoạn đường NURBS.
Giả sử phân đoạn đường NURBS được xác định bởi hai điểm “quan trọng” là C(us ) và C(ue ) . Tốc độ tiến dao tại vị trí đầu và vị trí cuối lần lượt là Vs và Ve . Chiều dài phân đoạn là L(ue ) L(us ) . Xét một điểm C(uk ) nằm trong phân đoạn. Các bước tính tốc độ tiến dao tại vị trí C(uk ) được trình bày dưới đây. Thuật toán tính tốc độ tiến dao trên một phân đoạn đường NURBS: b1) Tính chiều dài đường NURBS từ C(uk ) tới vị trí cuối phân đoạn C(ue ) . Ký hiệu chiều dài tính được là L(ue ) L(uk ) . Sử dụng điều kiện (3.16) ta tính được tốc độ giới hạn tại vị trí C(uk ) do ảnh hưởng của điểm cuối phân đoạn C(ue ) :
V la (uk , ue ) Ve2 2 At ,max [ L(ue ) L(uk )] b2) Sử dụng các điều kiện (3.10) và (3.12) ta tính được các tốc độ giới hạn V chord (uk ) và V acc (uk ) . b3) Tính tốc độ giới hạn tại C(uk ) :
Vr ,k Vr (uk ) min(Vmax ,V chord ,V acc ,V la ) b4) Kiểm tra điều kiện At ,max (Vr ,k Vk 1 ) / T At ,max , nếu thỏa mãn thì nhận kết quả là
Vk Vr ,k , At ,k (Vr ,k Vk 1 ) / T .
60
Nếu
(Vr ,k Vk 1 ) / T At ,max
thì
tính
Vk Vk 1 At ,maxT
và
At ,k At ,max .
Nếu
(Vr ,k Vk 1 ) / T At ,max
thì
tính
Vk Vk 1 At ,maxT và At ,k At ,max .
b5) Tính các đạo hàm C(uk ) và C(uk ) , và tính uk 1 theo công thức (3.4) (hoặc công thức (3.5) nếu chỉ sử dụng phép xấp xỉ Taylor bậc nhất). b6) Nếu uk 1 ue thì kết thúc phân đoạn. Ngược lại thì gán k k 1 và lặp lại các bước từ bước b1. Thuật toán được áp dụng cho khâu tính tốc độ trong Hình 3.5. Như vậy ta đã có thể thực hiện tất cả các khâu trong Hình 3.5, và có thể đi tới bước đề xuất phương pháp hoàn chỉnh để nội suy biên dạng tự do NURBS theo thời gian thực. 3.7. Đề xuất phương pháp nội suy biên dạng tự do NURBS theo thời gian thực Để giải quyết đồng thời các điều kiện ràng buộc đối với tốc độ tiến dao trong khi thực hiện chuyển động nội suy theo biên dạng tự do NURBS, phương pháp được đề xuất trong luận án bao gồm hai bước: bước tiền xử lý và bước nội suy theo thời gian thực. Nội dung của bước tiền xử lý được trình bày trong mục 3.6.3. Thông tin có được từ bước tiền xử lý được sử dụng để tính tốc độ tiến dao và gia tốc tiếp tuyến trong mỗi chu kỳ nội suy (theo thuật toán trình bày trong mục 3.6.4). Nhờ đó, bước nội suy theo thời gian thực có thể thực hiện theo cấu trúc mô tả trên Hình 3.5. Cụ thể, sau khi kết thúc bước tiền xử lý thì chuyển sang bước nội suy theo thời gian thực với các tính toán được thực hiện trong một chu kỳ nội suy như trình bày dưới đây. Thuật toán nội suy biên dạng tự do NURBS theo thời gian thực: b1) Bắt đầu với k=0, tọa độ điểm nội suy đầu tiên C(u0 ) được tính theo thuật toán DeBoor. b2) Với giá trị của tham số là uk , khâu tính tốc độ thực hiện thuật toán trình bày trong mục 3.6.4. Kết quả là tính được tốc độ tiến dao Vk và gia tốc tiếp tuyến At ,k . b3) Tính các đạo hàm C(uk ) và C(uk ) , và tính uk 1 theo công thức (3.4) (hoặc công thức (3.5) nếu chỉ sử dụng phép xấp xỉ Taylor bậc nhất). b4) Nếu uk 1 uend , với uend là giá trị của tham số u tương ứng với vị trí cuối của đường NURBS, thì tính điểm nội suy mới C(uk 1 ) theo thuật toán DeBoor. Ngược lại thì dừng thuật toán. b5) Gán k=k+1 và lặp lại các bước từ bước b2. Kết thúc một chu kỳ, thuật toán nội suy theo thời gian thực tính được tọa độ của điểm nội suy mới, và gửi các thành phần tọa độ X, Y, Z tới các vòng điều khiển vị trí của các trục tương ứng. Sau đó, trong khoảng thời gian một chu kỳ, hệ truyền động của các trục máy sẽ thực hiện vai trò của cơ cấu chấp hành và đưa các trục máy tới tọa độ yêu cầu. Thuật toán nội suy biên dạng tự do NURBS theo thời gian thực kết thúc khi đã đi qua hết miền giá trị của tham số u. 61
3.8. Tính chiều dài đường NURBS Việc tính chính xác chiều dài của một đoạn đường NURBS có ý nghĩa quan trọng đối với cả bước tiền xử lý và bước nội suy theo thời gian thực. Do đó nội dung của mục này dành để trình bày về vấn đề này. Gọi L là chiều dài của một đoạn đường NURBS C(u) x(u), y(u), z(u) , với tham số
u a, b . Theo hình học vi phân ta có công thức sau: 2 2 2 b b b dx dy dz L du C(u ) du f (u )du du du du a a a
(3.26)
Tích phân (3.26) trong trường hợp tổng quát là rất khó giải theo phương pháp giải tích. Trong luận án này, phương pháp Simpson thích nghi (Simpson adaptive formular) được lựa chọn để tính L theo phương pháp số [38], [29]. Giả sử tích phân (3.26) cần tính với độ chính xác . Theo phương pháp Simpson thích nghi, trước tiên ta tính một ước lượng của tích phân (3.26) theo công thức Simpson như sau:
l ( a, b)
h f (a) 4 f (c) f (b) 3
(3.27)
Trong (3.27), c (a b) / 2 là điểm giữa của đoạn a, b , và h (b a) / 2 là bước tính (step size). Tiếp theo, đoạn a, b được chia thành hai đoạn con bằng nhau, ký hiệu là a1 , b1 và a2 , b2 , với a1 a, b1 a2 c, b2 b . Công thức Simpson được áp dụng cho từng đoạn con, để tính chiều dài ước lượng của mỗi đoạn, l (a1 , b1 ) và l (a2 , b2 ) . Khi đó, ta có một ước lượng nữa của L, là l (a1 , b1 ) l (a2 , b2 ) . Với hai giá trị ước lượng, ta kiểm tra điều kiện sau đây:
l (a1 , b1 ) l (a2 , b2 ) l (a, b) /10
(3.28)
Nếu điều kiện (3.28) thỏa mãn thì theo phương pháp Simpson thích nghi, l (a1 , b1 ) l (a2 , b2 ) chính là giá trị ước lượng của chiều dài L với độ chính xác . Nếu không thỏa mãn thì tiếp tục cách tính hai giá trị ước lượng như trên cho từng đoạn con, với lưu ý là giá trị sai số phải giảm đi theo tỉ lệ giữa chiều dài mỗi đoạn con và đoạn a, b . Với đoạn con thỏa mãn điều kiện (3.28) thì ghi nhận kết quả ước lượng chiều dài; với đoạn con không thỏa mãn (3.28) thì lại chia thành 2 đoạn con nhỏ hơn nữa. Quá trình chia nhỏ được tiếp tục cho tới khi tất cả các khoảng con đều thỏa mãn điều kiện (3.28) và có giá trị ước lượng với sai số thích hợp. Khi đó, chiều dài L được tính bằng cách lấy tổng chiều dài của tất cả các khoảng con. Phương pháp Simpson thích nghi được cài đặt trên phần mềm Matlab, kết quả thử nghiệm tính chiều dài, với độ chính xác yêu cầu 0.0001(mm) , của đường tròn bán kính R=25 (mm) là 157.0796 (mm). Kết quả này trùng với kết quả khi sử dụng công thức quen biết để tính chu vi đường tròn, đó là L 2 R . 62
3.9. Kết quả mô phỏng Chương trình mô phỏng được xây dựng trên phần mềm Matlab nhằm thử nghiệm và đánh giá phương pháp nội suy biên dạng tự do NURBS đề xuất trong luận án. Vì phương pháp nội suy biên dạng tự do NURBS gồm có hai bước, nên chương trình mô phỏng cũng được xây dựng thành hai hàm con: pre_process.m thực hiện các tính toán của bước tiền xử lý; và realtime_process.m thực hiện các tính toán của bước nội suy theo thời gian thực. Phần mã nguồn của hai hàm con này được trình bày trong Phụ lục 2. Mô phỏng nội suy biên dạng chữ alpha Trong mục này phương pháp nội suy NURBS được mô phỏng với đường dụng cụ là biên dạng chữ alpha như trên Hình 3.12 (a). Vị trí bắt đầu gia công trên biên dạng chữ alpha là O, hướng dụng cụ di chuyển được chỉ bằng mũi tên. Các thông số NURBS của biên dạng chữ alpha được tập hợp trong Bảng 3.1. Các tham số sử dụng trong chương trình mô phỏng như Bảng 3.2. Vì tốc độ tiến dao trong khi thực hiện chuyển động nội suy phụ thuộc vào sự thay đổi độ cong trên biên dạng tự do NURBS, nên trước hết ta khảo sát độ cong của biên dạng chữ alpha. Biểu đồ độ cong được tính và vẽ bằng phần mềm Matlab như Hình 3.12 (b). Bảng 3.1: Các thông số NURBS của biên dạng chữ alpha.
Bậc của đường NURBS Vector tham số nút
Các điểm điều khiển và trọng số
p=2 U = (0,0,0,0.25,0.5,0.5,0.75,1,1,1) P0=(0,0,0), w1=1 P1=(-50,-50,0), w2=10 P2=(-50,50,0), w3=20 P3=(0,0,0), w4=1 P4=(50,-50,0), w5=20 P5=(50,50,0), w6=10 P6=(0,0,0), w7=1
Các vị trí có độ cong lớn nhất cục bộ trên Hình 3.12(b) là các vị trí A,B,C,D. Các vùng có độ cong lớn hơn một giá trị giới hạn là các vùng mà tốc độ tiến dao bị hạn chế. Theo (3.21), giá trị độ cong giới hạn phụ thuộc vào Vmax . Trên Hình 3.12(b), một số giá trị độ cong giới hạn được vẽ bằng nét đứt. Các giá trị độ cong giới hạn được ký hiệu là Kcr1, Kcr2, Kcr3 và Kcr4, tương ứng với tốc độ tiến dao Vmax lần lượt là 50 (mm/s), 25 (mm/s), 20 (mm/s) và 15 (mm/s). Ta thấy khi tốc độ tiến dao yêu cầu Vmax càng có giá trị lớn thì độ cong giới hạn càng có giá trị bé, và các vùng giới hạn tốc độ tiến dao càng mở rộng (như đã nhận xét trong mục 3.5.4). Trường hợp Vmax 50(mm/s) : Giá trị độ cong giới hạn là Kcr1. Ta thấy độ cong tại các vị trí A, B, C, D đều nằm trên đường giới hạn Kcr1. Do đó, các vùng lân cận xung quanh A, B, C, D đều là vùng giới hạn tốc độ tiến dao. Biểu đồ giới hạn tốc độ tiến dao theo điều kiện (3.17) được vẽ bằng phần mềm Matlab như Hình 3.13(b). Quan sát Hình 3.13(b) ta có thể 63
nhận thấy rõ ràng 4 vùng giới hạn tốc độ tiến dao là các vùng lân cận xung quanh các vị trí A,B,C,D.
(b)
(a)
Hình 3.12: (a) Biên dạng chữ alpha (nét liền) và đa giác điều khiển (nét đứt); (b) Biểu đồ độ cong của biên dạng chữ alpha (nét liền) và một số giá trị độ cong giới hạn (nét đứt). Bảng 3.2: Các tham số của chương trình mô phỏng nội suy biên dạng chữ alpha.
Công thức cập nhật tham số Chu kỳ nội suy (T) Giới hạn sai số dây cung ( emax )
Xấp xỉ Taylor bậc nhất 1 (ms) 0.001 (mm) = 1 (µm)
Giới hạn gia tốc tiếp tuyến ( At ,max )
200 ( mm/s 2 )
Giới hạn gia tốc hướng tâm ( An ,max )
200 ( mm/s 2 )
Bảng 3.3: Giá trị tham số của các điểm “quan trọng” và các điểm có độ cong lớn nhất cục bộ trên biên dạng chữ alpha khi Vmax 50(mm/s) .
Giá trị tham số u tương ứng với các điểm có độ cong lớn nhất cục bộ. 0.0530 0.4278 0.5722 0.9470
Giá trị tham số u tương ứng với các điểm “quan trọng” 0.0407 0.4125 0.5591 0.9321
Thực hiện thuật toán tiền xử lý như trong mục 3.6.3, kết quả xác định được 4 điểm “quan trọng” (không kể đến điểm bắt đầu và điểm kết thúc đường NURBS) tại các vị trí khoanh đỏ trên Hình 3.13(a). Giá trị cụ thể của tham số u tương ứng với các điểm “quan trọng” được tập hợp trong Bảng 3.3, bên cạnh giá trị tham số u tương ứng với các điểm có
64
(a) Vmax 50(mm/s)
(b) Vmax 50(mm/s)
(c) Vmax 25(mm/s)
(d) Vmax 25(mm/s)
(e) Vmax 20(mm/s)
(f) Vmax 20(mm/s)
Hình 3.13: (a),(c),(e) Các điểm “quan trọng” được xác định bởi bước tiền xử lý; (b),(d),(f) Tốc độ tiến dao bị giới hạn theo điều kiện (3.17).
65
độ cong lớn nhất cục bộ (các điểm A,B,C,D). Từ Bảng 3.3 ta thấy rằng các điểm “quan trọng” không trùng với các điểm có độ cong lớn nhất cục bộ, mà đứng trước và gần các điểm có độ cong lớn nhất cục bộ. Vì vậy, trên Hình 3.13(a), các điểm “quan trọng” được đánh dấu là A*, B*, C* và D*. Trường hợp Vmax 25(mm/s) : Giá trị độ cong giới hạn là Kcr2. Ta thấy chỉ có độ cong tại vị trí B, C nằm trên đường giới hạn Kcr2, trong khi độ cong tại vị trí A,D nằm phía dưới đường giới hạn Kcr2 (Hình 3.12(b)). Do đó, trong trường hợp này chỉ có 2 vùng giới hạn tốc độ tiến dao là các vùng lân cận xung quanh vị trí B và C. Biểu đồ giới hạn tốc độ tiến dao theo điều kiện (3.17) như Hình 3.13(d). Thực hiện thuật toán tiền xử lý xác định được 2 điểm “quan trọng” tại các vị trí khoanh đỏ trên Hình 3.13(c). Các điểm “quan trọng” này không trùng với các vị trí B,C, nên được ký hiệu là B* và C*. Như vậy, biên dạng chữ alpha được chia thành 3 phân đoạn: OB*, B*C* và C*O.
(a) Vmax 50(mm/s)
(b) Vmax 25(mm/s)
(c) Vmax 20(mm/s)
(d) Vmax 15(mm/s)
Hình 3.14: Kết quả mô phỏng tốc độ tiến dao khi nội suy biên dạng chữ alpha theo thời gian thực.
66
Trường hợp Vmax 20(mm/s) : Giá trị độ cong giới hạn là Kcr3. Ta thấy độ cong tại các vị trí B và C vẫn nằm trên đường giới hạn Kcr2, trong khi độ cong tại vị trí A,D nằm phía dưới đường giới hạn Kcr2 (Hình 3.12(b)). Do đó trường hợp này vẫn có hai vùng giới hạn tốc độ tiến dao là các vùng lân cận xung quanh vị trí B và C. Biểu đồ giới hạn tốc độ tiến dao theo điều kiện (3.17) được vẽ trên Hình 3.13(f) và có dạng tương tự như Hình 3.13(d). Tuy nhiên, điểm khác biệt xuất hiện khi thực hiện thuật toán tiền xử lý. Với Vmax 20(mm/s) , thuật toán tiền xử lý không xác định được điểm “quan trọng” nào. Điều này có nghĩa là, mặc dù tồn tại hai vùng giới hạn tốc độ tiến dao, nhưng sự biến đổi của tốc độ tiến dao không xảy ra quá nhanh và vẫn thỏa mãn điều kiện giới hạn gia tốc tiếp tuyến. Kết quả này một lần nữa cho thấy các điểm “quan trọng” không trùng với các vị trí có độ cong lớn nhất cục bộ.
(b) Vmax 25(mm/s)
(a) Vmax 50(mm/s)
(c) Vmax 20(mm/s)
(d) Vmax 15(mm/s)
Hình 3.15: Kết quả mô phỏng gia tốc tiếp tuyến khi nội suy biên dạng chữ alpha theo thời gian thực.
Cuối cùng, trường hợp Vmax 15(mm/s) : Giá trị độ cong giới hạn là Kcr3. Trên Hình 3.12(b) ta thấy toàn bộ biểu đồ độ cong của biên dạng chữ alpha đều nằm dưới đường giới 67
hạn Kcr3, tức là không xuất hiện vùng giới hạn tốc độ tiến dao. Tại mọi vị trí trên biên dạng chữ alpha tốc độ tiến dao đều có thể nhận giá trị Vmax 15(mm/s) mà vẫn đảm bảo các điều kiện giới hạn sai số dây cung và điều kiện giới hạn gia tốc hướng tâm. Trong trường hợp này, thuật toán tiền xử lý cũng không xác định được điểm “quan trọng” nào. Sau bước tiền xử lý, thông tin về các điểm “quan trọng” được sử dụng để tính tốc độ tiến dao trong bước nội suy biên dạng tự do NURBS theo thời gian thực. Trên các Hình 3.14, Hình 3.15, Hình 3.16 là kết quả mô phỏng tốc độ tiến dao, gia tốc tiếp tuyến và sai số nội suy khi thực hiện thuật toán nội suy thời gian thực đối với biên dạng chữ alpha. Trên Hình 3.14 ta thấy mức độ điều chỉnh tốc độ tiến dao giảm dần theo giá trị Vmax . Trong trường hợp
Vmax 15(mm/s) tốc độ tiến dao bằng Vmax trong phần lớn thời gian, ngoại trừ khoảng thời gian tăng tốc ban đầu và giảm tốc để dừng lại ở cuối đường NURBS (Hình 3.14(d)). Trong tất cả các trường hợp, giá trị gia tốc tiếp tuyến đều nằm trong giới hạn cho phép (Hình 3.15).
(a) Vmax 50(mm/s)
(b) Vmax 25(mm/s)
(c) Vmax 20(mm/s)
(d) Vmax 15(mm/s)
Hình 3.16: Kết quả mô phỏng sai số dây cung khi nội suy biên dạng chữ alpha.
Sai số nội suy được thể hiện trên Hình 3.16. Với 4 giá trị khác nhau của Vmax , Hình 3.16 thể hiện xu hướng sai số nội suy giảm khi Vmax giảm. Các biểu đồ sai số nội suy trong 68
cả 4 trường hợp có hình dạng tương tự nhau, với những đỉnh nhọn xuất hiện tại những vị trí có độ cong lớn trên biên dạng chữ alpha (đối chiếu Hình 3.16 với Hình 3.12(b)). Giá trị sai số nội suy trong các trường hợp mô phỏng đều nhỏ hơn giới hạn 1 (µm). Các kết quả mô phỏng này cho thấy thuật toán nội suy đã thành công trong việc giải quyết đồng thời các vấn đề giới hạn sai số nội suy, gia tốc tiếp tuyến và gia tốc pháp tuyến. Sự thành công của thuật toán nội suy theo thời gian thực dựa trên việc đã có đầy đủ thông tin về các điểm “quan trọng” do bước tiền xử lý cung cấp. Mô phỏng nội suy biên dạng NURBS phức tạp - biên dạng hình cánh bướm Trong mục này ta mô phỏng phương pháp nội suy NURBS với một biên dạng rất phức tạp, đó là biên dạng hình cánh bướm, được vẽ bằng phần mềm Matlab như Hình 3.17. Đây là biên dạng đã được sử dụng để thử nghiệm thuật toán nội suy NURBS trong một số bài báo, như [30, 32, 46].
Hình 3.17: Biên dạng hình cánh bướm.
Hình 3.18: Biểu đồ độ cong của biên dạng hình cánh bướm.
69
Bảng 3.4: Các tham số sử dụng trong chương trình mô phỏng nội suy NURBS với biên dạng hình cánh bướm.
Công thức cập nhật tham số Chu kỳ nội suy (T) Giới hạn sai số dây cung ( emax )
Xấp xỉ Taylor bậc hai 1 (ms) 0.001 (mm) = 1 (µm)
Giới hạn gia tốc tiếp tuyến ( At ,max )
200 ( mm/s2 )
Giới hạn gia tốc hướng tấm ( An ,max )
200 ( mm/s2 )
Tốc độ tiến dao yêu cầu ( Vmax )
50 (mm/s) = 3000 (mm/min)
(a)
(b)
(c)
(d)
Hình 3.19: Kết quả mô phỏng nội suy NURBS với biên dạng hình cánh bướm. (a) Các điểm quan trọng được xác định bởi bước tiền xử lý; (b) Tốc độ tiến dao; (c) Gia tốc tiếp tuyến; (d) Sai số nội suy.
Mức độ phức tạp của biên dạng này thể hiện ở việc nhiều vị trí có độ cong lớn, cũng như độ cong thay đổi đột ngột. Biểu đồ độ cong của biên dạng hình cánh bướm được tính toán trên phần mềm Matlab và thể hiện trên Hình 3.18. Phương trình tham số NURBS 70
biểu diễn biên dạng hình cánh bướm có bậc 4, số điểm điều khiển là 51, số trọng số bằng với số điểm điều khiển, và số tham số nút là 56. Các thông số cụ thể của đường NURBS hình cánh bướm được tham khảo từ tài liệu [46] và được trình bày lại trong Phụ lục 1. Các tham số được sử dụng trong chương trình mô phỏng được tập hợp trong Bảng 3.4. Trong đó, công thức cập nhật tham số được sử dụng là công thức xấp xỉ Taylor bậc hai (Công thức (3.4)). Trước hết biên dạng hình cánh bướm được đưa qua bộ tiền xử lý, kết quả là xác định được 11 điểm “quan trọng”. Trên Hình 3.19, các vị trí “quan trọng” (không kể điểm đầu và điểm cuối đường NURBS) được đánh dấu bằng khoanh tròn, và được ký hiệu lần lượt từ C1* tới C*9 . Các điểm “quan trọng” chia toàn bộ biên dạng hình cánh bướm thành 10 phân đoạn. Dữ liệu về các điểm “quan trọng” được tính bởi bộ tiền xử lý và chứa trong mảng critical _ point[] để sử dụng bởi khâu tính tốc độ trong thuật toán nội suy NURBS. Trên các Hình 3.19(b),(c),(d) là kết quả mô phỏng tốc độ tiến dao, gia tốc tiếp tuyến và sai số nội suy khi thực hiện thuật toán nội suy thời gian thực đối với biên dạng hình cánh bướm. Ta thấy rằng biểu đồ tốc độ tiến dao có hình dạng rất phức tạp, với nhiều vị trí có tốc độ tiến dao được điều chỉnh giảm. Đây là hệ quả của việc biên dạng hình cánh bướm có biểu đồ độ cong phức tạp. Kết quả mô phỏng cho thấy gia tốc tiếp tuyến luôn nằm trong giới hạn đặt ra, đồng thời sai số nội suy cũng được đảm bảo nhỏ hơn emax 1 (μm) . Như vậy, mặc dù biên dạng hình cánh bướm có biểu đồ độ cong rất phức tạp, nhưng phương pháp đề xuất vẫn đảm bảo các điều kiện giới hạn đã đặt ra trong mục 3.5. Mô phỏng nội suy biên dạng đường tròn theo phương pháp nội suy NURBS Trong mục này ta mô phỏng để kiểm chứng thêm khả năng của phương pháp nội suy đã đề xuất với một biên dạng cơ bản là đường tròn. Xét biên dạng cần gia công là đường tròn bán kính R=25 (mm) nằm trong mặt phẳng Oxy, với tâm là gốc tọa độ. Biên dạng đường tròn này có thể biểu diễn bằng phương trình tham số NURBS với các thông số như trong Bảng 3.5. Trên Hình 3.20 biểu diễn biên dạng đường tròn cùng với các điểm điều khiển. Chu kỳ nội suy mô phỏng là 1 (ms). Thuật toán nội suy sử dụng phép xấp xỉ Taylor bậc nhất (Công thức (3.5)). Các tham số của chương trình mô phỏng được tập hợp trong Bảng 3.6. Bảng 3.5: Các thông số NURBS của biên dạng đường tròn.
Bậc của đường NURBS Vector tham số nút
Các điểm điều khiển và trọng số
p=2 U = (0,0,0,0.25,0.5,0.5,0.75,1,1,1) P0=(25,0,0), w1=1.0 P1=(25,25,0), w2=0.5 P2=(-25,25,0), w3=0.5 P3=(-25,0,0), w4=1.0 P4=(-25,-25,0), w5=0.5 P5=(25,-25,0), w6=0.5 P6=(25,0,0), w7=1.0
71
Hình 3.20: Biên dạng đường tròn (R = 25 mm). Bảng 3.6: Các tham số sử dụng trong chương trình mô phỏng nội suy NURBS với biên dạng đường tròn.
Công thức cập nhật tham số Chu kỳ nội suy (T) Giới hạn sai số dây cung ( emax )
Xấp xỉ Taylor bậc nhất 1 (ms) 0.001 (mm) = 1 (µm)
Giới hạn gia tốc tiếp tuyến ( At ,max )
500 ( mm/s 2 )
Giới hạn gia tốc hướng tấm ( An ,max )
500 ( mm/s 2 )
Chương trình mô phỏng được thực hiện với hai giá trị tốc độ tiến dao khác nhau, là Vmax 100(mm/s) và Vmax 150(mm/s) . Trong cả hai trường hợp, thuật toán tiền xử lý không xác định được điểm “quan trọng” nào, ngoài điểm đầu và điểm cuối đường NURBS. Điều này là hợp lý vì bán kính cong tại mọi vị trí trên biên dạng đường tròn có giá trị không đổi. Do đó, đường tròn không được chia thành các phân đoạn nhỏ, và quá trình điều chỉnh tốc độ tiến dao trong bước nội suy theo thời gian thực sẽ diễn ra trên toàn bộ chiều dài. Kết quả mô phỏng thuật toán nội suy theo thời gian thực trong hai trường hợp tốc độ tiến dao được thể hiện trên Hình 3.21. Trong cả hai trường hợp ta thấy sai số dây cung đều nhỏ hơn 1(μm) , tức là đều nằm trong giới hạn cho phép. Tương tự, gia tốc tiếp tuyến trong cả hai trường hợp đều được giữ nằm trong giới hạn cho phép (nhỏ hơn 500 mm/s2 ). Hơn nữa, gia tốc tiếp tuyến chỉ có giá trị khác 0 trong khoảng thời gian tăng tốc ban đầu, và khoảng thời gian giảm tốc ở đoạn cuối hành trình. Trong khoảng thời gian ở giữa gia tốc tiếp tuyến có giá trị bằng 0. Đây là đặc điểm của biểu đồ tốc độ dạng hình thang. Quan sát biểu đồ tốc độ trên Hình 3.21(a),(d) ta có thêm nhận xét: tốc độ yêu cầu chỉ đạt tới được trong trường hợp Vmax 100(mm/s) . Trường hợp Vmax 150(mm/s) ta thấy giá trị trên biểu đồ tốc độ Hình 3.21(d) chỉ đạt tới giá trị lớn nhất khoảng 110 (mm/s). Nguyên nhân của hiện tượng này là gì ? Phân tích lại các điều kiện giới hạn tốc độ tiến dao đã trình 72
(a) Vmax 100 (mm/s)
(d) Vmax 150 (mm/s)
(b) Vmax 100 (mm/s)
(e) Vmax 150 (mm/s)
(c) Vmax 100 (mm/s)
(f) Vmax 150 (mm/s)
Hình 3.21: Kết quả mô phỏng nội suy NURRBS với biên dạng đường tròn.
73
bày trong mục 3.5, ta có nhận xét như sau: Đối với biên dạng đường tròn bán kính R=25 (mm) (bán kính cong tương đối lớn) thì vấn đề giới hạn sai số dây cung không đóng vai trò quan trọng (như nhận xét trong mục 3.3). Vấn đề giới hạn gia tốc tiếp tuyến chỉ xảy ra ở đoạn tăng tốc ban đầu và đoạn giảm tốc cuối đường NURBS. Như vậy, nguyên nhân dẫn tới tốc độ tiến dao bị chặn trên ở một giá trị nhỏ hơn giá trị yêu cầu Vmax 150(mm/s) chỉ có thể là do ảnh hưởng của điều kiện giới hạn gia tốc hướng tâm. Nhận xét này là hợp lý vì trong trường hợp dụng cụ chuyển động trên biên dạng đường tròn, với tốc độ tiến dao hầu như là hằng số, thì rõ ràng việc quan tâm giới hạn gia tốc hướng tâm quan trọng hơn giới hạn gia tốc tiếp tuyến. Cụ thể, tính giá trị tốc độ tiến dao bị giới hạn theo điều kiện gia tốc hướng tâm (công thức (3.12)) ta nhận được kết quả Vkacc 111.8034(mm/s) . Kết quả này phù hợp với đồ thị Hình 3.21(d). Kết quả mô phỏng thuật toán nội suy NURBS với trường hợp biên dạng đường tròn là rất tốt, mặc dù chỉ sử dụng phép xấp xỉ Taylor bậc nhất trong khi cập nhật giá trị tham số u. Điều này là do biên dạng đường tròn có đặc điểm thuận lợi, đó là có bán kính cong không thay đổi trên toàn bộ chiều dài. Kết luận chương 3 Chương 3 đã trình bày có hệ thống một phương pháp nội suy biên dạng tự do NURBS theo thời gian thực. Phương pháp đề xuất đã giải quyết được đồng thời các vấn đề: giới hạn sai số nội suy, và giới hạn gia tốc tiếp tuyến, gia tốc hướng tâm. Để giải quyết được đồng thời các vấn đề nêu trên, trong phương pháp đề xuất đã sử dụng một bước tiền xử lý để phát hiện các vị trí “quan trọng” trên biên dạng NURBS và tính trước tốc độ tiến dao giới hạn tại các vị trí này. Các điểm “quan trọng” chia biên dạng NURBS thành một số phân đoạn, với tốc độ tiến dao khi bắt đầu và khi kết thúc một đoạn đã được xác định. Sau bước tiền xử lý, bước nội suy được thực hiện theo thời gian thực với các tính toán cơ bản trong một chu kỳ gồm có: tính tốc độ và gia tốc, tính tham số u và tính tọa độ điểm nội suy. Trong đó, khâu tính tốc độ và gia tốc sử dụng thông tin từ bước tiền xử lý để kịp thời điều chỉnh tốc độ tiến dao trên mỗi phân đoạn. Kết quả mô phỏng trên phần mềm Matlab với một số biên dạng NURBS khác nhau cho phép kết luận phương pháp đề xuất đã thành công trong việc tính toán được tọa độ các điểm nội suy theo thời gian thực, đồng thời đảm bảo được các điều kiện ràng buộc đã đặt ra.
74
CHƯƠNG 4. NGHIÊN CỨU PHÁT TRIỂN PHẦN MỀM NỘI SUY BIÊN DẠNG TỰ DO NURBS THEO THỜI GIAN THỰC DỰA TRÊN HỆ ĐIỀU KHIỂN CÓ KIẾN TRÚC MỞ 4.1. Giới thiệu về hệ điều khiển có kiến trúc mở (OAC - Open Architecture Controller) Trong hơn hai thập kỷ gần đây, xu hướng phát triển các hệ thống điểu khiển số có kiến trúc mở (OAC - Open Architecture Controller) cho máy công cụ dành được rất nhiều sự quan tâm. Các hệ thống có kiến trúc mở tạo ra cơ hội thống nhất những khái niệm chung, phát triển các công nghệ cơ bản, các thành phần cơ bản có thể tích hợp với nhau để tạo ra các máy công cụ với chức năng phong phú hơn, có thể đáp ứng các yêu cầu chuyên biệt hơn, góp phần nâng cao năng suất, chất lượng và giảm giá thành sản phẩm. Các hệ thống mở tạo ra khả năng phát triển các ứng dụng hoạt động trên nhiều nền tảng, tương thích với các thành phần từ nhiều nhà cung cấp, đồng thời có khả năng tương tác tốt với nhau và với con người.
Hình 4.1: Xu hướng thay đổi tỉ lệ giá trị giữa phần cứng và phần mềm trong hệ thống CNC (nguồn: [37]).
Trong thời gian đầu, các hệ thống CNC thường là những hệ thống “đóng kín” cả về phần cứng và phần mềm. Từ yêu cầu phải đáp ứng những yêu cầu ngày càng cao trong việc tích hợp phần mềm ứng dụng, phần mềm hệ thống và phần cứng đã làm cho các hệ thống điều khiển “đóng kín” trở nên ngày càng phức tạp và khó điều chỉnh. Xu hướng hiện nay là tạo ra các hệ thống CNC trên nền tảng máy tính PC với môi trường phát triển được tiêu chuẩn hóa (PC-based controller), đồng thời phát triển các hệ thống có tính “mở” hơn. Cấu trúc của hệ thống CNC được điều chỉnh theo hướng tăng tỉ lệ phần mềm, giảm tỉ lệ phần cứng (Hình 4.1). Các thành phần phần mềm có thể được đóng gói và kế thừa, có thể được nâng cấp bởi nhà sản xuất mà không phải thay đổi thiết bị phần cứng. Các thuật toán hoặc yêu cầu chuyên biệt của người dùng có thể được tích hợp vào trong hệ thống. Đây là đặc điểm rất quan trọng để các hệ thống CNC hiện đại có thể liên tục cập nhật những tính năng 75
mới theo yêu cầu của người dùng, cũng như tham gia vào các hệ thống sản xuất đòi hỏi nhiều khả năng linh hoạt hơn. Mức độ “mở” của một hệ thống điều khiển số có thể đánh giá dựa trên các tiêu chí [37]: -
-
-
Khả năng tương thích (Portablity). Khả năng này yêu cầu các module ứng dụng phải được thiết kế để có thể sử dụng trên nhiều nền tảng khác nhau mà không cần điều chỉnh hoặc sửa đổi. Khả năng mở rộng (Extendibility). Khả năng này yêu cầu các module ứng dụng phải có khả năng cùng hoạt động trong hệ thống mà không gây ra xung đột. Nhờ đó có thể dễ dàng phát triển thêm những module ứng dụng mới, mở rộng tính năng của hệ thống. Khả năng tương tác (Interoperability). Khả năng này yêu cầu phải định nghĩa một cơ chế rõ ràng để trao đổi thông tin và dữ liệu giữa các module ứng dụng. Khả năng điều chỉnh (Scalability). Khả năng này yêu cầu các module ứng dụng và các đòi hỏi về khả năng của thiết bị phần cứng có thể điều chỉnh được tùy theo yêu cầu của người dùng.
Để đạt được các tiêu chí như trên, các hệ thống mở thường sử dụng các thành phần, thiết bị tiêu chuẩn, phổ biến và độc lập với nhà cung cấp. Hệ thống điều khiển mở đầu tiên trên thế giới được phát triển tại Viện quốc gia về tiêu chuẩn và công nghệ (NIST - National Institute of Standards and Technology) của Mỹ, với phần mềm điều khiển EMC (Enhanced Machine Controller) [40, 41] chạy trên nền tảng máy tính PC và hệ điều hành Linux. Phần mềm EMC hiện nay được đổi tên thành LinuxCNC, và đã trở thành một phần mềm nguồn mở, vẫn tiếp tục được phát triển và mở rộng bởi cộng đồng. Sau dự án đầu tiên này, một vài dự án khác cũng đã được thực hiện tại Mỹ, châu Âu và Nhật Bản, trong đó đáng chú ý là các dự án sau [37]: -
OSACA - Open System Architecture for Controls within Automation System (châu Âu); OMAC - Open Modular Architecture Controllers (Mỹ); OSEC - Open System Environment for Controllers (Nhật); JOP - Japanese Open Promotion Group (Nhật).
Các dự án này đã nhận được sự quan tâm, ủng hộ và hỗ trợ từ nhiều nhà sản xuất máy công cụ, các công ty phần mềm và điều khiển, những người tích hợp hệ thống, người dùng và cả giới học thuật. Bên cạnh các dự án kể trên, một số dự án nghiên cứu được thực hiện tại các trường đại học trên thế giới cũng rất đáng chú ý, như dự án ORTS (Open Real-Time Operating System) [24], và dự án Soft-CNC, … Một số hệ thống thương mại hỗ trợ các tiêu chuẩn mở cũng đã được phát triển và giới thiệu, như Delta Tau PMAC-NC, IBH PA 8000, Galil DMC 1000, … Các hệ thống điều khiển mở mang lại rất nhiều cơ hội đối với cả các hãng sản xuất cũng như người sử dụng. Các hãng sản xuất có thể kế thừa các thành phần đã có và phát triển thêm các thành phần mới, và có thể dựa trên cấu trúc mở (bên trong) để điều chỉnh, cập nhật các thay đổi. Người sử dụng có thể dựa trên cấu trúc mở (bên ngoài) để tích hợp thêm các tính năng theo nhu cầu chuyên biệt của mình, hoặc thay đổi giao diện của hệ thống, … Đặc biệt, giới học thuật và nghiên cứu cũng có cơ hội từ các hệ thống điều khiển mở để gắn kết nhiều 76
hơn với công nghiệp, thông qua việc kế thừa các thành phần đã có trong hệ thống và phát triển thêm các tính năng mới theo hướng nghiên cứu chuyên sâu của mình. Sau đó, hệ thống điều khiển mở lại trở thành nền tảng để kiểm chứng khả năng ứng dụng của nghiên cứu, khi đặt các module mới hoạt động trong cùng một hệ thống với các module khác đã được kiểm chứng và đóng gói. Nhìn chung, xu hướng “mở” sẽ tạo ra các hệ thống điều khiển trong tương lai tốt hơn, linh hoạt hơn nhưng với giá thành thấp hơn. 4.2. Hệ điều khiển số có kiến trúc mở - LinuxCNC Phần mềm LinuxCNC ban đầu được phát triển tại Viện quốc gia về tiêu chuẩn và công nghệ Mỹ (NIST) với mục đích tạo ra một nền tảng điều khiển chuyển động để thử nghiệm các khái niệm và công nghệ, kỹ thuật mới. Hiện nay, LinuxCNC trở thành một phần mềm nguồn mở, cho phép mọi người đều có thể tiếp cận và sử dụng [31]. LinuxCNC là một phần mềm điều khiển số cho các máy công cụ, với khả năng điều khiển tối đa 9 trục thông qua tập mã G-code. Phần mềm này hoạt động trên nền tảng máy tính PC và hệ điều hành Linux. Trên Hình 4.2 là cấu trúc cơ bản của hệ điều khiển số sử dụng máy tính PC và phần mềm LinuxCNC. Từ máy tính PC cài đặt hệ điều hành Linux (với phần mở rộng thời gian thực) và phần mềm điều khiển LinuxCNC, tín hiệu điều khiển được đưa tới các thiết bị điều khiển truyền động cho các trục servo thông qua các giao diện tiêu chuẩn của máy tính PC, như giao diện LPT, PCI, PCIE, ISA và Ethernet. Trong đó, giao diện LPT là đơn giản nhất và thường được sử dụng khi mới bắt đầu thử nghiệm phần mềm. Các giao diện USB và RS232 là không thích hợp cho ứng dụng điều khiển số, vì không thỏa mãn yêu cầu về khả năng đáp ứng theo thời gian thực.
Hình 4.2: Cấu trúc cơ bản của hệ điều khiển số sử dụng phần mềm LinuxCNC.
Kiến trúc phần mềm LinuxCNC bao gồm 4 module chính [31, 40, 41]: -
EMCMOT: Module điều khiển chuyển động (Motion controller); EMCIO: Module điều khiển logic (Discrete I/O controller); EMCTASK: Module đồng bộ tác vụ (Task coordinating); GUI: Module giao diện người dùng. 77
Trong các module kể trên, chỉ có EMCMOT là module thời gian thực. Các module còn lại không đòi hỏi phải thực hiện theo thời gian thực, và sử dụng cơ chế gửi thông điệp thông qua ngôn ngữ NML (Neutral Messaging Language) để trao đổi thông tin với nhau. Module EMCMOT trao đổi thông tin với các module khác theo cơ chế sử dụng bộ nhớ đệm dùng chung (shared memory buffer) [40]. Hình 4.3 minh họa kiến trúc module hóa của phần mềm LinuxCNC [40, 41].
Hình 4.3: Kiến trúc module hóa của phần mềm LinuxCNC.
Module EMCMOT: Module EMCMOT được thực hiện theo chu kỳ thời gian thực, với các chức năng cơ bản bao gồm: tính vị trí dụng cụ trong hệ tọa độ Đề-các, giải bài toán động học thuận/ngược (nếu cần) và đưa ra tín hiệu đặt vị trí tới các vòng điều khiển của các trục servo. Quá trình này bao gồm cả việc đo tín hiệu phản hồi vị trí từ các trục máy. Do đòi hỏi phải thực hiện theo thời gian thực, module EMCMOT được viết bằng ngôn ngữ lập trình C, với mục đích đạt được hiệu năng tốt nhất. Hai hàm quan trọng trong module EMCMOT là hàm emcmotCommandHandler() và hàm emcmotController(). 78
Trong đó hàm emcmotCommandHandler() nhận lệnh từ module EMCTASK trong mỗi chu kỳ thông qua bộ nhớ đệm dùng chung. Một số lệnh được xử lý bằng cách cập nhật các biến trạng thái và biến quá trình của EMCMOT. Các lệnh chuyển động bao gồm hai lệnh cơ bản là EMCMOT_SET_LINE (chuyển động thẳng) và EMCMOT_SET_CIRCLE (chuyển động theo cung tròn) được xử lý bằng cách mã hóa thông tin quỹ đạo chuyển động (như, tọa độ điểm đầu, điểm cuối, tốc độ, …) trong cấu trúc TC_STRUCT và đặt vào hàng đợi. Hàm emcmotController() chính là hàm thực hiện chức năng điều khiển chuyển động (motion control). Trong chế độ vận hành tự động (AUTO), hàm emcmotController() thực hiện lần lượt từng lệnh chuyển động đang nằm trong hàng đợi theo nguyên tắc FIFO (First In First Out). Đối với mỗi lệnh chuyển động lấy ra từ hàng đợi, hàm emcmotController() gọi một số hàm khác để tính toán vị trí dụng cụ trong chu kỳ nội suy mới, quan trọng nhất là các hàm sau đây: -
-
-
tpCalculateTrapezoidalAccel(): Tính (và giới hạn) tốc độ và gia tốc theo giới hạn động học của máy dựa trên biểu đồ hình thang. Giới hạn động học của máy được thiết lập trong một file .ini và được nạp vào hệ thống khi bắt đầu khởi động phần mềm. tcUpdateDistFromAccel() và tcGetPos(): Hai hàm này được gọi lần lượt để tính vị trí dụng cụ trong chu kỳ nội suy dựa trên thông tin hình học của quỹ đạo chuyển động và kết quả tính vận tốc, gia tốc từ hàm tpCalculateTrapezoidalAccel(). kinematicsInverse(): Hàm này giải bài toán động học ngược để chuyển kết quả tính vị trí dụng cụ trong hệ tọa độ Đề-các thành vị trí đặt cho các vòng điều khiển của các trục servo. Trong trường hợp máy CNC 3 trục thì hàm này được thực hiện đơn giản vì tọa độ trong không gian Đề-các cũng chính là tọa độ trong không gian khớp.
Module EMCIO: Module EMCIO thực hiện các chức năng điều khiển logic, như điều khiển trục chính, hệ thống thay dao tự động, dung dịch trơn nguội, bôi trơn, chức năng dừng khẩn cấp E-STOP và các chức năng I/O khác mà người dùng có thể định nghĩa. Module EMCTASK: Module EMCTASK có chức năng đồng bộ hóa các tác vụ trong hệ thống. Ngoài ra, EMCTASK còn bao gồm bộ dịch mã G-code. Các lệnh điều khiển máy công cụ được mã hóa dưới dạng mã G và mã M được gửi tới module EMCTASK thông qua dòng lệnh trong chế độ MDI, hoặc thông qua chương trình gia công NC trong chế độ AUTO. Module EMCTASK không đòi hỏi phải thực hiện theo thời gian thực, và được viết bằng ngôn ngữ lập trình C++. Module giao diện GUI: Một số chương trình giao diện người dùng (GUI) khác nhau đã được phát triển cho phần mềm LinuxCNC, bao gồm: keystick, xemc, tkemc, mini và AXIS. Các chương trình này được phát triển thành các module độc lập và cho phép người phát triển hệ thống có thể lựa chọn giao diện thích hợp nhất. Tất cả đều là giao diện đồ họa, ngoại trừ keystick là giao diện kiểu text-based. AXIS là giao diện được sử dụng phổ biến nhất, với tính năng xem trước đường dụng cụ (G-code previewer). Các chương trình giao diện có thể được điều chỉnh hoặc mở rộng với sự hỗ trợ của module pyVCP. Ngoài các module chính kể trên, LinuxCNC còn chuẩn hóa lớp trừu tượng phần cứng (HAL - Hardware Abstraction Layer) nhằm hỗ trợ nhiều hơn cho người dùng trong việc mở 79
rộng và điều chỉnh cấu hình hệ thống. HAL được đặt giữa các module EMCMOT/EMCIO và các driver phần cứng. HAL cho phép các module EMCMOT/EMCIO trao đổi dữ liệu thời gian thực với nhau, cũng như trao đổi dữ liệu với các driver phần cứng hoặc các module phần mềm ở mức thấp khác. HAL cũng là nền tảng hỗ trợ việc phát triển driver cho các phần cứng mới, hoặc các module phần mềm thực thi trong LinuxCNC theo thời gian thực. 4.3. Phát triển phần mềm nội suy biên dạng tự do NURBS theo thời gian thực Trong mục 4.2 đã giới thiệu phần mềm LinuxCNC như một phần mềm điều khiển số tiêu biểu với kiến trúc mở và cho phép người phát triển có nhiều lựa chọn linh hoạt trong việc điều chỉnh giao diện và tính năng của phần mềm để phù hợp với các ứng dụng khác nhau. Ngoài ra, LinuxCNC còn là một phần mềm nguồn mở, cho phép mọi người đều có thể tải về mã nguồn, nghiên cứu các chương trình và thuật toán bên trong, cũng như chỉnh sửa mã nguồn để thử nghiệm các ý tưởng hoặc thuật toán mới. Kiến trúc module hóa của phần mềm LinuxCNC cho phép người phát triển có thể tập trung vào một số module cần quan tâm, liên quan đến lĩnh vực chuyên môn sâu của họ, trong khi kế thừa các module khác. Trong nghiên cứu của mình, NCS đã lựa chọn phần mềm LinuxCNC làm nền tảng để từ đó phát triển và thử nghiệm các thuật toán nội suy biên dạng tự do NURBS theo thời gian thực. NCS đã tiến hành chỉnh sửa mã nguồn để đưa tính năng nội suy NURBS vào trong phần mềm LinuxCNC.
Hình 4.4: Giao diện phần mềm Eclipse được sử dụng để phát triển chức năng nội suy NURBS dựa trên nền tảng LinuxCNC.
Các phần chỉnh sửa mã nguồn tập trung trong hai module là EMCTASK (sử dụng ngôn ngữ lập trình C++) và EMCMOT (sử dụng ngôn ngữ lập trình C). Trong đó, việc chỉnh sửa mã nguồn của module EMCTASK nhằm các mục đích chính như sau: 80
-
Đưa vào chức năng dịch mã lệnh G6.2 theo cú pháp tương tự trên hệ điều khiển Fanuc cho bộ dịch mã G-code; Tiền xử lý đường NURBS; Mã hóa dữ liệu đường NURBS trong các cấu trúc dữ liệu thích hợp để gửi tới module EMCMOT thông qua bộ nhớ đệm dùng chung. Mở rộng khả năng xem trước đường dụng cụ (G-code preview) của phần mềm LinuxCNC để xem trước được các biên dạng đường NURBS mô tả bằng lệnh G6.2.
Việc chỉnh sửa mã nguồn của module EMCMOT nhằm các mục đích sau đây: -
Xây dựng các cấu trúc dữ liệu phục vụ việc biểu diễn các dữ liệu hình học của đường NURBS; Xây dựng các hàm thực hiện các thuật toán xử lý đường NURBS; Chỉnh sửa mã nguồn của một số hàm bên trong module EMCMOT để thực hiện quá trình nội suy các biên dạng đường NURBS theo thời gian thực.
Mã nguồn của phần mềm LinuxCNC cần phải được chỉnh sửa, sau đó phải biên dịch lại để cập nhật chức năng nội suy NURBS theo thời gian thực. Trong môi trường hệ điều hành Linux Ubuntu 12.04, công việc phát triển mã nguồn được thực hiện với công cụ là phần mềm Eclipse, còn việc biên dịch mã nguồn được thực hiện với công cụ make. Trên Hình 4.4 là giao diện phần mềm Eclipse được sử dụng để phát triển chức năng nội suy các biên dạng tự do NURBS theo thời gian thực, dựa trên hệ điều khiển số mã nguồn mở LinuxCNC. Xây dựng các cấu trúc dữ liệu Cấu trúc dữ liệu biểu diễn tọa độ điểm trong không gian Tọa độ điểm trong không gian được biểu diễn thông qua 2 cấu trúc dữ liệu sau đây: typedef struct { double X,Y,Z; }Point3D; typedef struct { double X,Y,Z,W; }Point4D; Trong đó, Point3D là cấu trúc dữ liệu biểu diễn tọa độ điểm trong hệ tọa độ Đề-các, Point4D là cấu trúc biểu diễn tọa độ 3D của điểm kết hợp với giá trị trọng số trong một tọa độ 4D (xem mục 2.1.4). Các cấu trúc dữ liệu này được định nghĩa trong file nurbs.h (Phụ lục 4) và được sử dụng trong cả hai module EMCTASK và EMCMOT. Cấu trúc dữ liệu biểu diễn một đường NURBS Một đường NURBS được xác định từ (n+1) điểm điều khiển, (n+1) trọng số, (m+1) tham số nút và bậc p. Ngoài ra, để phục vụ công việc tính đạo hàm của đường NURBS, có thể tính trước n điểm điều khiển của đạo hàm cấp một và (n-1) điểm điều khiển của đạo hàm cấp hai, và chiều dài của đường NURBS từ bước tiền xử lý. Cuối cùng, một đường NURBS được biểu diễn với cấu trúc nurbs_info_t như sau: 81
typedef struct { Point4D coefs[COEFS_MAX_SIZE]; Point4D dcoefs[COEFS_MAX_SIZE - 1]; Point4D ddcoefs[COEFS_MAX_SIZE - 1]; double knots[KNOTS_MAX_SIZE]; unsigned int number; //number of coefs (ie. n+1) unsigned int order; //p+1 double target; //length of NURBS curve }nurbs_info_t; Trong đó, mảng coefs chứa tọa độ thuần nhất của các điểm điều khiển, mảng dcoefs và ddcoefs lần lượt chứa tọa độ thuần nhất của các điểm điều khiển của đạo hàm cấp một và đạo hàm cấp hai của đường NURBS. Mảng knots chứa vector tham số nút. number là số điểm điều khiển (n+1), order có giá trị bằng (p+1), target là chiều dài đường NURBS. Cấu trúc dữ liệu nurbs_info_t được định nghĩa trong file nurbs.h (Phụ lục 4) và được sử dụng trong cả hai module EMCTASK và EMCMOT. Tổ chức bộ nhớ đệm trên module EMCMOT để chứa dữ liệu đường NURBS Mỗi đường NURBS mà module EMCTASK nhận diện được từ file G-code được gửi tới module EMCMOT trong cấu trúc nurbs_info_t. Trên module EMCMOT cần có bộ nhớ đệm để chứa các dữ liệu này. Trước tiên ta xây dựng cấu trúc hàng đợi để lưu các biến cấu trúc nurbs_info_t như sau: typedef struct { nurbs_info_t *queue; int size; int _len; int start, end; int allFull; } NURBS_QUEUE_STRUCT; Trong cấu trúc NURBS_QUEUE_STRUCT, con trỏ queue sẽ chứa địa chỉ của vùng nhớ đệm được cấp phát cho mục đích lưu dữ liệu các đường NURBS. Vùng nhớ đệm được cấp phát trong vùng nhớ dùng chung giữa EMCMOT và EMCTASK, bằng cách khai báo mảng tĩnh (static array) trong cấu trúc emcmot_debug_t như sau: nurbs_info_t queueNrbSpace[DEFAULT_NURBS_QUEUE_SIZE]; Xây dựng các hàm xử lý mức thấp Các hàm xử lý đường NURBS ở mức thấp được sử dụng bởi module EMCMOT trong quá trình nội suy đường NURBS theo thời gian thực, và được viết bằng ngôn ngữ C. Các hàm này được viết trong một file mã nguồn mới, độc lập với các file mã nguồn của phần mềm LinuxCNC. Cụ thể, các hàm này được đặt trong file mã nguồn mới là nurbs.c, đi cùng với file tiêu đề nurbs.h (Phụ lục 4). 82
Thuật toán cho các hàm xử lý mức thấp được tham khảo từ tài liệu [36]. Để tiện trình bày các thuật toán trong mục này, một số biến được quy ước đặt tên như Bảng 4.1. Bảng 4.1: Quy ước cách đặt tên một số biến được sử dụng bởi các hàm xử lý mức thấp.
Tên biến m n p U[] u k s Pw Cw C PK PKK
Kiểu dữ liệu unsigned int unsigned int unsigned int unsigned int double unsigned int unsigned int Point4D Point4D Point3D Point4D Point4D
Ý nghĩa Số tham số nút là (m+1) Số điểm điều khiển là (n+1) Bậc của đường NURBS Mảng tham số nút Giá trị tham số u(k) <= u < u(k+1) u(k)=u(k-1)=...=u(k-s+1) Tọa độ thuần nhất (4D) của điểm điều khiển Tọa độ thuần nhất của một điểm trên đường NURBS Tọa độ Đề-các của một điểm trên đường NURBS Tọa độ thuần nhất (4D) của điểm điều khiển của đạo hàm cấp một của đường NURBS Tọa độ thuần nhất (4D) của điểm điều khiển của đạo hàm cấp hai của đường NURBS
Hàm nrbFindSpan() -
Dữ liệu vào: n,p,U[],u Dữ liệu ra: k Ý nghĩa: Tính k là chỉ số của khoảng nút chứa giá trị tham số u. Thuật toán được trình bày dưới dạng giả mã như sau: k = nrbFindSpan(n,p,U[],u) { if(u==U[n+1]) { k = n; return; } low = p; high = n+1; k = (low + high) / 2; while((u < U[k]) || (u >= U[k+1])) { if(u < U[k]) high = k; else low = k; k = (low + high) / 2; } return; }
83
Hàm nrbFindSpanMult() -
Dữ liệu vào: n,p,U[],u Dữ liệu ra: k,s Ý nghĩa: Tính k là chỉ số của khoảng nút chứa giá trị tham số u, và s là bội của nút (trong trường hợp giá trị tham số trùng với một nút). Thuật toán được trình bày dưới dạng giả mã như sau: [k,s] = nrbFindSpan(n,p,U[],u) { if(u==U[n+1]){ k = n; s = p; return; } low = p; high = n+1; k = (low + high) / 2; while((u < U[k]) || (u >= U[k+1])){ if(u < U[k]) high = k; else low = k; k = (low + high) / 2; } k = mid; s = 0; while((mid>0) && (u==U[mid])){ s++; mid--; } return; }
Hàm nrb4DCurvePointByCornerCut() -
Dữ liệu vào: n,p,U[],Pw[],u Dữ liệu ra: Cw Ý nghĩa: Tính Cw là tọa độ thuần nhất của một điểm trên đường NURBS theo thuật toán DeBoor, hay còn gọi là thuật toán “cắt góc”. Thuật toán được trình bày dưới dạng giả mã như sau: Cw = nrb4DCurvePointByCornerCut(n,p,U[],Pw[],u) { if(u == U[0]) { Cw = Pw[0]; return; } if(u == U[n+p+1]) { Cw = Pw[n]; return; } 84
[k,s] = nrbFindSpanMult(n,p,U,u); r = p - s; for(i = 0; i <= r; i++) Rw[i] = Pw[k-p+i]; for(j = 1; j <= r; j++) for(i = 0; i <= r-j; i++) { alfa = (u-U[k-p+j+i]) / (U[i+k+1]-U[k-p+j+i]); Rw[i] = alfa*Rw[i+1] + (1.0 - alfa)*Rw[i]; } Cw = Rw[0]; } Hàm nrb4DCurveDerivCpts() -
Dữ liệu vào: n,p,U[],Pw[] Dữ liệu ra: PK[] Ý nghĩa: Tính tọa độ thuần nhất của các điểm điều khiển của đạo hàm đường NURBS Thuật toán được trình bày dưới dạng giả mã như sau: Pk[] = nrb4DCurveDerivCpts(n,p,U[],Pw[]) { for(i = 0; i < n; i++) { PK[i] = p*(Pw[i+1]-Pw[i]) / (U[i+p+1]-U[i+1]); } }
Hàm nrb3DCurveDerivs() -
Dữ liệu vào: n,p,U[],Pw[],PK[],u Dữ liệu ra: C[] Ý nghĩa: Tính C[0] là tọa độ điểm, C[1] là vector đạo hàm của đường NURBS tương ứng với giá trị tham số bằng u. Thuật toán được trình bày dưới dạng giả mã như sau: C[] = nrb3DCurveDerivs(n,p,U[],Pw[],PK[],u) { Cw[0] = nrb4DCurvePointByCornerCut(n,p,U,Pw,u); Cw[1] = nrb4DCurvePointByCornerCut(n-1,p-1,U+1,PK,u); C[0].X = Cw[0].X / Cw[0].W; C[0].Y = Cw[0].Y / Cw[0].W; C[0].Z = Cw[0].Z / Cw[0].W; C[1].X = (Cw[1].X - Cw[1].W * C[0].X) / Cw[0].W; C[1].Y = (Cw[1].Y - Cw[1].W * C[0].Y) / Cw[0].W; C[1].Z = (Cw[1].Z - Cw[1].W * C[0].Z) / Cw[0].W; } 85
Hàm nrb3DCurveDerivs2() -
Dữ liệu vào: n,p,U[],Pw[],PK[],PKK[],u Dữ liệu ra: C[] Ý nghĩa: Tính C[0] là tọa độ điểm, C[1],C[2] là vector đạo hàm cấp một và cấp hai của đường NURBS tương ứng với giá trị tham số bằng u. Thuật toán được trình bày dưới dạng giả mã như sau:
C[] = nrb3DCurveDerivs2(n,p,U[],Pw[],PK[],PKK[],u) { Cw[0] = nrb4DCurvePointByCornerCut(n,p,U,Pw,u); Cw[1] = nrb4DCurvePointByCornerCut(n-1,p-1,U+1,PK,u); Cw[2] = nrb4DCurvePointByCornerCut(n-2,p-2,U+2,PKK,u); C[0].X = Cw[0].X / Cw[0].W; C[0].Y = Cw[0].Y / Cw[0].W; C[0].Z = Cw[0].Z / Cw[0].W; C[1].X = (Cw[1].X - Cw[1].W * C[0].X) / Cw[0].W; C[1].Y = (Cw[1].Y - Cw[1].W * C[0].Y) / Cw[0].W; C[1].Z = (Cw[1].Z - Cw[1].W * C[0].Z) / Cw[0].W; C[2].X=(Cw[2].X-2*Cw[1].W*C[1].X-Cw[2].W*C[0].X)/Cw[0].W; C[2].Y=(Cw[2].Y-2*Cw[1].W*C[1].Y-Cw[2].W*C[0].Y)/Cw[0].W; C[2].Z=(Cw[2].Z-2*Cw[1].W*C[1].Z-Cw[2].W*C[0].Z)/Cw[0].W; } Xây dựng các hàm xử lý mức cao Các hàm xử lý mức cao chủ yếu được sử dụng bởi module EMCTASK, và được viết bằng ngôn ngữ C++. Một số hàm quan trọng nhất như sau: NURBS_FIND_SPAN() - Thuật toán và dữ liệu vào/ra của hàm này tương tự như hàm nrbFindSpan() ở mức thấp. NURBS_FIND_SPAN_MULT() - Thuật toán và dữ liệu vào/ra của hàm này tương tự như hàm nrbFindSpanMult() ở mức thấp. NURBS_POINT_4D_CORNER_CUT() - Thuật toán và dữ liệu vào/ra của hàm này tương tự như hàm nrb4DCurvePointByCornerCut() ở mức thấp. NURBS_DERIV() - Thuật toán và dữ liệu vào/ra của hàm này tương tự như hàm nrb4DCurveDerivCpts() ở mức thấp. NURBS_EVAL() - Tính tọa độ một điểm trên đường NURBS. Hàm NURBS_EVAL() được sử dụng khi cần tính tọa độ điểm trên đường NURBS, phục vụ cho việc hiển thị trước (preview) đường dụng cụ trên phần mềm LinuxCNC. NURBS_DEVAL() - Tính vector đạo hàm cấp một của đường NURBS. Khi xử lý ở mức cao trên module EMCTASK, ta không cần phải tính tới đạo hàm cấp hai của đường NURBS. Việc tính đạo hàm cấp một là để phục vụ cho việc tính xấp xỉ chiều dài trong bước tiền xử lý đường NURBS.
86
NURBS_FEED_REALTIME() - Đây là một hàm rất quan trọng, có nhiệm vụ tập hợp thông tin hình học của đường NURBS. Trước khi kết thúc hàm này, dữ liệu hình học của đường NURBS được vào trong hàng đợi của EMCTASK, và chuẩn bị được gửi tới EMCMOT. Mã nguồn của hàm NURBS_FEED_REALTIME() được đặt trong file emccanon.cc, là một phần mã nguồn của EMCTASK. Ngoài ra, trong LinuxCNC còn có một file khác là gcodemodule.cc, trong đó định nghĩa nhiều hàm trùng tên với các hàm trong emccanon.cc, nhưng được biên dịch thành module độc lập nên không xảy ra xung đột. Có thể coi các hàm trong gcodemodule.cc là một phiên bản khác của các hàm trong emccanon.cc, với chức năng là hiển thị trước đường dụng cụ trên giao diện AXIS, thay vì tương tác với EMCMOT. Để bổ sung tính năng hiển thị trước với các đường dụng cụ là đường NURBS, ta cần phải bổ sung phiên bản thứ hai cho hàm NURBS_FEED_REALTIME() trong gcodemodule.cc. Tuy nhiên phiên bản thứ hai khá đơn giản, chỉ cần tính trước một số điểm trên biên dạng đường NURBS để hiển thị trên giao diện AXIS. Các hàm NURBS_SIMPSON_EST() và NURBS_SIMPSON_ADPT() được xây dựng để thực hiện tính xấp xỉ chiều dài đường NURBS theo phương pháp Simpson thích nghi. Mã lệnh nội suy NURBS: G6.2 Hãng Fanuc trong bằng sáng chế của mình [35] đã đưa ra mã lệnh G6.2 để định nghĩa một đường NURBS trên các hệ thống điều khiển số. Trên Hình 4.5 minh họa cú pháp của lệnh G6.2, với “P” xác định giá trị bậc (order, p + 1); “X”, “Y”, “Z” xác định tọa độ các điểm điều khiển; “R” xác định trọng số của điểm điều khiển; “K” xác định giá trị tham số nút; “F” xác định tốc độ tiến dao. Do mức độ phổ biến của các hệ thống điều khiển số Fanuc, nên mã lệnh G6.2 đã được nhiều người dùng biết đến như là một định dạng mô tả đường NURBS trên các hệ thống điều khiển số.
Hình 4.5: Minh họa cách sử dụng mã lệnh G6.2 để định nghĩa đường NURBS.
Chính vì lý do này, NCS đặt ra mục tiêu sẽ phát triển chức năng phân tích và dịch mã lệnh G6.2 cho phần mềm LinuxCNC. Mục đích là sử dụng mã lệnh G6.2 theo cú pháp đưa 87
ra bởi Fanuc để mã hóa các thông số của đường NURBS (bậc, tọa độ các điểm điều khiển, các trọng số và tham số nút). Sau đó, các thông số này sẽ được tiền xử lý và gửi tới thuật toán nội suy theo thời gian thực (nằm trong module EMCMOT). Vì một đường NURBS được định nghĩa thông qua nhiều giá trị tham số nút và nhiều tọa độ điểm điều khiển, với số lượng không cố định và không biết trước, nên để mô tả một đường NURBS phải sử dụng nhiều dòng lệnh. Trên mỗi dòng lệnh chỉ xác định tọa độ một điểm điều khiển cùng trọng số tương ứng và một giá trị tham số nút. Đối với một đường NURBS, số lượng tham số nút nhiều hơn số điểm điều khiển là (p+1). Do đó, trong chuỗi lệnh mô tả đường NURBS, (p+1) dòng lệnh cuối cùng chỉ có thông tin giá trị tham số nút (mã “K”). Dựa trên đặc điểm này, chương trình dịch mã G6.2 được NCS phát triển bằng ngôn ngữ lập trình C++ và đã được tích hợp thành công vào bộ dịch mã G-code của hệ điều khiển số LinuxCNC. Kết quả phát triển phần mềm nội suy NURBS Dựa trên nền tảng phần mềm nguồn mở LinuxCNC, luận án đã thành công trong việc phát triển thêm chức năng nội suy NURBS, trong khi vẫn kế thừa được toàn bộ các tính năng khác của phần mềm, chẳng hạn như giao diện AXIS và các chức năng nội suy tuyến tính, nội suy cung tròn,... Kết quả là đã phát triển được một phần mềm điều khiển số kiểu PCbased với đầy đủ các tính năng thông dụng, đồng thời có thêm khả năng nội suy các biên dạng tự do NURBS theo thời gian thực. Các tính năng xử lý biên dạng tự do NURBS của phần mềm có thể được tóm tắt lại như sau: -
-
Dịch mã lệnh G6.2 theo cú pháp tương tự trên hệ điều khiển Fanuc để tập hợp đầy đủ các thông số hình học của đường NURBS (bậc, điểm điều khiển, trọng số và tham số nút) và lưu trong các cấu trúc dữ liệu thích hợp; Hiển thị trước biên dạng đường NURBS trên giao diện AXIS của phần mềm LinuxCNC; Tiền xử lý và nội suy các biên dạng tự do NURBS theo thời gian thực.
Các tính năng này sẽ được kiểm chứng và thử nghiệm trong phần sau của luận án. Việc lựa chọn nền tảng mở để nghiên cứu và phát triển tính năng nội suy NURBS là một điểm mới của luận án so với các công trình đã công bố khác. Lý do là các công trình công bố khác thường sử dụng các hệ DSP được thiết kế chuyên biệt cho mục đích thử nghiệm thuật toán nội suy NURBS, mà chưa xem xét tới các vấn đề tích hợp thuật toán trong một hệ điều khiển số hoàn chỉnh. 4.4. Giao diện CAD/CAM cho phần mềm nội suy NURBS Phần mềm Rhinoceros (gọi tắt là Rhino hoặc Rhino3D) là phần mềm mô hình hóa 3D sử dụng phương trình tham số NURBS để biểu diễn các đối tượng hình học. Đây là phần mềm thương mại được phát triển bởi công ty Robert McNeel & Associates (Mỹ). Nhờ khả năng mô hình hóa chính xác các hình dạng phức tạp, Rhino được sử dụng trong rất nhiều các lĩnh vực khác nhau, như thiết kế cơ khí, thiết kế công nghiệp, thiết kế kiến trúc, thiết kế đồ trang sức và đồ nội thất, … Trong môi trường Rhino, các biên dạng đường NURBS có thể được thiết kế và điều chỉnh một cách thuận lợi và chính xác, thông qua giao diện đồ họa hoặc giao diện dòng lệnh. Với lệnh Control Point Curve, ta có thể thiết kế một đường NURBS thông qua xác định 88
tọa độ của các điểm điều khiển (bằng cách sử dụng chuột hoặc nhập chính xác từ dòng lệnh). Bậc của đường NURBS được gán giá trị mặc định là 3, nhưng có thể điều chỉnh được. Các tham số nút được tính bởi thuật toán bên trong phần mềm, nhằm đơn giản hóa công việc thiết kế đường NURBS.
(a)
(b) Hình 4.6: (a) Giao diện phần mềm Rhinoceros; (b) Chương trình viết bằng ngôn ngữ RhinoScript để vẽ biên dạng chữ alpha.
89
Đặc biệt, môi trường Rhino còn hỗ trợ công cụ lập trình RhinoScript, cho phép sử dụng một ngôn ngữ lập trình tương tự như VBScript để tương tác với phần mềm. Trên Hình 4.6(b) là chương trình vẽ biên dạng chữ alpha được nhập vào cửa sổ soạn thảo trong RhinoScript. Trong chương trình ta sử dụng các biến để lưu giữ các thông số của đường NURBS. Cụ thể, biến intDegrree chứa giá trị bậc, biến mảng arrPoints chứa tọa độ các điểm điều khiển, biến mảng arrWeights chứa các giá trị trọng số, biến arrKnots chứa các giá trị tham số nút. Sau khi các biến được gán giá trị thích hợp, lệnh Rhino.AddNurbsCurve() được gọi để vẽ đường NURBS. Kết quả là vẽ được biên dạng chữ alpha trên giao diện phần mềm Rhinoceros như Hình 4.6(a). Như vậy, với công cụ lập trình RhinoScript, các biên dạng đường NURBS phức tạp có thể được thiết kế với các thông số hình học được nhập chính xác thông qua các biến trong chương trình. Khả năng này rất thích hợp để thực hiện các thử nghiệm và tương tác với các biên dạng NURBS trong luận án. Ngoài ra, sau khi nghiên cứu khả năng của công cụ lập trình RhinoScript, NCS đã phát triển được chương trình CreateNurbsCode() để sinh ra file NC sử dụng mã G6.2 từ biên dạng NURBS được thiết kế trên phần mềm Rhinoceros. Mã nguồn của chương trình được trình bày trong phần Phụ lục. Trên Hình 4.7 minh họa cách sử dụng chương trình này: -
Bước 1: Mở chương trình CreateNurbsCode() trong cửa sổ soạn thảo của RhinoScript. Bấm nút chạy như mô tả trên Hình 4.7(b). Bước 2: Trên giao diện dòng lệnh của phần mềm Rhinoceros sẽ xuất hiện lời nhắc chọn đường NURBS (Hình 4.7(a)). Ta dùng chuột để chọn một biên dạng đường NURBS trong cửa sổ phần mềm Rhinoceros, sau đó chọn đường dẫn để lưu file. Kết quả là tạo ra file NC mô tả đường dụng cụ theo mã G6.2.
Hình 4.7: Chương trình CreateNurbsCode() để sinh ra file NC sử dụng mã G6.2.
90
Từ những phần trình bày ở trên, ta thấy rằng có thể sử dụng phần mềm Rhinoceros với công cụ lập trình RhinoScript như một giao diện CAD/CAM cho phần mềm nội suy NURBS đã được phát triển trong mục 4.3. Với các phần mềm và công cụ này, chuỗi tích hợp CAD/CAM/CNC được mô tả tóm tắt như trên Hình 4.8.
Hình 4.8: Giao diện CAD/CAM cho phần mềm nội suy NURBS.
4.5. Kết quả thử nghiệm phần mềm nội suy NURBS Để có thiết bị phục vụ cho các thử nghiệm trong luận án, NCS đã tiến hành phục hồi lại một máy phay CNC mini 3 trục NOVAMILL. Đây là một máy phay CNC phục vụ cho công tác đào tạo tại Bộ môn Gia công vật liệu và Dụng cụ công nghiệp, Viện Cơ khí, Trường Đại học Bách Khoa Hà Nội, nhưng đã cũ và bị hỏng hoàn toàn phần điều khiển. Được sự cho phép và khích lệ của Thầy hướng dẫn và Bộ môn, NCS đã thiết kế lại phần điện và điều khiển cho máy theo hướng sử dụng máy tính PC làm bộ điều khiển trung tâm (giải pháp điều khiển PC-based). Hiện tại, máy phay CNC mini 3 trục NOVAMILL đã được khôi phục hoàn toàn, và đang được đặt tại Phòng thí nghiệm Cơ điện tử của Bộ môn. Hệ thống thiết bị trong thực tế như trên Hình 4.9. Trong đó, máy tính PC sử dụng chip Intel Core 2 Duo 2 x 3.00 GHz, bộ nhớ RAM 4GHz và cài đặt hệ điều hành Linux Ubuntu 12.04. Phần mềm điều khiển số là LinuxCNC, với mã nguồn được chỉnh sửa như đã trình bày trong mục 4.3. Dựa trên hệ thống thiết bị này, NCS đã thực hiện các thử nghiệm nhằm đánh giá khả năng của phương pháp nội suy NURBS trong gia công thực tế một số biên dạng phức tạp.
Hình 4.9: Hệ thống thiết bị được sử dụng để thử nghiệm thuật toán nội suy NURBS.
91
(a) G21 G40 G54 G90 G94 G0 Z20 X39.235 Y37.540 Z2 G1 Z-1 F100 G6.2 X39.235 Y37.540 R1 K0 P5 F100 X39.965 Y37.540 R1 K0 X40.379 Y35.723 R1 K0 X40.882 Y32.379 R1 K0 X50.094 Y36.978 R1 K0 X56.006 Y42.173 R1 K1 X65.179 Y48.298 R1 K2 X76.301 Y45.937 R1 K3 X72.288 Y34.075 R1 K4 X68.088 Y28.737 R1 K5 X66.506 Y21.949 R1 K6 X60.077 Y24.305 R2 K7 X66.162 Y20.526 R1 K8 X64.400 Y14.683 R1 K9 X59.917 Y11.121 R5 K10 X63.087 Y3.478 R3 K11 X58.280 Y6.672 R1 K12 X57.480 Y10.465 R1 K13 X54.773 Y6.136 R1 K14 X50.532 Y9.036 R1 K15 X46.203 Y12.143 R1 K16 X43.195 Y15.928 R1 K17 X40.090 Y26.178 R1 K18 X40.986 Y17.996 R1 K19 X43.031 Y14.276 R1 K20 X39.235 Y10.757 R1 K21 X35.438 Y14.276 R1 K22
X37.483 Y17.996 R1 K23 X38.380 Y26.178 R1 K24 X35.274 Y15.928 R1 K25 X32.266 Y12.143 R1 K26 X27.937 Y9.037 R1 K27 X23.696 Y6.135 R1 K28 X20.989 Y10.465 R1 K29 X20.189 Y6.672 R1 K30 X15.382 Y3.478 R3 K31 X18.553 Y11.122 R5 K32 X14.068 Y14.682 R1 K33 X12.310 Y20.529 R1 K34 X18.387 Y24.300 R2 K35 X11.881 Y21.957 R1 K36 X10.223 Y28.658 R1 K37 X6.241 Y34.134 R1 K38 X2.160 Y45.932 R1 K39 X13.295 Y48.300 R1 K40 X22.462 Y42.172 R1 K41 X28.376 Y36.978 R1 K42 X37.587 Y32.379 R1 K43 X38.091 Y35.722 R1 K44 X38.504 Y37.540 R1 K45 X39.234 Y37.540 R1 K46 K47 K47 K47 K47 K47 G1 Z2 F100 M30
(b) Hình 4.10: (a) Biên dạng cánh bướm được thiết kế trên phần mềm Rhinoceros; (b) Chương trình gia công biên dạng cánh bướm sử dụng mã lệnh G6.2 được tạo ra bởi chương trình CreateNurbsCode().
92
Thử nghiệm 1: Gia công biên dạng phức tạp biểu diễn bằng một đường NURBS Trong thử nghiệm này, biên dạng hình cánh bướm được lựa chọn để gia công theo phương pháp nội suy NURBS.
Hình 4.11: Giao diện AXIS của phần mềm LinuxCNC cho phép xem trước đường dụng cụ được mô tả bằng mã G6.2.
Hình 4.12: Kết quả gia công biên dạng hình cánh bướm theo phương pháp nội suy NURBS.
93
Đây là biên dạng phức tạp, với nhiều vị trí có độ cong lớn, hơn nữa độ cong còn thay đổi đột ngột tại một số điểm. Đặc điểm này gây ra khó khăn cho việc thực hiện chuyển động tạo hình [1–3]. Biên dạng hình cánh bướm được thiết kế trên phần mềm Rhinoceros với các thông số như trong Phụ lục 1, nhưng được thu nhỏ (sử dụng lệnh Scale 2-D) theo tỉ lệ 1:0.72 để phù hợp với kích thước phôi (Hình 4.10(a)). Sau khi thực hiện chương trình CreateNurbsCode() trong RhinoScript, chương trình gia công NC với mã lệnh G6.2 được tạo ra như Hình 4.10(b). Chương trình NC này có thể nạp trực tiếp vào phần mềm LinuxCNC (với mã nguồn đã được chỉnh sửa), giao diện của phần mềm như Hình 4.11. Với chức năng xem trước đường dụng cụ (toolpath preview), ta thấy biên dạng hình cánh bướm đã xuất hiện trên giao diện của phần mềm LinuxCNC. Vật liệu phôi được sử dụng trong thử nghiệm là nhôm 6061. Kết quả đã gia công được biên dạng hình cánh bướm theo phương pháp nội suy NURBS như thể hiện trên Hình 4.12. Một số kết quả so sánh và đánh giá a) So sánh về kích thước chương trình Chương trình gia công NC trên Hình 4.10(b) gồm có 64 dòng lệnh. Để so sánh, NCS sử dụng phần mềm RhinoCAM (một phần mềm CAM chạy trong môi trường Rhinoceros) để xuất file G-code theo phương pháp xấp xỉ. Giao diện phần mềm RhinoCAM khi chạy trong môi trường Rhinoceros như Hình 4.13. Với sai số cho phép (tolerance) là 0.01 (mm) thì chương trình NC được tạo ra gồm có 414 dòng lệnh.
Hình 4.13: Giao diện phần mềm Rhinoceros và RhinoCAM.
94
Nếu sai số cho phép được giảm xuống thành 0.001 (mm) thì kích thước chương trình NC lớn hơn nhiều, gồm có 1330 dòng lệnh. Như vậy, ta thấy được ưu điểm của phương pháp nội suy NURBS trong việc giảm kích thước file G-code nhỏ hơn nhiều so với các file Gcode do phần mềm CAM tạo ra theo phương pháp xấp xỉ. b) So sánh chuyển động tạo hình trong hai phương pháp: nội suy NURBS và nội suy tuyến tính xấp xỉ Với mục đích so sánh, chuyển động tạo hình theo biên dạng hình cánh bướm được thực hiện theo cả hai phương pháp: phương pháp nội suy NURBS và phương pháp nội suy tuyến tính xấp xỉ. Chương trình NC theo phương pháp nội suy NURBS như Hình 4.10(b), và chương trình NC theo phương pháp nội suy tuyến tính xấp xỉ được tạo ra bởi phần mềm RhinoCAM với sai số xấp xỉ là 0.01 (mm). Để có dữ liệu phục vụ cho việc so sánh, NCS đã chỉnh sửa phần mềm LinuxCNC để ghi lại toàn bộ tọa độ của các điểm nội suy do phần mềm tính toán và gửi tới hệ truyền động của các trục máy trong các file text. Nhờ đó, sau khi kết thúc các chương trình gia công NC, ta có thể phân tích dữ liệu trong các file text để so sánh chuyển động tạo hình trong hai phương pháp. Các phần mềm điều khiển số nói chung và LinuxCNC nói riêng thường hỗ trợ hai chế độ phối hợp các chuyển động nội suy liên tiếp, đó là chế độ dừng chính xác (exact stop mode, G61) và chế độ chuyển động trơn (path blending mode, G64). Để thu được chuyển động chính xác được tính toán bởi phần mềm RhinoCAM, ta kích hoạt chế độ chuyển động là dừng chính xác với mã lệnh G61. Đặt tốc độ tiến dao trong chương trình gia công NC là 500 (mm/min). Sau khi ghi lại được tọa độ các điểm nội suy trong cả hai phương pháp vào các file text, ta sử dụng phần mềm Matlab để đọc các tọa độ này và dựa trên đó tái tạo lại các chuyển động nội suy. Trên Hình 4.14 là hình ảnh tái tạo lại chuyển động nội suy trong hai phương pháp, có được bằng cách nối liền các tọa độ đọc ra từ các file text. Các điểm nội suy trong phương pháp nội suy NURBS được nối bằng đường màu xanh, và các điểm nội suy trong phương pháp nội suy tuyến tính xấp xỉ được nối bằng đường màu đỏ. Trên Hình 4.14(a) ta thấy các đường màu xanh và màu đỏ hầu như trùng lên nhau, không phân biệt được. Nhưng khi phóng to ta thu được hình ảnh như Hình 4.14(b). Quan sát hình ảnh phóng to trên Hình 4.14(b) ta có nhận xét rằng chuyển động tạo hình trong phương pháp nội suy NURBS diễn ra trơn hơn so với phương pháp nội suy tuyến tính xấp xỉ. Các đoạn thẳng màu đỏ ở trên Hình 4.14(b) chính là các đoạn thẳng được tính offline trên phần mềm RhinoCAM. Trên Hình 4.15 biểu diễn tốc độ tiến dao trung bình trong từng chu kỳ được tính dựa trên dữ liệu tọa độ các điểm nội suy. Ta thấy rằng, tốc độ tiến dao trong phương pháp nội suy NURBS được giữ tương đối ổn định tại tốc độ lập trình, trong khi tốc độ tiến dao trong phương pháp nội suy tuyến tính xấp xỉ thay đổi liên tục do cơ chế điều khiển tăng tốc, giảm tốc trên mỗi đoạn thẳng xấp xỉ. Vì thế, tốc độ tiến dao trung bình trong phương pháp nội suy tuyến tính nhỏ hơn tốc độ tiến dao trung bình trong phương pháp nội suy NURBS, dẫn tới thời gian gia công theo phương pháp nội suy tuyến tính dài hơn. Cụ thể, thời gian gia công trong phương pháp nội suy NURBS là 31 (s), còn thời gian gia công trong phương pháp nội suy tuyến tính là 46 (s). Sử dụng lệnh đo chiều dài đường NURBS trong phần mềm Rhinoceros ta xác định được biên dạng hình cánh bướm trong thử nghiệm 1 có chiều dài là 257.587 (mm). Từ đó tính được tốc độ tiến dao trung bình trong phương pháp nội suy NURBS là 498.5555 (mm/min), còn trong phương pháp nội suy tuyến tính chỉ là 335.9830 (mm/min), tức là thấp hơn khoảng 32%. 95
Hình 4.14: Tọa độ các điểm nội suy trong phương pháp nội suy NURBS và nội suy tuyến tính xấp xỉ (kết quả thực nghiệm).
Hình 4.15: So sánh tốc độ tiến dao khi nội suy NURBS và nội suy tuyến tính xấp xỉ (kết quả thực nghiệm).
Lặp lại thí nghiệm với các tốc độ tiến dao yêu cầu trong chương trình NC khác nhau và ghi lại thời gian gia công biên dạng hình cánh bướm theo hai phương pháp ta có dữ liệu như trong Bảng 4.2, và được thể hiện dưới dạng đồ thị như Hình 4.16. Quan sát đồ thị trên Hình 4.16 ta thấy đường thời gian khi gia công theo phương pháp nội suy NURBS nằm dưới hoàn toàn so với đường thời gian khi gia công theo phương pháp nội suy tuyến tính. Xu hướng này cho thấy phương pháp nội suy NURBS có thời gian gia công ngắn hơn, tương ứng là 96
năng suất gia công cao hơn (với cùng tốc độ tiến dao yêu cầu trong chương trình NC). Hơn nữa, sự chênh lệch thời gian gia công càng thể hiện rõ khi tốc độ tiến dao yêu cầu trong chương trình NC lớn. Bảng 4.2: Thời gian gia công biên dạng cánh bướm theo phương pháp nội suy NURBS (mã G6.2) và phương pháp nội suy tuyến tính (mã G01).
Phương pháp nội suy
G6.2 G01
100 154 157
Tốc độ tiến dao (mm/min) 200 300 400 77 51 38 83 60 50
500 31 46
Đơn vị thời gian: s
Thời gian (s)
So sánh thời gian gia công biên dạng cánh bướm theo phương pháp nội suy NURBS và nội suy tuyến tính 180 160 140 120 100 80 60 40 20 0
157 154 83 60 77 51 100
50
46
38
31
200 300 400 Tốc độ tiến dao (mm/min)
500
Nội suy NURBS
Nội suy tuyến tính
Hình 4.16: Đồ thị so sánh thời gian gia công biên dạng cánh bướm theo phương pháp nội suy NURBS và nội suy tuyến tính xấp xỉ.
Thử nghiệm 2: Gia công biên dạng phức tạp biểu diễn bằng nhiều đường NURBS Thử nghiệm này nhằm đánh giá khả năng của phần mềm điều khiển số do luận án phát triển trong việc nhận diện nhiều đoạn đường NURBS trong một chương trình NC. Biên dạng cần gia công trong thử nghiệm này bao gồm 6 phần đường NURBS và được thiết kế trên phần mềm Rhinoceros như Hình 4.17. Sau khi xử lý qua chương trình CreateNurbsCode() trong RhinoScripts, chương trình gia công NC với mã lệnh G6.2 được tạo ra và nạp vào phần mềm điều khiển số. Giao diện của phần mềm điều khiển số và kết quả gia công thực tế biên dạng này trên phôi nhôm 6061 được thể hiện trên Hình 4.18. Như vậy, phần mềm điều khiển số được phát triển trong luận án đã thành công trong việc nhận diện đủ tất cả 6 phần đường NURBS được mô tả với lệnh G6.2 trong chương trình NC.
97
Hình 4.17: Biên dạng gia công gồm nhiều đoạn đường NURBS.
(a)
(b) Hình 4.18: Gia công biên dạng phức tạp biểu diễn bằng nhiều đường NURBS: (a) Giao diện của phần mềm điều khiển số; (b) Kết quả gia công.
98
Thử nghiệm 3: Gia công biên dạng đường thân khai Đường thân khai của đường tròn (involute of circle) là dạng đường được sử dụng rộng rãi trong thiết kế cơ khí, đặc biệt là được ứng dụng để tạo biên dạng răng cho các bánh răng thân khai (Hình 4.20). Đường thân khai của đường tròn được định nghĩa như sau: Đường thân khai của đường tròn là quỹ tích của các điểm được tạo ra bởi một điểm trên đường thẳng khi đường thẳng này lăn không trượt trên một đường tròn cố định. Đường tròn cố định gọi là đường tròn cơ sở. Đường thẳng lăn gọi là đường sinh. Nguyên lý hình thành đường thân khai của đường tròn được minh họa trên Hình 4.19. Trong đó, đường thẳng d lăn không trượt trên đường tròn bán kính R có tâm tại gốc tọa độ. Điểm bắt đầu lăn là điểm M 0 . Giả sử lăn được một cung M0 Mc (phần nét đứt) tương ứng với đoạn M c M trên đường thẳng d, thì quỹ đạo của điểm M vạch nên đường cong thân khai
M 0 M . Do đường thẳng lăn không trượt trên đường tròn nên ta có chiều dài đoạn thẳng
M c M bằng với chiều dài cung tròn M0 Mc . Gọi t là góc ở tâm bị chắn bởi cung M0 Mc . Khi đó hệ phương trình tham số của đường thân khai của đường tròn là:
x(t ) R(cos(t ) t sin(t )) y (t ) R(sin(t ) t cos(t ))
(4.1)
Hình 4.20: Cặp bánh răng trụ thân khai
Hình 4.19: Nguyên lý hình thành đường thân khai của đường tròn.
Khi thiết kế các biên dạng thân khai trên các phần mềm CAD thường không có sẵn lệnh vẽ đường thân khai. Một giải pháp để tạo biên dạng thân khai trên các phần mềm CAD là xác định một số điểm trên đường thân khai rồi nối trơn lại bằng đường B-spline. Lưu ý rằng hầu hết các phần mềm CAD hiện nay đều hỗ trợ các lệnh vẽ đường B-spline đi qua một số điểm cho trước. Do đường B-spline cũng là một trường hợp riêng của đường NURBS, nên các biên dạng thân khai được thiết kế thông qua đường B-spline có thể nội suy trực tiếp bằng cách sử dụng chức năng nội suy đường NURBS theo thời gian thực, thay vì phải đưa qua 99
phần mềm CAM để xấp xỉ bằng chuỗi đoạn thẳng. Chính vì thế, mục đích của thử nghiệm 3 là để minh họa khả năng ứng dụng phần mềm nội suy NURBS do luận án phát triển trong việc gia công biên dạng đường thân khai của đường tròn. Hệ phương trình tham số của đường thân khai của đường tròn được sử dụng trong thử nghiệm 3 cụ thể như sau:
x(t ) 3*(cos(t ) t sin(t )) , t [0, 4 ] y (t ) 3*(sin(t ) t cos(t ))
(4.2)
Chia đều khoảng [0, 4 ] thành 50 đoạn ta xác định được 51 giá trị của tham số t, tương ứng với 51 điểm trên đường thân khai. Sử dụng phần mềm Rhinoceros, các điểm trên đường thân khai được nối bằng một đường NURBS bậc 3 như minh họa trên Hình 4.21.
Hình 4.21: Thiết kế biên dạng thân khai bằng công cụ đường NURBS trên phần mềm Rhinoceros.
Sử dụng chương trình CreateNurbsCode(), chương trình gia công NC với mã lệnh G6.2 để biểu diễn đường NURBS được tạo ra như Hình 4.22. Giao diện của phần mềm điều khiển số khi nạp chương trình gia công biên dạng thân khai như Hình 4.23. Kết quả gia công thực tế biên dạng thân khai được thể hiện trên Hình 4.24. Tương tự như trong thử nghiệm 1, ta so sánh thời gian gia công biên dạng thân khai theo phương pháp nội suy NURBS và nội suy tuyến tính. Với một số giá trị tốc độ tiến dao khác nhau được yêu cầu trong chương trình NC ta tập hợp được dữ liệu thời gian gia công như Bảng 4.3, và biểu diễn dưới dạng đồ thị như Hình 4.25. Trên Hình 4.25 ta cũng thấy xu hướng gia tăng sự chênh lệch thời gian gia công giữa hai phương pháp khi tốc độ tiến dao yêu cầu tăng lên. Điều này có thể giải thích là khi tốc độ tiến dao yêu cầu tăng lên thì phương pháp nội suy NURBS có khả năng điều khiển tốc độ tiến dao bám theo yêu cầu tốt hơn so với phương pháp nội suy tuyến tính. Do vậy, khi gia công với tốc độ tiến dao lớn thì sẽ càng 100
thấy rõ ưu điểm của phương pháp nội suy NURBS theo thời gian thực trong việc nâng cao năng suất gia công (nhờ tốc độ tiến dao trung bình được giữ gần như tốc độ yêu cầu trong chương trình NC) và chất lượng bề mặt chi tiết gia công (nhờ tốc độ tiến dao được giữ ổn định, hạn chế sự tăng, giảm liên tục). G21 G40 G54 G90 G94 G0 Z20 X3.000 Y0.000 Z2 G1 Z-1 F100 G6.2 X3.000 Y0.000 R1 K0 P4 F100 X3.004 Y0.000 R1 K0 X3.001 Y0.001 R1 K0 X3.060 Y-0.000 R1 K0 X3.365 Y0.107 R1 K1 X3.781 Y0.411 R1 K2 X4.235 Y0.979 R1 K3 X4.604 Y1.836 R1 K4 X4.767 Y2.965 R1 K5 X4.604 Y4.303 R1 K6 X4.021 Y5.746 R1 K7 X2.959 Y7.152 R1 K8 X1.404 Y8.362 R1 K9 X-0.602 Y9.208 R1 K10 X-2.965 Y9.533 R1 K11 X-5.537 Y9.208 R1 K12 X-8.129 Y8.149 R1 K13 X-10.523 Y6.329 R1 K14 X-12.490 Y3.787 R1 K15 X-13.812 Y0.631 R1 K16 X-14.300 Y-2.965 R1 K17 X-13.812 Y-6.771 R1 K18 X-12.277 Y-10.512 R1 K19 X-9.700 Y-13.893 R1 K20 X-6.171 Y-16.618 R1 K21 X-1.865 Y-18.417 R1 K22 X2.965 Y-19.066 R1 K23
X8.004 Y-18.416 R1 K24 X12.895 Y-16.405 R1 K25 X17.264 Y-13.070 R1 K26 X20.746 Y-8.554 R1 K27 X23.021 Y-3.099 R1 K28 X23.833 Y2.965 R1 K29 X23.020 Y9.238 R1 K30 X20.533 Y15.279 R1 K31 X16.441 Y20.634 R1 K32 X10.937 Y24.874 R1 K33 X4.332 Y27.625 R1 K34 X-2.965 Y28.599 R1 K35 X-10.472 Y27.625 R1 K36 X-17.662 Y24.661 R1 K37 X-24.005 Y19.811 R1 K38 X-29.002 Y13.321 R1 K39 X-32.229 Y5.566 R1 K40 X-33.367 Y-2.965 R1 K41 X-32.225 Y-11.706 R1 K42 X-28.802 Y-20.043 R1 K43 X-23.134 Y-27.384 R1 K44 X-15.883 Y-33.097 R1 K45 X-6.129 Y-36.958 R1 K46 X0.464 Y-37.666 R1 K47 X1.908 Y-37.699 R1 K48 X3.000 Y-37.699 R1 K49 K50 K50 K50 K50 G1 Z2 F100 M30
Hình 4.22: Chương trình gia công biên dạng thân khai sử dụng mã lệnh G6.2 được sinh ra bởi chương trình CreateNurbsCode().
Từ các kết quả trong thử nghiệm 3, ta thấy rằng hoàn toàn có thể ứng dụng phương pháp NURBS nội suy để gia công các biên dạng phức tạp khác trong ngành Cơ khí, như các biên dạng đường Acsimét, đường Cycloid, … Hoặc có thể sử dụng đường NURBS để thiết kế các biên dạng cam phức tạp, sau đó gia công các biên dạng này theo phương pháp nội suy NURBS. Như vậy, với phương pháp nội suy NURBS, ta có thêm một giải pháp mới và hiệu quả cho các bài toán công nghệ đã quen thuộc trong ngành Cơ khí. 101
Hình 4.23: Giao diện AXIS của phần mềm điều khiển số khi nạp chương trình gia công biên dạng thân khai theo phương pháp nội suy NURBS.
Hình 4.24: Kết quả gia công biên dạng thân khai theo phương pháp nội suy NURBS (phôi nhôm 6061). Bảng 4.3: Thời gian gia công biên dạng thân khai theo phương pháp nội suy NURBS (mã G6.2) và phương pháp nội suy tuyến tính (mã G01).
Phương pháp nội suy
G6.2 G01
100 142 147
200 71 83
Tốc độ tiến dao (mm/ph) 300 400 500 600 47 35 28 23 65 59 58 58 Đơn vị thời gian: s
102
So sánh thời gian gia công biên dạng thân khai theo phương pháp nội suy NURBS và nội suy tuyến tính 160
147
140
Thời gian (s)
120
142
100
83
80
65
60
59
58
58
71
40
47 35
20
28
0 100
200
300 400 500 Tốc độ tiến dao (mm/min)
Nội suy NURBS
23 600
Nội suy tuyến tính
Hình 4.25: Đồ thị so sánh thời gian gia công biên dạng thân khai theo phương pháp nội suy NURBS và nội suy tuyến tính xấp xỉ.
Kết luận chương 4 Nội dung chương 4 đã nghiên cứu về hệ thống điều khiển số có kiến trúc mở nói chung, và phần mềm điều khiển số LinuxCNC nói riêng. Phần mềm LinuxCNC có đặc điểm quan trọng là một phần mềm nguồn mở, bên cạnh việc là phần mềm có kiến trúc mở. Là phần mềm nguồn mở, LinuxCNC cho phép mọi người đều có thể tải về, nghiên cứu các chương trình và thuật toán bên trong, đồng thời có thể cài đặt và thử nghiệm các thuật toán điều khiển mới. Do đó, LinuxCNC là cơ hội nghiên cứu các thuật toán thuộc phần lõi điều khiển số, vốn thường được “đóng kín” trên các bộ điều khiển CNC thương mại. Luận án đã sử dụng phần mềm LinuxCNC và phát triển thêm chức năng nội suy các biên dạng tự do NURBS theo thời gian thực. Kết quả là đã tạo ra một phần mềm điều khiển số với đầy đủ các tính năng thông dụng, đồng thời có thêm chức năng nội suy NURBS. Mặc dù là phần mềm nguồn mở, nhưng việc nghiên cứu và làm chủ hệ thống mã nguồn của phần mềm LinuxCNC, phục vụ cho việc chỉnh sửa mã nguồn và thử nghiệm các thuật toán nội suy theo thời gian thực là không hề dễ dàng đối với NCS. Lý do là hệ thống mã nguồn của phần mềm LinuxCNC tương đối phức tạp, với kiến trúc gồm nhiều tầng, lớp liên kết với nhau. Đặc biệt, khi phát triển các thuật toán trong module EMCMOT, môi trường thời gian thực tại đây đưa ra rất nhiều hạn chế đối với việc viết phần mềm, chẳng hạn không cho phép thực hiện cơ chế cấp phát động, không cho phép truy xuất trực tiếp ổ cứng, không sử dụng được các lệnh kết xuất trực tiếp màn hình để hiển thị các thông tin chẩn đoán lỗi (debug) trong chương trình, … Chỉ sau rất nhiều thử nghiệm, NCS mới có thể tích hợp thành công chức năng nội suy NURBS trên nền tảng phần mềm LinuxCNC. 103
Phần mềm LinuxCNC sau khi được chỉnh sửa mã nguồn đã được tích hợp với máy phay Novamill 3 trục phục vụ cho đào tạo, tạo thành một hệ thống CNC 3 trục hoàn chỉnh để thử nghiệm các thuật toán nội suy theo thời gian thực. Dựa trên hệ thống thiết bị này, NCS đã thử nghiệm gia công được một số biên dạng phức tạp theo phương pháp nội suy NURBS và mã G6.2. Các dữ liệu vị trí và tốc độ tiến dao được ghi nhận trong quá trình gia công thực tế đã góp phần làm sáng rõ thêm các ưu điểm của phương pháp nội suy NURBS so với phương pháp nội suy tuyến tính xấp xỉ.
104
KẾT LUẬN VÀ KIẾN NGHỊ KẾT LUẬN Từ các kết quả nghiên cứu của luận án cho phép đi tới những kết luận sau đây: 1. Phương pháp nội suy NURBS có ưu điểm là tạo ra các chuyển động trơn hơn, với tốc độ tiến dao ổn định và gần với tốc độ yêu cầu trong chương trình NC hơn so với phương pháp nội suy tuyến tính xấp xỉ, nhờ đó cải thiện được năng suất và chất lượng bề mặt chi tiết. Hơn nữa, do tính chất tổng quát và khả năng biểu diễn mạnh của phương trình tham số NURBS, nên phương pháp nội suy NURBS có khả năng đáp ứng tốt các đòi hỏi về đường dụng cụ phức tạp trong gia công tạo hình các bề mặt tự do. 2. Luận án đã phân tích và làm rõ yêu cầu phải điều khiển tốc độ tiến dao trong khi thực hiện chuyển động nội suy theo biên dạng tự do NURBS, cũng như các điều kiện ràng buộc và các khó khăn khi điều khiển tốc độ tiến dao. Từ đó đã đề xuất một phương pháp nội suy các biên dạng tự do NURBS theo thời gian thực đảm bảo đồng thời các điều kiện về sai số nội suy và gia tốc tiếp tuyến, gia tốc hướng tâm, cũng như giải quyết được yêu cầu điều khiển tăng tốc/giảm tốc ở đoạn đầu và cuối đường NURBS (thực hiện biểu đồ tốc độ tiến dao “mềm”). Phương pháp được đề xuất trong luận án bao gồm hai bước: bước tiền xử lý đường NURBS (offline) và bước nội suy theo thời gian thực (online). Trong bước tiền xử lý, đường NURBS được phân tích từ điểm đầu tới điểm cuối để xác định các điểm “quan trọng”. Các điểm này chia đường NURBS thành các phân đoạn, với tốc độ tiến dao tại điểm đầu và điểm cuối của từng phân đoạn đã được xác định. Nhờ biết trước thông tin về các điểm “quan trọng” nên thuật toán nội suy theo thời gian thực có thể dẫn dắt tốc độ tiến dao một cách thích hợp trên mỗi phân đoạn. Các kết quả mô phỏng trên phần mềm Matlab đã chứng minh phương pháp đề xuất đảm bảo được các điều kiện đặt ra về sai số nội suy, gia tốc tiếp tuyến và gia tốc hướng tâm, ngay cả trong những trường hợp biên dạng tự do có biểu đồ độ cong rất phức tạp như biên dạng hình cánh bướm (mục 3.9.2). Khái niệm về các điểm “quan trọng” là một đề xuất mới của luận án. Như đã làm rõ trong Chương 3, các điểm “quan trọng” không trùng với các điểm mà độ cong có giá trị lớn nhất cục bộ. 3. Dựa trên nền tảng hệ thống mở LinuxCNC, luận án đã phát triển được một phần mềm điều khiển số kiểu PC-based với đầy đủ các tính năng thông dụng, đồng thời có thêm khả năng nội suy các biên dạng tự do NURBS theo thời gian thực. Các tính năng xử lý biên dạng tự do NURBS của phần mềm được tóm tắt như sau: -
-
Dịch mã lệnh G6.2 theo cú pháp tương tự trên hệ điều khiển Fanuc để tập hợp đầy đủ các thông số hình học của đường NURBS (bậc, điểm điều khiển, trọng số và tham số nút) và lưu trong các cấu trúc dữ liệu thích hợp; Cho phép hiển thị trước biên dạng đường NURBS trên giao diện AXIS của phần mềm LinuxCNC (tính năng toolpath preview); Tiền xử lý và nội suy các biên dạng tự do NURBS theo thời gian thực.
105
Việc lựa chọn nền tảng mở để nghiên cứu và phát triển tính năng nội suy NURBS là một điểm mới của luận án, vì các nghiên cứu khác thường sử dụng các hệ DSP được thiết kế chuyên biệt cho mục đích thử nghiệm thuật toán nội suy NURBS, nên chưa xem xét tới các vấn đề tích hợp thuật toán trong một hệ điều khiển số hoàn chỉnh. Kết quả phát triển phần mềm của luận án đã chứng minh khả năng ứng dụng trong thực tế của phương pháp nội suy các biên dạng tự do NURBS theo thời gian thực. 4. Luận án đã xây dựng được một hệ thống thiết bị để phục vụ cho các thử nghiệm thực tế của phương pháp nội suy NURBS. Hệ thống thiết bị gồm có máy phay CNC mini 3 trục NOVAMILL với phần điện và phần thiết bị điều khiển số được thiết kế lại hoàn toàn theo hướng sử dụng máy tính PC làm bộ điều khiển trung tâm (PC-based). 5. Đã gia công thử nghiệm được một số biên dạng phức tạp theo phương pháp nội suy NURBS, dựa trên hệ thống thiết bị do luận án xây dựng. Các kết quả ghi nhận được trong quá trình gia công thực tế đã làm rõ thêm các ưu điểm của phương pháp nội suy NURBS. Cụ thể, đã làm rõ được các ưu điểm sau đây của phương pháp nội suy NURBS so với phương pháp nội suy tuyến tính xấp xỉ: -
-
Kích thước chương trình gia công NC khi áp dụng phương pháp nội suy NURBS nhỏ hơn rất nhiều so với khi áp dụng phương pháp nội suy tuyến tính xấp xỉ (sử dụng phần mềm CAM, cụ thể là phần mềm RhinoCAM). Khi yêu cầu về sai số cho phép càng khắt khe thì kích thước chương trình gia công NC do phần mềm CAM tạo ra theo phương pháp xấp xỉ tăng lên nhanh chóng, trong khi kích thước chương trình gia công NC theo phương pháp nội suy NURBS không thay đổi. Chuyển động tạo hình trong phương pháp nội suy NURBS diễn ra trơn hơn so với phương pháp nội suy tuyến tính xấp xỉ. Tốc độ tiến dao trung bình trong phương pháp nội suy tuyến tính nhỏ hơn tốc độ tiến dao trung bình trong phương pháp nội suy NURBS, dẫn tới thời gian gia công theo phương pháp nội suy tuyến tính dài hơn. Cụ thể, trong trường hợp gia công thử nghiệm biên dạng hình cánh bướm (Thử nghiệm 1), tốc độ tiến dao trung bình trong phương pháp nội suy tuyến tính nhỏ hơn khoảng 32% so với phương pháp nội suy NURBS.
Kết quả thực hiện Thử nghiệm 3 cũng cho thấy phương pháp nội suy NURBS là một giải pháp mới và hiệu quả để gia công các biên dạng phức tạp trong ngành Cơ khí, như các biên dạng đường thân khai, đường Acsimét, đường Cycloid, … hoặc các biên dạng cam rất đa dạng, phục vụ cho nhiều mục đích khác nhau. KIẾN NGHỊ VỀ NHỮNG NGHIÊN CỨU TIẾP THEO Vấn đề nội suy biên dạng tự do NURBS theo thời gian thực trên các hệ thống điều khiển số là một vấn đề phức tạp, và cần phải được tiếp tục nghiên cứu nhằm hoàn thiện hơn nữa các phương pháp và thuật toán đã được công bố cho tới nay. Từ các nội dung đã nghiên cứu của luận án, NCS xin đề xuất một số hướng nghiên cứu tiếp theo như sau: -
Cần nghiên cứu kỹ lưỡng hơn về các giới hạn động học của máy công cụ và giải pháp đảm bảo các giới hạn này trong thuật toán nội suy NURBS. Chẳng hạn, cần nghiên cứu về ảnh hưởng của đạo hàm của gia tốc (jerk) khi thực hiện chuyển động nội suy theo biên dạng NURBS, … 106
-
Cần có thêm những thử nghiệm mới để làm nổi bật được ưu điểm của phương pháp nội suy NURBS, đặc biệt là khi gia công với tốc độ tiến dao lớn. Cần có những nghiên cứu nhằm đánh giá khả năng ổn định của thuật toán nội suy NURBS. Ngoài ra, cần có thêm những nghiên cứu về các thuật toán sinh đường dụng cụ theo định dạng NURBS, hoặc các thuật toán để hậu xử lý (post-processing) các chương trình gia công do các phần mềm CAM thông dụng hiện nay để tạo ra các chương trình gia công sử dụng định dạng NURBS.
107
TÀI LIỆU THAM KHẢO Tài liệu tham khảo tiếng Việt [1]
Bành Tiến Long, Bùi Ngọc Tuyên (2012) Lý thuyết tạo hình bề mặt và ứng dụng trong kỹ thuật cơ khí. NXB Giáo dục Việt Nam, Hà Nội.
[2]
Bành Tiến Long, Trần Thế Lục, Nguyễn Chí Quang (2006) Lý thuyết tạo hình các bề mặt dụng cụ. NXB Khoa học & Kỹ thuật, Hà Nội.
[3]
Bành Tiến Long, Trần Thế Lục, Trần Sỹ Túy (2013) Nguyên lý gia công vật liệu. NXB Khoa học & Kỹ thuật, Hà Nội.
[4]
Đoàn Thị Minh Trinh, Dương Võ Nhị Anh (2006) Ứng dụng nội suy NURBS bậc 3 xử lý trơn láng đường chạy dao tốc độ cao. Tạp chí Phát triển khoa học và công nghệ - Trường Đại học quốc gia TP Hồ Chí Minh, 9, 25–33.
[5]
Hoàng Việt Hồng (2002) Mô hình hóa quá trình cắt khi phay trên máy phay CNC. Luận án tiến sĩ kỹ thuật.
[6]
Lê Thanh Sơn (1999) Nghiên cứu tạo hình bề mặt thực khi cắt bánh răng côn răng cong và ứng dụng công nghệ CAD/CAM. Luận án tiến sĩ kỹ thuật.
[7]
Nguyễn Đắc Lộc, Tăng Huy (1998) Điều khiển số và công nghệ trên máy điều khiển số CNC. NXB Khoa học & Kỹ thuật, Hà Nội.
[8]
Nguyễn Tiến Tâm (2014) Ứng dụng đường cong NURBS trong tính toán sinh đường dụng cụ gia công bề mặt phức tạp. Luận văn Thạc sĩ (bảo vệ tại Trường Đại học Bách khoa Hà Nội).
[9]
Phạm Văn Bổng (2008) Nghiên cứu chế độ cắt tối ưu khi gia công trên máy tiện CNC. Luận án tiến sĩ kỹ thuật.
[10] Phan Văn Hiếu (2012) Nghiên cứu xác định miền ổn định khi gia công trên máy phay CNC ba trục tốc độ cao. Luận án tiến sĩ kỹ thuật. [11] Trần Văn Địch (2004) Công nghệ CNC. NXB Khoa học & Kỹ thuật, Hà Nội. [12] Trần Văn Khiêm (2011) Nghiên cứu khả năng ứng dụng kỹ thuật điều khiển thích nghi để nâng cao khả năng công nghệ của máy công cụ điều khiển số. Luận án tiến sĩ kỹ thuật. [13] Trần Vệ Quốc, Phạm Thành Long (2004) Điều khiển robot hàn khi gia công các quỹ đạo phức hợp. Tạp chí Khoa học Công nghệ các trường đại học kỹ thuật, 48–49, 211– 215. [14] Trần Xuân Thái (2008) Tính toán đường dụng cụ trong tạo hình bề mặt và nghiên cứu mài mòn dao phay đầu bằng khi gia công khuôn mẫu trên máy phay CNC. Luận án tiến sĩ kỹ thuật. Tài liệu tham khảo tiếng Anh [15] Bedi S, Ali I, Quan N (1993) Advanced Interpolation Techniques for NC Machines. J Eng Ind, 115, 329–336. [16] Cheng C-W, Tsai M-C (2004) Real-time variable feed rate NURBS curve interpolator for CNC machining. Int J Adv Manuf Technol, 23, 865–873. [17] Cheng MY, Tsai MC, Kuo JC (2002) Real-time NURBS command generators for 108
CNC servo controllers. Int J Mach Tools Manuf, 42, 801–813. [18] Choi IH, Yang MY, Hong WP, Jung TS (2005) Curve interpolation with variable feedrate for surface requirement. Int J Adv Manuf Technol, 25, 325–333. [19] Chou J, Yang D (1991) Command generation for three-axis CNC machining. J Eng Ind, 113, 305–310. [20] Du D, Liu Y, Guo X, Yamazaki K, Fujishima M (2010) An accurate adaptive NURBS curve interpolator with real-time flexible acceleration/deceleration control. Robot Comput Integr Manuf, 26, 273–281. [21] Du D, Liu Y, Yan C, Li C (2007) An accurate adaptive parametric curve interpolator for NURBS curve interpolation. Int J Adv Manuf Technol, 32, 999–1008. [22] Emami MM, Arezoo B (2010) A look-ahead command generator with control over trajectory and chord error for NURBS curve with unknown arc length. Comput Des, 42, 625–632. [23] Erkorkmaz K, Altintas Y (2005) Quintic Spline Interpolation With Minimal Feed Fluctuation. J Manuf Sci Eng, 127, 339-349. [24] Erol NA, Altintas Y, Ito MR (2000) Open system architecture modular tool kit for motion and machining process control. IEEE/ASME Trans Mechatronics, 5, 281– 291. [25] Koren Y (1979) Design of Computer Control for Manufacturing Systems. ASME Trans J Eng Ind, 101, 326–332. [26] Koren Y, Lo CC, Shpitalni M (1993) CNC interpolators: algorithms and analysis. Asme Prod Eng Div Publ Ped, Asme, New York, USA, 64, 83–92. [27] Koren Y, Masory O (1981) Reference-pulse circular interpolators for CNC systems. J Eng Ind, 103, 131–136. [28] Lee AC, Lin MT, Pan YR, Lin WY (2011) The feedrate scheduling of NURBS interpolator for CNC machine tools. Comput Des, 43, 612–628. [29] Lei WT, Sung MP, Lin LY, Huang JJ (2007) Fast real-time NURBS path interpolation for CNC machine tools. Int J Mach Tools Manuf, 47, 1530–1541. [30] Leto M, Licari R, Lo Valvo E, Piacentini M (2008) CAD/CAM integration for NURBS path interpolation on PC based real-time numerical control. In: Proc. AMST 2008 Conf. pp 223–233. [31] LinuxCNC (2017) Home page. http://linuxcnc.org/. [32] Liu M, Huang Y, Yin L, Guo J, Shao X, Zhang G (2014) Development and implementation of a NURBS interpolator with smooth feedrate scheduling for CNC machine tools. Int J Mach Tools Manuf, 87, 1–15. [33] Masory O, Koren Y (1982) Reference-word circular interpolators for CNC systems. J Eng Ind, 104, 400–405. [34] Mohan S, Kweon S, Lee D, Yang S (2008) Parametric NURBS curve interpolators: a review. Int J Precis Eng Manuf, 9, 84–92. [35] Otsuki T, Kozai H, Wakinotani Y (1998) Free-form curve interpolation method and apparatus. 109
[36] Piegl L, Tiller W (1996) The NURBS book, 2nd ed. Springer, New York. [37] Pritschow G, Altintas Y, Jovane F, Koren Y, Mitsuishi M, Takata S, van Brussel H, Weck M, Yamazaki K (2001) Open controller architecture–past, present and future. CIRP Ann - Manuf Technol, 50, 463–470. [38] Quarteroni A, Saleri F (2006) Scientific Computing with MATLAB and Octave, 2nd ed. Springer-Verlag Berlin Heidelberg, Berlin. [39] Shpitalni M, Koren Y, Lo CC (1994) Realtime curve interpolators. Comput Des, 26, 832–838. [40] Staroveški T, Brezak D, Udiljak T (2013) LinuxCNC - The enhanced machine controller: Application and an overview. Teh Vjesn, 20, 1103–1110. [41] Staroveški T, Brezak D, Udiljak T, Majetić D (2009) Implementation of a Linuxbased CNC open control system. In: CIM2009. pp 209–216. [42] Suh S-H, Kang SK, Chung D-H, Stroud I (2008) Theory and Design of CNC Systems. Springer, London. [43] Tikhon M, Ko TJ, Lee SH, Sool Kim H (2004) NURBS interpolator for constant material removal rate in open NC machine tools. Int J Mach Tools Manuf, 44, 237– 245. [44] Tsai M-C, Cheng C-W (2003) A Real-Time Predictor-Corrector Interpolator for CNC Machining. J Manuf Sci Eng, 125, 449-460. [45] Tsai M-S, Nien H-W, Yau H-T (2008) Development of an integrated look-ahead dynamics-based NURBS interpolator for high precision machinery. Comput Des, 40, 554–566. [46] Valvo ELO, Drago S, Chimica I, Meccanica I, Scienze V (2014) An Efficient NURBS Path Generator for a Open Source CNC. In: Recent Adv. Mech. Eng. pp 173–180. [47] Wang GZ (2011) The Real-Time Look-Ahead NURBS Curve Interpolation Algorithm. Adv Eng Forum, 2–3, 523–526. [48] Wang J Bin, Yau HT (2014) Universal real-time NURBS interpolator on a PC-based controller. Int J Adv Manuf Technol, 71, 497–507. [49] Xu RZ, Xie L, Li CX, Du DS (2008) Adaptive parametric interpolation scheme with limited acceleration and jerk values for NC machining. Int J Adv Manuf Technol, 36, 343–354. [50] Yau H-T, Kuo M-J (2001) NURBS machining and feed rate adjustment for high-speed cutting of complex sculptured surfaces. Int J Prod Res, 39, 21–41. [51] Yeh SS, Hsu PL (1999) Speed-controlled interpolator for machining parametric curves. Comput Des, 31, 349–357. [52] Yeh SS, Hsu PL (2002) Adaptive-feedrate interpolation for parametric curves with a confined chord error. Comput Des, 34, 229–237. [53] Yong T, Narayanaswami R (2003) A parametric interpolator with confined chord errors, acceleration and deceleration for NC machining. Comput Des, 35, 1249– 1259. [54] Zhiming X, Jincheng C, Zhengjin F (2002) Performance evaluation of a real-time interpolation algorithm for NURBS curves. Int J Adv Manuf Technol, 20, 270–276. 110
DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ CỦA LUẬN ÁN 1. Bành Tiến Long, Nguyễn Hữu Quang (2016) Phương pháp nội suy đường cong NURBS theo thời gian thực trong các hệ thống điều khiển số CNC. Tạp chí Khoa học công nghệ các trường đại học kỹ thuật, số 114, trang 48-53. 2. Nguyễn Hữu Quang, Bành Tiến Long (2016) Phương pháp nội suy NURBS kết hợp chức năng điều khiển tăng tốc, giảm tốc trong các hệ thống CNC. Kỷ yếu Hội nghị Khoa học và Công nghệ toàn quốc về Cơ khí-Động lực 2016, trang 108–113. 3. Nguyễn Hữu Quang, Bành Tiến Long (2016) Một phương pháp giới hạn sai số biên dạng khi nội suy đường NURBS theo thời gian thực trong các hệ thống điều khiển số CNC. Hội thảo quốc gia về Khoa học công nghệ & Vật liệu tiên tiến ứng dụng (STAM2016), 12/2016. 4. Nguyễn Hữu Quang, Bành Tiến Long, Phạm Văn Đông (2017) Phát triển chức năng nội suy đường NURBS theo thời gian thực dựa trên hệ điều khiển CNC kiểu PCbased. Tạp chí Khoa học công nghệ trường Đại học Công nghiệp Hà Nội, số 38, trang 239-243. 5. Nguyễn Hữu Quang, Bành Tiến Long (2017) Nghiên cứu phát triển thuật toán nội suy đường NURBS theo thời gian thực trong các hệ thống CNC 3 trục. Tạp chí Cơ khí Việt Nam, số 1-2 năm 2017, trang 13-16. 6. Nguyen Huu Quang, Banh Tien Long (2017) A method of real-time NURBS interpolation with confined chord error for CNC systems. Tạp chí Khoa học và công nghệ -Viện Hàn lâm khoa học và công nghệ Việt Nam, 55 (5), 650-657.
111
PHỤ LỤC Phụ lục 1: Thông số NURBS của biên dạng hình cánh bướm. Bậc của đường NURBS hình cánh bướm: 4 Số điểm điều khiển: 51 Số tham số nút: 56 Tọa độ các điểm điều khiển (mm): (54.493, 52.139, 0), (55.507, 52.139, 0), (56.082, 49.615, 0), (56.780, 44.971, 0), (69.575, 51.358, 0), (77.786, 58.573, 0), (90.526, 67.081, 0), (105.973, 63.801, 0), (100.400, 47.326, 0), (94.567, 39.913, 0), (92.369, 30.485, 0), (83.440, 33.757, 0), (91.892, 28.509, 0), (89.444, 20.393, 0), (83.218, 15.446, 0), (87.621, 4.830, 0), (80.945, 9.267, 0), (79.834, 14.535, 0), (76.074, 8.522, 0), (70.183, 12.550, 0), (64.171, 16.865, 0), (59.993, 22.122, 0), (55.680, 36.359, 0), (56.925, 24.995, 0), (59.765, 19.828, 0), (54.493, 14.940, 0), (49.220, 19.828, 0), (52.060, 24.994, 0), (53.305, 36.359, 0), (48.992, 22.122, 0), (44.814, 16.865, 0), (38.802, 12.551, 0), (32.911, 8.521, 0), (29.152, 14.535, 0), (28.040, 9.267, 0), (21.364, 4.830, 0), (25.768, 15.447, 0), (19.539, 20.391, 0), (17.097, 28.512, 0), (25.537, 33.750, 0), (16.602, 30.496, 0), (14.199, 39.803, 0), (8.668, 47.408, 0), (3.000, 63.794, 0), (18.465, 67.084, 0), (31.197, 58.572, 0), (39.411, 51.358, 0), (52.204, 44.971, 0), (52.904, 49.614, 0), (53.478, 52.139, 0), (54.492, 52.139, 0) Trọng số của các điểm điều khiển: [1.0, 1.0, 1.0, 1.2, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 1.0, 5.0, 3.0, 1.0, 1.1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.1, 1.0000, 3.0, 5.0, 1.0, 1.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.2, 1.0, 1.0, 1.0] Vector tham số nút: [0, 0, 0, 0, 0.0083, 0.0150, 0.0361, 0.0855, 0.1293, 0.1509, 0.1931, 0.2273, 0.2561, 0.2692, 0.2889, 0.3170, 0.3316, 0.3482, 0.3553, 0.3649, 0.3837, 0.4269, 0.4510, 0.4660, 0.4891, 0.5000, 0.5109, 0.5340, 0.5489, 0.5731, 0.6163, 0.6351, 0.6447, 0.6518, 0.6683, 0.6830, 0.7111, 0.7307, 0.7439, 0.7729, 0.8069, 0.8491, 0.8707, 0.9145, 0.9639, 0.9850, 0.9917, 1, 1, 1, 1]
112
0.2435, 0.4005, 0.5994, 0.7565,
Phụ lục 2: Chương trình mô phỏng trên phần mềm Matlab Chương trình mô phỏng trên phần mềm Matlab sử dụng trong luận án bao gồm hai hàm con chính là pre_process.m và realtime_process.m. Ngoài ra, còn một số hàm con khác hỗ trợ thực hiện các tính toán xử lý biên dạng đường NURBS. Đặc biệt, các tính toán cơ bản đối với đường NURBS dựa trên thư viện NURBS Toolbox được phát triển bởi tác giả Mark Spink và được chia sẻ trên server File Exchange của công ty MathWorks (công ty phát triển phần mềm Matlab). Trong phụ lục này chỉ trình bày mã nguồn của các hàm con pre_process.m và realtime_process.m, với mục đích thể hiện các thuật toán tiền xử lý và nội suy theo thời gian thực các biên dạng tự do NURBS dưới dạng đã cài đặt trên phần mềm Matlab. function mark = pre_process(nrb, Vmax, Amax, emax, T) % Ham pre_proces thuc hien cac tinh toan tien xu ly % nrb : Cau truc du lieu mo ta duong Nurbs % Vmax: Toc do yeu cau trong chuong trinh NC % Amax: Gia tri gioi han gia toc tiep tuyen va gia toc % huong tam % emax: Gia tri gioi han sai so noi suy % T : Chu ky noi suy % mark: Du lieu cua cac diem “quan trong” duoc tinh boi % thuat toan tien xu ly mark.u = nrb.knots(1); mark.V = 0; u = nrb.knots(1); Vold = 0; while u < nrb.knots(end) disp(['u = ', num2str(u)]) [C,C1,C2] = curve_eval(nrb,u); K=vecmag(veccross(C1,C2))/(vecmag(C1)^3); V_chord = 2/T*sqrt(1/K/K - (1/K - emax)*(1/K - emax)); V_acc = sqrt(Amax/K); V = min([Vmax, V_chord, V_acc]); A = (V - Vold)/T; if A < (-Amax) dtg = find_len(nrb, mark(end).u , u); Lmin = (mark(end).V * mark(end).V - V*V)/2/Amax; if dtg >= Lmin %Luu diem mark moi mark(end+1).u = u; mark(end).V = V; else %Over-write diem mark cu mark(end).u = u; mark(end).V = V; end end u = u + V * T / vecmag(C1); Vold = V; end mark(end+1).u = nrb.knots(end);
113
mark(end).V = 0; ue = mark(end).u; Ve = mark(end).V; ind = []; while ue > mark(1).u for i = length(mark):-1:1 if mark(i).u >= ue continue; end dtg = find_len(nrb, mark(i).u, ue); Lmin = (mark(i).V * mark(i).V - Ve * Ve)/2/Amax; if dtg < Lmin ind(end+1)=i; else ue = mark(i).u; Ve = mark(i).V; break; end end mark(ind)=[]; ind = []; end for i = 1:(length(mark)-1) mark(i).S = find_len(nrb, mark(i).u, mark(i+1).u); end mark(end).S=0; end %end pre_process() %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [C,E,V,A,u] = realtime_process(nrb,Vmax,Amax,emax,T,mark) % Ham realtime_process thuc hien cac tinh toan noi suy theo % thoi gian thuc % nrb : Cau truc du lieu mo ta duong Nurbs % Vmax: Toc do yeu cau trong chuong trinh NC % Amax: Gia tri gioi han gia toc tiep tuyen va gia toc % huong tam % emax: Gia tri gioi han sai so noi suy % T : Chu ky noi suy % mark: Du lieu cua cac diem “quan trong” duoc tinh boi % thuat toan tien xu ly % C : Toa do cac diem noi suy % E : Mang gia tri sai so noi suy % V : Mang gia tri toc do tien dao % A : Mang gia tri gia toc tiep tuyen % u : Mang gia tri tham so u duoc tinh boi thuat toan % noi suy theo thoi gian thuc k = 1; u = nrb.knots(1); while u(k) <= nrb.knots(end) disp(['u=',num2str(u(k))]) for num = 1:(length(mark)-1) if (u(k) >= mark(num).u) && (u(k) < mark(num+1).u)
114
dx = find_len(nrb, u(k), mark(num+1).u); Vf = mark(num+1).V; V_la = sqrt(2*Amax*dx + Vf*Vf); break; end end [C(:,k),C1,C2] = curve_eval(nrb,u(k)); K=vecmag(veccross(C1,C2))/(vecmag(C1)^3); V_chord = 2/T*sqrt(1/K/K - (1/K - emax)*(1/K - emax)); V_acc = sqrt(Amax/K); V(k) = min([Vmax, V_la, V_chord, V_acc]); if k==1 A(k) = V(k)/T; else A(k) = (V(k) - V(k-1))/T; end if A(k) > Amax A(k) = Amax; if k==1 V(k) = A(k)*T; else V(k) = V(k-1) + A(k)*T; end elseif A(k) < -Amax A(k) = -Amax; V(k) = V(k-1) + A(k)*T; end if k > 1 && (u(k-1) < u(k)) E(k-1) = find_cerr(nrb, u(k-1), u(k)); end dist = V(k) * T; % Xap xi Taylor bac nhat u(k+1) = u(k) + dist/vecmag(C1); % % % % k end end
Xap xi Taylor bac hai u(k+1) = u(k) + dist/vecmag(C1) + 0.5*A(k)*T*T/vecmag(C1) 0.5*dist*dist*vecdot(C1,C2)/(vecmag(C1)^4); = k+1; %end of while %end of real_process()
115
Phụ lục 3: Chương trình xuất file NC sử dụng định dạng G6.2 để mô tả biên dạng NURBS, được phát triển trong môi trường RhinoScript của phần mềm Rhinoceros. Sub ' ' '
CreateNCCode() This routine export a NC file in G6.2 format from a NURBS curve in Rhinoceros @QuangNH - BKHN - 2017
'Pick a curve object Dim strObject strObject = Rhino.GetObject("Select NURBS", 4) If IsNull(strObject) Then Exit Sub 'Get the curve's control points Dim arrPoints, intCount arrPoints = Rhino.CurvePoints(strObject) intCount = Rhino.CurvePointCount(strObject) If Not IsArray(arrPoints) Then Exit Sub 'Get the curve's weight values Dim arrWeights arrWeights = Rhino.CurveWeights(strObject) If Not IsArray(arrWeights) Then Exit Sub 'Get the curve's knot values Dim arrKnots arrKnots = Rhino.CurveKnots(strObject) If Not IsArray(arrKnots) Then Exit Sub 'Get the curve's degree Dim intDegree intDegree = Rhino.CurveDegree(strObject) 'Prompt the user to specify a file name Dim strFilter, strFileName strFilter = " File NC (*.ngc)|*.ngc|All Files (*.*)|*.*||" strFileName = Rhino.SaveFileName("Save Code NC ", strFilter) If IsNull(strFileName) Then Exit Sub 'Get the file system object Dim objFSO, objStream Set objFSO = CreateObject("Scripting.FileSystemObject") 'Open a text file to write to On Error Resume Next Set objStream = objFSO.CreateTextFile(strFileName, True) If Err Then MsgBox Err.Description Exit Sub End If objStream.WriteLine("G21 G40 G54 G90 G94") objStream.WriteLine("# = 20") objStream.WriteLine("# = 0") objStream.WriteLine("# = [# + 2]")
116
objStream.WriteLine("# = 100") objStream.WriteLine("G0 Z#") 'Write each point as text to the file Dim strPoint, strText, dblWeight, Gcode Gcode=Split(Rhino.Pt2Str(arrPoints(0)),",") objStream.WriteLine("X"+Gcode(0)+" Y"+Gcode(1)) objStream.WriteLine("G1 Z[# + #] F100") objStream.WriteLine("M1") objStream.WriteLine("G6.2 X"+Gcode(0)+" Y"+Gcode(1)+" R" + CStr(arrWeights(0))+" K" + CStr(arrKnots(0))+" P" + CStr(intDegree+1)+"F#") For I =1 To intCount-1 Gcode=Split(Rhino.Pt2Str(arrPoints(I)),",") objStream.WriteLine(" X"+Gcode(0)+" Y"+Gcode(1)+" R"+ CStr(arrWeights(I))+" K" + CStr(arrKnots(I-1))) Next For I = intCount-1 To intCount+intDegree - 1 objStream.WriteLine("K" + CStr(arrKnots(intCount-1))) Next objStream.WriteLine("M1") objStream.WriteLine("G1 Z# F100") objStream.WriteLine("M2") End Sub CreateNCCode
117
Phụ lục 4: Một số cấu trúc dữ liệu và chương trình con được phát triển cho phần mềm nội suy NURBS Trong phần này trình bày một số cấu trúc dữ liệu và chương trình con được phát triển cho phần mềm nội suy NURBS và được đặt trong các file nurbs.h và nurbs.c. Đây là các cấu trúc dữ liệu và các chương trình con thực hiện các thuật toán cơ bản xử lý đường NURBS, và sẽ được sử dụng tại các các vị trí khác nhau trong phần mềm nội suy NURBS. /************************************************************/ /* nurbs.h * Created on: Dec 1, 2016 * Author: quang */ #ifndef NURBS_H_ #define NURBS_H_ #ifdef __cplusplus extern "C" { #endif #define #define #define #define
P_MAX 10 COEFS_MAX_SIZE 100 KNOTS_MAX_SIZE 110 DEFAULT_NURBS_QUEUE_SIZE 10
typedef struct { double X, Y, Z; }Point3D; typedef struct { double X,Y,Z,W; }Point4D; typedef struct { Point4D coefs[COEFS_MAX_SIZE]; Point4D dcoefs[COEFS_MAX_SIZE - 1]; double knots[KNOTS_MAX_SIZE]; //knot unsigned int number; //number of coefs (eg. n+1) unsigned int order; double target; //length of NURBS curve }nurbs_info_t; typedef struct { nurbs_info_t *queue; int size; int _len; int start, end; int allFull; } NURBS_QUEUE_STRUCT; typedef struct{ Point4D unsigned int
*data; size;
118
unsigned int unsigned int }COEFS_BUFFER;
head, tail; allFull;
typedef struct{ double *data; unsigned int size; unsigned int head, tail; unsigned int allFull; }KNOTS_BUFFER; unsigned int nrbFindSpan(unsigned int n, unsigned int p, const double *U, double u); void nrbFindSpanMult(unsigned int n, unsigned int p, const double *U, double u, unsigned int *k, unsigned int *s); void nrbBasisFuns(unsigned int p, const double *U, double u, unsigned int k, double *N); void nrbAllBasisFuns(unsigned int p, const double *U, double u, unsigned int k, double N[][P_MAX]); void nrb4DCurvePoint(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, double u, Point4D *Cw); void nrb4DCurvePointByCornerCut(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, double u, Point4D *Cw); void nrb3DFrom4D(const Point4D *Cw, Point3D *C); void nrb4DCurveDerivCpts(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, Point4D *PK); void nrb3DCurveDerivs(unsigned int n,unsigned int p,const double *U,const Point4D *Pw,const Point4D *PK,double u, Point3D *C); void nrb3DCurveDerivs2(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, const Point4D *PK, const Point4D *PKK, double u, Point3D *C); double vecmag(const Point3D *C); double vecmag2(const Point3D *C); double vecdot(const Point3D *C1, const Point3D *C2); void veccross(const Point3D *C1, const Point3D *C2, Point3D *C); #ifdef __cplusplus } #endif #endif /* NURBS_H_ */ /************************************************************/ /* nurbs.c * Created on: Dec 1, 2016 Author: quang */ #include #include "nurbs.h" #include "rtapi.h" /************************************************************/
119
//Mot so ky hieu duoc su dung: // m: number of knot values minus 1 // n: number of control points minus 1 // p: degree // U: knot vector // u: parametric value for evaluating the curve // N: array (1D or 2D) of non-vanishing basis function values // k: knot span index, u(k) <= u < u(k+1) // s: knot multiplicity, u(k)=u(k-1)=...=u(k-s+1) /************************************************************/ unsigned int nrbFindSpan(unsigned int n, unsigned int p, const double *U, double u) { unsigned int low, high, k; if(u==U[n+1]) return n; low = p; high = n+1; k = (low + high) / 2; while((u < U[k]) || (u >= U[k+1])) { if(u < U[k]) high = k; else low = k; k = (low + high) / 2; } return k; } void nrbFindSpanMult(unsigned int n, unsigned int p, const double *U, double u, unsigned int *k, unsigned int *s) { unsigned int low, high, mid; if(u==U[n+1]) { *k = n; *s = p; return; } low = p; high = n+1; mid = (low + high) / 2; while((u < U[mid]) || (u >= U[mid+1])) { if(u < U[mid]) high = mid; else low = mid; mid = (low + high) / 2; } *k = mid; *s = 0; while((mid>0) && (u==U[mid])) { (*s)++; mid--; } }
120
void nrbBasisFuns(unsigned int p, const double *U, double u, unsigned int k, double *N) { unsigned int j,r; double left[P_MAX], right[P_MAX]; double temp, saved; N[0] = 1.0; for(j=1; j<=p; j++) { left[j] = u - U[k+1-j]; right[j] = U[k+j] - u; saved = 0.0; for(r=0; r<j; r++) { temp = N[r] / (right[r+1] + left[j-r]); N[r] = saved + right[r+1]*temp; saved = left[j-r] * temp; } N[j] = saved; } } void nrbAllBasisFuns(unsigned int p, const double *U, double u, unsigned int k, double N[][P_MAX]) { unsigned int j,r; double left[P_MAX], right[P_MAX]; double temp, saved; N[0][0] = 1.0; for(j=1; j<=p; j++) { left[j] = u - U[k+1-j]; right[j] = U[k+j] - u; saved = 0.0; for(r=0; r<j; r++) { temp = N[j-1][r] / (right[r+1] + left[j-r]); N[j][r] = saved + right[r+1] * temp; saved = left[j-r] * temp; } N[j][j] = saved; } } void nrb4DCurvePoint(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, double u, Point4D *Cw) { unsigned int j, k; double N[P_MAX]; k = nrbFindSpan(n,p,U,u); nrbBasisFuns(p,U,u,k,N); for(j=0; j <= p; j++) { Cw->X += N[j] * Pw[k-p+j].X;
121
Cw->Y += N[j] * Pw[k-p+j].Y; Cw->Z += N[j] * Pw[k-p+j].Z; Cw->W += N[j] * Pw[k-p+j].W; } } void nrb4DCurvePointByCornerCut(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, double u, Point4D *Cw) { unsigned int k,s,r; unsigned int i,j; Point4D Rw[P_MAX]; double alpha; if(u==U[0]) { Cw->X = Pw[0].X; Cw->Y = Pw[0].Y; Cw->Z = Pw[0].Z; Cw->W = Pw[0].W; return; } else if(u==U[n+p+1]) { Cw->X = Pw[n].X; Cw->Y = Pw[n].Y; Cw->Z = Pw[n].Z; Cw->W = Pw[n].W; return; } nrbFindSpanMult(n,p,U,u,&k,&s); r = p - s; if(r == 0) { Cw->X = Cw->Y = Cw->Z = Cw->W = return;
Pw[k-p].X; Pw[k-p].Y; Pw[k-p].Z; Pw[k-p].W;
} for(i=0; i<=r-1; i++) { alpha = (u - U[k-p+1+i]) / (U[i+k+1] - U[k-p+1+i]); Rw[i].X = alpha * Pw[k-p+i+1].X + (1-alpha) * Pw[k-p+i].X; Rw[i].Y = alpha * Pw[k-p+i+1].Y + (1-alpha) * Pw[k-p+i].Y; Rw[i].Z = alpha * Pw[k-p+i+1].Z + (1-alpha) * Pw[k-p+i].Z; Rw[i].W = alpha * Pw[k-p+i+1].W + (1-alpha) * Pw[k-p+i].W; } for(j=2; j<=r; j++) for(i=0; i<=r-j; i++) { alpha = (u - U[k-p+j+i]) / (U[i+k+1] - U[k-p+j+i]); Rw[i].X = alpha * Rw[i+1].X + (1-alpha) * Rw[i].X;
122
Rw[i].Y = alpha * Rw[i+1].Y + (1-alpha) * Rw[i].Y; Rw[i].Z = alpha * Rw[i+1].Z + (1-alpha) * Rw[i].Z; Rw[i].W = alpha * Rw[i+1].W + (1-alpha) * Rw[i].W; } Cw->X = Rw[0].X; Cw->Y = Rw[0].Y; Cw->Z = Rw[0].Z; Cw->W = Rw[0].W; return; } void nrb3DFrom4D(const { if(Cw->W == 0) { return; } else { C->X = Cw->X / C->Y = Cw->Y / C->Z = Cw->Z / } }
Point4D *Cw, Point3D *C)
Cw->W; Cw->W; Cw->W;
void nrb4DCurveDerivCpts(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, Point4D *PK) { unsigned int i; for(i = 0; i < n; i++) { PK[i].X = p * (Pw[i+1].X - Pw[i].X) / (U[i+p+1] - U[i+1]); PK[i].Y = p * (Pw[i+1].Y - Pw[i].Y) / (U[i+p+1] - U[i+1]); PK[i].Z = p * (Pw[i+1].Z - Pw[i].Z) / (U[i+p+1] - U[i+1]); PK[i].W = p * (Pw[i+1].W - Pw[i].W) / (U[i+p+1] - U[i+1]); } } void nrb3DCurveDerivs(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, const Point4D *PK, double u, Point3D *C) { Point4D Cw[2] = {{0,0,0,0}, {0,0,0,0}}; nrb4DCurvePointByCornerCut(n,p,U,Pw,u,&Cw[0]); nrb4DCurvePointByCornerCut(n-1,p-1,U+1,PK,u,&Cw[1]); C[0].X = Cw[0].X / Cw[0].W; C[0].Y = Cw[0].Y / Cw[0].W; C[0].Z = Cw[0].Z / Cw[0].W; C[1].X = (Cw[1].X - Cw[1].W * C[0].X) / Cw[0].W; C[1].Y = (Cw[1].Y - Cw[1].W * C[0].Y) / Cw[0].W; C[1].Z = (Cw[1].Z - Cw[1].W * C[0].Z) / Cw[0].W; }
123
void nrb3DCurveDerivs2(unsigned int n, unsigned int p, const double *U, const Point4D *Pw, const Point4D *PK, const Point4D *PKK, double u, Point3D *C) { Point4D Cw[3] = {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}}; nrb4DCurvePointByCornerCut(n,p,U,Pw,u,&Cw[0]); nrb4DCurvePointByCornerCut(n-1,p-1,U+1,PK,u,&Cw[1]); nrb4DCurvePointByCornerCut(n-2,p-2,U+2,PKK,u,&Cw[2]); C[0].X = Cw[0].X / Cw[0].W; C[0].Y = Cw[0].Y / Cw[0].W; C[0].Z = Cw[0].Z / Cw[0].W; C[1].X = (Cw[1].X - Cw[1].W * C[0].X) / Cw[0].W; C[1].Y = (Cw[1].Y - Cw[1].W * C[0].Y) / Cw[0].W; C[1].Z = (Cw[1].Z - Cw[1].W * C[0].Z) / Cw[0].W; C[2].X = (Cw[2].X - 2 * Cw[1].W * C[1].X - Cw[2].W * C[0].X) / Cw[0].W; C[2].Y = (Cw[2].Y - 2 * Cw[1].W * C[1].Y - Cw[2].W * C[0].Y) / Cw[0].W; C[2].Z = (Cw[2].Z - 2 * Cw[1].W * C[1].Z - Cw[2].W * C[0].Z) / Cw[0].W; } double vecmag(const Point3D *C) { return sqrt(C->X * C->X + C->Y * C->Y + C->Z * C->Z); } double vecmag2(const Point3D *C) { return (C->X * C->X + C->Y * C->Y + C->Z * C->Z); } double vecdot(const Point3D *C1, const Point3D *C2) { return (C1->X * C2->X + C1->Y * C2->Y + C1->Z * C2->Z); } void veccross(const Point3D *C1, { C->X = C1->Y * C2->Z - C1->Z C->Y = C1->Z * C2->X - C1->X C->Z = C1->X * C2->Y - C1->Y }
const Point3D *C2, Point3D *C) * C2->Y; * C2->Z; * C2->X;
124