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

news2025/1/12 0:59:30

系列文章目录


前言

本例演示如何生成满足速度和加速度限制的轨迹。该示例使用了 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)])

 

参考资料

  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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1388165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3+vite项目构建时报错npm ERR! code EPERMnpm ERR! syscall mkdir...

vscode终端中输入npm create vitelatest vueviteproject1 -- --vue命令后报错 具体报错如下: PS D:\project> npm create vitelatest vueviteproject1 -- --vue >> npm ERR! code EPERM npm ERR! syscall mkdir npm ERR! path D:\node\node_cache\_cac…

磁盘raid1降级后,mdxxx rota发生变化

背景 虚拟机系统盘vda后端使用宿主机ssd盘lvm组raid1,虚拟机内部查看vda磁盘类型(rota=1):机械硬盘,vda后端raid1降级导致磁盘类型降级:rota 0---->1,vda磁盘类型显示不正确,应该是ssd类型(rota=0); 分析 1.基础 1.1 linux磁盘类型 Rota表示磁盘类型:(1)0,表…

收银系统源码-智慧新零售系统框架

智慧新零售系统是一套线下线上打通的收银系统,主要给门店提供含线下收银、线上小程序商城、ERP进销存、精细化会员管理、丰富营销插件等为一体的智慧行业解决方案。智慧新零售系统有合伙人、代理商、商户、门店、收银员/导购员等角色,每个角色有相应的权…

从物联网到数字孪生:智慧社区的未来之路

一、物联网在智慧社区中的应用与挑战 随着科技的飞速发展,物联网技术已经深入到我们生活的方方面面,尤其在智慧社区的建设中发挥着举足轻重的作用。物联网通过连接各种设备和系统,为社区居民提供了更便捷、高效的生活方式,同时也…

TortoiseGit 2.15.0.0 安装与配置(图文详细教程)

TortoiseGit的安装与配置 TortoiseGit是Tortoise为Git提供的版本可视化工具,简化了记忆Git命令行的过程,将命令行可视化。 确保自己电脑中已经下载好了git 官网下载TortoiseGit Download – TortoiseGit – Windows Shell Interface to Git 选择64-bi…

net8 rdl rdlc ssrs报表设计器表头合并单元格(垂直合并)

报表设计器下载地址 https://www.microsoft.com/zh-cn/download/details.aspx?id53613 或者从vs扩展插件安装 打开报表设计器,插入矩阵表格(只有这个才能支持表头单元格合并) 在列单元右建,插入行,根据实际需要添加…

【安全策略】前端 JS 安全对抗浏览器调试方法

一、概念解析 1.1 什么是接口加密 如今这个时代,数据已经变得越来越重要,网页和APP是主流的数据载体。而如果获取数据的接口没有设置任何的保护措施,那么数据的安全性将面临极大的威胁。不仅可能造成数据的轻易窃取和篡改,还可能…

LiveGBS流媒体平台GB/T28181功能-基础配置接入控制白名单黑名单配置控制设备安全接入设备单独配置接入密码

LiveGBS基础配置接入控制白名单黑名单配置控制设备安全接入设备单独配置接入密码 1、白名单配置应用场景2、接入控制2.1、白名单2.2、黑名单 3、搭建GB28181视频直播平台 1、白名单配置应用场景 LiveGBS国标流媒体服务,支持白名单配置。 可在设备注册前&#xff0…

TDA4 Linux BSP ,SD卡制作

1 进入官网: Processor SDK Linux Software Developer’s Guide — Processor SDK Linux for J721e Documentation 这个版本需要 Ubuntu 22.04 支持 ~/ti-processor-sdk-linux-adas-j721e-evm-09_01_00_06/board-support/ti-linux-kernel-6.1.46gitAUTOINC5892b80…

Day04

今日任务 24.两两交换链表中的节点19.删除链表的倒数第N个节点 160. 链表相交142.环形链表II 24 两两交换链表中的节点 题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/description/ 方法一:遍历实现 思路: 代码&#xff…

canvas绘制图片的三种方法(图文示例)

查看专栏目录 canvas示例教程100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

C++学习笔记——类继承

目录 一、一个简单的基类 1.1封装性 1.2继承性 1.3虚函数 1.4多态性 二、基类 2.1一个简单的C基类的示例 2.2 Animal是一个基类。 三、继承 3.1概念 3.2is-a关系 3.3多态公有继承 3.4静态联编和动态联编 3.5访问控制 3.6ABC理念 一、一个简单的基类 C中的基类是一…

会声会影2024什么时间发布呢?会声会影2024会有那些新功能

近年来,随着科技的不断进步,各种软件的功能越来越强大,其中最为常用的莫过于视频编辑软件。而会声会影作为一款颇受欢迎的视频编辑软件,备受用户关注。那么,会声会影2024什么时间发布呢? 首先,我…

Mybatis基础---------增删查改

增删改 1、新建工具类用来获取会话对象 import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.ibatis.io.Resources;import java.io.IOExcept…

算法复习——01背包

01背包 DP分析法要素有:集合,属性,状态计算 (集合是指只考虑前i个,总体积小于等于j的所有选法,存取的属性是所有选法的最大值) 状态方程计算(所有选法可以分为2种不同的子集&#x…

数学建模day16-预测模型

本讲首先将介绍灰色预测模型,然后将简要介绍神经网络在数据预测中的应用,在本讲的最 后,我将谈谈清风大佬对于数据预测的一些看法。 注:本文源于数学建模学习交流相关公众号观看学习视频后所作 目录 灰色系统 GM(1,1)…

基于FPGAWS2812B的贪吃蛇方案设计(含源码)

第1章 基于FPGA&WS2812B的贪吃蛇方案设计 1.2 贪吃蛇游戏系统的功能需求分析 为了更好的实现我们的贪吃蛇游戏系统,我们需要对项目进行功能分析,利于我们对整个系统的分析、架构。 首先,对于整个游戏系统,我们需要界面来引…

Java基础 -04 List之CopyOnWriteArrayList

java集合有蛮多的类型,今天我们以CopyOnWriteArrayList和Vector进行相关介绍。 CopyOnWriteArrayList CopyOnWriteArrayList是Java集合框架中的一个线程安全的List实现类。它通过在修改操作时创建一个新的副本来实现线程安全性,因此称为"写时复制…

【Nuxt3】nuxt3目录文件详情描述:.nuxt、.output、assets、public、utils(一)

简言 nuxt3的中文网站 上次简单介绍了nuxt3创建项目的方法和目录文件大概用处。 这次详细说下.nuxt、.output、assets、public、utils五个文件夹的用处。 正文 .nuxt Nuxt在开发中使用.nuxt/目录来生成你的Vue应用程序。 为了避免将开发构建的输出推送到你的代码仓库中&…

使用HTTP/2在Linux上的Nginx服务器进行优化

随着互联网的发展,HTTP/2协议逐渐成为主流。与传统的HTTP/1.1相比,HTTP/2提供了更高的传输效率和更好的安全性。在Linux上使用Nginx服务器进行优化,我们可以充分利用HTTP/2的优势,提高网站的性能和用户体验。 1. 安装Nginx并启用…