精华内容
下载资源
问答
  • 机械臂轨迹规划matlab代码
  • 移动平台 机械臂 轨迹跟踪 Coordinating Locomotion and Manipulation of a Mobile Manipulator
  • 机械臂轨迹规划

    2014-04-23 13:44:54
    机械臂轨迹规划 matlab源程序 可以直接运行 可以达到一定的精度 (2012-07-10, matlab, 9KB, 9次).rar
  • 多关节机械臂轨迹规划和轨迹跟踪控制研究 本文提出了基于差分进化 (Differential Evolution) 优化 BP 神经网络求解 机械臂运动学逆解的方法,并与 BP 神经网络进行了比较,仿真结果表明 DE- BP 神经网络求得的...
  • 建立了二维机械臂的动力学方程, 分析了控制机械臂轨迹应考虑的不确定量. 考虑到机械臂动力学模型的 非线性和参数的不确定性, 提出了采用神经网络作为补偿器的机械臂轨迹控制策略. 该策略结构简单, 采用标称值确...
  • 该方案采用了两个RBF神经网络,运用EC-RBF学习算法,采用离线与在线相结合的方法来训练神经网络,一个用来实现对机械臂进行模型辨识,一个用来实现对机械臂轨迹跟踪控制。对二自由度机械臂进行仿真,结果表明,使用...
  • 机械臂轨迹控制策略研究进展,詹峰,谢克明,随着控制理论和技术的不断发展,作为机器人的一种类型,各式各样的机械臂的轨迹规划和轨迹跟踪形成许多不同的控制策略。本文从机
  • 建立了二维机械臂的动力学方程,分析了控制机械臂轨迹应考虑的不确定量。考虑到机械臂动力学模型的非线性和参数的不确定性,提出了采用神经网络作为补偿器的机械臂轨迹控制策略。该策略结构简单,采用标称值确定神经...
  • 六轴六自由度机械臂轨迹规划的matlab实现(基于速度雅各比矩阵方法)

    六轴六自由度机械臂轨迹跟踪的matlab实现(基于速度雅各比矩阵方法)

    对于六轴六自由度机械臂进行轨迹规划,并针对其设计滑模控制器,实现机械臂的末端轨迹跟踪。(完整代码链接见文章末尾)
    本文所用机械臂为innfos-Gluon-6L3,通过standard DH方法建模得到参数如下:
    在这里插入图片描述

    本文利用速度雅各比矩阵的方法来实现轨迹跟踪。这一方法的优点在于可以完全避免逆运动学求解,更加节省时间。

    1.轨迹跟踪的控制结构图设计

    在这里插入图片描述
    控制系统的输入,同样也是系统的期望输出,是机械臂的目标位姿xd=(x,y,z,α,β,γ)x_d=(x,y,z,\alpha,\beta,\gamma)。其刚好对应机械臂的六个自由度。前三者是机械臂末端坐标系相对于世界坐标系的位置,后三者是机械臂末端坐标系相对于世界坐标系的旋转角度。每一时刻的机械臂期望位姿都是已知的,它是通过轨迹规划得到的,这一点将在后文详细讲解。
    系统的控制器采用滑模控制器,其输入为位姿误差e=xdxe=x_d-x,输出为角度增量q˙\dot q
    系统的被控对象是利用速度雅各比矩阵来建模的,其关系为v=J(q)q˙v=J(q)\dot q。其中J(q)J(q)为速度雅各比矩阵。
    系统的输出为机械臂的实际末端位置x=vdtx=\int vdt

    2.系统的输入:轨迹规划

    为了使得机械臂的末端运动平滑,常对机械臂进行规划,对末端速度、加速度等进行一定约束。
    工业上常使用七段式S型曲线来进行轨迹规划,其示意图图如下:
    七段S型曲线
    其有七个等间距时间段,分别为加加速段、加速度恒定段、加减速段、匀速段、减减速段、加速度恒定段、减加速段。
    各段速度的计算表达式如下,其中JJ为加加速度。
    七段S型曲线速度表达式
    式中的vmaxv_{max}等参数的计算推导如下:
    T=ti+1ti=tft07L=4vmaxTv2=v1+amaxTamax=2v1Tvmax=v1+v2=2v1+amaxT=4v1L=16v1Tv1=L16T \bigtriangleup T=t_{i+1}-t_{i}=\frac{t_f-t_0}{7} \\ L=4v_{max} \bigtriangleup T \\ v_2=v_1+a_{max}\bigtriangleup T\\ a_{max}=\frac{2v_1}{\bigtriangleup T} \\ v_{max}=v_1+v_2=2v_1+a_{max}\bigtriangleup T=4v_1\\ L=16v_1 \bigtriangleup T \rightarrow v_1=\frac{L}{16\bigtriangleup T}
    所以最终只需知道末端位移LL和所需时间TT,即可计算得到整个轨迹规划曲线。其matlab代码实现如下。
    其中的x_sx\_sy_sy\_sz_sz\_s分别为每时的机械臂末端位置,即期望期望位姿x_dx\_d的前三行。x_dx\_d的后三行为末端位置的姿态信息,在本次仿真中我们默认机械臂的姿态始终为0,所以x_dx\_d的后三行总是为0。

    %% 0.设定初始参数
    % xyz_start=[0,-120.02,533.96];       %轨迹起点(关节角为0)的末端坐标,单位mm;
    xyz_start=[0,-120.02,533.96];
    xyz_end=[-30,-45,385];     %轨迹终点的末端坐标;
    T=10;       %完成轨迹规划的时间;
    
    %% 1.轨迹规划
    L=sqrt((xyz_end(1)-xyz_start(1))^2+(xyz_end(2)-xyz_start(2))^2+(xyz_end(3)-xyz_start(3))^2);
    dt=T/7;        %每段的时间长度
    v1=L/(16*dt);   %第一次加速度拐点
    J=2*v1/(dt*dt); %加加速度
    amax=dt*J;      %最大加速度
    v2=v1+dt*amax;  %第二次加速度拐点
    vmax=v2+v1;     %第三次速度拐点
    
    t1 = 1*dt;
    t2 = 2*dt;
    t3 = 3*dt;
    t4 = 4*dt;
    t5 = 5*dt;
    t6 = 6*dt;
    t7 = 7*dt;
    
    t=0:0.1:T;
    
    vt1=1/2*J*t.^2.*(t>=0 & t<t1);
    vt2=(v1+amax*(t-t1)).*(t>=t1 & t<t2);
    vt3=(vmax-1/2*J*(t3-t).^2).*(t>=t2 & t<t3);
    vt4=vmax.*(t>=t3 & t<t4);
    vt5=(vmax-1/2*J*(t-t4).^2).*(t>=t4 & t<t5);
    vt6=(v2-amax*(t-t5)).*(t>=t5 & t<t6);
    vt7=(1/2*J*(t7-t).^2).*(t>=t6 & t<t7);
    
    vt=vt1+vt2+vt3+vt4+vt5+vt6+vt7;     %各时刻速度
    
    S=zeros(1,length(t));       %各时刻位移
    for i=2:length(t)
        S(i)=trapz(t(1:i),vt(1:i));
    end 
    
    %各时刻xyz的位移
    x_s=xyz_start(1)+(xyz_end(1)-xyz_start(1))/L*S;     
    y_s=xyz_start(2)+(xyz_end(2)-xyz_start(2))/L*S;
    z_s=xyz_start(3)+(xyz_end(3)-xyz_start(3))/L*S;
    
    %各时刻xyz轴的速度分量
    v_x=(xyz_end(1)-xyz_start(1))/L*vt;
    v_y=(xyz_end(2)-xyz_start(2))/L*vt;
    v_z=(xyz_end(3)-xyz_start(3))/L*vt;
    

    3.被控对象:速度雅各比矩阵

    速度雅各比矩阵方法的关系表达式如下:
    v=J(q)q˙v=J(q)\dot q
    前者vv是末端执行器的速度,后者q˙\dot q是关节角速度。表达式的物理意义是:当关节角度发生一个微小的变化q\bigtriangleup q,末端执行器也会相应产生一个微小的位姿变化x\bigtriangleup x
    速度的雅各比矩阵的求解方法有多种,如1.向量积方法 2.微分法 等等…
    本文采用向量积的方法,求解方法如下。
    在这里插入图片描述

    J(q)=[JvJw]=[J1J2J3J4J5J6]Ji=[Zi1×ri1Zi1]=[Zi1×(PnPi1)Zi1] J(q)=\begin{bmatrix}J_v\\J_w\end{bmatrix}=\begin{bmatrix}J_1&J_2&J_3&J_4&J_5&J_6\end{bmatrix}\\ J_i=\begin{bmatrix}Z_{i-1} \times r_{i-1}\\Z_{i-1}\end{bmatrix}=\begin{bmatrix}Z_{i-1} \times (P_n-P_{i-1})\\Z_{i-1}\end{bmatrix}
    本文采用的机械臂有6个关节角,因此其速度雅各比矩阵有6列,分别为JiJ_i。本文的机械臂有6个自由度,因此对应的矩阵为6行。
    每个雅各比矩阵分量JiJ_i的后三行为{i1}\{i-1\}坐标系相对于世界坐标系的ZZ轴分量;分量JiJ_i的前三行为Zi1Z_{i-1}ri1r_{i-1}的差乘,ri1r_{i-1}是末端坐标系与{i1}\{i-1\}坐标系的相对位置在世界坐标系中的表示。
    这种方法求解只适用于standard DH方法建模的模型,若使用modify DH方法建模,则需对上式的下标做一定修改。
    此方法的matlab代码实现如下:

    function [ J ] = Jacob_cross_SDH( q )
    %JACOB_CROSS_SDH 函数摘要
    %   输入q0为逼近角,单位为弧度,矩阵大小1*6;
    %   输出J为速度雅各比矩阵,矩阵大小6*6%   说明:利用向量积的方法求解系统的雅各比矩阵,方法1和方法2任选一种
    %   说明:此求解方法基于SDH参数建模,若MDH方法建模,需进行一定的下标改动
    
    d=[105.03,0,0,75.66,80.09,44.36];
    a=[0,-174.42,-174.42,0,0,0];
    alp=[pi/2,0,0,pi/2,-pi/2,0];
    offset=[0,-pi/2,0,-pi/2,0,0];
    thd=q+offset;
    
    % 求各个关节间的变换矩阵
    T0=trotz(0)*transl(0,0,0)*trotx(0)*transl(0,0,0);
    T1=trotz(thd(1))*transl(0,0,d(1))*trotx(alp(1))*transl(a(1),0,0);
    T2=trotz(thd(2))*transl(0,0,d(2))*trotx(alp(2))*transl(a(2),0,0);
    T3=trotz(thd(3))*transl(0,0,d(3))*trotx(alp(3))*transl(a(3),0,0);
    T4=trotz(thd(4))*transl(0,0,d(4))*trotx(alp(4))*transl(a(4),0,0);
    T5=trotz(thd(5))*transl(0,0,d(5))*trotx(alp(5))*transl(a(5),0,0);
    T6=trotz(thd(6))*transl(0,0,d(6))*trotx(alp(6))*transl(a(6),0,0);
    
    % 求各个关节相对于惯性坐标系的变换矩阵
    T00 = T0;
    T01 = T1;
    T02 = T1*T2;
    T03 = T1*T2*T3;
    T04 = T1*T2*T3*T4;
    T05 = T1*T2*T3*T4*T5;
    T06 = T1*T2*T3*T4*T5*T6;
    
    % 求各个关节相对于末端坐标系的变换矩阵
    T06 = T1*T2*T3*T4*T5*T6;
    T16 = T2*T3*T4*T5*T6;
    T26 = T3*T4*T5*T6;
    T36 = T4*T5*T6;
    T46 = T5*T6;
    T56 = T6;
    
    % 提取各变换矩阵的旋转矩阵
    R00 = t2r(T00);
    R01 = t2r(T01);
    R02 = t2r(T02);
    R03 = t2r(T03);
    R04 = t2r(T04);
    R05 = t2r(T05);
    R06 = t2r(T06);
    
    % 取旋转矩阵第3列,即Z轴方向分量
    Z0 = R00(: , 3);
    Z1 = R01(: , 3);
    Z2 = R02(: , 3);
    Z3 = R03(: , 3);
    Z4 = R04(: , 3);
    Z5 = R05(: , 3);
    Z6 = R06(: , 3);
    
    %% Method.1
    % 求末端关节坐标系相对于前面各个坐标系的位置,即齐次变换矩阵的第四列
    % pi6为坐标系i和末端坐标系的相对位置在坐标系i下的表示
    P06 = T06(1:3, 4);
    P16 = T16(1:3, 4);
    P26 = T26(1:3, 4);
    P36 = T36(1:3, 4);
    P46 = T46(1:3, 4);
    P56 = T56(1:3, 4);
    P66 = [0; 0; 0];
    
    % 使用向量积求出雅可比矩阵
    % R0i为坐标系0到坐标系i的旋转矩阵
    % R0i*Pi6指坐标系i和末端坐标系的相对位置在0坐标系下的表示
    J1 = [cross(Z0, R00*P06); Z0];
    J2 = [cross(Z1, R01*P16); Z1];
    J3 = [cross(Z2, R02*P26); Z2];
    J4 = [cross(Z3, R03*P36); Z3];
    J5 = [cross(Z4, R04*P46); Z4];
    J6 = [cross(Z5, R05*P56); Z5];
    
    %% Method.2
    
    % % pi为坐标系i与世界坐标系0的相对位置
    % p0=transl(T00);
    % p1=transl(T01);
    % p2=transl(T02);
    % p3=transl(T03);
    % p4=transl(T04);
    % p5=transl(T05);
    % p6=transl(T06);
    % 
    % % p6-pi为i坐标系指向末端坐标系的向量
    % % p6-pi即为末端坐标系与i坐标系相对位置在世界坐标系中的表示
    % % Ji=[Jv;Jw]    对应六自由度的速度分量和旋转分量
    % J1 = [cross(Z0, p6-p0); Z0];
    % J2 = [cross(Z1, p6-p1); Z1];
    % J3 = [cross(Z2, p6-p2); Z2];
    % J4 = [cross(Z3, p6-p3); Z3];
    % J5 = [cross(Z4, p6-p4); Z4];
    % J6 = [cross(Z5, p6-p5); Z5];
    
    
    J = [J1, J2, J3, J4, J5, J6];
    
    end
    

    4.控制器:等速率趋近的滑模控制器

    控制器的输入为位姿误差e=xdxe=x_d-x,输出为关节角的增量q˙\dot q,因此控制器满足关系:
    u=q˙=f_SMC(e)u=\dot q=f\_SMC(e)
    为此需求设计滑模控制器f_SMCf\_SMC
    设计滑模面:
    s=cee=xdx s=ce\\ e=x_d-x
    设计趋近率为等速趋近率:
    s˙=ξsgns \dot s=-\xi sgns
    推导得到控制器输出uu
    s˙=ce˙=ξsgnse˙=x˙dx˙=1cξsgnsv=vd+1cξsgnsu=q˙=J1(q)v=J1(vd+1cξsgns) \dot s=c\dot e=-\xi sgns\\ \dot e=\dot x_d-\dot x=-\frac{1}{c}\xi sgns\\ v=v_d+\frac{1}{c}\xi sgns\\ u=\dot q=J^{-1}(q)v=J^{-1}(v_d+\frac{1}{c}\xi sgns)
    matlab代码实现如下:

    dth = [0; 0; 0; 0; 0; 0];
    th = [0; 0; 0; 0; 0; 0];
    
    x=[xyz_start';0;0;0];        %其实时刻的位姿
    
    lamda=1;		%阻尼矩阵的系数
    
    k = 0.1;
    ita = 0.0002;
    c = 5;
    
    e = [0; 0; 0; 0; 0; 0];
    de = [0; 0; 0; 0; 0; 0];
    for i = 1 : length(t)
        xd=[x_s(i);y_s(i);z_s(i);0;0;0];     %期望位姿
        dxd=[v_x(i);v_y(i);v_z(i);0;0;0];	%期望速度
    
        q=th(:, i);
    
        Jac = Jacob_cross_SDH(q');	%求解当前角度下的雅可比矩阵
    
        e(:, i) = xd - x(:,i);      %误差
        s = c*e(:, i);      %滑模面
        v=dxd + (1/c)*ita*sign(s);    %机械臂的末端实际速度
        
        de(:, i) = dxd - v;     %误差的微分
        dth(:, i) = inv(Jac+lamda.*diag(ones(1,6)))*v;      %关节角的增量
        th(:, i + 1) = th(:, i) + dth(:, i)*0.1;    %下一时刻的关节角度
        x(:, i+1) = x(:, i) + v*0.1;    %机械臂末端实际位姿
    end
    

    更多更高级的滑模控制器设计请点击博主的控制器设计github仓库

    5.结果展示

    设定轨迹跟踪起始点和终点:
    [0120.02533.96][3045385] \begin{bmatrix}0\\-120.02\\533.96\end{bmatrix} \rightarrow \begin{bmatrix}-30\\-45\\385\end{bmatrix}
    10s10s内的末端轨迹位置在各坐标轴的映射:
    在这里插入图片描述
    10s10s内系统跟踪末端轨迹位置的误差:
    在这里插入图片描述
    10s10s内各个关节角的角度:
    在这里插入图片描述


    源代码下载链接:https://github.com/Fantasty9413/Trajectory-tracking-

    展开全文
  • 六自由度机械臂轨迹跟踪控制策略研究_鲁彩丽
  • 针对BP优化PID神经网络(BP-PDNN)易陷入局部极小的不足,提出了一种变尺度混沌优化PID神经网络设计方法,即MSCOA-PIDNN,将其应用于机械臂轨迹跟踪控制中。利用混沌运动的遍历性优化网络权值,通过压缩优化变量取值区间...
  • 针对机械臂轨迹跟踪控制中存在建模误差以及外界干扰造成的控制性能下降问题,提出一种改进的自适应神经滑模控制方法。分别选取状态反馈和改进的神经网络滑模方法来控制系统的确定部分和不确定部分。利用神经网络的非...
  • 根据机械臂运动学约束,提出了关节空间基于自适应遗传算法(AGA)的3-5-3...通过与基于GA的3-5-3多项式机械臂轨迹规划进化曲线和运动位置、速度、加速度曲线对比,证明该方法在算法收敛、运行平稳度上都有突出优点。
  • 为了对二自由度机械臂轨迹进行规划,提出了一种新的动态搜索Q学习算法。该算法不需要建立机械臂的数学模型,直接对轨迹进行规划,根据学习进程动态调整贪婪策略的比例参数,并给出较传统方式更具客观性和公平性的定量...
  • 所以博客这方面也更的少了,不过我有学到新的知识,还是会尽量更的,由于之前一直也在Matlab里仿真过机械臂,所以这次就准备更下Matlab里使用D-H模型搭建机械臂,用三次、五次多项式样条插值规划机械臂轨迹算法。...

    前言

    最近这一段时间有点忙,所以博客这方面也更的少了,不过我有学到新的知识,还是会尽量更的,由于之前一直也在Matlab里仿真过机械臂,所以这次就准备更下Matlab里使用D-H模型搭建机械臂,用三次、五次多项式样条插值规划机械臂轨迹算法。

    机械臂运动空间

    机械臂运动轨迹规划在空间可以分为两大类:关节空间轨迹规划与笛卡尔空间轨迹规划。机械臂关节空间的轨迹规划解决机械臂从起始位姿到终止位姿去取放物体的问题。机械臂末端移动的过程并不重要,只要求运动是平滑的且没有碰撞产生。而笛卡尔空间轨迹规划要解决的是机械臂末端确定的轨迹规划问题;在关节空间中进行轨迹规划时,算法简单、工具移动效率高、关节空间与直角坐标空间连续的对应关系是不存在的,因此机构的奇异性问题一般不会发生。对于无路径的要求,应尽量在关节空间进行轨迹规划。

    三次多项式插值原理

    三次多项式插值适用于起点和终点速度为零的情况。约束关节在起点和终点为零的角度值,规定轨迹端点位置角速度为定值。
    设关节角满足下式:
    {θ(t)=a0+a1t+a2t2+a3t3θ(t)˙=a1+2a2t+3a3t2θ(t)¨=2a2+6a3t\begin{cases} \theta(t)=a_0+a_1t+a_2t^2+a_3t^3\\\dot{\theta(t)}=a_1+2a_2t+3a_3t^2\\\ddot{\theta(t)}=2a_2+6a_3t\\ \end{cases}
    将相邻两个点看作是一小段轨迹的起点与终点,分别用θ0\theta_0θf\theta_f表示,设起始速度v0v_0,终止速度v_f。
    {θ(t0)=θ0θ(tf)=θfθ(t0)˙=v0θ(tf)˙=vf\begin{cases} \theta(t_0)=\theta_0\\\theta(t_f)=\theta_f\\\dot{\theta(t_0)}=v_0\\\dot{\theta(t_f)}=v_f \end{cases}
    将约束条件代入函数,可以求得系数(设t_0=0)
    {a0=θ0a1=v0a2=3tf2(θfθ0)1tf(2v0+vf)a3=2tf3(θ0θf)+1tf2(v0+vf)\begin{cases} a_0=\theta_0\\a_1=v_0\\a_2=\frac{3}{t_f^2}(\theta_f-\theta_0)-\frac{1}{t_f}(2v_0+v_f)\\a_3=\frac{2}{t_f^3}(\theta_0-\theta_f)+\frac{1}{t_f^2}(v_0+v_f) \end{cases}
    三次多项式轨迹规划函数如下:
    {θ(t)=θ0+v0t+a2t2+[3tf2(θfθ0)1tf(2v0+vf)]t2+[2tf3(θ0θf)+1tf2(v0+vf)]t3θ(t)˙=v0+2[3tf2(θfθ0)1tf(2v0+vf)]t+3[2tf3(θ0θf)+1tf2(v0+vf)]t2θ(t)¨=2[3tf2(θfθ0)1tf(2v0+vf)]+6[2tf3(θ0θf)+1tf2(v0+vf)]t\begin{cases} \theta(t)=\theta_0+v_0t+a_2t^2+[\frac{3}{t_f^2}(\theta_f-\theta_0)-\frac{1}{t_f}(2v_0+v_f)]t^2+[\frac{2}{t_f^3}(\theta_0-\theta_f)+\frac{1}{t_f^2}(v_0+v_f)]t^3\\\dot{\theta(t)}=v_0+2[\frac{3}{t_f^2}(\theta_f-\theta_0)-\frac{1}{t_f}(2v_0+v_f)]t+3[\frac{2}{t_f^3}(\theta_0-\theta_f)+\frac{1}{t_f^2}(v_0+v_f)]t^2\\\ddot{\theta(t)}=2[\frac{3}{t_f^2}(\theta_f-\theta_0)-\frac{1}{t_f}(2v_0+v_f)]+6[\frac{2}{t_f^3}(\theta_0-\theta_f)+\frac{1}{t_f^2}(v_0+v_f)]t \end{cases}

    MATLAB仿真测试

    基于上面的信息,我们就可以用Matlab来写三项式插值的脚步代码,设机械臂某关节在5s内由初始点A经过中间点B到达目标点C的位置、速度、加速度变化情况,设
    θA=25,θB=70,θC=50θA˙=30,θB˙=20,θC˙=30;θA¨=2,θB¨=4,θC¨=3\theta_A=25 ,\theta_B=70,\theta_C=50;\\\dot{\theta_A}=30,\dot{\theta_B}=20,\dot{\theta_C}=30;\\ \ddot{\theta_A}=2,\ddot{\theta_B}=4,\ddot{\theta_C}=3

    clear;clc;close all;
    q_array=[25,70,50];%指定起止位置
    t_array=[0,2,5];%指定起止时间
    v_array=[30,20,30];%指定起止速度
    a_array=[2,4,3];%指定起止加速度
    t=t_array(1);q=q_array(1);v=v_array(1);a=a_array(1);%初始状态
    for i=1:1:length(q_array)-1 %每一段规划的时间
    T=t_array(i+1)-t_array(i);
    a0=q_array(i);
    a1=v_array(i);
    a2=(q_array(i+1)-q_array(i))*3/(T^2)-(2*v_array(i)+v_array(i+1))/T;
    a3=(q_array(i)-q_array(i+1))*2/(T^3)+(v_array(i)+v_array(i+1))/(T^2);
    ti=t_array(i):0.02:t_array(i+1);
    qi=a0+a1*(ti-t_array(i))+a2*(ti-t_array(i)).^2+a3*(ti-t_array(i)).^3;
    vi=a1+2*a2*(ti-t_array(i))+3*a3*(ti-t_array(i)).^2;
    ai=2*a2+6*a3*(ti-t_array(i));
    t=[t,ti(2:end)];q=[q,qi(2:end)];v=[v,vi(2:end)];a=[a,ai(2:end)];
    end
    subplot(3,1,1),plot(t,q,'r'),xlabel('t'),ylabel('position');hold on;plot(t_array,q_array,'*','color','r'),grid on;
    subplot(3,1,2),plot(t,v,'b'),xlabel('t'),ylabel('velocity');hold on;plot(t_array,v_array,'o','color','g'),grid on;
    subplot(3,1,3),plot(t,a,'g'),xlabel('t'),ylabel('accelerate');hold on;plot(t_array,a_array,'^','color','b'),grid on;
    

    下图为Matlab测试结果
    在这里插入图片描述
    从曲线可以看出,红色关节角度曲线平滑,而蓝色速度曲线在中间点2s处出现突
    变,绿色加速度曲线突变的更加明显。

    展开全文
  • V-REP仿真-逆运动学模块的机械臂轨迹规划 【V-REP自学笔记(六)】基于V-REP逆运动学模块的机械臂轨迹规划 需要注意一点,进行求逆解时候,不要选择alpha,beta和gamma,要不然机械臂因为自由度不够,导致乱摆现象。...

    V-REP仿真-逆运动学模块的机械臂轨迹规划

    【V-REP自学笔记(六)】基于V-REP逆运动学模块的机械臂轨迹规划

    需要注意一点,进行求逆解时候,不要选择alpha,beta和gamma,要不然机械臂因为自由度不够,导致乱摆现象。

    展开全文
  • 机械臂轨迹规划方法总结一、轨迹示教学习方法1. 基于样条2. 基于统计模型3. 基于仿射变换4. 基于动态运动基元的轨迹学习方法 一、轨迹示教学习方法 1. 基于样条 基于样条的轨迹学习方法是通过样条函数拟合采集到的...

    一、轨迹示教学习方法

    1. 基于样条

    基于样条的轨迹学习方法是通过样条函数拟合采集到的人体运动数据实现的,规划生成的轨迹平滑性好,但泛化能力不足

    参考文献
    1、 Ude A, Atkeson C G, Riley M. Planning of joint trajectories for humanoid robots
    using B-spline wavelets[C]. Proceedings 2000 ICRA. Millennium Conference.
    IEEE International Conference on Robotics and Automation. Symposia
    Proceedings (Cat. No. 00CH37065). IEEE, 2000, 3: 2223-2228

    2、Wan N, Xu D, Ye H. Improved cubic B-spline curve method for path optimization of manipulator obstacle avoidance[C]//2018 Chinese Automation Congress (CAC). IEEE, 2018: 1471-1476.

    2. 基于统计模型

    基于统计模型的轨迹学习方法主要是利用高斯混合模型或隐马尔可夫模型拟合运动的各个特征进行学习的轨迹规划方法,计算效率相对较低,且生成的轨迹不连续

    参考文献
    1、Tso S K, Liu K P. Hidden Markov model for intelligent extraction of robot trajectory command from demonstrated trajectories[C]//Proceedings of the IEEE International Conference on Industrial Technology (ICIT’96). IEEE, 1996: 294-298.
    2、Pignat E, Calinon S. Learning adaptive dressing assistance from human demonstration[J]. Robotics and Autonomous Systems, 2017, 93: 61-75.
    3、Calinon S, Guenter F, Billard A. On learning, representing, and generalizing a task in a humanoid robot[J]. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 2007, 37(2): 286-298.
    4、Zeestraten M J A, Havoutis I, Silvério J, et al. An approach for imitation learning on Riemannian manifolds[J]. IEEE Robotics and Automation Letters, 2017, 2(3): 1240-1247.

    3. 基于仿射变换

    依据人体运动的仿射不变性开发的轨迹规划方法,其不依赖于具体模型, 可以直接变换关节角时间序列;但是由于人体与机器人在结构和运动能力上的差异性, 该方法无法快速的将人体运动映射成机器人运动

    参开文献
    1、Pham Q C, Nakamura Y. Affine trajectory deformation for redundant manipulators[J]. Robotics: Science and Systems VIII, 2013: 329.
    2、Pham Q C, Nakamura Y. A new trajectory deformation algorithm based on affine transformations[J]. IEEE Transactions on Robotics, 2015, 31(4): 1054-1063.

    4. 基于动态运动基元的轨迹学习方法

    DMPs 是一种以非线性微分方程形式的动态系统来编码运动的策略,其计算效率高,生成的轨迹连续,泛化简单,被广泛用于机械臂的移动与操作上

    参考文献
    1、Ijspeert A J, Nakanishi J, Schaal S. Movement imitation with nonlinear dynamical systems in humanoid robots[C]//Proceedings 2002 IEEE International Conference on Robotics and Automation (Cat. No. 02CH37292). IEEE, 2002, 2: 1398-1403.
    2、Ijspeert A J, Nakanishi J, Hoffmann H, et al. Dynamical movement primitives: learning attractor models for motor behaviors[J]. Neural computation, 2013, 25(2): 328-373.

    二、动态运动基元法基本原理

      1.动态运动基元(Dynamic Movement Primitives)是一种运动学习方法,可以通过学习目标轨迹的运动信息使新生成的轨迹具有圆轨迹的运动趋势。该方法认为复杂运动可以视作一系列基元运动的碟机,动态运动基元基本思想史向简单且稳定的动态系统引入非线性函数,由非线性函数控制系统的运动过程,最终使系统达到目标吸引子状态。该方法以弹簧-质量-阻尼模型为基础,将其抽象为点吸引子系统:
    y¨=αy(βy(gy)y˙)(1)\ddot{y}=\alpha_y(\beta_y(g-y)-\dot{y}) \tag{1}
      其中yy是单自由度系统运动状态,即位移,y˙\dot{y}y¨\ddot{y}为对应的速度、加速度。gg为目标值也成为了吸引子,即期望的运动状态。如机械臂的关节位置或是笛卡尔坐标系下点的位置。α\alphaβ\beta为系统参数,通过设置的参数值,如βy=αy/4\beta_y=\alpha_y/4可以使系统达到临界阻尼,能够保证系统稳定,系统状态yy随时间逐渐变化,最终系统收敛于目标值gg
      对(1)式进行拉氏变换得到:
    s2Ys=αyβyG(s)αyβyY(s)αysY(s)(2)s^2Y(s)=\alpha_y\beta_yG(s)-\alpha_y\beta_yY(s)-\alpha_ysY(s) \tag{2}
      则系统的传递函数:
    Y(s)/G(s)=αyβys2+αys+αyβy=αyβys2+2ξwn+wn2(3)Y(s)/G(s)=\frac{\alpha_y\beta_y}{s^2+\alpha_ys+\alpha_y\beta_y} =\frac{\alpha_y\beta_y}{s^2+2\xi w_n+{w_n}^2} \tag{3}
      系统的极点为s1,s2=ξwn±jwn1ξ2s_1,s_2=-\xi w_n\pm jw_n\sqrt{1-\xi^2}, 临界阻尼的条件为 ξ=1\xi=1,顾βy=αy/4\beta_y=\alpha_y/4。上述系统的收敛过程可以视为系统由起始点y(t=0)y(t=0)运动到点gg的过程,上述数学模型是一个以y˙,y=(0,g)(\dot{y},y)=(0,g)为唯一点吸引子的稳定的二阶系统。然而该系统只能以特定 的运动形式收敛到目标点 g,为控制系统的运动过程,为了系统可以按指定运动状态收敛到目标点,从而得到更具有广泛性的运动系统,1(1)式右侧引入强迫项 ff,得到表达式如下
    τy¨=αy(βy(gy)y˙)+f\tau\ddot{y}=\alpha_y(\beta_y(g-y)-\dot{y})+f
    f(x,g)=ΣψiwiΣψix(gy0)f(x,g)=\frac{\Sigma \psi_iw_i}{\Sigma\psi_i}x(g-y_0)
    ψi=exp(hi(xci)2)\psi_i=exp(-h_i(x-c_i)^2)
    τx˙=αxx\tau \dot{x}=-\alpha_x x

    展开全文
  • C语言实现三自由度机械臂轨迹规划源程序,输入为空间三维坐标,输出为相应电机需要旋转的角度
  • 针对云模型理论的研究现状以及传统的 PID控制器存在的控制参数适应性差、处理复杂非...实验结果表明此控制器对参数变化具有很强的适应性,解决了传统的 PID控制存在的问题,使机械臂能够快速、精确地沿着目标轨迹运行。
  • 针对空间机械臂由地面装调到空间应用过程中重力环境发生变化的问题, 使用滑模控制器对空间机械臂进行控制, 通过... 仿真结果表明该方法能够很好地完成不同重力环境下机械臂轨迹跟踪控制任务, 并具有较强的鲁棒性.</p>
  • 本文是针对MATLAB中的robot工具箱对四自由度机械臂和六自由度机械臂进行仿真,对这两个机械臂进行建模,D-H参数设置,进行了机械臂正逆运动学验证,最后给定空间中一点,将两机械臂进行轨迹规划,是其均运动到该点,...
  • 机器人学之运动学笔记【7】—— 机械手臂轨迹规划实例1.任务描述2. 参数设定3. 方法一:以linear function with parabolic blends 在 Cartesian space 下规划轨迹3.1 步骤一3.2 步骤二3.3 步骤三3.4 步骤四3.5 步骤...
  • puma560 机械臂轨迹规划

    千次阅读 2011-05-17 17:13:00
    谁有机械臂轨迹规划方面的资料啊,时间最优或者能量最优的都可以,现在毕设在做这方面的东西,需要MATLAB编程,有达人的话可以互相交流一下!
  • 我是一个目录基于MATLAB的关节型六轴机械臂轨迹规划仿真1 实验目的2 实验内容2.1标准D-H参数法2.2实验中使用的Matlab函数3实验结果4 全部代码 基于MATLAB的关节型六轴机械臂轨迹规划仿真 1 实验目的 基于机器人学...
  • 机械臂轨迹规划程序

    2013-06-17 09:13:07
    描述了机械手移动棋子的轨迹规划过程,其中有对速度的规划、坐标的转换及举例说明直线规划
  • 机械臂轨迹规划 ** 机械手轨迹规划是要使得机械手从起始状态移动到某个规定的目标状态。有时还需指明中间点。可以通过建立运动学模型,得到运动学正解和逆解,从而就on告知轨迹。机械臂的运动应当平稳,因此描述运动...
  • 针对混联结构的强非线性和强耦合性,使用滑模控制器对机械臂进行轨迹跟踪控制,验证了所提滑模控制器的有效性
  • matlab,机械臂轨迹规划,跟踪轨迹。

    千次阅读 多人点赞 2020-03-19 01:00:44
    %trail是提醒计算机跟踪轨迹,并记录下来,具体plot的操作请看作者发的另外一篇文章,这里不赘述。 subplot(2,2,2); i=1:1:6; %i取值在1-6,每次加1; plot(q(:,i)); %q为六列矩阵,(:,i)表示第i列的全部元素;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 500
精华内容 200
关键字:

机械臂轨迹