MATLAB - 使用 TOPP-RA 求解器生成带约束条件的时间最优轨迹

这篇具有很好参考价值的文章主要介绍了MATLAB - 使用 TOPP-RA 求解器生成带约束条件的时间最优轨迹。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

 文章来源地址https://www.toymoban.com/news/detail-800016.html


前言

本例演示如何生成满足速度和加速度限制的轨迹。该示例使用了 contopptraj 函数,该函数使用可达性分析 (RA) 求解受约束的时间最优路径参数化 (TOPP) 轨迹。


 

一、示例背景

本例解决的是 TOPP 问题,这是一个机器人问题,其目标是在系统约束条件下找到最快的路径。在本例中,您将使用 contopptraj 函数,该函数通过使用一种基于可达性分析(RA)的方法来解决受速度和加速度约束的 TOPP 问题,这种方法被称为 TOPP-RA[1]。解决 TOPP 问题的其他方法依赖于数值积分 (NI) 或凸优化 (CO)。TOPP 的应用包括

  • 重新调整机械手的联合空间轨迹,以满足制造商提供的运动学约束。
  • 生成联合空间轨迹,在给定计划路径的情况下快速返回最优轨迹。
  • 根据移动机器人的运动限制,优化其在 SE(3) 中的移动路径。

您可以通过以下方式使用 contopptraj 函数:

  • 在满足速度和加速度限制的前提下,生成一条连接各航点的轨迹。在这种情况下,使用最小运动轨迹作为初始猜测。更多信息,请参阅创建运动学约束轨迹。
  • 重新参数化现有轨迹,同时在速度和加速度限制条件下保留其时序。路径由 N 维输入空间中的航点组成,是任意类型的轨迹。然后,contopptraj 函数会在同一时间调整机器人导航路径的方式,将现有轨迹映射为一个能解决 TOPP 问题的新轨迹。

在本例中,您需要更新连接五个 2-D 航点的现有轨迹。初始路径是基于五次多项式的初始轨迹插值,它提供了形状。然后使用 contopptraj 函数对初始路径应用速度和加速度限制。

二、定义航点和初始轨迹

两条轨迹连接同一组航点,并受到一组速度和加速度限制。指定航点。

waypts = (deg2rad(30))*[-1 1 2 -1 -1.5; 1 0 -1 -1.1 1];

 不同的轨迹具有不同的几何和运动属性,这会影响它们在空间中的导航路径。为机械手路径选择轨迹示例说明了机器人系统工具箱™中提供的各种轨迹函数之间的一些差异。

在本示例中,使用五次多项式轨迹连接航点。五次多项式通过使用平滑的速度和加速度曲线来连接线段。

tpts = [0 1 2 3 5];
timeVec = linspace(tpts(1),tpts(end),100);
[q1,qd1,qdd1,pp1] = quinticpolytraj(waypts,tpts,timeVec);

三、使用约束 TOPP-RA 求解器完善轨迹

根据默认参数,五次多项式产生的输出会在每个航点停止。您可以使用 TOPP-RA 求解器计算在速度和加速度受限的情况下,以最快的速度穿越路径,同时仍在每个航点停止。使用 contopptraj 函数生成一条轨迹,以尽可能快的速度穿越初始路径,同时满足指定的速度和加速度限制。

vellim = [-40 40; -25 25]; 
accellim = [-10 10; -10 10];
[q2,qd2,qdd2,t2] = contopptraj(pp1,vellim,accellim,numsamples=100);

将初始轨迹和修改后的轨迹绘制在同一幅图上。请注意 TOPP-RA 求解器是如何在满足已知约束条件的同时加快轨迹速度的。

% Create a figure and adjust the color order so that the second two lines
% have the same color as the associated first two lines
figure
c = colororder("default");
c(3:4,:) = c(1:2,:);
colororder(c)

% Plot results
subplot(3,1,1)
plot(timeVec,q1);
hold on
plot(t2,q2,"--")
legend("Quintic 1","Quintic 2","Constrained 1","Constrained 2")
title("Joint Configuration")
xlim([0 tpts(end)])

subplot(3,1,2)
hold on
plot(timeVec,qd1)
plot(t2,qd2,"--")
title("Joint Velocity")
xlim([0 tpts(end)])

subplot(3,1,3)
hold on
plot(timeVec,qdd1)
plot(t2,qdd2,"--")
title("Joint Acceleration")
xlabel("Time (s)")
xlim([0 tpts(end)])

MATLAB - 使用 TOPP-RA 求解器生成带约束条件的时间最优轨迹,matlab,开发语言,机器人,自动驾驶,ROS,机器人控制,轨迹规划 

参考资料

  1. Pham, Hung, and Quang-Cuong Pham. “A New Approach to Time-Optimal Path Parameterization Based on Reachability Analysis.” IEEE Transactions on Robotics, 34, no. 3 (June 2018): 645–59. https://doi.org/10.1109/TRO.2018.2819195.

 

到了这里,关于MATLAB - 使用 TOPP-RA 求解器生成带约束条件的时间最优轨迹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通用的改进遗传算法求解带约束的优化问题(MATLAB代码精讲、实际工程经验分享)

    在对多约束、非线性问题的求解上,传统线性规划等方法往往无法有效求解(求解时间过长、无法处理非线性约束等。 进化算法是一类强有力的工具,已经在多个领域有了较为成功的应用。然而,在利用遗传算法、粒子群等等进化算法求解实际的优化问题时,还存在许多困难

    2023年04月19日
    浏览(77)
  • 35.利用fminsearch解 多元变量无约束条件下的函数最小值(matlab程序)

    1. 简述        函数功能:使用无导数法计算无约束多变量函数的最小值     2. 代码   主程序: % 通过绘图确定一个初始值;然后进行迭代找到真正的最小值; clc clear [x,y]=meshgrid(-6:.5:6); f= 8*x-4*y +x.^2+3*y.^2; surfc(x,y,f) x0=[0,0]; %[x,fval,exitflag]=fminunc(@(x)(8*x(1)-4*x(2) +x(1).^2+3*x(2).^2

    2024年02月14日
    浏览(43)
  • 【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 2.1 CCGKKT 2.2  CCGSD 2.3  SPKKT 2.4 SDSP 2.5 

    2023年04月15日
    浏览(54)
  • 最小生成树matlab求解

    连通所有顶点且总路径最小 修建连通7个城市的铁路网,可修建的路线和对应造价如图所示,如何修建使总费用最少? 问题分析: 连通7个城市:生成的图中,从任意顶点起步,沿着边一定可以到达所有的其他顶点,这种图叫连通图。 可修建的路线和对应造价:图的边,及其

    2024年02月05日
    浏览(32)
  • 详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题

       本文中将详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题,结合给出的带约束的最优化问题示例,给出相应的完整的C++程序,并给出详细的解释和注释,以及编译规则等    一、Ipopt库的安装和测试    本部分内容在之前的文章《Ubuntu20.04安装Ipopt的流程介

    2024年02月08日
    浏览(72)
  • MATLAB中CVX工具箱解决凸优化问题的基本知识——语法、变量声明、目标函数、约束条件、cvx编程错误及解决方法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文是在最近学习MATLAB CVX工具箱解决凸优化问题时学到的一些知识点,分享出来供大家参考。 进行CVX编程时,会遇到各种各样意想不到又难以解决的报错问题,如果编程过程中遇到了很多cvx bug和错误,

    2024年02月08日
    浏览(50)
  • Yalmip使用教程(6)-将约束条件写成矩阵形式

            博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译:https://yalmip.github.io/tutorials/         这篇博客将详细介绍如何借助yalmip工具箱将约束条件写成矩阵形式。         depends和getvariables函数都可用于求出sdpvar类型变量在Yalmip工具

    2024年02月08日
    浏览(38)
  • 优化问题----等式约束与不等式约束问题求解

    目录 先总结一波: 1. 等式约束问题求解 (1)一阶必要条件 (2)二阶充分条件 2.不等式约束问题求解 2.1 可行下降方向 2.2 KTT条件(Kuhn-Tucker条件) (1)Gordan定理 (2)Fritz John定理 (3)KTT条件  (4)KTT的一个应用实例 对于无约束极值问题,可以采用解析方法和直接方法两

    2024年02月05日
    浏览(49)
  • 矩阵方程的计算求解:使用 MATLAB

    矩阵方程的计算求解:使用 MATLAB 矩阵方程是数学中一类重要的方程,它以矩阵的形式表示,并涉及到矩阵的乘法、加法和逆运算等。在 MATLAB 中,我们可以使用多种方法来求解矩阵方程,包括直接求解、迭代法和数值方法等。本文将介绍几种常见的方法,并给出相应的 MATL

    2024年02月08日
    浏览(53)
  • 约束优化求解之罚函数法

    罚函数法 本部分考虑约束优化问题: min ⁡ f ( x ) s . t . x ∈ χ (1) begin{aligned} min f(x) \\\\ s.t. xinchi end{aligned} tag{1} min f ( x ) s . t . x ∈ χ ​ ( 1 ) 这里 χ ⊂ R n chisubsetmathbb{R}^n χ ⊂ R n 为问题的可行域。与无约束问题不同,约束优化问题中自变量 x x x 不能任意取值,这导致

    2023年04月19日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包