Đề tài Mô phỏng động học cho Robot song song 3RPS

Tài liệu Đề tài Mô phỏng động học cho Robot song song 3RPS: Kết luận: Do các tính năng ưu việt của Robot song song, nên chúng ngày càng được sử dụng rộng rãi trong nền công nghiệp và trong nhiều lĩnh vực khác nhau. Vì vậy các nhà cơ học ngày càng quan tâm nghiên cứu các vấn đề về động học, động lực học, về điều khiển và ổn định chuyển động của các Robot song song. Do mô hình cơ học của Robot song song khá phức tạp, nên trong đồ án chỉ sử dụng công cụ tin học để tính toán và mô phỏng. Trong đồ án này đã sử dụng phần mền Maple làm công cụ để nghiên cứu phân tích động học của Robot song song, phần mền Pro Engineer để thiết kế 3D và mô phỏng nguyên lý hoạt động, đặt tính động học của con Robot. Kết quả mô phỏng động học của việc áp dụng hai phần mềm trên là như nhau. Điều này chứng minh rằng kết quả phân tích động học Robot song song 3RPS là chính xác. Như vậy qua việc mô phỏng động học cho Robot song song 3RPS ta thấy: điểm mạnh của phần mềm Maple là khả năng lập trình giải các bài toán trong toán học mà ở đây là giải bài toán động học thu...

doc8 trang | Chia sẻ: hunglv | Lượt xem: 1373 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Đề tài Mô phỏng động học cho Robot song song 3RPS, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Kết luận: Do các tính năng ưu việt của Robot song song, nên chúng ngày càng được sử dụng rộng rãi trong nền công nghiệp và trong nhiều lĩnh vực khác nhau. Vì vậy các nhà cơ học ngày càng quan tâm nghiên cứu các vấn đề về động học, động lực học, về điều khiển và ổn định chuyển động của các Robot song song. Do mô hình cơ học của Robot song song khá phức tạp, nên trong đồ án chỉ sử dụng công cụ tin học để tính toán và mô phỏng. Trong đồ án này đã sử dụng phần mền Maple làm công cụ để nghiên cứu phân tích động học của Robot song song, phần mền Pro Engineer để thiết kế 3D và mô phỏng nguyên lý hoạt động, đặt tính động học của con Robot. Kết quả mô phỏng động học của việc áp dụng hai phần mềm trên là như nhau. Điều này chứng minh rằng kết quả phân tích động học Robot song song 3RPS là chính xác. Như vậy qua việc mô phỏng động học cho Robot song song 3RPS ta thấy: điểm mạnh của phần mềm Maple là khả năng lập trình giải các bài toán trong toán học mà ở đây là giải bài toán động học thuận và động học ngược, còn điểm mạnh của phần mền Pro/Engineer là khả năng thiết kế mô phỏng Robot song song 3RPS trên mô hình 3D, đặt biệt là khả năng tự phân tích, tính toán động học của robot mà ta không cần tác động, ta chỉ thiết lập các điều kiện đầu cho việc mô phỏng, phần còn lại phần mền tự phân tích, tính toán và cho ra kết quả. Đồ án của em đã giải quyết được bài toán động học thuận và động học ngược Robot song song 3RPS một cách triệt để bằng phương pháp động học hệ nhiều vật, có thể áp dụng để giải quyết các Robot song song phức tạp hơn. Các kết quả thu được có thể sử dụng để tính toán phục vụ cho việc điều khiển và thiết kế các Robot song song. Do thời gian hoàn thành bản đồ án có hạn nên các vấn đề về phân tích động lực học và điều khiển Robot chuyển động song song là các vấn đề quan trọng phức tạp và chúng ta cần được nghiên cứu tiếp theo trong tương lai. phụ lục Phụ lục A: Phương pháp Newton-Raphson sử dụng để giải hệ phương trình có thể khái quát như sau: Cho hệ phương trình có n phương trình n ẩn số: fi(x1,x2,..xn) = 0 với i =1..n Ta có thể trình bày hệ trên như sau: F(x) = 0 với Để giải hệ trên ta thực hiện các bước sau: Bước 1: Cho một giá trị x khởi gán ban đầu x(0)= Bước 2: Tính với: , i=0 Bước 3: Tính bằng cách giải hệ phương trình đại số tuyến tính: Bước 4: So sánh (k=1..n) (*) Với: no là cấp chính xác bài toán + Nếu (*) thoả mãn chuyển sang bước 5 + Nếu (*) không thoả mãn : tăng i lên 1 dơn vị (i:=i+1), quay lại bước 1 - Bước 5: Đưa kết quả nghiệm của hệ phương trình x, kết thúc chương trình Chú ý: với giá trị x khởi gán ban đầu x(0) phải thoả mãn det(Fx) Phụ lục B: Mã nguồn của chương trình mô phỏng động học thuận và động học ngược của Robot song song 3RPS bằng Maple. *Bài toán động học thuận: > restart; > > #*********************Ham con*************************************** > giaihe:=proc(bt::list,X::vector,n) > local th,i,j; > global X1,DTX; > th:=0; > while th=0 do > DTX:=evalf(linalg[linsolve](evalf(FX),evalf(F))); > for i to nops(bt) do if abs(evalf(DTX[i]))>n then X1:=linalg[multiply](linalg[inverse](evalf(FX)),evalf(F)); for i to nops(bt) do X[i]:=X[i]-X1[i];od;;break; > elif i=nops(bt) then th:=1; > fi; > od; > od; > end: > > #*********************Dieu kien dau*********************************** > d1:=100*sin(2*Pi*t+Pi/2)+20*sin(18*Pi*t-Pi/2)+1150: > d2:=100*sin(2*Pi*t+7*Pi/6)+20*sin(18*Pi*t+Pi/6)+1150: > d3:=100*sin(2*Pi*t+11*Pi/6)+20*sin(18*Pi*t+5*Pi/6)+1150: > > g:=550: > h:=250: > m:=200: > tmax:=1: > n:=0.000001: > pp1:=[]:pp2:=[]:pp3:=[]:vp1:=[]:vp2:=[]:vp3:=[]: > > #*********************Bieu thuc tim vi tri******************************** > bt1:=3*g^2-3*h^2-3*g*d1*X[1]-3*g*d2*X[2]+d1*d2*X[1]*X[2]-2*d1*d2*sqrt(1-X[1]^2)*sqrt(1-X[2]^2)+d1^2+d2^2: > bt2:=3*g^2-3*h^2-3*g*d1*X[1]-3*g*d3*X[3]+d1*d3*X[1]*X[3]-2*d1*d3*sqrt(1-X[1]^2)*sqrt(1-X[3]^2)+d1^2+d3^2: > bt3:=3*g^2-3*h^2-3*g*d2*X[2]-3*g*d3*X[3]+d2*d3*X[2]*X[3]-2*d2*d3*sqrt(1-X[2]^2)*sqrt(1-X[3]^2)+d2^2+d3^2: > bt:=[bt1,bt2,bt3]: > p1:=(d2*X[2]+d3*X[3])/6-d1*X[1]/3: > p2:=-sqrt(3)*(d2*X[2]-d3*X[3])/6: > p3:=d1*sqrt(1-X[1]^2)/3+d2*sqrt(1-X[2]^2)/3+d3*sqrt(1-X[3]^2)/3: > F:=evalf(Vector(bt)): > FX:=evalf(Matrix([seq([seq(diff(bt[i],X[j]),j=1..nops(bt))],i=1..nops(bt))])): > > #*********************Bieu thuc tim van toc********************** > f1:=-3*g*X[1]+d2*X[1]*X[2]+2*d1-2*d2*sqrt(1-X[1]^2)*sqrt(1-X[2]^2): > f2:=-3*g*X[2]+d1*X[1]*X[2]+2*d2-2*d1*sqrt(1-X[1]^2)*sqrt(1-X[2]^2): > f3:=-3*g*d1*sqrt(1-X[1]^2)+d1*d2*sqrt(1-X[1]^2)*X[2]+2*d1*d2*sqrt(1-X[2]^2)*X[1]: > f4:=-3*g*d2*sqrt(1-X[2]^2)+d1*d2*sqrt(1-X[2]^2)*X[1]+2*d1*d2*sqrt(1-X[1]^2)*X[2]: > f5:=-3*g*X[1]+d3*X[1]*X[3]+2*d1-2*d3*sqrt(1-X[1]^2)*sqrt(1-X[3]^2): > f6:=-3*g*X[3]+d1*X[1]*X[3]+2*d3-2*d1*sqrt(1-X[1]^2)*sqrt(1-X[3]^2): > f7:=-3*g*d1*sqrt(1-X[1]^2)+d1*d3*sqrt(1-X[1]^2)*X[3]+2*d1*d3*sqrt(1-X[3]^2)*X[1]: > f8:=-3*g*d3*sqrt(1-X[3]^2)+d1*d3*sqrt(1-X[3]^2)*X[1]+2*d1*d3*sqrt(1-X[1]^2)*X[3]: > f9:=-3*g*X[2]+d3*X[2]*X[3]+2*d2-2*d3*sqrt(1-X[3]^2)*sqrt(1-X[2]^2): > f10:=-3*g*X[3]+d2*X[3]*X[2]+2*d3-2*d2*sqrt(1-X[3]^2)*sqrt(1-X[2]^2): > f11:=-3*g*d2*sqrt(1-X[2]^2)+d2*d3*sqrt(1-X[2]^2)*X[3]+2*d2*d3*sqrt(1-X[3]^2)*X[2]: > f12:=-3*g*d3*sqrt(1-X[3]^2)+d2*d3*sqrt(1-X[3]^2)*X[2]+2*d2*d3*sqrt(1-X[2]^2)*X[3]: > > VD:=evalf(Vector(6,[diff(d1,t),diff(d2,t),diff(d3,t),0,0,0])): > JD:=evalf(Matrix([[-X[1],X[2]/2,X[3]/2,0,0,0],[0,-sqrt(3)*X[2]/2,sqrt(3)*X[3]/2,0,0,0],[sqrt(1-X[1]^2),sqrt(1-X[2]^2),sqrt(1-X[3]^2),0,0,0],[f1,f2,0,0,0,0],[f5,0,f6,0,0,0],[0,f9,f10,0,0,0]])): > JP:=evalf(Matrix([[3,0,0,d1*sqrt(1-X[1]^2),-d2*sqrt(1-X[2]^2)/2,-d3*sqrt(1-X[3]^2)/2],[0,3,0,0,sqrt(3)*d2*sqrt(1-X[2]^2)/2,-sqrt(3)*d3*sqrt(1-X[3]^2)/2],[0,0,3,d1*X[1],d2*X[2],d3*X[3]],[0,0,0,-f3,-f4,0],[0,0,0,-f7,0,-f8],[0,0,0,0,-f11,-f12]])): > B:=evalf(Vector(linalg[multiply](JD,VD))): > > #*********************Bat dau tinh toan********************************* > t:=0.0: > for j to 100 do X:=vector(RandomTools[Generate](list(float,nops(bt)))); > if linalg[det](evalf(FX))0 then break; fi; > od: > for k to m+1 do > t:=evalf(tmax*(k-1)/m); > giaihe(bt,X,n); > VP:=evalf(linalg[linsolve](evalf(JP),evalf(B))); > pp1:=[op(pp1),[t,evalf(p1)]]: > pp2:=[op(pp2),[t,evalf(p2)]]: > pp3:=[op(pp3),[t,evalf(p3)]]: > vp1:=[op(vp1),[t,evalf(VP[1])]]; > vp2:=[op(vp2),[t,evalf(VP[2])]]; > vp3:=[op(vp3),[t,evalf(VP[3])]]; > od: > > #**************************Ket qua************************************ > plots[pointplot](pp1,connect=true,axes=boxed,color=red); > plots[pointplot](pp2,connect=true,axes=boxed,color=red); > plots[pointplot](pp2,connect=true,axes=boxed,color=red); > plots[pointplot](vp2,connect=true,axes=boxed,color=red); > plots[pointplot](vp2,connect=true,axes=boxed,color=red); > plots[pointplot](vp2,connect=true,axes=boxed,color=red); * Bài toán động học ngược: > restart; > > #*********************Ham con*********************************** > giaihe:=proc(bt::list,X::vector,n) > local th,i,j; > global X1,DTX; > th:=0; > while th=0 do > DTX:=evalf(linalg[linsolve](evalf(FX),evalf(F))); > for i to nops(bt) do if abs(evalf(DTX[i]))>n then X1:=linalg[multiply](linalg[inverse](evalf(FX)),evalf(F)); for i to nops(bt) do X[i]:=X[i]-X1[i];od;;break; > elif i=nops(bt) then th:=1; > fi; > od; > od; > end: > > #*********************Dieu kien dau******************************** > p1:=0: > p2:=0: > p3:=1500+200*sin(2*Pi*t)+30*cos(8*Pi*t): > g:=500: > h:=500: > m:=100: > tmax:=1: > n:=0.000001: > pd1:=[]:pd2:=[]:pd3:=[]:vd1:=[]:vd2:=[]:vd3:=[]: > > #*********************Bieu thuc tim vi tri***************************** > bt1:=3*g^2-3*h^2-3*g*X[1]*X[4]-3*g*X[2]*X[5]+X[1]*X[2]*X[4]*X[5]-2*X[1]*X[2]*sqrt(1-X[4]^2)*sqrt(1-X[5]^2)+X[1]^2+X[2]^2: > bt2:=3*g^2-3*h^2-3*g*X[1]*X[4]-3*g*X[3]*X[6]+X[1]*X[3]*X[4]*X[6]-2*X[1]*X[3]*sqrt(1-X[4]^2)*sqrt(1-X[6]^2)+X[1]^2+X[3]^2: > bt3:=3*g^2-3*h^2-3*g*X[2]*X[5]-3*g*X[3]*X[6]+X[2]*X[3]*X[5]*X[6]-2*X[2]*X[3]*sqrt(1-X[5]^2)*sqrt(1-X[6]^2)+X[2]^2+X[3]^2: > bt4:=(X[2]*X[5]+X[3]*X[6])/2-X[1]*X[4]-3*p1: > bt5:=-sqrt(3)*(X[2]*X[5]-X[3]*X[6])-6*p2: > bt6:=X[1]*sqrt(1-X[4]^2)+X[2]*sqrt(1-X[5]^2)+X[3]*sqrt(1-X[6]^2)-3*p3: > bt:=[bt1,bt2,bt3,bt4,bt5,bt6]: > F:=evalf(Vector(bt)): > FX:=evalf(Matrix([seq([seq(diff(bt[i],X[j]),j=1..nops(bt))],i=1..nops(bt))])): > > #*********************Bieu thuc tim van toc***************************** > f1:=-3*g*X[4]+X[2]*X[4]*X[5]+2*X[1]-2*X[2]*sqrt(1-X[4]^2)*sqrt(1-X[5]^2): > f2:=-3*g*X[5]+X[1]*X[4]*X[5]+2*X[2]-2*X[1]*sqrt(1-X[4]^2)*sqrt(1-X[5]^2): > f3:=-3*g*X[1]*sqrt(1-X[4]^2)+X[1]*X[2]*sqrt(1-X[4]^2)*X[5]+2*X[1]*X[2]*sqrt(1-X[5]^2)*X[4]: > f4:=-3*g*X[2]*sqrt(1-X[5]^2)+X[1]*X[2]*sqrt(1-X[5]^2)*X[4]+2*X[1]*X[2]*sqrt(1-X[4]^2)*X[5]: > f5:=-3*g*X[4]+X[3]*X[4]*X[6]+2*X[1]-2*X[3]*sqrt(1-X[4]^2)*sqrt(1-X[6]^2): > f6:=-3*g*X[6]+X[1]*X[4]*X[6]+2*X[3]-2*X[1]*sqrt(1-X[4]^2)*sqrt(1-X[6]^2): > f7:=-3*g*X[1]*sqrt(1-X[4]^2)+X[1]*X[3]*sqrt(1-X[4]^2)*X[6]+2*X[1]*X[3]*sqrt(1-X[6]^2)*X[4]: > f8:=-3*g*X[3]*sqrt(1-X[6]^2)+X[1]*X[3]*sqrt(1-X[6]^2)*X[4]+2*X[1]*X[3]*sqrt(1-X[4]^2)*X[6]: > f9:=-3*g*X[5]+X[3]*X[5]*X[6]+2*X[2]-2*X[3]*sqrt(1-X[6]^2)*sqrt(1-X[5]^2): > f10:=-3*g*X[6]+X[2]*X[6]*X[5]+2*X[3]-2*X[2]*sqrt(1-X[6]^2)*sqrt(1-X[5]^2): > f11:=-3*g*X[2]*sqrt(1-X[5]^2)+X[2]*X[3]*sqrt(1-X[5]^2)*X[6]+2*X[2]*X[3]*sqrt(1-X[6]^2)*X[5]: > f12:=-3*g*X[3]*sqrt(1-X[6]^2)+X[2]*X[3]*sqrt(1-X[6]^2)*X[5]+2*X[2]*X[3]*sqrt(1-X[5]^2)*X[6]: > > VP:=evalf(Vector(6,[diff(p1,t),diff(p2,t),diff(p3,t),0,0,0])): > J2:=evalf(Matrix([[-X[4]/3,X[5]/6,X[6]/6,-X[1]*sqrt(1-X[4]^2)/3,X[2]*sqrt(1-X[5]^2)/6,X[3]*sqrt(1-X[6]^2)/6],[0,-sqrt(3)*X[5]/6,sqrt(3)*X[6]/6,0,-sqrt(3)*X[2]*sqrt(1-X[5]^2)/6,sqrt(3)*X[3]*sqrt(1-X[6]^2)/6],[sqrt(1-X[4]^2)/3,sqrt(1-X[5]^2)/3,sqrt(1-X[6]^2)/3,-X[1]*X[4]/3,-X[2]*X[5]/3,-X[3]*X[6]/3],[f1,f2,0,f3,f4,0],[f5,0,f6,f7,0,f8],[0,f9,f10,0,f11,f12]])): > > #*********************Bat dau tinh toan********************************* > t:=0.0: > for j to 100 do X:=vector(RandomTools[Generate](list(float,nops(bt)))); > if linalg[det](evalf(FX))0 then break; fi; > od: > for k to m+1 do > t:=evalf(tmax*(k-1)/m); > giaihe(bt,X,n); > X[1];X[2];X[3];X[4];X[5];X[6]; > VD:=evalf(linalg[linsolve](evalf(J2),evalf(VP))); > pd1:=[op(pd1),[t,evalf(X[1])]]: > pd2:=[op(pd2),[t,evalf(X[2])]]: > pd3:=[op(pd3),[t,evalf(X[3])]]: > vd1:=[op(vd1),[t,evalf(VD[1])]]; > vd2:=[op(vd2),[t,evalf(VD[2])]]; > vd3:=[op(vd3),[t,evalf(VD[3])]]; > od: > > #**************************Ket qua************************************ > plots[pointplot](pd1,connect=true,color=red); > plots[pointplot](pd2,connect=true,color=red); > plots[pointplot](pd3,connect=true,color=red); > plots[pointplot](vd1,connect=true,color=red); > plots[pointplot](vd2,connect=true,color=red); > plots[pointplot](vd3,connect=true,color=red); Tài liệu tham khảo [1] GS.TSKH. Nguyễn Văn Khang: Cơ sở cơ học kỹ thuật, tập 1. NXB Đại học quốc gia. Hà Nội-2003. [2] Phạm Huy Điển: Tính toán, lập trình và giảng dạy toán học trên Maple. Nhà xuất bản Khoa học và Kỹ thuật. Hà Nội-2002. [3] TS. Nguyễn Tiến Dũng, Trần Thế San: Cơ sở nguyên cứu và sáng tạo robot. NXB Thống kê 2003. [4] GS.TS Nguyễn Thiện Phúc: Robot công nghiệp. NXB Khoa học và Kỹ thuật, Hà Nội-2003. [5] Phạm Viết Thắng: Phân tích vị trí và phân tích Jacobi robot song song 3RPS . Đồ án tốt nghiệp Đại học BKHN, năm 2004. [6] KS.Phạm Văn Hiển, Phùng Thị Nguyệt: Pro Engineer 200i. NXB Thống kê 2003

Các file đính kèm theo tài liệu này:

  • docketluan.doc