Một đơn vị đo lường quán tính, giúp giữ thăngbằng và nhận biết nên đứng thẳng hay ngồi xuống.- Cảm giác: Với các cảm biến ở đầu, thân, tay, chân cho phép NAO nhận thức đượcmôi trường của
Trang 1TRƯỜNG CƠ KHÍ NCM CƠ ĐIỆN TỬ THÔNG MINH
BÁO CÁO GIỮA KỲ
Học phần: Robot dạng người – ME5620
Mã lớp: 145890
GVHD: PGS TS Bùi Hải Lê
Nhóm 25 MSSV
Dương Mạnh Hùng 20195033
Lê Tuấn Anh 20194892
Nguyễn Mạnh Kiên 20195061
HÀ NỘI, 5/2023
1
Trang 2MỤC LỤC
I TÌM HIỂU VỀ ROBOT NAO V6 3
1 Giới thiệu về Robot Nao V6 3
2 Các thông số kỹ thuật 3
3 Tính năng và hạn chế 4
II MÔ PHỎNG DỰA TRÊN ROBOT DẠNG NGƯỜI 5
1 Động học thuận: 5
2 Động học ngược 9
Trang 3I TÌM HIỂU VỀ ROBOT NAO V6
1 Giới thiệu về Robot Nao V6
NAO (phát âm là Nao) là một robot hình người tự động và có thể lập trình NAO được phát triển bởi Aldebaran Robotics, một công ty robot của Pháp có trụ sở tại Paris, được SoftBank Group mua lại vào năm 2015 và đổi tên thành SoftBank Robotics Sự kiện ra mắt của Dự án Nao vào năm 2004 đánh dấu sự phát triển của robot NAO Vào ngày 15 tháng 8 năm 2007, Nao đã thay thế chú chó robot Aibo của Sony làm robot sử dụng trong RoboCup Standard Platform League (SPL), một cuộc thi quốc tế về bóng đá dành robot [1] Nao đã được sử dụng trong RoboCup 2008 và 2009, và NaoV3R được chọn làm nền tảng cho SPL tại RoboCup 2010
2 Các thông số kỹ thuật
Thông số vật lý của NAO V6:
• Chiều cao: 574 mm
• Bề dài: 311 mm
• Bề ngang: 275 mm
• Cân nặng: 5,48 kg
• Nguồn: Pin lithium cung cấp 62,5 Wh ở 21,6V
• Thời gian hoạt động: 90 phút (hoạt động ở mức tích cực)
3
Trang 4• Số bậc tự do (DoF): 25
Sử dụng hệ điều hành NAOqi 2.8 (Dựa trên OpenEmbedded với RAM 4GB DDR3 cùng )
bộ nhớ 32GB SSD, được trang bị 2 camera HD OV5640 67.4°DFOV và rất nhiều các cảm biến
3 Tính năng và hạn chế
Tính năng
- Di chuyển: NAO có 25 bậc tự do và hình dáng giống người cho phép di chuyển và thích nghi với địa hình xung quanh Một đơn vị đo lường quán tính, giúp giữ thăng bằng và nhận biết nên đứng thẳng hay ngồi xuống
- Cảm giác: Với các cảm biến ở đầu, thân, tay, chân cho phép NAO nhận thức được môi trường của mình và xác định phương hướng
- Nghe và nói: Với 4 microphone định hướng và loa
- Thị giác: NAO được trang bị 2 camera để quay không gian xung quanh với độ phân giải cao, giúp nhận biết các hình dạng, đồ vật,…
- Kết nối: NAO có thể sử dụng nhiều chế độ kết nối khác nhau như WiFi, Ethernet, Bluetooth
Hạn chế
- Hạn chế về cảm biến: Robot Nao có một số cảm biến nhưng không đủ để thu thập
dữ liệu về môi trường xung quanh và tương tác với nó một cách hoàn hảo
- Hạn chế về khả năng di chuyển: Do Robot Nao có 25 bậc tự do nên khả năng di chuyển khá hạn chế và chậm chạp
- Hạn chế về tính tương tác: Mặc dù Robot Nao có khả năng tương tác với con người, nhưng nó không thể tương tác một cách chính xác như con người
- Hạn chế về giá cả: Robot Nao là một thiết bị đắt tiền và không phải ai cũng có thể mua được
Trang 5II MÔ PHỎNG DỰA TRÊN MÔ HÌNH ROBOT DẠNG NGƯỜI
1 Động học thuận:
Tính toán vị trí, tư thế khâu khi biết các góc khớp
*Loại bỏ khớp 2:
5
Trang 6B$ng 1 B$ng tham số
Sơ đồ cây
H nh 2 Sơ đồ cây khi bỏ khâu 2
Qua đó chúng em là lập trình các liên kết để mô phỏng trên Matlab bừng việc tạo một trường dữ liệu có các thông tin như tên, khối lượng, chị em, con, tọa độ và trục quay :
Trang 7%%% Set biped robot structure of Figure 2.19, 2.20
%%% Field definition: Table 2.1 Link Parameters
global uLINK
ToDeg = 180/pi;
ToRad = pi/180;
UX = [1 0 0]';
UZ = [0 0 1]';
uLINK = struct( 'name' 'BODY' , , 'm' , 10, 'sister' , 0, 'child' , 2, 'b' ,[0
0 0.7]', 'a' ,UZ, ,0); 'q'
%uLINK(2) = struct('name','RLEG_J0' , 'm', 5, 'sister', 8, 'child', 3, 'b',[0
-0.1 0]' ,'a',UZ,'q',0);
uLINK(2) = struct( 'name' , 'RLEG_J1' 'm' , , 1, 'sister' , 7, 'child' , 3, 'b' ,[0
-0.1 0]' , 'a' ,UX, ,0); 'q'
uLINK(3) = struct( 'name' , 'RLEG_J2' 'm' , , 5, 'sister' , 0, 'child' , 4, 'b' ,[0
0 0]' , 'a' ,UY, ,0); 'q'
uLINK(4) = struct( 'name' , 'RLEG_J3' 'm' , , 1, 'sister' , 0, 'child' , 5, 'b' ,[0
0 -0.3]' , 'a' ,UY, ,0); 'q'
uLINK(5) = struct( 'name' , 'RLEG_J4' 'm' , , 6, 'sister' , 0, 'child' , 6, 'b' ,[0
0 -0.3]' , 'a' ,UY, ,0); 'q'
uLINK(6) = struct( 'name' , 'RLEG_J5' 'm' , , 2, 'sister' , 0, 'child' , 0, 'b' ,[0
0 0 ]' , 'a' ,UX, ,0); 'q'
uLINK(7) = struct( 'name' , 'LLEG_J0' 'm' , , 5, 'sister' , 0, 'child' , 8, 'b' ,[0
0.1 0]' , 'a' ,UZ, ,0); 'q'
uLINK(8) = struct( 'name' , 'LLEG_J1' 'm' , , 1, 'sister' , 0, 'child' ,9, 'b' ,[0
0 0]' , 'a' ,UX, ,0); 'q'
uLINK(9)= struct( 'name' , 'LLEG_J2' 'm' , , 5, 'sister' , 0, 'child' ,10, 'b' ,[0
0 0]' , 'a' ,UY, ,0); 'q'
uLINK(10)= struct( 'name' , 'LLEG_J3' 'm' , , 1, 'sister' , 0, 'child' ,11, 'b' ,[0
0 -0.3]' , 'a' ,UY, ,0); 'q'
uLINK(11)= struct( 'name' , 'LLEG_J4' 'm' , , 6, 'sister' , 0, 'child' ,12, 'b' ,[0
0 -0.3]' , 'a' ,UY, ,0); 'q'
uLINK(12)= struct( 'name' , 'LLEG_J5' 'm' , , 2, 'sister' , 0, 'child' , 0, 'b' ,[0
0 0 ]' , 'a' ,UX, ,0); 'q'
[uLINK(1).vertex,uLINK(1).face] = MakeBox([0.1 0.3 0.5] ,[0.05 0.15
-0.05] ); % BODY
[uLINK(6).vertex,uLINK(6).face] = MakeBox([0.2 0.1 0.02] ,[0.05 0.05
0.05]); % Foot
[uLINK(12).vertex,uLINK(12).face] = MakeBox([0.2 0.1 0.02] ,[0.05 0.05
0.05]); % Foot
FindMother(1); % Find mother link from sister and child data
%%% Substitute the ID to the link name variables For example, BODY=1.
for n=1:length(uLINK)
eval([uLINK(n).name, '=' ,num2str(n), ]); ';'
end
uLINK(BODY).p = [0.0, 0.0, 0.65]';
uLINK(BODY).R = eye(3);
7
Trang 8uLINK(BODY).v = [0 0 0]';
uLINK(BODY).w = [0 0 0]';
for n=1:length(uLINK)
uLINK(n).dq = 0; % joitn speed [rad/s]
end
H nh 3 Lập tr nh liên kết các khâu
Mô phỏng theo các tham số tiền định cho một số tư thế hợp lý
Một số tư thế hợp lý khi:
Các khớp đầu gối giới hạn từ 0 đến π: 0 ≤q5,11≤π
Các khớp còn lại giới hạn từ −π
3 đến
π
3
Kết quả thu được
Trang 9H nh 4 Tư thế tương ứng với bộ tham số tiền định hợp lý
9
Trang 102 Động học ngược
a Phương pháp h nh học
Tiếp theo chúng ta sẽ thảo luận về cách tính các góc khớp khi chúng ta có vị trí của
cơ thể và bàn chân của robot Điều chúng ta cần làm trong trường hợp này là động học ngược
H nh 5 Tính toán động học ngược của chân
Xét chân phải của HR - Hình 1 Vị trí và tư thế của cơ thể và chân phải lần lượt là (p1, R1) và (p7, R7) Để đơn giản, định nghĩa D là khoảng cách giữa gốc cơ thể và khớp hông
Chiều dài chân trên và dưới là A và B
Ta sẽ tính vị trí khâu tiếp theo theo vị trí khâu thứ nhất theo công thức sau:
p 2 = p 1 +R[0
D
0]
Sau đó, tính vecto vị trí của hông so với mắt cá chân theo công thức:
p2=R7T
( p 2 − p 7 )≡[r x
ry
rz]
Từ đó, chúng ta có thể tính toán khoảng cách giữa mắt cá chân và hông:
Trang 11C=√rx+ry+rz Như trong hình 4 (b), nếu chúng ta xem xét tam giác ABC, chúng ta nhận được góc của đầu gối q Từ quy tắc cos ta tính được:5
q 5 =−cos −1 (A 2
+B 2
−C 2
2 AB )+π Tiếp tục xét tam giác ABC ta có: α=sin −1(A sin (π−q 5 )
C )+π Tiếp theo chúng ta sẽ tập trung vào tọa độ địa phương của mắt cá chân Như trong Hình 4 (c), từ vectơ r, có thể tính toán góc quay mắt cá chân và cao độ, do đó:
q 7 =atan2(r y ,r z )
q 6 =−atan 2 (r x ,sign(r z)√r y +r z)− ¿ α
Từ các phương trình xác định khớp:
R 7 =R R 1 z (q 2 ) R x (q 3 )R y (q 4 ) R y (q 5 + q 6 )R x (q 7 ) Chuyển về đổi dấu ta có:
[c 2 c 4 −s 2 s 3 s 4 − s 2 c 3 c 2 s 4 +s 2 s 3 c 4
s 2 c c 4 + 2 s s 3 4 c 2 c 3 s 2 s 4 −c 2 s 3 c 4
−c3s4 s3 c3c4 ]=[R 11 R 12 R 13
R 21 R 22 R 23
R31 R32 R33]
Từ đó tính được các giá trị biến khớp còn lại:
q 2 =atan2(−R 12 ,R 22 )
q 3 =atan2(R 32 ,−R 12 s 2 +R 22 c 2 )
q 7 =atan2(− R 31 ,R 33 )
Khi sử dụng chương trình sau trên robot thực, cần liên tục kiểm tra xem các góc khớp có vượt quá giới hạn của chúng hay không Trong trường hợp xấu nhất, có thể dẫn đến việc robot bị hỏng hóc
11
Trang 12Nói chung nó đòi hỏi một lượng lớn các phép tính nặng, vì vậy phổ biến hơn là sử dụng giải pháp số mà chúng ta sẽ xem xét trong phần tiếp theo
b Phương pháp số
Đây là một phương pháp thử và thuyết sai số, để giải quyết đô |ng học ngược bằng cách sử dụng đô |ng học thuâ |n và điều chỉnh các góc khớp để thu hẹp sự khác biệt
H nh 6 Phương pháp thử và sai số Bước 1 Chuẩn bị tư thế (pref, Rref) của liên kết cơ sở
Bước 2 Chuẩn bị vị trí (pref, Rref) của liên kết mục tiêu
Trang 13Bước 3 Xác định vectơ q giữ các góc chung từ liên kết cơ sở đến liên kết mục tiêu Bước 4 Sử dụng động học thuận về phía trước để tính toán vị trí (p, R) của liên kết
Bước 5 Tính toán sai số về vị trí và góc khớp
Bước 6 Nếu (Δp, ΔR) đủ nhỏ để dừng phép tính
Bước 7 Nếu (Δp, ΔR) tính toán không đủ nhỏ Δq điều đó sẽ làm gi$m lỗi
Bước 8 Cập nhật các góc khớp bằng q: = q +Δq và trở lại Bước 4
c Sử dụng tham số tiền định
Do bỏ đi khớp bàn chân 6 nên robot có tu thế đặc thù là bàn chân phải luôn vuông góc với chân phải Xét tư thế đặc thù ta có hình vẽ sau:
H nh 7 H nh minh họa cho tư thế đặc thù của Robot Trong đó α là góc quay của chân phải
Ta có công thức:
x=−0,3 sinα
z=0,3.(1−cosα)
Tư thế mong muốn khi góc α=60°
13
Trang 14d Tính vận tốc khớp theo vận tốc bàn chân
Quan hệ giữa vận tốc khớp và vận tốc của tác động cuối nhận được bằng cách chia cho khoảng thời gian nhỏ δt:
1
δt[δp
δθ]=J.δq δt
Xét trường hợp khâu body cố định trong không gian ta có tốc độ khớp ˙q và tốc độ tác động cuối (v, ω)như sau:
(v
ω)=J ˙q
Từ đó có thể tính toán tốc độ khớp theo công thức sau:
˙q=J −1
(v
ω)
Trang 15VD: Tính tốc độ khớp cho tư thế trong hình 19 Đầu tiên, thiết lập tất cả thông tin hình học của robot trên dòng lệnh Matlab, sau đó sử dụng FindRoute() để tìm đường đi từ thân đến chân phải
Sau đó, các góc của khớp được thiết lập sử dụng SetJointAngles() sao cho các góc pitch hông phải, pitch đầu gối và pitch bàn chân và 0 deg cho các khớp khác Tính toán Jacobian bằng các đầu vào sau
H nh 8 Tư thế ứng với vecto góc khớp
[0,0,-1.05816891316477, 1.62638050007581, -0.568211586911043,0]
15
Trang 16Giả sử muốn bàn chân nâng thẳng đứng với tốc độ 0.1m/s thì vận tốc khớp thu được bằng công thức:
>> dq = J \ [0 0 0.1 0 0 0]'
dq = [ 0
0
−0.2814
0.4451
−0.1637
0 ]
=> Tốc độ khớp của pitch hông, pitch đầu gối và pitch mắt cá chân là
(-0.2814, 0.4451, -0.1637) rad/s
e Tư thế kỳ dị
H nh 9 Tư thế k dị của Robot
Trang 17- Robot có đầu gối chân phải được duỗi thẳng hoàn toàn, vì thế robot không bao giờ có thể di chuyển chân của nó theo phương thẳng đứng bằng cách áp dụng bất kì tọa độ khớp nào ở cấu hình này
=> Vì thế tốc độ khớp sẽ không xác định được hoặc bằng vô cùng
Khi đó ma trận nghịch đảo của Jacobi sẽ như sau:
17