六轴机器人轨迹规划之五段位置s曲线插补
1.原理
五段s曲线相较于三段s曲线而言加速度也是连续变化的,能适用于平稳性要求更高的场合。分为加加速、加减速、匀速、减加速、减减速这五段。
设除匀速段以为,其余四段的时间相等都为TaTaT_a,总时间为TTT,匀速段速度为vs" role="presentation" style="position: relative;">vsvsv_s,四个变速段斜率大小都为AAA,整段轨迹的总位移L" role="presentation" style="position: relative;">LLL、加加速段位移L1L1L_1、加减速段位移L2L2L_2
\begin{eqnarray*} \left\{ \begin{array}{l} T_a=\sqrt{\frac{v_s}{A}}\\ L_1=\frac{1}{6}AT_a^3\\ L_2=\frac{5}{6}AT_a^3\\ T=4T_a+\frac{L-2L_1-2L_2}{v_s} \end{array}\right. \end{eqnarray*}
则加速度分段函数为
\begin{eqnarray*}a= \left\{ \begin{array}{l} At,(0\leq{t}\leq{T_a})\\ -A(t-2T_a),({T_a}\leq{t}\leq2{T_a})\\ 0,({2T_a}\leq{t}\leq{T-2{T_a}})\\ -A[t-(T-2T_a)],(T-2{T_a}\leq{t}\leq{T-{T_a}})\\ A(t-T),(T-{T_a}\leq{t}\leq{T}) \end{array}\right. \end{eqnarray*}
对加速度积分可得
\begin{eqnarray*} v=\left\{ \begin{array}{l} \frac{1}{2}At^2,(0\leq{t}\leq{T_a})\\ -\frac{1}{2}A(t-2T_a)^2+AT_a^2,({T_a}\leq{t}\leq2{T_a})\\ v_s,({2T_a}\leq{t}\leq{T-2{T_a}})\\ -\frac{1}{2}A(t-T+2T_a)^2+AT_a^2,(T-2{T_a}\leq{t}\leq{T-{T_a}})\\ \frac{1}{2}A(t-T)^2,(T-{T_a}\leq{t}\leq{T}) \end{array}\right. \end{eqnarray*}
对速度积分可得到位移s的分段函数
\begin{eqnarray*}s= \left\{ \begin{array}{l} \frac{1}{6}At^3,(0\leq{t}\leq{T_a})\\ -\frac{1}{6}A(t-2T_a)^3+AT_a^2t-AT_a^3,({T_a}\leq{t}\leq2{T_a})\\ AT_a^2t-AT_a^3,({2T_a}\leq{t}\leq{T-2{T_a}})\\ -\frac{1}{6}A(t-T+2T_a)^3+AT_a^2t-AT_a^2,(T-2{T_a}\leq{t}\leq{T-{T_a}})\\ \frac{1}{6}A(t-T)^3-2AT_a^3+AT_b^2T,(T-{T_a}\leq{t}\leq{T}) \end{array}\right. \end{eqnarray*}
3.matlab代码实现
指定位置、速度、斜率
clc;
clear;
%初始条件
x_arry=[0,10,20,30];
v_arry=[2,2,2];
A_arry=[3,3,3];
weiyi=[x_arry(1)];sudu=[0];shijian=[0];timeall=0;jiasudu=[0]
for i=1:1:length(x_arry)-1;
%清空a=[];v=[];s=[];
%计算加减速段的时间和位移L=x_arry(i+1)-x_arry(i);A=A_arry(i);vs=v_arry(i);Ta=sqrt(vs/A);L1=A*(Ta^3)/6;L2=A*(Ta^3)*(5/6);
%计算整段轨迹的总位移T=4*Ta+(L-2*L1-2*L2)/vs;for t=0:0.001:Tif t<=Ta;%加加速度阶段ad=A*t;vd=0.5*A*t^2;sd=(1/6)*A*t^3;a=[a,ad];v=[v,vd];s=[s,sd];elseif t>Ta && t<=2*Ta;%加减速阶段ad=-A*(t-2*Ta);vd=-0.5*A*(t-2*Ta)^2+A*Ta^2;sd=-(1/6)*A*(t-2*Ta)^3+A*Ta^2*t-A*Ta^3;a=[a,ad];v=[v,vd];s=[s,sd];elseif t>2*Ta && t<=T-2*Ta;%匀速阶段ad=0;vd=vs;sd=A*Ta^2*t-A*Ta^3; a=[a,ad];v=[v,vd];s=[s,sd];elseif t>T-2*Ta && t<=T-Ta;%减加度阶段ad=-A*(t-(T-2*Ta));vd=-0.5*A*(t-T+2*Ta)^2+A*Ta^2;sd=-(1/6)*A*(t-T+2*Ta)^3+A*Ta^2*t-A*Ta^3;a=[a,ad];v=[v,vd];s=[s,sd];elseif t>T-Ta && t<=T;%减减阶段ad=A*(t-T);vd=0.5*A*(t-T)^2;sd=(1/6)*A*(t-T)^3-2*A*Ta^3+A*Ta^2*T;a=[a,ad];v=[v,vd];s=[s,sd];endend
%时间time=[timeall:0.001:timeall+T];timeall=timeall+T;
%连接每一段轨迹weiyi=[weiyi,s(2:end)+x_arry(i)];sudu=[sudu,v(2:end)];jiasudu=[jiasudu,a(2:end)];shijian=[shijian,time(2:end)];
end
subplot(3,1,1),plot(shijian,weiyi,'r');xlabel('t'),ylabel('position');grid on;
subplot(3,1,2),plot(shijian,sudu,'b');xlabel('t'),ylabel('velocity');grid on;
subplot(3,1,3),plot(shijian,jiasudu,'g');xlabel('t'),ylabel('accelerate');grid on;
结果如下
六轴机器人轨迹规划之五段位置s曲线插补相关推荐
- 六轴机器人轨迹规划之五次多项式插值
1.轨迹规划的定义 轨迹规划(trajectory planning)是运动规划(motion planning)研究的主要内容.运动规划指的是运动插补,在起始点和终止点之间插入中间点序列,实现沿着轨 ...
- 六轴机器人轨迹规划(直线轨迹规划,弧线轨迹规划)——C#实现+ABB为例(规划直接下发离线程序运动)
机器人直线插补算法,弧线插补算法+离线编程转换(空间直线插补规划.空间弧线插补规划.离线编程.ABB二次开发.六轴机器人控制.C#) 一,通过对空间点的插补,形成空间点轨迹 1.插补算法原理简述: ( ...
- 六轴机器人轨迹规划之空间直线插补
1.原理简述 直线插补时,指定起止坐标与速度. 确定要插直线的周期增量,分解到xyz轴. 2.matlab代码 clear; clc; p0=[1,2,3]; pf=[2,4,5]; %指定起止位置 ...
- matlab机器人轨迹规划仿真程序,基于MATLAB的六自由度机器人轨迹规划与仿真.pdf...
基于MATLAB的六自由度机器人轨迹规划与仿真 学兔兔 l 訇 似 基于MATLAB的六自由度机器人轨迹规划与仿真 Trajectory planning and simulation of six- ...
- 03论文阅读与分享————2020年中国知网六自由度机器人轨迹规划相关论文统计
一.2020年知网论文统计 1.刘劲松. 基于时间最优的六轴关节机械手轨迹规划研究[D].湖北工业大学,2020. 创新点:遗传算法+粒子群处理时间最优 基本方法:样条插值/笛卡尔空间规划/matla ...
- 6轴机器人运动学逆解matlab,六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现...
摘要 本文主要是给大家一个系统的概念,如何用Matlab实现六轴机器人的建模和实现轨迹规划.以后将会给大家讲解如何手写正逆解以及轨迹插补的程序.程序是基于Matlab2016a,工具箱版本为Robot ...
- matlab最优轨迹规划,matlab机器人轨迹规划
运动仿真 $@ %" 运动仿真( ')在对上述规划轨迹进行仿真前, 先输入机器 人的参数, 并命名 -$.$/&&)" 命令如下: " @ A 连杆的前四 ...
- 机器人轨迹规划(熊友伦)
机器人轨迹规划(熊友伦) http://blog.csdn.net/jyc1228/article/details/3991881 http://blog.csdn.net/wx545644217/a ...
- 纤巧精干:爱普生六轴机器人
精工爱普生(以下简称爱普生)是世界领先的6轴机器人厂商之一,其六轴机器人兼具高速度.高精度(低振动)以及出色的耐用性等多重优点,大量应用在电子元器件.汽车和食品等多个制造行业中.继2012年底爱普生推 ...
最新文章
- mysql单表多timestamp的current_timestamp设置问题
- 常见面试题 - URL 解析
- vim与Python推荐之插件Autopep8
- 如何平衡存储系统的一致性和可用性?
- 11 | 互联网产品的测试策略应该如何设计?
- [转载] python中pprint模块详解——print()和pprint()两者的区别
- 【OCP-052】052认证考试新题库整理-第9题
- 主成分分析spss_主成分分析
- LED显示屏智能化监控运维管理解决方案
- Myeclipse 10破解图解
- 论大学学霸是怎样炼成的……
- mac os 系统word文档批量更改图片尺寸问题汇总
- 【已解决】Win 10 切换程序时,默认输入法始终为英文,抓狂,解决办法
- 解决Invalid bound statement (not found): com.hengjun.mapper.UserMapper.selectByExample,
- 报表设计器是什么?报表自动生成器有那些?
- “恐怖”的阿里一面,我究竟想问什么
- Python基础语法——if选择
- 老铁们来来来,实战STM32
- 23.5 jumpserver介绍
- 圆钢材质名称和成分范围
热门文章
- 项目风险应对策略总结
- cmd查看python库命令_怎么用命令查看python的库
- dockerexec 的使用-it操作
- 手把手教你使用stata导出高清的meta分析tif图片
- 史上最全《计算机网络 自顶向下方法》答案合集
- python配置cgi_Python+Apache+CGI完全配置
- Esp8266 进阶之路36【外设篇】乐鑫esp8266芯片SDK编程驱动时间芯片 ds1302,同步网络时间到本地,再也不怕掉电断网也可以同步时间了!(附带Demo)
- 使用python-control库实现MATLAB自动控制原理常用函数:Bode图 Nyquist图 根轨迹
- 为什么要使用虚拟机?
- 如何用计算机产生随机数,如何在计算器产生随机数