咱们今天来唠唠机器人轨迹规划那点事儿。不少小伙伴在玩机械臂的时候总会遇到关节空间和笛卡尔空间轨迹规划的抉择困难症,这俩货到底有什么区别?直接上硬核代码
matlab笛卡尔空间和关节空间轨迹规划 关节空间机器臂多项式轨迹规划定做353和333多项式轨迹规划和优化关节空间规划有个大杀器——多项式插值。比如要让机械臂从A点平滑运动到B点咱们可以玩三次多项式3-3-3或者五次多项式3-5-3。别被数字吓到其实就是方程里塞了多少个约束条件。先看个三阶的骚操作% 三阶多项式轨迹生成器 t0 0; tf 2; % 起止时间 q0 10; qf 30; % 起止角度 v0 0; vf 0; % 起止速度 A [1 t0 t0^2 t0^3; 0 1 2*t0 3*t0^2; 1 tf tf^2 tf^3; 0 1 2*tf 3*tf^2]; b [q0; v0; qf; vf]; coeff A\b; % 解线性方程组 t linspace(t0,tf,100); q coeff(1) coeff(2)*t coeff(3)*t.^2 coeff(4)*t.^3; plot(t,q,LineWidth,2)这段代码的精髓在于构建的系数矩阵A——前两行管起始点的位置速度后两行管终点。但这样搞出来的轨迹加速度会突变机械臂容易抽风得搬出五次多项式镇场子。五阶多项式才是真香现场% 五阶版本上强度 a0 0; a_end 0; % 起止加速度 A [1 t0 t0^2 t0^3 t0^4 t0^5; 0 1 2*t0 3*t0^2 4*t0^3 5*t0^4; 0 0 2 6*t0 12*t0^2 20*t0^3; 1 tf tf^2 tf^3 tf^4 tf^5; 0 1 2*tf 3*tf^2 4*tf^3 5*tf^4; 0 0 2 6*tf 12*tf^2 20*tf^3]; b [q0; v0; a0; qf; vf; a_end]; coeff_5th A\b; qt coeff_5th(1) coeff_5th(2)*t coeff_5th(3)*t.^2 ... coeff_5th(4)*t.^3 coeff_5th(5)*t.^4 coeff_5th(6)*t.^5; hold on plot(t,qt,--r) legend(三阶,五阶)加了加速度约束后红色虚线明显更丝滑。实际项目里要算最大加加速度jerk五阶能有效避免机械臂震颤这就是为什么高端场合都用五阶。matlab笛卡尔空间和关节空间轨迹规划 关节空间机器臂多项式轨迹规划定做353和333多项式轨迹规划和优化优化环节才是重头戏假设要让机械臂在1秒内完成动作但关节最大转速不能超过180°/sfun (x) x; % 优化目标这里简化为例 nonlcon (x) deal([],... [max(abs(coeff_5th(2)2*coeff_5th(3)*t ... )) - 180; % 速度约束 max(abs(2*coeff_5th(3) ... )) - 1000]); % 加速度约束 opt_time fmincon(fun,tf,[],[],[],[],0.5,3,nonlcon);实际操作中要把多项式系数表达为时间参数的函数用fmincon搜索满足约束的最短时间。这招能让生产效率直接起飞比盲目调参强多了。至于笛卡尔空间规划其实就是先把末端路径拆成一堆点再用逆运动学转成关节角度最后套用上面的多项式规划。不过要小心奇异点这时候得切关节空间规划保命。下次看到论文里的3-5-3规划别慌就是起终点位置速度加速度全都要对齐的五次多项式。掌握这套组合拳机械臂轨迹规划就算入门了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2456269.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!