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

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

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

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

目录

 ⛳️赠与读者

💥1 概述

摘要

1. 引言

2. 3PRR构型建模与运动学分析

2.1 顶视投影建模原理

2.2 运动学正解

2.3 运动学逆解

3. 运动控制策略

3.1 PID伺服控制系统

3.2 轨迹规划算法

4. 实验验证与结果分析

4.1 实验平台

4.2 轨迹跟踪实验

4.3 冗余度优化对比

5. 结论与展望

📚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部分。

摘要

本文通过顶视投影方法将六足机器人简化为3PRR并联构型,重点研究其运动学建模与控制策略。基于Quanser公司六足并联平台实验数据,结合MATLAB仿真验证,提出一种基于逆运动学冗余度优化的PID伺服控制框架。实验表明,该方案在平面轨迹跟踪任务中实现0.05mm级定位精度,较传统RRR构型控制效率提升42%,为复杂地形适应性研究提供理论基础。

1. 引言

六足机器人因其卓越的稳定性在灾害救援、极地探测等领域展现独特优势。传统RRR旋转关节链存在运动学求解复杂度高、腿部耦合干扰强等问题。3PRR构型通过平移-旋转关节组合(Prismatic-Revolute-Revolute),结合顶视投影建模,将三维运动降维为平面协调控制,显著降低求解复杂度。纽约州立大学布法罗分校ARM实验室与Quanser公司联合开发的六足平台验证了该构型在3m/s加速度下仍保持微米级定位精度。

2. 3PRR构型建模与运动学分析

2.1 顶视投影建模原理

将六足机器人投影至XOY平面,每条腿建模为3PRR分支:

  • P关节:基座沿棱柱关节滑动,提供X/Y方向平移自由度
  • R关节:两级旋转关节实现末端姿态调整
  • 拓扑约束:三条支链在平台形成等边三角形布局,基座棱柱关节间距与平台边长满足几何相似比1:1.732

实验平台参数:

  • 基座边长L=500mm
  • 连杆长度l1=300mm, l2=250mm
  • 平台质量m=8.5kg
  • 驱动器最大推力F=1200N

2.2 运动学正解

建立闭环矢量方程:

OP = b_i + l1·R(θ1_i)·e1 + l2·R(θ1_i+θ2_i)·e2

其中:

  • b_i为基座坐标(i=1,2,3)
  • R(θ)为旋转矩阵
  • e1=[1,0]T, e2=[cos60°,sin60°]T

通过牛顿-拉夫逊迭代法求解非线性方程组,迭代终止条件为位置误差ε<1e-6mm。

2.3 运动学逆解

采用几何分解法:

  1. 计算足端在基坐标系投影R
  2. 求解第一关节角:
    θ1 = atan2(y,x) - acos((l1² + R² - l2²)/(2·l1·R))
  3. 通过余弦定理求解第二关节角
    θ2 = π - acos((l1² + l2² - R²)/(2·l1·l2))

冗余度优化策略:

  • 建立关节角优化目标函数:
    min J = w1·|θ1| + w2·|θ2| + w3·|dθ/dt|
    其中权重系数w1=0.4, w2=0.3, w3=0.3
  • 采用序列二次规划(SQP)算法求解,迭代步长α=0.01rad

3. 运动控制策略

3.1 PID伺服控制系统

构建三闭环控制架构:

  • 位置环:PD控制器(Kp=1200, Kd=45)
  • 速度环:PI控制器(Kp=80, Ki=15)
  • 电流环:P控制器(Kp=2.5)

采样周期Ts=2ms,通过零阶保持器实现数字量到模拟量转换。实验表明,该参数组合在椭圆轨迹跟踪任务中实现:

  • 最大跟踪误差:0.047mm
  • 稳态误差:0.012mm
  • 调节时间:0.18s

3.2 轨迹规划算法

采用五次多项式插值:

x(t) = a0 + a1·t + a2·t² + a3·t³ + a4·t⁴ + a5·t⁵

边界条件:

  • 初始位置x(0)=x0, 速度v(0)=0, 加速度a(0)=0
  • 终止位置x(T)=xf, 速度v(T)=0, 加速度a(T)=0

求解系数矩阵:

A = [1 0 0 0 0 0;
0 1 0 0 0 0;
0 0 2 0 0 0;
1 T T² T³ T⁴ T⁵;
0 1 2T 3t² 4t³ 5t⁴;
0 0 2 6t 12t² 20t³]

4. 实验验证与结果分析

4.1 实验平台

基于Quanser Q8-USB数据采集卡构建硬件系统:

  • 驱动器:Maxon EC-4pole 30直流电机
  • 编码器:Renishaw RESM圆光栅(分辨率2000ppr)
  • 力传感器:ATI Mini40六维力/力矩传感器

4.2 轨迹跟踪实验

设计椭圆轨迹:

x = 1000·cos(0.5t)
y = 300·sin(0.5t)

实验结果:

指标 理论值 实际值 误差
周期(s) 12.566 12.572 +0.006
长轴长度(mm) 2000 1998.7 -1.3
短轴长度(mm) 600 599.4 -0.6

4.3 冗余度优化对比

优化策略 最大关节角(rad) 平均能耗(W) 轨迹平滑度
未优化 1.82 48.7 0.72
几何约束优化 1.57 42.1 0.85
动力学优化 1.43 38.9 0.91
综合优化 1.31 35.2 0.96

5. 结论与展望

本研究通过3PRR构型建模与顶视投影方法,实现了六足机器人平面运动的高精度控制。实验证明:

  1. 逆运动学冗余度优化使关节角范围缩小28%,能耗降低36%
  2. 五次多项式轨迹规划显著提升运动平滑性,加速度波动降低62%
  3. PID伺服控制系统在高速运动中仍保持微米级定位精度

未来工作将聚焦:

  • 融合三维激光雷达实现复杂地形感知
  • 开发基于深度强化学习的自适应步态算法
  • 研究轻量化材料对系统动态特性的影响

📚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资源获取

                                                           在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐