Trước đây, các robot công nghiệp chỉ thực hiện được một số công việc đơn giản như: sơn, di chuyển vật liệu, hàn,… Ngày nay, người ta đã có thể sử dụng robot trong các công việc đòi hỏi đ
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Cán bộ hướng dẫn khoa học : TS Lê Ngọc Minh
Trang 3LỜI CẢM ƠN
Tôi xin chân thành cảm ơn thầy Lê Ngọc Minh đã tận tình hướng dẫn tôi hoàn thành đề tài
này Ngoài ra, tôi cũng xin cảm ơn các thầy phản biện, các thầy cô trong khoa Công nghệ
thông tin và bạn bè đồng nghiệp về mọi sự giúp đỡ, đóng góp ý kiến trong giai đoạn hiện thực
luận văn của mình Đặc biệt, con xin cảm ơn bố Đôn và mẹ Mai đã luôn bên con trong những
lúc khó khăn nhất
Trang 4TÓM TẮT
Mô hình hóa và mô phỏng đóng vai trò rất quan trọng trong việc phát triển các hệ thống công
nghiệp hiện nay Hiện nay, chúng ta có các framework chuyên biệt dùng trong mô phỏng, mô
hình và thiết kế như Simulink của MathWorks, LabView của National Intruments và Signal
Processing Worksystem (SPW) của Cadence, Tất cả các framework này đều thuộc loại
framework hướng tác tử Các framework hướng tác tử có các thành phần là các đối tượng
đồng thời tương tác với nhau thông qua việc truyền nhận thông điệp Chúng có một mô hình
tính toán cố đinh để quản lý sự tương tác giữa các thành phần đồng thời với nhau Tuy nhiên,
các framework này khó có thể được sử dụng để mô hình các hệ thống điều khiển phức tạp vì
hầu hết các hệ thống này đều là hệ thống bất đồng nhất (dựa trên các mô hình tính toán khác
nhau) Để giải quyết vấn đề này, nhóm nghiên cứu Pteam của giáo sư E.A Lee đã vận dụng
khái niệm bất đồng nhất phân cấp để hiện thực một framework mới có tên là Ptolemy Trong
luận văn này, chúng tôi sẽ thay đổi framework này để thiết kế và mô hình các hệ thống robot
bởi vì các hệ thống này thực sự là các hệ thống lai, có các mô hình tính toán khác nhau Các
chuyển động vật lý thường thích hợp với mô hình thời gian liên tục trong khi bộ điều khiển lại
thích hợp với mô hình sự kiện rời rạc Ngoài ra, chúng tôi cũng sẽ sử dụng framework mới
này để thiết kế hệ thống robot hai liên kết nhằm đánh giá kết quả của đề tài
Trang 5Simulation and modeling play a very important role in developing industrial systems
nowadays There are many concurrent, domain-specific frameworks for simulation, modeling
and design such as Simulink from MathWorks, LabView from National Instruments, and
Signal Processing Worksystem (SPW) from Cadence… All of them are classified as
actor-oriented framework where components are concurrent objects that communicate via
messaging, and define a fixed model of computation to manage the interaction among their
concurrent components However, these frameworks hardly model complex control systems
because most of them are heterogeneous (based on many different models of computation) To
solve this problem, a PTeam group (EECS department - University of California, Berkeley)
leaded by E.A Lee make use hierarchical heterogeneity concept and implemented it in their
framework called Ptolemy In this work, I branched this framework to design and model
control systems in robot because these control systems are really hybrid systems with different
models of computation Most physical movements, forces, torques, for example, are
represented by differentiate equations which are very suitable for continuous time model
while their computer-based controllers use discrete event model In addition, I used this
branched framework to design control system for the two-link manipulator to evaluate my
work
Trang 6MỤC LỤC
DANH MỤC HÌNH 3
1 ĐẶT VẤN ĐỀ 5
2 CÁC NGHIÊN CỨU LIÊN QUAN 6
2.1 Matlab 6
2.1.1 Simulink 7
2.1.2 SimMechanics 9
2.1.3 Hộp công cụ Robotics trong Matlab 15
2.2 Modelica 20
2.2.1 Các đặc trưng của ngôn ngữ Modelica 21
2.2.2 Các thư viện của Modelica 26
2.2.3 Các môi trường mô phỏng của Modelica 27
2.3 RoboWorks 29
2.4 Dự án Ptolemy 30
2.4.1 Gabriel (1986-1991) 31
2.4.2 Ptolemy classic (1990-1997) 31
2.4.3 Ptolemy II (1996-?) 32
2.4.4 Một số hệ thống ứng dụng thực tế của phần mềm Ptolemy II 32
3 PHÂN TÍCH ĐỀ TÀI 34
4 CÁC KIẾN THỨC CƠ BẢN 37
4.1 Các kiến thức cơ bản trong robotics 37
4.1.1 Các ký hiệu sử dụng 37
4.1.2 Động học (Kinematics) 37
4.1.3 Động lực học (Dynamics) 40
4.1.4 Phương trình không gian trạng thái (state space equation) 43
4.1.5 Mô phỏng động lực học 44
4.1.6 Điều khiển trong Robotics 45
4.1.7 Bộ sinh chuyển động 51
4.1.8 Bộ cảm biến 52
4.2 Môi trường Ptolemy II 53
4.2.1 Thiết kế dựa trên platform và thiết kế dựa trên mô hình 53
Trang 74.2.2 Thiết kế hướng tác tử (actor-oriented design) 58
4.2.3 Ngôn ngữ hướng tác tử (actor-oriented languages) 62
4.2.4 Thiết kế hệ thống điều khiển hướng tác tử (AO control system design) 64
4.3 Công cụ tính toán Maple 67
5 THIẾT KẾ HỆ THỐNG 67
5.1 Các gói 68
5.2 Các tác tử và director chính 69
5.3 Các vấn đề cần lưu ý trong giai đoạn thiết kế 70
6 HIỆN THỰC HỆ THỐNG 71
6.1 Môi trường lập trình 71
6.2 Làm việc với Ptolemy II 72
6.2.1 Thêm một miền (domain) hay tác tử mới vào Ptolemy II 72
6.2.2 Tác tử trong Ptolemy II 73
6.2.3 Các chuẩn lập trình trong Ptolemy II 76
6.3 Các lớp và tác tử đã thực hiện 79
7 THỬ NGHIỆM VÀ ĐÁNH GIÁ 86
7.1 Thử nghiệm 87
7.2 Đánh giá 91
8 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 92
8.1 Kết luận 92
8.2 Hướng phát triển 95
9 TÀI LIỆU THAM KHẢO 95
10 PHỤ LỤC 98
10.1 Các thử nghiệm khác 98
10.2 Bài báo đã đăng Error! Bookmark not defined
Trang 8DANH MỤC HÌNH
Hình 1 Thư viện SimMechanics trong Simulink Library Browser 12
Hình 2 Thư viện SimMechanics (dạng khác) 13
Hình 3 Mô hình con lắc đơn và đôi trong SimMechanics 14
Hình 4 Các công cụ có trong Robotics Toolbox for Matlab 16
Hình 5 Biểu diễn của robot Puma 560 trong Robotics Toolbox for Matlab [11] 18
Hình 6 Các lệnh để tạo các đối tượng liên kết trong Matlab 19
Hình 7 Các sơ đồ trong các miền khác nhau trong Modelica [31] 21
Hình 8 Hệ thống điều khiển mô tơ đơn giản trong Modelica [31] 22
Hình 9 Sơ đồ kết hợp của lớp mô hình Motor [31] 23
Hình 10 Ví dụ về một mô hình thiết kế bằng RoboWorks 30
Hình 11 Ptolemy II framework 32
Hình 12 Mô hình mạng cảm biến [33] 33
Hình 13 Bên trong của tác tử Initiator [33] 33
Hình 14 Ứng dụng thực tế của mạng cảm biến [33] 34
Hình 15 ROADNet: Real-time Observatories, Applications, and Data management Network [33] 34
Hình 16 Sự khác biệt giữa hai dạng biểu diễn Denavit-Hartenberg 39
Hình 17 So sánh các chi phí tính toán khi tính inverse dynamics bằng các phương pháp khác nhau [11] 41
Hình 18 Sơ đồ khối trừu tượng của một hệ thống điều khiển robot 46
Hình 19 AC servo-motors 52
Hình 20 Mô hình điều khiển dùng bộ sinh chuyển động và bộ cảm biến 53
Hình 21 Mô hình Actor-oriented [8] 57
Hình 22 Sự khác nhau giữa hướng mô hình và hướng tác tử [32] 63
Hình 23 Một qui trình thiết kế hệ thống điều khiển kinh điển [24] 65
Hình 24 Qui trình thiết kế mới [24] 66
Hình 26 Miền Robotics trong Ptolemy II 73
Hình 27 Cấu trúc tiêu biểu của một tác tử 75
Hình 28 Một file mã nguồn java theo chuẩn 78
Hình 29 Giải phương trình vi phân sử dụng DynCT Director và các tác tử phát triển bởi đề tài 79
Hình 30 Giải phương trình vi phân sử dụng CT Director và các tác tử có sẵn trong Ptolemy .80
Hình 31 Kết quả khi giải một phương trình vi phân đơn giản 80
Hình 32 Cấp ngoài cùng của mô hình robot hai liên kết 87
Hình 33 Bên trong khối Controller 89
Hình 34 Bên trong khối HostCompter 89
Hình 35 Bên trong khối interpolator 90
Hình 36 Bên trong khối mô phỏng robot 91
Hình 37 Bên trong khối 3DRobotViewer 91
Hình 38 Tạo robot hai liên kết trong Ptolemy II 99
Hình 39 Các tham số của liên kết 99
Hình 40 Một số tác tử biến đổi 100
Hình 41 Tính ma trận động học dạng số 100
Trang 9Hình 42 Tính ma trận động học dạng ký hiệu 101
Hình 43 Tính lực quay dạng số của các khớp khi biết các chuyển động (phương trình động
lực học) 101
Hình 44 Giải phương trình động lực học bằng phương pháp Euler trong [2] 103
Hình 45 Mô hình sử dụng phương trình động lực học để mô phỏng chuyển động của robot
103
Trang 101 ĐẶT VẤN ĐỀ
Các nghiên cứu về robot chủ yếu tập trung vào việc sử dụng các thành phần cơ khí,
cảm biến (sensors), các thiết bị cơ khí dùng để di chuyển hay điều khiển một vật thể nào
đó (actuator) và máy tính để tạo ra các thiết bị có chức năng giống như một số chức năng
của con người Điều này đòi hỏi các kiến thức từ nhiều lĩnh vực cơ bản khác nhau Các
kiến thức về lĩnh vực cơ khí sẽ cung cấp các phương pháp luận dùng để nghiên cứu các
thiết bị máy móc ở trạng thái tĩnh hoặc động Kiến thức về lĩnh vực toán học sẽ cung cấp
các công cụ để mô tả các chuyển động trong không gian và các thuộc tính khác của các tay
máy Lý thuyết điều khiển sẽ cung cấp các công cụ dùng trong việc thiết kế và đánh giá các
giải thuật để đạt được các chuyển động hoặc lực tác động như mong muốn Các kỹ thuật
trong lĩnh vực điện tử thì sẽ được dùng để thiết kế các cảm biến và các giao diện của các
robot công nghiệp (industrial robots) Cuối cùng, kiến thức trong lĩnh vực khoa học máy
tính sẽ đóng góp vào việc lập trình các thiết bị này để hoàn thành các nhiệm vụ đặt ra Ở
mức độ trừu tượng tương đối cao, robotic được chia làm bốn lĩnh vực chính: cơ khí, động
học, thị giác máy tính (computer vision) và trí tuệ nhân tạo
Trước đây, để tạo ra được một hệ thống robot đáp ứng được một cách tương đối
các yêu cầu thực tế trong công nghiệp, chúng ta phải đầu tư rất nhiều thời gian, tài chính
cũng như nhân lực Chúng ta phải tạo ra nhiều mẫu thử nghiệm (prototype) trước khi đi
đến một sản phẩm hoàn chỉnh Ngày nay, với sự trợ giúp của máy tính (các hệ thống CAD
– Computer Aided Design, CAM – Computer Aided Manufacturing) chúng ta có thể tiết
kiệm được phần lớn các tài nguyên này Chúng ta có thể dùng máy tính để thiết kế, tính
toán, mô hình hóa, mô phỏng và kiểm tra các hệ thống robot trước khi thật sự hiện thực hệ
thống Điều này cũng giúp mở rộng thêm khả năng của hệ thống robot (cho phép các hệ
thống này có được các khả năng phức tạp và chính xác hơn) Trước đây, các robot công
nghiệp chỉ thực hiện được một số công việc đơn giản như: sơn, di chuyển vật liệu, hàn,…
Ngày nay, người ta đã có thể sử dụng robot trong các công việc đòi hỏi độ chính xác cao
và phức tạp hơn như lắp ráp các thiết bị điện tử, ô tô, máy móc…
Đề tài này sẽ phát triển một số công cụ dùng để mô hình và thiết kế các hệ thống
robot Vậy hiện nay đang có các công cụ mô phỏng robot nào? Đề tài tạo từ đầu toàn bộ hệ
thống hay phát triển trên một môi trường có sẵn? Nếu phát triển trên môi trường có sẵn thì
Trang 11chọn môi trường nào? Mối liên hệ giữa môi trường đó với các hệ thống điều khiển của
robot? Các câu hỏi này sẽ được giải quyết trong các phần tiếp theo: các nghiên cứu liên
quan và phân tích đề tài
Hiện nay, có một số công cụ đã được phát triển để mô hình hóa và mô phỏng các
hệ thống tổng quát (không riêng gì lĩnh vực robotics) như Simulink (Mathworks),
LabVIEW, Modelica, Ptolemy II,… Ngoài các công cụ tổng quát này còn có các công cụ
chuyên dùng để mô hình và mô phỏng cho các hệ thống robot như chương trình
RoboWorks được phát triển bởi Chetan Kapoor (người sáng lập ra công ty Newtonium);
BugWorks 2D Robot Simulator; Camelot-Robot Offline Programming and Simulation
Software; Mobile Robot Simulators… Trong phần này chúng ta sẽ đề cập đến các công cụ
thiết kế, mô hình robot tiêu biểu đang được sử dụng phổ biến là SimMechanics, hộp công
cụ Robotics trong Matlab (Robotics Toolbox for Matlab), Modelica và Roboworks Tuy
nhiên, do có một số công cụ được xây dựng trên nền một hệ thống khác nên chúng ta phải
tìm hiểu sơ qua về hệ thống nền trước khi tìm hiểu bản thân các công cụ đó Ví dụ hộp
công cụ Robotics trong Matlab và SimMechanics được phát triển trên nền Matlab và
Simulink nên trước khi trình bày về chúng, chúng ta sẽ tìm hiểu về Matlab và Simulink
trước
2.1 Matlab
Matlab là gì? Matlab là một ngôn ngữ có tính biễu diễn cao chuyên dùng cho các
vấn đề tính toán kỹ thuật Nó tích hợp việc tính toán, biễu diễn trực quan (visualization), và
việc lập trình trong một môi trường thân thiện, dễ dùng Trong môi trường này, các bài
toán và lời giải đều được diễn đạt bằng các ký hiệu toán học quen thuộc Matlab thường
được dùng trong lĩnh vực toán học, lĩnh vực phát triển các giải thuật, thu thập thông tin,
mô hình hóa, mô phỏng và tạo mẫu (prototyping), phân tích dữ liệu, các ứng dụng đồ họa
khoa học kỹ thuật,
Matlab là một hệ thống tương tác có thành phần dữ liệu cơ bản là một dãy có kích
thước không bắt buộc phải xác định do đó nó cho phép chúng ta giải quyết được các bài
toán tính toán kỹ thuật đặc biệt là các bài toán vector hay ma trận
Trang 12Matlab là viết tắt của hai từ Matrix laboratory Trước đây Matlab được phát triển
chỉ để tạo được sự dễ dàng khi truy xuất các phần mềm về ma trận trong hai dự án
LINPACK và EISPACK Ngày nay, công cụ Matlab đã được tổng hợp trong nó các phần
mềm chuyên dùng để tính toán ma trận như hệ thống thư viện LAPACK và BLAS
Matlab đã phát triển được nhiều năm và được sử dụng bởi rất nhiều người Trong
môi trường đại học, công cụ Matlab được dùng rất phổ biến trong việc giảng dạy các môn
toán, kỹ thuật và khoa học cơ bản cũng như nâng cao Trong lĩnh vực công nghiệp, Matlab
được dùng trong các nghiên cứu, phân tích và phát triển nhằm tạo ra các hệ thống có năng
suất cao
Matlab chứa giải pháp của từng ứng dụng riêng biệt trong các hộp công cụ
(toolbox) khác nhau Các hộp công cụ này tạo cho người sử dụng khả năng nắm bắt cũng
như áp dụng được một số công nghệ chuyên biệt nào đó Hộp công cụ là một tập hợp của
các hàm của Matlab (M-files) được thêm vào môi trường Matlab để giải quyết một lớp bài
toán cụ thể nào đó Hiện nay, Matlab đã có hộp công cụ trong một số lĩnh vực như: xử lý
tín hiệu số, hệ thống điều khiển, mạng neural, logic mờ, wavelets, mô phỏng…
Hệ thống Matlab bao gồm 5 phần: môi trường phát triển, thư viện các hàm toán
học, ngôn ngữ Matlab, đồ họa, thư viện giao diện lập trình Matlab (Application
Programming Interface)
2.1.1 Simulink
Simulink framework là một gói phần mềm trong Matlab của hãng Mathworks dùng
để mô hình hóa, mô phỏng và phân tích các hệ thống động (dynamic system) Framework
này hỗ trợ các hệ thống tuyến tính và phi tuyến được mô hình trong miền thời gian liên tục,
miền thời gian được lấy mẫu (sampled time) cũng như sự kết hợp của cả hai miền thời gian
này
Simulink cho phép chúng ta dễ dàng xây dựng các mô hình mới từ đầu hay bằng
cách thay đổi các mô hình sẵn có Quá trình mô phỏng trong Simulink cũng có tính tương
tác nên chúng ta có thể dễ dàng thay đổi các thông số trong quá trình mô phỏng một cách
trực tiếp và thấy được kết quả của sự thay đổi ngay lập tức Ngoài ra, do được phát triển
trên Matlab nên chúng ta có thể sử dụng các công cụ phân tích có sẵn trong Matlab để
phân tích và hiển thị các kết quả của hệ thống mà ta đang mô hình Mục tiêu chủ yếu của
Trang 13Simulink là tạo sự “vui thích” cho người sử dụng trong việc mô hình và mô phỏng thông
qua một môi trường thân thiện nhằm khuyến khích người sử dụng nghĩ ra vấn đề, mô hình
nó và “nhìn được” chuyện gì sẽ xảy ra
Với Simulink, chúng ta có thể tiến xa hơn các mô hình hệ thống tuyến tính lý
tưởng để đến với việc nghiên cứu các mô hình phi tuyến mang tính thực tế hơn như sức
cản không khí, sự ma sát, gear slippage, cũng như các yếu tố mô tả các hiện tượng trong
thế giới thực khác Simulink sẽ biến máy tính của chúng ta thành một phòng thí nghiệm
dùng để mô hình và phân tích các hệ thống không tưởng hoặc các hệ thống đang có trong
thực tế Các hệ thống này có thể là mô hình của các hành vi trong hệ thống ấp trứng tự
động, sự rung của cánh máy bay hoặc sự ảnh hưởng của việc dự trữ tiền tệ đối với nền kinh
tế
Simulink mang tính thực tế cao do nó đã được hàng ngàn kỹ sư trên khắp thế giới
sử dụng để mô hình và giải quyết các vấn đề thực tế
Đối với chức năng mô hình hóa, Simulink cung cấp một giao diện đồ họa để xây
dựng các mô hình theo sơ đồ khối (block diagram) bằng các thao tác kéo thả chuột đơn
giản trong khi các gói mô phỏng trước đây đòi hỏi các công thức vi phân cũng như các
công thức khác phải được nhập vào bằng chương trình Simulink đã chứa sẵn trong nó thư
viện các khối cơ bản của các thành phần như sinks, sources, thành phần tuyến tính, phi
tuyến và các kết nối Tuy nhiên, chúng ta cũng có thể tự tạo các khối của riêng mình
Các mô hình đều có một cấu trúc nhất định do đó chúng ta có thể xây dựng chúng
theo phương pháp từ trên xuống hay từ dưới lên đều được Chúng ta có thể nhìn (view) hệ
thống ở mức trừu tượng cao rồi double-click vào các khối để đi vào chi tiết hơn Cách tiếp
cận này cho phép chúng ta có được cái nhìn bên trong (insight) về cách tổ chức của mô
hình cũng như cách các thành phần trong mô hình tương tác với nhau
Sau khi đã xây dựng xong mô hình, chúng ta có thể mô phỏng chúng bằng cách sử
dụng các phương pháp có sẵn trong các menu của Simulink hay bằng cách nhập các lệnh
vào trong cửa sổ lệnh của Matlab Cách chọn lựa từ menu của Simulink thì thuận tiện cho
việc giao tiếp còn cách dùng dòng lệnh thì thích hợp để thực hiện một “bó” các mô phỏng
(a batch of simulation) Chúng ta có thể nhìn được các kết quả trong quá trình mô phỏng
thông qua scopes và các khối hiển thị khác Hơn nữa, chúng ta có thể thay đổi các tham số
Trang 14của các thành phần trong mô hình và biết được ngay lập tức ảnh hưởng của sự thay đổi này
đối với hệ thống Kết quả của quá trình mô phỏng có thể được xử lý tiếp bằng Matlab với
các công cụ phân tích như tuyến tính hóa, làm gọn (trimming),… Vì Matlab và Simulink
được tích hợp chung với nhau trong một hệ thống nên chúng ta có thể mô phỏng, phân
tích, củng cố (revise) các mô hình của chúng ta trong cả hai môi trường này một cách tùy
ý
Tóm lại, Simulink là một công cụ có tính tương tác cao, dùng trong việc mô hình
hoá, mô phỏng và phân tích các hệ thống động, đa miền (multidomain) Nó cho phép
chúng ta mô tả, mô phỏng, đánh giá, tinh chỉnh (refine) một cách chính xác các hành vi của
một hệ thống thông qua các thư viện chứa các khối chuẩn và khối của người dùng Các mô
hình của Simulink còn có khả năng liên kết với Matlab nên do đó nó sẽ được cung cấp các
thao tác uyển chuyển cũng như các công cụ mạnh, chuyên nghiệp dùng để phân tích và
thiết kế Sau khi đã mô hình hóa và phân tích để tạo ra được mô hình của hệ thống, chúng
ta có thể sử dụng các mô hình kết quả này để làm nhiều việc khác thông qua các phần mềm
khác Ví dụ: The Simulink Report Generator sẽ trích rút các thông tin về thiết kế trong mô
hình để tạo ra các tài liệu kỹ thuật; the Real-Time Workshop và Real-Time Workshop
Embedded Coder sẽ sinh ra mã ANSI C hoặc ISO C từ các mô hình để sử dụng trong các
hệ thống nhúng, tạo mẫu nhanh (rapid prototyping), triển khai mô hình (model
deployment) và các ứng dụng hardware-in-the-loop
2.1.2 SimMechanics
SimMechanics là một môi trường mô hình các sơ đồ khối (block diagram) Nó
được sử dụng trong các thiết kế kỹ thuật và mô phỏng các máy thân cứng (rigid body
machine) cũng như chuyển động của chúng bằng cách áp dụng các phương trình động lực
học Newton cho các lực thẳng và lực quay
Với SimMechanics, người sử dụng có thể mô hình và mô phỏng các hệ thống cơ
khí thông qua một bộ công cụ để đặc tả các thân máy, khối lượng, các khả năng chuyển
động của chúng, các ràng buộc về động học (kinematic constraints) và các hệ thống tọa độ
Ngoài ra, SimMechanics còn có các công cụ để khởi tạo (initiate) và đo đạc sự chuyển
động của các khối Các hệ thống cơ khí được biễu diễn trong SimMechanics dưới dạng sơ
Trang 15đồ gồm các khối hay các hệ thống con phân cấp được kết nối với nhau (giống như các mô
hình khác trong Simulink)
Các công cụ hiển thị (visualization) của SimMechanics hiển thị và tạo hoạt cảnh
các dạng biểu diễn đơn giản của các máy 3-D trước và trong khi mô phỏng bằng cách sử
dụng hệ thống đồ họa của Matlab
SimMechanics chỉ là một phần của hệ thống mô hình các hệ vật lý tổng quát
(physical modeling) của Simulink Hệ thống mô hình các hệ vật lý hàm chứa ý nghĩa là
việc mô hình hóa và thiết kế hệ thống phải tuân theo các định luật vật lý cơ bản Hệ thống
mô hình các hệ vật lý này chạy được trong môi trường Simulink và giao tiếp dễ dàng với
các phần khác của Simulink cũng như của Matlab Trong khi các khối khác trong Simulink
biểu diễn các phép toán số học hoặc các thao tác trên các tín hiệu thì các khối trong hệ
thống mô hình các hệ vật lý biểu diễn các thành phần hoặc các quan hệ vật lý một cách
trực tiếp
SimMechanics là một tập thư viện các khối và các đặc trưng mô phỏng đặc biệt
được sử dụng trong môi trường Simulink Chúng ta có thể kết nối các khối này của
SimMechanics với các khối thông thường của Simulink thông qua hai khối đặc biệt là khối
Sensor và khối Actuator
Các khối trong thư viện này là các yếu tố cần thiết để chúng ta có thể mô hình hóa
các hệ thống cơ khí Các hệ thống cơ khí thường bao gồm một số khối thân máy cứng kết
nối với nhau bởi các khớp nối đại diện cho các bậc tự do quay và tịnh tiến SimMechanics
có thể biểu diễn được các thiết bị có các thành phần là các hệ thống con phân cấp như các
mô hình bình thường khác trong Simulink Người sử dụng có thể áp đặt các ràng buộc
động học, thiết lập các lực thẳng và lực quay, giải các phương trình Newton, và đo đạc các
kết quả của các chuyển động của thiết bị này
SimMechanics mở rộng Simulink bằng cách thêm vào một thư viện chứa các khối
dùng để đặc tả các thành phần và thuộc tính của hệ thống cơ khí và các khối dùng để giải
các phương trình chuyển động của hệ thống Ngoài một số thuộc tính đặc trưng, các khối
này của SimMechanics đều tương tự như các khối cơ bản khác của Simulink
Các bước chính để xây dựng và chạy một một biểu diễn mô hình của một hệ thống
cơ khí là:
Trang 16• Đặc tả các thuộc tính quán tính, bậc tự do, ràng buộc cho các khối thân cũng như các hệ tọa độ gắn trên chúng để đo vị trí và vận tốc
• Thiết lập các cảm biến và các thiết bị tạo chuyển động (actuator) để ghi nhận và khởi động các chuyển động của các khối thân cũng như áp dụng các lực lên chúng
• Bắt đầu quá trình mô phỏng bằng cách gọi các Simulink solver để tìm các chuyển động của hệ thống thỏa tất cả các ràng buộc
• Sử dụng cửa sổ Visualization của SimMechanics để hình dung
(visualize) hệ thống khi xây dựng mô hình và tạo hoạt cảnh cho hệ thống khi chạy mô phỏng
SimMechanics được tổ chức thành các thư viện phân cấp chứa các khối có liên
quan mật thiết với nhau
Trang 17Hình 1 Thư viện SimMechanics trong Simulink Library Browser
Trang 18Hình 2 Thư viện SimMechanics (dạng khác) Các bước cơ bản cần thiết khi xây dựng một mô hình trong SimMechanics là:
1 Chọn và kéo thả các khối Ground, Body và Joint cần thiết để biểu diễn hệ
thống trong hệ thống thư viện vào vùng làm việc Chú ý là cần phải có một khối Machine Environment (để thiết lập các thông số cơ khí của mô hình)
và ít nhất một khối Ground
2 Định vị và kết nối các khối lại với nhau theo sơ đồ sau:
Khối Machine Env kết nối với khối Ground Khối Ground kết nối với chuỗi các
khối Joint-Body kết nối xen kẽ nhau
3 Cấu hình cho các khối Body: đặc tả thuộc tính khối lượng, quán tính, các hệ
tọa độ (Coordinate System viết tắt là CS) so với World Coordinate System hoặc so với các CS khác
4 Cấu hình cho các khối Joint: đặc tả các thuộc tính về trục chuyển động
thẳng, chuyển động quay
5 Chọn, kết nối và cấu hình các khối ràng buộc (constraint) và khối điều
khiển (driver) Các khối này phải được đặt giữa các khối Body
6 Chọn, kết nối và cấu hình các khối cảm biến và khối tạo chuyển động Ở
bước này, chúng ta cần phải cấu hình lại các khối đã tạo ở các bước trước (Body, Joint, Constraint/Driver) để có thể kết nối được với hai khối mới này Chỉ có hai loại khối này mới cho phép chúng ta có thể kết nối được các
Trang 19khối của SimMechanics với các khối khác (non-mechanics Simulink
block) Chúng ta cần lưu ý đặc tính này của SimMechanics vì đặc tính này
sẽ giúp chúng ta thấy được mô hình tính toán (xem phần 4.2.2) bên dưới
của Simulink là mô hình tính toán Continuous Time/Mixed Signal và từ đó
lý giải được bối cảnh xuất hiện của đề tài
7 Bao đóng thành hệ thống con: Các hệ thống được tạo bởi SimMechanics có
thể là một hệ thống con của các mô hình lớn khác như các hệ thống con bình thường của Simulink Toàn bộ một mô hình SimMechanics có thể được kết nối như là một hệ thống con với một hệ thống lớn thông qua các khối Connection Port trong thư viện Utilities
Mô hình con lắc đôi
Mô hình con lắc đơn
Hình 3 Mô hình con lắc đơn và đôi trong SimMechanics SimMechanics có tất cả 4 chế độ để chạy một mô hình của một hệ thống máy cơ
khí là Forward Dynamics, Inverse Dynamics, Trimming và Kinematics Trong hầu hết các
mô hình đơn giản, đầu tiên chúng ta sẽ đưa vào các lực và các điều kiện khởi tạo, sau đó
chúng ta sẽ bắt đầu quá trình mô phỏng dưới chế độ Forward Dynamics để có được các
chuyển động kết quả Trong chế độ Kinematics và InverseDynamics, chúng ta sẽ đưa vào
Trang 20chuyển động của tất cả các bậc tự do độc lập, từ đó có thể tính được các lực cần thiết để tạo
ra được các chuyển động đó
Điểm khác biệt quan trọng của các mô hình trong SimMechanics so với các mô
hình khác của Simulink nằm ở cách mà nó biểu diễn một hệ thống máy cơ khí Một mô
hình bình thường của Simulink mô tả dạng toán học các chuyển động của hệ thống (các
phương trình vi phân và các phương trình đại số dùng để dự đoán trạng thái tương lai của
hệ thống từ các trạng thái hiện tại) Các mô hình toán học này cho phép Simulink có thể
mô phỏng được các hệ máy cơ khí Ngược lại, các mô hình của SimMechanics mô tả cấu
trúc vật lý của hệ thống cơ khí (các mối quan hệ hình học, quan hệ động học giữa các khối
thân của hệ thống) SimMechanics sẽ chuyển đổi các cấu trúc này thành các mô hình toán
học bên trong tương đương Điều này sẽ giúp người thiết kế tiết kiệm được thời gian và
công sức để xây dựng một mô hình toán học cho hệ thống
2.1.3 Hộp công cụ Robotics trong Matlab
Đây là một hộp công cụ phục vụ cho các tính toán liên quan đến robot trong
Matlab Hộp công cụ này được phát triển bởi Peter I Corke, CSIRO, Manufacturing
Science and Technology Phiên bản đầu tiên ra đời vào năm 1996 Phiên bản gần đây nhất
là phiên bản 1.4 ra đời vào năm 2002 Như vậy, kể từ lần đầu tiên xuất hiện, để có được
hộp công cụ như hiện nay Peter I Corke đã phải tiêu tốn một khoảng thời gian là hơn 7
năm cho việc sửa lỗi và cải tiến nó
Hộp công cụ này thực chất là thư viện các hàm (viết bằng Matlab) thường dùng
trong lĩnh vực Robotics như các hàm dùng để tính Jacobian, động học, động lực học, bộ
sinh quỹ đạo (trajectory generation)… cho một đối tượng robot Nó thường được sử dụng
để mô phỏng, phân tích các kết quả từ thực nghiệm với robot thật cũng như được dùng để
giảng dạy
Hộp công cụ này dựa vào một phương pháp biểu diễn các tham số động học, động
lực học của robot tổng quát: chúng được bao đóng (encapsulate) trong các đối tượng của
Matlab Đối tượng Robot, trong hộp công cụ này, chỉ đơn giản là các tay máy có các liên
kết nối tiếp nhau (serial-link manipulator) Người sử dụng có thể tạo đối tượng robot cho
hệ thống để đại diện bất kỳ tay máy có các liên kết nối tiếp nhau nào mà họ quan tâm
Trong hộp công cụ cũng có nhiều ví dụ đặc biệt là ví dụ về 2 robot khá nổi tiếng là tay máy
Trang 21Puma 560 và tay máy Stanford Ngoài ra, nó còn cung cấp các hàm dùng để thao tác trên
các kiểu dữ liệu như vector, các ma trận biến đổi thuần nhất (homogeneous transformation)
và bộ tứ (unit-quaternion) dùng để biểu diễn hệ tọa độ 3 chiều Do các hàm trong thư viện
này được viết với mục đích dễ đọc hiểu nên hiệu quả của việc tính toán sẽ không được
quan tâm lắm ở đây
Hình 4 Các công cụ có trong Robotics Toolbox for Matlab
Động học (kinematics)
Trong hộp công cụ này (xem phần kiến thức về động học ở 4.1.2), Corke dùng ký
hiệu q i để biểu diễn tổng quát các biến khớp nối (joint variable)
jointprismatic
jointrevolute
jointrevolute
Trang 22Hộp công cụ này hỗ trợ đầy đủ cho dạng biểu diễn thứ nhất (dạng cổ điển) và chỉ
hỗ trợ một phần (cụ thể là chỉ có các hàm tính forward và inverse kinematics) cho dạng
biểu diễn thứ hai (dạng biến đổi của Craig)
Kết quả của biểu diễn Denavit-Hartenberg là một ma trận biến đổi thuần nhất 4×4:
00
cossin
0
sinsin
coscos
cossin
coscos
sincos
sincos
1
i i
i
i i i i i
i i
i i i i i
i i
i
i
d a
a A
αα
θα
θα
θθ
θα
θα
θθ
Ma trận này biểu diễn mối quan hệ giữa hệ tọa độ của liên kết này so với hệ tọa độ
của liên kết trước đó:
i
i i
1 0
−
=
với 0Ti là ma trận biến đổi thuần nhất diễn tả mối quan hệ giữa hệ tọa độ của liên
kết thứ i với hệ tọa độ thế giới (world coordinate system) Lưu ý là ma trận biến đổi trên
đây chỉ tương ứng với dạng biểu diễn động học Denavit-Hartenberg cổ điển
Định nghĩa một robot mới trong hộp công cụ
Trang 23Hình 5 Biểu diễn của robot Puma 560 trong Robotics Toolbox for Matlab [11]
Để định nghĩa một robot khi sử dụng hộp công cụ này, chúng ta lấy một ví dụ đơn
giản là định nghĩa robot là một tay máy chỉ gồm 2 liên kết phẳng của Spong và Vidyasagar
có các tham số liên kết Denavit-Hartenberg như sau:
Trang 24Do hộp công cụ này được phát triển trên Matlab nên chúng ta phải chạy Matlab
trước khi có thể sử dụng các chức năng của hộp công cụ này Trong môi trường Matlab
chúng ta đánh vào các lệnh sau để tạo các đối tượng là các liên kết:
Hình 6 Các lệnh để tạo các đối tượng liên kết trong Matlab Trên đây chỉ là các lệnh cơ bản để tạo một liên kết Xem [11] để tìm hiểu chi tiết
hơn
Sau khi tạo xong các đối tượng liên kết, chúng sẽ được truyền dưới dạng tham số
cho hàm robot Hàm robot này sẽ tạo ra đối tượng robot để sử dụng cho các hàm khác
trong hộp công cụ: tính kinematics, dynamics, animation,
Mục tiêu của đề tài này là xây dựng các công cụ mô hình và mô phỏng các hệ
thống robot nên hộp công cụ được xây dựng bởi đề tài sẽ có các khối chức năng tương đối
giống với hộp công cụ này Tuy nhiên, đề tài sẽ được phát triển trên một môi trường khác
nên sẽ tận dụng được các điểm mạnh của môi trường đó (xem các phần sau) Hơn nữa, hộp
Trang 25công cụ ở đây chỉ đơn giản là tập hợp các hàm viết bằng Matlab phục vụ cho các tính toán
riêng biệt của robot nên nó không có hỗ trợ thiết kế trực quan robot cũng như nó đòi hỏi
người thiết kế robot phải biết Matlab (xem phần 8.1)
2.2 Modelica
Modelica [10] là một ngôn ngữ hướng đối tượng thống nhất (unified) chuyên được
sử dụng trong việc mô hình hóa các hệ thống vật lý lớn, phức tạp và bất đồng nhất
(heterogeneous system) Ngôn ngữ này thích hợp với các mô hình đa miền (multi-domain
modeling) như các mô hình cơ khí trong lĩnh vực robotics; các ứng dụng tự động hóa
(automotive) và không gian (aerospace) bao gồm các hệ thống con (subsystem) như hệ
thống điện, cơ khí, nước (hydraulic) và hệ thống điểu khiển Modelica được thiết kế sao
cho khi người sử dụng xây dựng một hệ thống trên nó cũng giống như khi họ xây dựng
một hệ thống thật sự: người sử dụng sẽ tìm và chọn các phần tử cơ bản như mô tơ (motor),
bơm (pump), van (valve) từ các nhà sản xuất với các tham số đặc tả cụ thể để xây dựng hệ
thống Nếu các phần tử này không có thì khi đó hệ thống sẽ cung cấp một giao diện chuẩn
(standardized interface) để người sử dụng tạo ra một mô hình mới
Các mô hình trong Modelica được mô tả một cách toán học bởi các phương trình vi
phân, phương trình đại số và phương trình rời rạc Không có một biến nào trong các
phương trình này phải được giải bằng tay Modelica đã có một công cụ có đủ thông tin để
giải các phương trình này một cách tự động Tuy nhiên, Modelica cũng được thiết kế mở
để cho người sử dụng có thể đưa vào các giải thuật chuyên biệt, cụ thể để giải các mô hình
lớn với hàng trăm ngàn phương trình Ngoài ra, Modelica còn được dùng trong việc mô
phỏng (hardware-in-the-loop simulation) và trong các hệ thống điều khiển nhúng
(embeded control subsystem)
Trang 26Hình 7 Các sơ đồ trong các miền khác nhau trong Modelica [31]
Tái sử dụng là một vấn đề quan trọng Đã có nhiều nghiên cứu để định nghĩa một
ngôn ngữ hướng đối tượng dùng để mô hình các hệ thống vật lý, tuy nhiên chúng ta cần
phải qui định một định dạng chuẩn chung để có thể tái sử dụng và trao đổi các mô hình với
nhau Do đó, vào tháng 9 năm 1996, Hilding Elmqvist đã khởi xướng nên việc thiết kế
Modelica trong dự án có tên là ESPRIT Ngôn ngữ này được thiết kế bởi các nhà phát triển
(developer) của các ngôn ngữ mô hình hướng đối tượng như Allan, Dymola, NMF,
ObjectMath, Omola, SIDOPS+, Smile và một số nhân viên làm về mô hình (modeling
practitioner) trong các lĩnh vực khác nhau Sau 19 cuộc họp diễn ra trong vòng 3 năm,
phiên bản 1.3 của bản đặc tả ngôn ngữ Modelica được hoàn thành vào tháng 12 năm 1999
Đây là phiên bản đầu tiên được sử dụng trong các ứng dụng thực tế Phiên bản đặc tả của
ngôn ngữ này gần đây nhất là phiên bản 1.4, được đưa ra vào tháng 12 năm 2000
Vào tháng 2 năm 2000, một tổ chức phi chính phủ, phi lợi nhuận được thành lập
chủ yếu nhằm để đẩy mạnh việc phát triển, cải tiến và ứng dụng ngôn ngữ Modelica Tên
tổ chức này là “Modelica Association”, đặt trụ sở tại Linkoping, Thụy Điển
2.2.1 Các đặc trưng của ngôn ngữ Modelica
Ngôn ngữ Modelica hỗ trợ cả mô hình cấp cao thông qua việc sử dụng các thành
phần tích hợp lẫn mô hình được xây dựng từ các thành phần thư viện cấp thấp thông qua
việc sử dụng các phương trình Mô hình của các thành phần chuẩn sẽ được xây dựng thành
Trang 27các thư viện Một mô hình có thể được định nghĩa trong một bộ soạn thảo mô hình đồ họa
(graphical model editor) bằng cách xây dựng một giản đồ (schematic) cho nó Giản đồ này
được xây dựng bằng cách kéo thả các biểu tượng đại diện cho mô hình của một phần tử
nào đó vào vùng làm việc, vẽ kết nối giữa các biểu tượng này và định nghĩa các tham số
cho chúng Việc xây dựng cách định nghĩa các chú thích đồ họa (graphical annotation)
trong Modelica cho phép các biểu tượng và các sơ đồ kết hợp có thể chuyển đổi dễ dàng
giữa các công cụ (Hình 7)
Ví dụ: Hình 8 là một sơ đồ kết hợp của một hệ thống điều khiển mô tơ đơn giản
Hình 8 Hệ thống điều khiển mô tơ đơn giản trong Modelica [31]
Hệ thống điều khiển này là một tập các phần tử kết nối với nhau: một động cơ điện,
một hộp số (gearbox), một bộ tải (load) và một bộ điều khiển
Biểu diễn dạng văn bản của mô hình này là:
model Motor Drive
Trang 28end MotorDrive;
Mô hình kết hợp (composite model) này đặc tả topology của hệ thống được mô
hình thông qua các phần tử và các kết nối giữa chúng Phát biểu “Gearbox gear (n=100);”
khai báo một phần tử có tên là gear của lớp mô hình Gearbox và đặt giá trị của tham số n
(gear ratio) là 100 Ngoài ra, để hỗ trợ tính phân cấp, một phần tử mô hình ở đây lại có thể
là một mô hình kết hợp khác Hình 9 là sơ đồ kết hợp của lớp mô hình Motor trong sơ đồ
hệ thống điều khiển mô tơ ở trên
Hình 9 Sơ đồ kết hợp của lớp mô hình Motor [31]
Các mô hình vật lý thường chú trọng đến việc đặc tả các mối quan hệ giữa các đại
lượng vật lý Trong ví dụ ở trên, các đại lượng cần quan tâm là góc (angle) và lực quay
(torque) Trong Modelica, kiểu của chúng được định nghĩa như sau:
type Angle = Real (quantity = “Angle”, unit = “rad”, displayUnit = “deg”);
type Torque = Real (quantity = “Torque”, unit = “N.m”);
Trong đó, Real là một kiểu đã được định nghĩa sẵn (predefined type), có một tập
các thuộc tính như tên, đơn vị đo, đơn vị hiển thị mặc định của các cổng input , output, các
giá trị lớn nhất, nhỏ nhất và giá trị khởi tạo Thư viện chuẩn Modelica, một thành phần
quan trọng của Modelica, bao gồm khoảng 450 định nghĩa kiểu như trên và theo chuẩn
ISO 31-1992
Các kết nối đặc tả sự tương tác giữa các phần tử và được biểu diễn tượng hình bằng
các đường thẳng nối giữa các cổng (connector) Một kết nối chứa đựng trong nó tất cả các
Trang 29đại lượng cần thiết để mô tả sự tương tác Ví dụ: đại lượng hiệu điện thế và cường độ dòng
điện là các đại lượng cần thiết đối với các phần tử liên quan đến điện ; góc và lực quay là
các đại lượng cần thiết cho các phần tử điều khiển bộ sinh chuyển động:
Kết nối connect(Pin1,Pin2), với Pin1 và Pin2 thuộc lớp Pin, kết nối 2 cổng (pin)
thành 1 node Kết nối này ẩn chứa 2 phương trình: Pin1.v = Pin2.v và Pin1.i + Pin2.i = 0
Phương trình đầu tiên chỉ ra rằng hiệu điện thế giữa 2 nhánh kết nối với nhau này là bằng
nhau Phương trình thứ hai chính là định luật Kirchhoff về dòng điện (tổng dòng điện vào,
ra tại một node bằng 0) Các luật tương tự như vậy cũng được áp dụng đối với các hệ thống
khác như: luật liên quan đến tỷ lệ dòng chảy trong các hệ thống mạng đường ống (piping
network) hay luật liên quan đến các lực thẳng, lực quay trong các hệ thống cơ khí Các
phương trình có tổng bằng 0 như ví dụ trên được tạo ra khi dùng tiếp đầu ngữ flow khi
khai báo kết nối Các định nghĩa của các kết nối này cũng được chứa trong thư viện chuẩn
của Modelica
Một đặc tính quan trọng để có thể xây dựng được các mô tả có khả năng tái sử
dụng là định nghĩa và sử dụng lại các mô hình riêng phần (partial models) Một thuộc tính
thông thường của đa số các thiết bị điện tử là chúng có 2 chân Tận dụng tính chất này,
người ta đã định nghĩa một lớp mô hình giao diện (interface model class) OnePort có 2
chân p và n và một đại lượng v để mô tả sự chênh lệch điện thế giữa hai đầu của phần tử
partial model OnePort
Trang 30end OnePort;
Các phương trình được dùng để định nghĩa mối quan hệ giữa các đại lượng của
một phần tử điện tử đơn giản Từ khóa partial diễn đạt ý nghĩa đây là một mô hình chưa
hoàn chỉnh và do đó không thể được tạo ra một cách cụ thể được (instantiate) Để có thể
tạo được cụ thể (sử dụng) mô hình này chúng ta cần phải bổ sung thêm một phương trình
quan trọng Ví dụ: mô hình cho một điện trở sẽ thừa kế mô hình OnePort ở trên và thêm
vào đại lượng điện trở cũng như thêm vào định luật Ohm để định nghĩa hành vi của nó
model Resistor “Ideal resistor”
Chuỗi giữa tên lớp và thân của nó được xem như thuộc tính chú thích Các công cụ
khác nhau sẽ trình bày các đoạn định nghĩa này hoàn toàn khác nhau Các đại lượng có từ
khóa parameter sẽ không thay đổi trong suốt quá trình mô phỏng thực tế nhưng giá trị của
chúng có thể được thay đổi giữa các lần mô phỏng khác nhau
Ngoài các thành phần cơ bản của ngôn ngữ Modelica đã trình bày, Modelica còn
hỗ trợ các dãy (array) sử dụng các cấu trúc tương tự như của Matlab Các phần tử của các
dãy này có thể là các kiểu dữ liệu cơ bản (Real, Integer, Boolean, String) hay các mô hình
phần tử tổng quát Điều này cho phép dễ dàng mô tả các phương trình sai phân riêng phần
rời rạc đơn giản Một đặc tính duy nhất của Modelica (không còn đúng trong thời điểm
hiện nay) là khả năng xử lý các phần tử có cấu trúc thay đổi và không liên tục như các rờ le
(relay), công tắc (switch), ma sát bề mặt (bearing friction), khớp (clutch), thắng (brake), va
chạm (impact), hệ thống lấy mẫu dữ liệu, hộp số tự động, v.v Cấu trúc đặc biệt của ngôn
ngữ Modelica có thể cho phép các bộ mô phỏng (simulator) xử lý hiệu quả các sự kiện đặc
trưng liên quan đến các phần tử này Các thiết kế ngôn ngữ sẽ đặc biệt nhấn mạnh vào tính
đồng bộ (synchronization), sự lan truyền (propagation) của các sự kiện này và khả năng
tìm được các điều kiện khởi tạo thích hợp (consistent restarting conditions) Cuối cùng,
Trang 31Modelica còn có khái niệm đóng gói, cho phép người dùng có thể xây dựng một cách có
cấu trúc các thư viện mô hình lớn và có thể tìm một phần tử trong hệ thống tập tin khi biết
được tên lớp cấu trúc của nó trong Modelica
2.2.2 Các thư viện của Modelica
Để các mô hình trong Modelica có thể được trao đổi lẫn nhau (exchange), thư viện
của các thành phần thông thường, chuẩn phải được phát triển rộng rãi và có thể chia sẻ
giữa các ứng dụng Do đó, tổ chức Modelica đã, đang phát triển và duy trì một thư viện
Modelica chuẩn (Modelica Standard Library) Ngoài thư viện này còn có một số thư viện
miễn phí cũng như thương mại khác được phát triển bởi một số cá nhân và tổ chức khác
Hiện nay đã có các thư viện chứa các thành phần như:
• Khoảng 450 định nghĩa kiểu như góc, điện thế, quán tính
• Các hàm toán học như sin, cos, ln
• Các khối vào/ra rời rạc và liên tục như các hàm truyền (transfer function),
bộ lọc (filter), nguồn
• Các phần tử điện và điện tử như điện trở, đi ốt, transistor
• Các phần tử thay đổi một chiều như khối lượng, lò xo
• Các phần tử quay một chiều như quán tính, hộp số, khớp, ma sát bề mặt
• Các phần tử cơ khí 3 chiều như khớp nối, thân và các lò xo 3 chiều
• Các phần tử liên quan đến nước như bơm, van, ống (cylinder)
• Các phần tử liên quan đến thủy-nhiệt
• Các phần tử năng lượng như generator, line
• Các phần tử truyền năng lượng như driver, engine
Trang 322.2.3 Các môi trường mô phỏng của Modelica
Để có thể sử dụng được ngôn ngữ Modelica và các thư viện của nó, chúng ta cần
phải có một bộ biên dịch để chuyển một mô hình Modelica thành một dạng có thể được mô
phỏng một cách hiệu quả trong một môi trường mô phỏng thích hợp Bản thân ngôn ngữ
Modelica là một ngôn ngữ tương đối nhỏ bởi vì nó chỉ có một đơn vị có cấu trúc cơ bản
duy nhất là class Tất cả các đơn vị cấu trúc khác như model, block, function, connector,
package, record, type đều chỉ là các trường hợp đặc biệt của cấu trúc class Do đó, việc
phát triển một bộ biên dịch thích hợp là rất cần thiết Bộ biên dịch này sẽ đọc vào một mô
hình Modelica và chuyển nó thành một tập các phương trình vi phân, phương trình đại số
và phương trình rời rạc
Tuy nhiên, việc giải các phương trình này trực tiếp bằng phương pháp số thì không
tin cậy cũng như không hiệu quả:
• Do cách xây dựng các mô hình của Modelica nên tập các phương trình
nguyên thủy sẽ rất lớn Chúng ta có thể làm giảm số ẩn số rõ ràng trong các tích phân trong quá trình biên dịch mà không làm thay đổi hạng của hệ
thống bằng cách sử dụng các giải thuật biến đổi ký hiệu thích hợp như sắp
xếp các phương trình và các biến (BLT-partitioning) và thay thế “thông minh” các biến (tearing)
• Nhiều mô hình Modelica, như các mô hình cơ khí, có chỉ số của hệ phương
trình vi phân đại số (Differential Algebraic Equation system index) là 2 hay
3 (tổng số trạng thái của mô hình nhỏ hơn tổng số trạng thái của các thành phần con) Trong trường hợp này, các phương pháp giải bằng số trực tiếp sẽ gặp khó khăn ở chổ các điều kiện sẽ trở nên xấu hơn khi bước tính tích phân giảm và bước tính bằng 0 sẽ dẫn đến tính kỳ dị (singularity)
• Một vấn đề khác là việc xử lý các phần tử lý tưởng như đi ốt lý tưởng, ma
sát Coulomb Các phần tử này có một hệ thống các phương trình có cả các biến kiểu Real và Boolean nên việc giải các hệ phương trình này một cách tin cậy đòi hỏi phải có các giải thuật chuyên biệt
Thiết kế của Modelica cho phép có thể áp dụng các giải thuật biến đổi dạng ký hiệu
để biến đổi các phương trình vi phân nguyên thủy thành các dạng có thể giải được bằng
Trang 33các phương pháp chuẩn Ví dụ, để giảm số mũ của phương trình, người ta sẽ sử dụng giải
thuật Pantelides để lấy đạo hàm riêng phần của các phương trình này Tuy nhiên, việc nhận
ra được các giải thuật biến đổi này rất khó và đòi hỏi nhiều kiến thức về toán cũng như
nhiều nổ lực lập trình Modelica hiện đang có các môi trường mô phỏng đã được thương
mại hóa sau:
• Môi trường Dymola của Dynasim (http://www.Dynasim.se) có một bộ biên
dịch Modelica có thể hiện thực tất cả các phép biến đổi cơ bản dạng ký hiệu cho các hệ thống lớn (>100.000 phương trình) cũng như cho các ứng dụng thời gian thật Ngoài môi trường mô phỏng, Dymola cũng cung cấp một bộ công cụ soạn thảo mô hình trực quan cũng như bộ duyệt (browsing) các phần tử và mô hình (tất cả các hình trong phần này đều được chụp từ công
cụ soạn thảo này) Thêm vào đó, Dymola còn cung cấp một giao diện tiện lợi để có thể giao tiếp với Matlab cũng như với bộ mô phỏng các sơ đồ khối phổ biến như Simulink Ví dụ: một mô hình của Modelica có thể được biến đổi thành file dạng S-function C mex-file của Simulink và từ đây chúng có thể được mô phỏng trong Simulink như một khối vào/ra bình thường Điều này cho phép mô hình hóa một cách vô cùng thuận lợi một thiết bị (plant) phức tạp trong Modelica (các hệ thống lớn như vậy rất khó được mô hình với Simulink), xem thiết bị này như là một khối vào/ra trong Simulink từ đó
có thể sử dụng được các bộ điều khiển, bộ lọc trong Simulink và tận dụng tất cả khả năng phân tích và thiết kế của Matlab
• Phần mềm MathModelica của MathCore (http://www.mathcore.com) cung
cấp một môi trường mô phỏng các mô hình Modelica được tích hợp trong phần mềm Mathematica và Microsoft Visio Ví dụ: công cụ Mathematica notebook có thể được dùng để mô tả một cách trực tuyến (online) quá trình cài đặt cũng như quá trình mô phỏng của một mô hình Do được tích hợp một cách chặt chẽ với Mathematica nên MathModelica có thể thực hiện được các phân tích phức tạp, xây dựng các đoạn script cao cấp (advanced scripting) cũng như thực hiện được các tính toán kỹ thuật trên các mô hình
và trên các kết quả mô phỏng Ngoài ra, MathModelica còn có một bộ công
cụ soạn thảo và duyệt các mô hình Bộ công cụ soạn thảo này là một bản
Trang 34mở rộng của công cụ thiết kế sơ đồ của Microsoft Visio Bên trong nó, MathModelica sử dụng máy mô phỏng và ký hiệu của Dymola cho các biến đổi dạng ký hiệu và mô phỏng
2.3 RoboWorks
RoboWorks là một gói phần mềm dùng để mô hình và biểu diễn hoạt cảnh trong
không gian 3 chiều chủ yếu dành cho các hệ thống cơ khí Những người sử dụng
RoboWorks thường là các kỹ sư làm việc trong các lĩnh vực như: điều khiển, robotics, thiết
kế cơ khí (mechanical design) và phân tích RoboWorks còn được dùng như là một công
cụ có tính giáo dục Ngoài ra, RoboWorks cũng được sử dụng trong các ứng dụng tự động
trong công nghiệp với các giao diện 3 chiều thời gian thực thay vì sử dụng các đồ họa
bitmap thông thường Cuối cùng, RoboWorks còn bổ sung thêm cho các phần mềm mạnh
về đồ họa và biểu đồ như Matlab, LabView, Mathematica,… khả năng mô hình và hoạt
cảnh 3 chiều
RoboWorks cung cấp một phương pháp mô hình phân cấp cơ bản nhưng đầy đủ
Người sử dụng có thể dùng phương pháp này để tạo ra các mô hình 3 chiều bằng cách chọn
lựa từ những thành phần cơ bản đã được cung cấp sẵn và lắp ghép chúng lại với nhau Các
thành phần này là các hình 3 chiều thông thường, hình đã biến đổi, chất liệu,… Các mô
hình phức tạp như trong hình dưới đây cũng có thể được xây dựng từ các thành phần cơ
bản này
Trang 35Hình 10 Ví dụ về một mô hình thiết kế bằng RoboWorks Tuy nhiên, RoboWorks quá chú trọng đến phần 3D animation, không cho thấy sự
giao tiếp, tương tác, truyền nhận thông tin giữa các thành phần giữa các thành phần Các
thuộc tính của các đối tượng còn nghèo nàn, chỉ tập trung vào vấn đề hiển thị và animation
Ngoài ra, yêu cầu của hệ thống không được thể hiện rõ trong RoboWorks
2.4 Dự án Ptolemy
Dự án Ptolemy được phát triển bởi một nhóm nhà nghiên cứu của đại học
California, Berkeley Mục tiêu của dự án này là nghiên cứu việc mô hình hóa các hệ thống
bất đồng nhất (heterogeneous), mô phỏng và thiết kế các hệ thống đồng thời (concurrent
system), hệ thống thời gian thực (real-time system), hệ thống nhúng (embedded system)
Dự án tập trung vào việc lắp ghép các thành phần đồng thời (concurrent components) với
nhau dựa trên nền tảng là các mô hình tính toán chuẩn Tuy nhiên, đây cũng chính là vấn
đề cơ bản phải giải quyết: cách pha trộn các mô hình tính toán bất đồng nhất với nhau Để
Trang 36đáp ứng được các yêu cầu và giải quyết các vấn đề nêu trên, nhóm nghiên cứu của E A
Lee đã xây dựng một hệ thống phần mềm (framework) tên là Ptolemy II bằng ngôn ngữ lập
trình Java
Các hệ thống phát triển bởi dự án này còn được gọi là các hệ thống phản ứng
(reactive systems) Hệ thống phản ứng là hệ thống tương tác với môi trường xung quanh
nó với cùng tốc độ của môi trường đó Các hệ thống thuộc loại này thường là các hệ thống
nhúng và chúng tương phản hoàn toàn với hệ thống tương tác (interactive system) và hệ
thống chuyển đổi (transformational system) Các hệ thống tương tác sẽ phản ứng lại môi
trường xung quanh theo tốc độ của bản thân hệ thống còn các hệ thống chuyển đổi sẽ xử lý
các dữ liệu đầu vào để tạo ra được các dữ liệu đầu ra tương ứng Các hệ thống phản ứng
thường có các thành phần như: xử lý tín hiệu, giao tiếp, và điều khiển thời gian thực
Đến nay, nhóm dự án Ptolemy này đã phát triển được 3 phần mềm thiết kế:
2.4.1 Gabriel (1986-1991)
Đây là phần mềm thế hệ đầu tiên được tạo bởi nhóm này [27] Nó được viết bằng
ngôn ngữ LISP và dùng chủ yếu để xử lý tín hiệu Lược đồ khối dòng dữ liệu đồng bộ
(SDF block diagram) và các kỹ thuật định thời song song và tuần tự cho các mô hình SDF
đã được phát triển trong phần mềm này Trong Gabriel có một bộ sinh mã cho các ứng
dụng xử lý tín hiệu số khả lập trình (programable DSP) Bộ sinh mã này tạo được các mã
hợp ngữ rất hiệu quả trên một số bộ xử lý (đặc biệt là các bộ xử lý của Motorola) Gabriel
còn có một bộ mô phỏng đồng thời phần mềm/phần cứng cho phép các mã hợp ngữ sinh ra
này có thể được chạy (sử dụng các tập lệnh mô phỏng) trên môi trường mô phỏng phần
cứng của các kiến trúc đa xử lý
2.4.2 Ptolemy classic (1990-1997)
Phần mềm này bắt đầu được xây dựng bởi E A Lee và Dave Messerschmitt vào
năm 1990 Nó được viết bằng ngôn ngữ C++ [28] Đây là môi trường mô hình hóa đầu tiên
hỗ trợ một cách có hệ thống nhiều mô hình tính toán liên kết phân cấp nhau Ngoài miền
SDF thừa hưởng ở Gabriel, phần mềm này còn phát triển các miền khác như Boolean
dataflow (BDF), dynamic dataflow (DDF), multidimentional synchronous dataflow
(MDSDF) và process network (PN) Phần mềm này cũng tạo thêm bộ sinh mã ngôn ngữ C
và VHDL ngoài bộ sinh mã DSP của Gabriel
Trang 372.4.3 Ptolemy II (1996-?)
Hình 11 Ptolemy II framework Nhóm nghiên cứu Ptolemy bắt đầu viết Ptolemy II vào năm 1996 Các lý do chính
để viết lại từ đầu phần mềm này là để khai thác được các công nghệ mới của Java như: khả
năng tích hợp mạng (network intergration), khả năng di chuyển mã (migrating code), khả
năng sử dụng các luồng xây dựng sẵn (built-in threading) và có giao diện thân thiện với
người dùng Ptolemy II có những phát triển mới như hỗ trợ cơ chế đa miền (một thành
phần có thể được thiết kế để có thể hoạt động trên nhiều miền khác nhau), cho phép xây
dựng các mô hình chế độ (modal model) – kết hợp máy trạng thái hữu hạn (finite state
machine) với các mô hình tính toán khác Ptolemy II còn phát triển miền thời gian liên tục
mà khi kết hợp với các mô hình chế độ sẽ tạo ra được mô hình của các hệ thống lai (hybrid
system) Ngoài ra, nó cũng xây dựng được một hệ thống kiểu phức tạp và một ngôn ngữ
biểu thức (expression language) mạnh
2.4.4 Một số hệ thống ứng dụng thực tế của phần mềm Ptolemy II
Hình 12 và Hình 13 là ví dụ về mô hình mạng cảm biến âm thanh được thiết kế
bằng phần mềm Ptolemy II Hình 14 là hệ thống mạng cảm biến âm thanh thực tế ở vùng
nam California và vùng vịnh Alaska Hình 15 thể hiện kiến trúc phân cấp của ứng dụng
mạng lưới quan sát, ứng dụng và quản lý dữ liệu thời gian thực (ROADNet)
Trang 38Hình 12 Mô hình mạng cảm biến [33]
Hình 13 Bên trong của tác tử Initiator [33]
Trang 39Hình 14 Ứng dụng thực tế của mạng cảm biến [33]
Hình 15 ROADNet: Real-time Observatories, Applications, and Data management
Network [33]
Từ các tìm hiểu và phân tích trong phần 2 ở trên, chúng ta đã có được một hình
dung khái quát về bối cảnh xuất hiện của đề tài cũng như về các công cụ hiện đang được sử
Re l-Time Data Grid
(Sy tem-En ine r’s V iew)
CODAR Pre-PROC
Archive
Sensors REAP-CC O
O
REAP-SIM
Re l-Time Obs rv tio
Re l-Time Data Proc s in
Datalogger
Sens ors
Nowc st, F re a t an Simulatio Mo el n
(Scientist’s View)
Hybrid Mo el n
(Scientist’s View)
Pu l c nterfa e (Outside-Us r’s View)
Compute Node
UAF/RCAC CODAR NOAA Tide Gauge OSRI Tide Gauge USCG Ice RADAR FAA Meteorology
Prince William Sound NWS Meteorology
OSRI Meteorology USGS Discharge Valdez
Cordova Whittier
Chenega Bay
Tanker Traffic
Gulf of Alaska
Trang 40dụng phổ biến trong việc mô hình và thiết kế các hệ thống robot nói chung và các tay máy
nói riêng Ở phần này, chúng ta sẽ phân tích đề tài bằng cách xác định các yêu cầu tổng
quát của đề tài, chọn môi trường phát triển, phân tích các kiến thức cơ bản cần phải tìm
hiểu để xây dựng đề tài và cuối cùng là xác định các mục tiêu cụ thể của phần mềm
Trước hết, yêu cầu tổng quát của đề tài là tạo ra là các công cụ:
• Cho phép người sử dụng mô hình hóa được hệ thống mà họ cần thiết kế, từ
đó giúp họ nắm bắt được các yêu cầu của hệ thống một cách rõ ràng hơn
• Cho phép người sử dụng thiết kế hệ thống robot ở các mức trừu tượng khác
nhau
• Có khả năng tính toán theo dạng ký hiệu (symbolic) lẫn dạng số (numeric)
• Cho phép người sử dụng thay đổi được các thông số của các thành phần
trong thiết kế và thấy ngay lập tức các ảnh hưởng của việc thay đổi này
• Thiết kế robot tương đối trực quan
• Cho phép thiết kế hệ thống điều khiển và mô phỏng robot
Sau khi nắm bắt được các yêu cầu của đề tài, câu hỏi đầu tiên được đặt ra là: đề tài
sẽ xây dựng một hệ thống độc lập từ đầu hay phát triển dựa trên các môi trường sẵn có?
Câu trả lời ở đây là nếu có môi trường có sẵn nào thích hợp với yêu cầu của đề tài thì
chúng ta sẽ phát triển dựa trên môi trường đó Vậy thì vấn đề kế tiếp sẽ là vấn đề chọn môi
trường nào? Simulink, Modelica hay RoboWorks? Câu trả lời là: môi trường Ptolemy II
(Ptolemy Framework) và lý do chọn môi trường này sẽ được trình bày cụ thể trong các
phần tiếp theo Tiếp theo, để hoàn thành được các yêu cầu của đề tài đã nêu trên, ta cần
phải tìm hiểu các kiến thức cơ bản (xem phần 4) về:
• Robotics: động học, động lực học, điều khiển,… để có thể tạo được các công cụ
cần thiết trong lĩnh vực này
• Môi trường Ptolemy, cách tùy biến Ptolemy, ngôn ngữ Java và nắm bắt được
mối liên hệ giữa Ptolemy với các hệ thống điều khiển trong robotics
• Maple và khả năng liên kết Maple với Ptolemy để tạo được khả năng tính toán
dạng ký hiệu cho các công cụ của đề tài