【六足机器人3PRR关节构型的运动控制】通过采取顶视投影的方式,将六足机器人建模为3PRR构型,并实现了运动学控制(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、详细文档


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

本工作中分析的系统是由Quanser公司生产的称为六足机器人的六自由度(DOF)并联平台操纵器。

六足机器人作为一项合作研发项目,由纽约州立大学布法罗分校(SUNY-Buffalo)的ARM实验室(由Venkat Krovi教授领导)和Quanser Inc.公司共同开发。该装置能够在紧凑的工作空间内以高加速度移动重载荷。它是一个带有刚性平台的六自由度并联操纵器。平台通过三个点与刚性固定长度的臂相连,这三个点构成一个等边三角形。这些臂成对连接到平台上,每对臂的一端汇聚在一起,随后通过球面关节连接到操纵器上。六条臂的自由端通过万向节与基座相连,该万向节可在基座上滑动。臂的基座沿棱柱关节排列。在平台上相聚的同一对连杆占据了一条直线轴,因此平台上共有三条水平直槽,每条槽中有两个链接底座在其内滑动。这三条槽在刚性基座上相互对齐,使得它们与等边三角形的每条臂都共线。

六足机器人中按其特征尺寸降序排列的关键部件如下:

本项目部分完成于“机器人操作与移动”(MAE 513)课程的要求。当前项目旨在作为学习理解关节多体系统(该课程重点强调的内容)的实践基地。六足机器人系统,通过多种关节将其多个部件耦合在一起,这些关节可以分类为6个螺旋关节(SJ)、6个万向节(UJ)和3个球面关节(SJ),提供了足够复杂的一个实例,用以阐明复杂多体系统中的力学与控制。同时,系统的复杂性要求使用不同的分析技术、数值仿真工具、软件环境以及计算机-硬件接口,从而为实践和磨练课程中学到的技能提供了充分的机会。

1.2.2. 优势

平行平台操纵器(PPM)的一个重要优势在于其卓越的结构刚性,使其在搬运重物和高精度加工任务方面比串联链式操纵器(SCM)更为优选。其优势可总结如下[1]:

  • 非常高的精度
  • 更佳的刚度比
  • 强大的运动学性能:更大的载荷能力
  • 详细文档见第4部分。

📚2 运行结果

主函数代码:

% function [j_vars] = parallel1()
clear all
close all
clc
%% global variables
global l lengths radiusx radiusy ell_angle
global l1a l2a L angles phidot
%% trajectory information
d2r=pi/180;
radiusx=1; radiusy=3; ell_angle=30; % ellipse data
x=radiusx*cos(ell_angle*d2r); % initial starting x for platform center
y=radiusx*sin(ell_angle*d2r); % initial starting y for platform center
phi=30*d2r; phidot=0*d2r; % initial angle of platform and its change rate
%% system parameters
l=3; % length of side of center platform
angles=[pi/3 2*pi/3 0]; % angles of the base triangle in absolute frame
L(1)=5; % base triangle side1
L(2)=5; % base triangle side2
l1a=5; % link length for first rotating link
basepoint=[-L(1)/2 -L(1)/2*tan(pi/6)]; % the base point for the first prismatic joint
Sim_Angle=2*pi; % angle along ellipse
%% system calculation
bases(1,:)=basepoint;
bases(2,:)=bases(1,:)+[L(1)*cos(angles(1)) L(1)*sin(angles(1))];
bases(3,:)=bases(2,:)+[L(2)*cos(angles(2)) L(2)*sin(angles(2))];
angles(3)=atan2(bases(1,2)-bases(3,2),bases(1,1)-bases(3,1));
L(3)=sqrt((bases(1,1)-bases(3,1))^2+(bases(1,2)-bases(3,2))^2);
bases(4,:)=bases(1,:); % calculate the bases of the prismatic joints
l2a=l/2/cos(pi/6); % link lengths for second rotating link
lengths=[l1a l2a;l1a l2a;l1a l2a]; % only two link lengths for 2R
%% initialization for startup
j_vars=zeros(1,9); % 3*3=9 joints
options=odeset; % for use in ode45/ode4
feasible=1; % set feasibility crieteria default value
ends=myfunc(x,y,phi); % calculate the ends of the platform link
for i=1:3
    j_vars(1,i*3-2:i*3-1)=myrevkin1(bases(i:i+1,:),ends(1:2,i),lengths(i,1)); % inverse kinematics routine
    if(j_vars(1,i*3-1)==10) % if found infeasible
        j_vars(1,i*3)=10;
        feasible=0;
    else
        j_vars(1,i*3)=(i-1)*2*pi/3+pi/6+phi*d2r;
    end
end
%% Final ODE routines and simulation
if(feasible~=1)
    disp('no feasible soln in parallel');
    pause
else
%     [T Y]=ode45(@Mydiff,0:0.05:Sim_Angle,j_vars(1,:),options); % variable time step
    Y=ode4(@Mydiff,0:0.05:Sim_Angle,j_vars(1,:)); T=0:0.05:Sim_Angle; % fixed time step
    span=length(T);
    x=zeros(span,3);
    y=zeros(span,3);
%     aviobj = avifile('trial.avi','compression','Cinepak'); % Step 1: Declare an avi object
    for i=1:length(T)
        for i2=1:3
            x(i,i2)=bases(i2,1)+L(i2)*Y(i,i2*3-2)*cos(angles(i2))+lengths(i2,1)*cos(Y(i,i2*3-1))+lengths(i2,2)*cos(Y(i,i2*3));
            y(i,i2)=bases(i2,2)+L(i2)*Y(i,i2*3-2)*sin(angles(i2))+lengths(i2,1)*sin(Y(i,i2*3-1))+lengths(i2,2)*sin(Y(i,i2*3));
        end
        plot(x(1:i,2),y(1:i,2),'color','k','linewidth',2);
        hold on;
        plot(bases(:,1),bases(:,2),'o--k');
        parallelplot1(Y(i,:),bases,lengths);
%         frame= getframe(gcf);   %Step 2: Grab the frame
%         aviobj = addframe(aviobj,frame); % Step 3: Add frame to avi object
        hold off;
    end
%     aviobj = close(aviobj);  % Step 4: Close the avi object
end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

*1+ L.T. Wang and K. Oen, “Local rolling and tilting capability analysis of fully parallel linear actuated platform

type manipulators”, Advanced Robotics, vol. 21, no. 8, pp. 931-960, 2007.

*2+ K. Oen and L.T. Wang, “Optimal dynamic trajectory planning for linearly actuated platform type parallel

manipulators having task space redundant degree of freedom”, Mechanism and Machine Theory, vol. 42, pp.

727-750, 2007.

*3+ J. P. Merlet, “Jacobian, Manipulability, Condition Number, and Accuracy of Parallel Robots”, Journal of

Mechanical Design, vol. 28, pp. 199-206, Jan 2006.

*4+ J.P. Merlet, “Solid mechanics and its application: Parallel Robots”, Kluwer Academic Publishers, Dordrecht,

The Netherlands, 2000.

*5+ F. Xi and R. Sinatra, “Inverse dynamics of hexapods using the natural orthogonal complement method”,

Journal of Manufacturing Systems, vol. 21, no. 2, pp. 73-82, 2002.

*6+ P. Ngoc et al.,“Development of a new 6-dof parallel-kinematic motion simulator”, International

Conference on Control, Automation and Systems, pp. 2370-2373, Oct. 2008.

🌈4 Matlab代码、详细文档

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MATLAB3-PRR并联机构工作空间代码包括对机构参数的定义以及计算机构的工作空间范围。 在定义机构参数时,需要确定机构的三个移动平台的长度a、底座半径r和上下平台的高度h,以及机构的运动范围θ1和θ2。 具体计算机构的工作空间范围时,需要进行以下步骤: 1.设定关节的角度范围,可以通过for循环实现。 2.根据三个平台的长度和高度,以及底座半径计算平台的位置。 3.使用向量运算计算出平台之间的距离,判断是否在机构范围内。 4.将符合条件的点保存在坐标数组中。 5.以三维图形的形式呈现机构工作空间。 根据以上步骤可以编写MATLAB3-PRR并联机构的工作空间代码。通过该代码可以清晰地呈现机构的工作空间范围,为后续机构运动路径的规划提供依据,同时可以检查机构设计是否符合要求。 ### 回答2: MATLAB3-prr并联机构工作空间代码是一种可利用MATLAB程序语言编写的机器人控制运动学计算的代码。3-prr并联机构是一种机械结构,由三个平行的运动臂和一个旋转支点组成。在机械臂上安装一个末端执行器,在执行器上安装工具,可以执行复杂的工业制造和组装任务。 MATLAB3-prr并联机构工作空间代码基于机械臂运动学理论,首先使用Denavit-Hartenberg方法推导机构的运动学参数,然后利用MATLAB程序编写计算机程序,以计算机手段实现机器人运动控制。该程序通过输入机械臂每个关节的角度,计算机可以计算机械臂工作范围内可以访问的所有点的坐标。这些坐标在三维坐标系中表示,提供了可视化的显示,帮助用户直观地观察这些点的位置和机械臂的运动轨迹。 通过MATLAB3-prr并联机构工作空间代码,工程师们可以确定机械臂的运动工作范围,为机器人控制系统的设计提供重要信息。同时,该程序还可以帮助工程师进行工具路径规划,计算机械臂的末端执行器的运动轨迹,帮助工程师制定自动化工厂中的生产计划和任务指令。MATLAB3-prr并联机构工作空间代码在工业制造和装配自动化领域具有广泛的应用前景。 ### 回答3: MATLAB3-PRR并联机构是一种主动力学并联机构,它由三个平动运动副构成,可实现在一个平面内的六自由度运动。该机构由两个相同的主臂和一个被动底座组成,主臂之间通过传动轮连接。 要编写MATLAB3-PRR并联机构的工作空间代码,需要先定义该机构的相关参数,包括主臂长度、传动轮半径、底座姿态等。然后,通过利用相关的运动学公式,可以得到机构的正解方程。通过对正解方程求解,可以得到各关节运动学解,并根据这些解,进一步计算出机构在三维空间内的各个点的位置。 在编写代码时,还需要考虑到机构的工作空间。由于MATLAB3-PRR并联机构的构型比较特殊,因此其工作空间也比较特殊。具体而言,机构的工作空间由一个内部空间和一个外部空间组成,内部空间是机构的有效运动范围,外部空间是机构的最大运动范围。 为了计算机构的工作空间,可以先定义机构的各个关节的角度范围,然后通过迭代法计算机构的位置和姿态,最后绘制出机构的工作空间图像。 综上所述,MATLAB3-PRR并联机构工作空间代码的编写需要掌握机构的运动学原理和工作空间计算方法,同时需要具备一定的MATLAB编程能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值