Việc giải bài toán động học ngược của robot cần thỏa mãn các điều kiện sau:
Điều kiện tồn tại nghiệm:
Điều kiện này nhằm khẳng định: có ít nhất một tập nghiệm (Ớ1, ớ2,... ớ6, dị) sao cho robot có hình thể cho trước.
(“Hình thể” là khái niệm mô tả tường minh của vector cuối T6 cả về vị trí và hướng).
Điều kiện duy nhất của tập nghiệm:
Trong khi xác định các tập nghiệm cần phân biệt rõ hai loại nghiệm:
• Nghiệm toán (Mathematical Solution) : các nghiệm này thỏa mãn các phương trình cho trước của T6.
• Nghiệm vật lý (Physical Solution) : là các tập con của nghiệm toán, phụ thuộc vào các giới hạn vật lý (giới hạn về góc quay, kích thước...) nhằm xác định tập nghiệm duy nhất.
Việc giải hệ phương trình động học có thể được tiến hành theo hai phương pháp cơ bản sau:
Euler (ty, d, a) = Rot(z, ty) Rot(y, ớ) Rot(z, a)
Tập nghiệm muốn tìm là các góc ty, 6, a khi đã biết ma trận biến đổi đồng nhất T6, nếu ta có các giá trị số của các phân tử trong ma trận T6 thì có thể xác định được các góc
Euler ty, 0, a thích hợp. Như cậy ta có:
Euler (ty, 6, a) = T6 (1.20)
Vế trái của phương trình (1.20) đã được biểu diễn bằng công thức (1.17) nên ta có: Lần lượt cho cân bằng các phân tử tương ứng của hai ma trận trong phương trình (1.21) ta có các phương trình sau:
nx = costycosdcosa — sintysina ny = sintycosỡcosa + costysina nz = —sinỡcosa ox = —costycosỡsina — sintycosa oy = —sintycosỡsina + costycosa oz = sinỡsina ax = costysinỡ ay = sintysinỡ costycosdcosa — sintysina sintycosỡcosa + costysina —sinỡcosa 0 nx ox a x p xl ny oy a y P y nz oz a P 0 0 0 1 —costycosdsina — sintycosa —sintycosỡsina + costycosa sinỡsina 0 costysind sintysinỡ cosỡ 0 0 0 0 1- (1.21)
az = cosd
Giải hệ phương trình này để tìm ^, ớ, a như sau:
0 = cos-1(az) V = cos~1(ax/sin0) a = cos~1(—nz/sin0)
Nhưng các kết quả đã giải ở trên chưa dùng được vì các lý do dưới đây:
- Hàm arcos không chỉ biểu hiện cho một góc chưa xác định mà về độ chính xác nó lại phụ thuộc vào chính góc đó, nghĩa là:
cosd = cos(—0) : 0 chưa được xác định là duy nhất.
dcosO - _ , , , , „ , , ,
- Trong lời giải đối với ty và a một lần nữa chúng ta lại dùng hàm arcos và chia cho sinớ, điều này dẫn tới sự mất chính xác khi 6 có giá trị lân cận 0.
- Các phương trình (1.23) và (1.24) không xác định khi ỡ = 0 hoặc 6 = ±180°.
Do vậy chúng ta cần phải cẩn thận hơn khi chọn lời giải. Để xác định các góc khi giải bài toán ngược của robot ta phải dùng hàm arctan2(y,x) (hàm arctan hai biến). Hàm arctan2 nhằm mục đích xác định được góc thực - duy nhất khi xét dấu của hai biến y và x. Hàm số trả về góc trong khoảng -n > 6 > n.
Ví dụ: arctan2(-1/-1) = -135° , trong khi arctan2(1/1) = 45°
Hàm này xác định ngay cả khi x hoặc y bằng 0 và cho kết quả đúng.
X- Y+ Hình 1.27 Hàm arctan2(y,x) (1.22) (1.23) (1.24) Q xác định không chính xác. 0,180 x+ Y+ 0 X- Y- x+ Y-
0 0 1 0 nz Oz az p —sinỡcosa sinỡsina cosỡ 0 0 0 0 1
. 0 0 0 .1 0 0 0 1
(1.26)Tích hai ma trận ở vế trái của phương trình (1.26) là một ma trận mà có thể được Tích hai ma trận ở vế trái của phương trình (1.26) là một ma trận mà có thể được viết gọn lại bằng các ký hiệu sau:
'fii(n) fii(O) fii(a) fii(py fi2(n) fi2(O) fi2(a) fi2(p) fi3(n) fi3(O) fi3(a) fi3(p)
L 0 0 0 1-1
Trong đó : f11 = cos^x + sinợty (1.27)
f12 = -sin^x + cos^y (1.28)
f13 = z (1.29)
và x,y,z là các phần tử của vector xác định bởi các dữ kiện f11, f12, f13 ví dụ: f11(n) = cos^nx + sin^ny
f12(O) = -sin^Ox + cos^Oy f13(a) = az
Như vậy phương trình (1.26) có thể được viết thành :
fii(n) fii(O) fii(a) 0 cosỡcosa —cosỡsina sinỡ 0 fi2(n) fi2(O) fi2(a) 0 = sina cosa 0 0 fi3(n) fi3(O) fi3(a) 0 —sinỡcosa sinỡsina cosỡ 0
0 0 0 1 0 0 0 1
Khi tính toán vế trái, ta chú ý rằng Px, Py, Pz bằng 0 vì phép biến đổi Euler chỉ toàn phép quay không chứa một phép biến đổi tịnh tiến nào, nên f'11(p) = f12(p) = f'13(p) = 0. Từ phương (1.30), cho cân bằng phần tử ở hàng 2 cột 3 ta có:
f12 (a) = -sin^ ax + cos^ ay = 0
Cộng hai vế với sinợt ax và chia cho cos^ ax ta có: ợt = arctan2(ay,ax).
Ta cũng có thể giải phương trình (1.31) bằng cách hai vế với -cos ợt ay rồi chia hai vế cho —cos ^ax triệt tiêu -ax ở vế trái và cos ợt ở vế phải, ta có:
sinty _ -ay
(1.30) Trong đó f11, f12, f13 đã được định nghĩa ở (1.27), (1.28), (1.29). (1.31)
Trong trường hợp này góc ợt tìm được là: ợt = arctan2(-ay, -ax)
Như vậy phương trình (1.31) có một cặp nghiệm cách nhau 180o, ta có thể viết : ợt = arctan2(ay, ax) với ợt = ợt + 180o
Nếu cả ax và ay đều bằng 0 thì góc ợt không xác định được. Điều đó xảy ra khi bàn tay chỉ thẳng lên trên hoặc xuống dưới và cả hai góc (p và a tương ứng với cùng một phép quay. Điều này được coi là một phép suy biến (degeneracy), trong trường hợp này ta cho ợt = 0.
Với giá trị của ợt nhận được, các phần tử ma trận ở vế bên trái của phương trình (1.30) sẽ được xác định. Tiếp tục so sánh các phần tử của hai ma trận ta có :
f11 (a) = cos^ ax + sinợt ay = 0 và f13 (a) = az = cosỡ
Vậy 0 = arctan2(cos^ ax + sinợt ay, az)
Khi cả hai hàm sin và cos đều được xác định như trường hợp trên, thì góc thường được xác định duy nhất và không xảy ra trường hợp suy biến như góc ợt trước đây. Cũng từ phương trình (1.30) ta có:
f12 (n) = -sin^ nx + cos^ ny = sina f12 (O) = -sin^ Ox + cos^ Oy = cosa
Vậy: a = arctan2(-sin^ nx + cos^ ny, -sin^ Ox + cos^ Oy)
Tóm lại, nếu cho trước một phép biến đổi đồng nhất dưới dạng các phép quay, ta có thể xác định các góc Euler tương ứng là:
ợt = arctan2(ay, ax) với ợt = ợt + 180o
0 = arctan2(cos^ ax + sinợt ay, az)
a = arctan2(-sin^ nx + cos^ ny, -sin^ Ox + cos^ Oy)
1.5.3. Kết luận:
Phương pháp giải bài toán động học ngược đưa ra trong phần này sử dụng các hàm lượng giác tự nhiên. Các góc thường được xác định thông qua hàm arctang hai biến. Phương pháp này được đưa ra bởi Pieper, các nghiệm nhận được thường có 4 dạng công thức, mỗi dạng có một ý nghĩa động học riêng.
Dạng thứ nhất:
-sin^ ax + cos^ ay = 0
Dạng này cho ta một cặp nghiệm cách nhau 180o, nó mô tả hai hình thể tương ứng của robot. Nếu các tử số và mẫu số đều bằng không, robot bị suy biến, lúc đó robot mất đi một bậc tự do.
Dạng thứ hai :
-S1px + C1py = d2
Dạng này cũng cho ta cặp nghiệm sai khác nhau 180o, một lần nữa lại tồn tại khả năng suy biến khi tử số và mẫu số bằng 0. Robot ở trường hợp này thường có một khớp tịnh tiến và độ dài tịnh tiến được coi là lớn hơn 0.
TẠO (NEURAL NETWORK)
2.1. Tổng quan về mạng nơ-ron (neural network):
2.1.1. Mạng nơ-ron nhân tạo:
Mạng nơ-ron nhân tạo (Artifical Neural Networks) mô phỏng lại mạng nơ-ron sinh học là một cấu trúc khối gồm các đơn vị tính toán đơn giản được liên kết chặt chẽ với nhau trong đó các liên kết giữa các nơ-ron quyết định chức năng của mạng.
2.1.2. Các đặc trưng cơ bản của mạng nơ-ron :- Gồm một tập các đơn vị xử lý (các nơ-ron nhân tạo) - Gồm một tập các đơn vị xử lý (các nơ-ron nhân tạo) - Trạng thái kích hoạt hay đầu ra của đơn vị xử lý
- Liên kết giữa các đơn vị. Xét tổng quát, mỗi liên kết được định nghĩa bởi một trọng số Wjk cho ta biết hiệu ứng mà tín hiệu của đơn vị j có trên đơn vị k.
- Một luật lan truyền quyết định cách tính tín hiệu ra của từng đơn vị từ đầu vào của nó.
- Một hàm kích hoạt, hay hàm chuyển (activation function, transfer function), xác định mức độ kích hoạt khác dựa trên mức độ kích hoạt hiện tại.
- Một đơn vị điều chỉnh (độ lệch bias, offset) của mỗi dơn vị - Phương pháp thu thập thông tin (luật học - learning rule) - Môi trường hệ thống có thể hoạt động.
2.2. Các thành phần cơ bản của mạng nơ-ron nhân tạo:
2.2.1. Đơn vị xử lý:
Còn được gọi là một nơ-ron hay một nút (node), thực hiện một công việc rất đơn giản, nó nhận tín hiệu vào từ các đơn vị phía trước hay một nguồn bên ngoài và sử dụng chúng để tính tín hiệu ra sẽ được lan truyền sang các đơn vị khác.
Hình 2.1 Đơn vị xử lý (Processing Unit).
Trong đó:
Xi :các đầu vào
Wji : các trọng số tương ứng với các đầu vào 0j : độ lệch (bias)
aj : đầu vào mạng (net-input) Zj : đầu ra của nơ-ron
gọi là hàm kết hợp (combination function), được định nghĩa bởi một luật lan truyền cụ thể. Trong phần lớn các mạng nơ-ron, chúng ta giả sử rằng mỗi đơn vị cung cấp một bộ cộng như là đầu vào cho đơn vị mà nó có liên kết. Tổng đầu vào đơn vị j đơn giản chỉ là tổng trọng số của các đầu ra riêng lẻ từ các đơn vị kết nối cộng thêm ngưỡng hay độ lệch 0j :
aj = SF=1 WjiXi + 6j
Trường hợp Wji >0, nơ-ron được coi là đang ở trong trạng thái kích thích. Tương tự, nếu như Wji < 0, nơ-ron ở trạng thái kiềm chế. Chúng ta gọi các đơn vị với luật lan truyền như trên là các sigma units.
Trong một vài trường hợp người ta cũng có thể sử dụng các luật lan truyền phức tạp hơn. Một trong số đó là luật sigma-pi, có dạng như sau:
*j = Tlĩ=iWjin^=iXik+ ớj
Rất nhiều hàm kết hợp sử dụng một “độ lệch” hay “ngưỡng” để tính net input tới đơn vị. Đối với một đơn vị đầu ra tuyến tính, thông thường ớj được chọn là hằng số và trong bài toán xấp xỉ đa thức ớj = 1.
2.2.3. Hàm kích hoạt:
Phần lớn các đơn vị trong mạng nơ-ron chuyển net input bằng cách sử dụng một hàm vô hướng (scalar-to-scalar function) gọi là hàm kích hoạt, kết quả của hàm này là một giá trị gọi là mức độ kích hoạt của đơn vị (unit’s activation). Loại trừ khả năng đơn vị đó thuộc lớp ra, giá trị kích hoạt được đưa vào một hay nhiều đơn vị khác. Các hàm kích hoạt thường bị ép vào một khoảng giá trị xác định, do đó thường được gọi là các hàm bẹp (squashing). Các hàm kích hoạt hay được sử dụng là:
• Hàm đồng nhất (Linear funciton, Identity function)
Nếu coi các đầu vào là một đơn vị thì chúng sẽ sử dụng hàm này. Đôi khi một hằng số được nhân với net-input để tạo ra một hàm đồng nhất.
g(x)
được biết đến với tên “Hàm ngưỡng” (Threshold function). Đầu ra của hàm này được giới hạn vào một trong hai giá trị:
Í1, nếu (x > 0)
g(x)= {0, nếu (x < ớ)
Dạng hàm này được sử dụng trong các mạng chỉ có một lớp. Trong hình vẽ sau, 0 được chọn bằng 1.
-10 1 2 3
Hình 2.3 Hàm bước nhị phân
• Hàm sigmoid (Sigmoid function/ logsig) 1
ở(x) = —
1 + e x
Hàm này đặc biệt thuận lợi khi sử dụng cho các mạng được huấn luyện (trained) bởi thuật toán Lan truyền ngược (back-propagation), bởi vì nó dễ lấy đạo hàm, do đó có thể giảm đáng kể tính toán trong quá trình huấn luyện. Hàm này được ứng dụng cho các chương trình ứng dụng mà các đầu ra mong muốn rơi vào khoảng [0;1].
’tì -4 '2 ừ 2 4 6
Hình 2.4 Hàm Sigmoid
• Hàm sigmoid lưỡng cực (Bipolar sigmoid function/ tansig)
1
- e~x 9(x) = —
1 + e x
Hàm này có các thuộc tính tương tự hàm sigmoid. Nó làm việc tốt đối với các
Đối với các đơn vị đầu ra (output units), các hàm chuyển cần được chọn sao cho phù hợp với sự phân phối của các giá trị đích mong muốn. Chúng ta đã thấy rằng đối với các giá trị ra trong khoảng [0,1], hàm sigmoid là có ích, đối với các giá trị đích mong muốn là liên tục trong khoảng đó thì hàm này cũng vẫn có ích, nó có thể cho ta các giá trị ra hay giá trị đích được căn trong một khoảng của hàm kích hoạt đầu ra. Nhưng nếu các giá trị đích không được biết trước khoảng xác định thì hàm hay được sử dụng nhất là hàm đồng nhất (Identity function). Nếu giá trị mong muốn là dương nhưng không biết cận trên thì nên sử dụng một hàm kích hoạt dạng mũ.
2.3. Các dạng của mạng :
Hình dạng của mạng được định nghĩa bởi : số lớp (layers), số đơn vị trên mỗi lớp, và sự liên kết giữa các lớp như thế nào. Các mạng về tổng thể được chia thành hai loại dựa trên cách thức liên kết các đơn vị.
2.3.1 Mạng truyền thẳng (Feed forward neural network):
Dòng dữ liệu từ đơn vị đầu vào đến đơn vị đầu ra chỉ được truyền thẳng. Việc xử lý dữ liệu có thể mở rộng ra nhiều lớp, nhưng không có các liên kết phản hồi. Nghĩa là, các liên kết mở rộng từ các đơn vị đầu ra tới các đơn vị đầu vào trong cùng một lớp hay các lớp trước đó là không cho phép.
2.3.2. Mạng hồi quy (Recurrent neural network):
Có chứa các liên kết ngược. Khác với mạng truyền thẳng, các thuộc tính động của các mạng mới quan trọng. Trong một số trường hợp, các giá trị kích hoạt của cá đơn vị trải qua quá trình nới lỏng (tăng giảm số đơn vị và thay đổi các liên kết) cho đến khi mạng đạt đến một trạng thái ổn định và các giá trị kích hoạt không thay đổi nữa. Trong ứng dụng khác mà chạy động tạo thành đầu ra của mạng thì những sự thay đổi các giá trị kích hoạt là đáng quan tâm.
Input Layer Hidden Layer Output Layer
Hình 2.7 Mạng nơ-ron hoi quy
2.4. Huấn luyện mạng:
Chức năng của một mạng nơ-ron được quyết định bởi các nhân tố như: hình dạng mạng (số lớp, số đơn vị trên mỗi tầng, và cách mà các lớp được liên kết với nhau) và các trọng số của các liên kết bên trong mạng. Hình dạng của mạng thường là cố định, và các trọng số được quyết định bởi một thuật toán huấn luyện (training algorithm). Tiến trình điều chỉnh các trọng số để mạng “nhận biết” được quan hệ giữa đầu vào và đích mong muốn được gọi là học (learning) hay huấn luyện (training). Rất nhiều thuật toán học đã được phát minh để tìm ra tập trọng số tối ưu làm giải pháp cho các bài toán. Các thuật toán
Hình 2.8 Mô hình học có thầy (Supervised learning)
2.4.2. Học không có thầy (Unsupervised learning):
Với cách học không có thầy, không có phản hồi từ môi trường để chỉ ra rằng đầu ra của mạng là đúng. Mạng sẽ phải khám phá các đặc trưng, các điều chỉnh các mối tương quan , hay các lớp trong dữ liệu vào một cách tự động. Trong thực tế, đối với phần lớn các biến thể của học không có thầy, các đích trùng với đầu vào. Nói một cách khác, học không có thầy luôn thực hiện một công việc tương tự như một mạng tự liên hợp, cô đọng thông tin từ dữ liệu vào.
2.5. Hàm mục tiêu:
Để huấn luyện một mạng và xét xem nó thực hiện tốt đến đâu, ta cần xây dựng một hàm mục tiêu để cung cấp cách thức đánh giá khả năng hệ thống một cách không nhập nhằng. Việc chọn hàm mục tiêu là rất quan trọng bởi vì hàm này thể hiện các mục tiêu thiết kế và quyết định thuật toán huấn luyện nào có thể được áp dụng. Để phát triển một hàm mục tiêu đo được chính xác cái chúng ta muốn không phải là việc dễ dàng. Một vài hàm cơ bản được sử dụng rất rộng rãi. Một trong số chúng là hàm tổng bình phương lỗi (sum of squares error function).
p N
e=ềXỈ^-y^
P=1i=1
i: số thứ tự của đơn vị đầu ra
tpj và ypi : tương ứng là đầu ra mong muốn và đầu ra thực tế của mạng cho đơn vị đầu ra thứ i trên mẫu thứ p.
Trong các ứng dụng thực tế, nếu cần thiết có thể làm phức tạp hàm số với một vài yếu tố khác để có thể kiểm soát được sự phức tạp của mô hình.
CHƯƠNG 3 GIỚI THIỆU QUANSER 2DOF ROBOT
3.1. Giới thiệu chung về hệ thống robot 2 bậc của hãng Quanser:
Hệ thống robot Quanser 2 DOF như hình 1.1 là một loại robot “pantograph” 2 bậc tự do. Cấu trúc robot gồm 4 khâu với 3 khớp thụ động, được tạo thành bởi liên kết 4 thanh với 2 động cơ Servo DC được gắn cố định.
Robot Quanser 2 DOF là một loại robot được chế tạo dùng để nghiên cứu và học tập.
Vị trí ban đầu của robot trong hệ tọa độ Oxy:
Hình 3.1 Mô hình robot 2 bậc của Quanser. Bảng 3.1 Thông số của hệ thống robot.
Ký hiệu Mô tả Giá trị Đơn vị