Đồ Án phân tích động học và mô phỏng đồ họa robot song song không gian 3RPS

Thảo luận trong 'Điện - Điện Tử' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    170
    Điểm thành tích:
    0
    Xu:
    0Xu
    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))>n then X1:=linalg[multiply](linalg[inverse](evalf(FX)),evalf(F));
    for i to nops(bt) do X:=X-X1;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:=[]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=" class="mceSmilieSprite mceSmilie7" alt=":p" title="Stick Out Tongue :p">p2:=[][IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=" class="mceSmilieSprite mceSmilie7" alt=":p" title="Stick Out Tongue :p">p3:=[]: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,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);
    Do có nhiều file word riêng lẻ nên mình nén trong file rar
     

    Các file đính kèm:

Đang tải...