ROS Industrial 软件包_笛卡尔路径规划器_介绍

2024-04-28 04:58

本文主要是介绍ROS Industrial 软件包_笛卡尔路径规划器_介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

笛卡尔(Descartes)

概要

笛卡尔(Descartes)是ROS-Industrial项目,用于对未定义的笛卡尔轨迹执行路径规划

 

动机

当前的MoveIt / ROS接口专注于拾取pick和放置place应用。在典型的拾取和放置应用中,起始位置和目标位置是路径规划者的唯一输入。相比之下,许多工业应用必须遵循预定义的笛卡尔路径,不仅起始和结束位置很重要,而且两者之间的路径也很重要。一些常见的例子是涂漆,机械加工和焊接。不幸的是,仅通过应用逆运动学解决方案来解决笛卡尔路径规划问题会导致有限的解决方案集,而没有利用应用程序的灵活性。实际上,笛卡尔路径通常是半约束的。例如,在加工应用中,需要五个自由度(5DOF)路径,其中未定义第六DOF(围绕刀具的方向)。无法利用这些开放约束的路径规划器(例如,基于逆运动学(IK)的规划器)会限制找到有效解的可能性,即使该解决方案可能存在于半约束空间中。

 

软件架构

笛卡尔使用轨迹点(trajectory points),机器人模型(robot models)和规划器(planners)来生成符合给定过程约束的关节轨迹。

·轨迹点(trajectory points)定义沿路径的独立的点(以时间为序)。这些点封装了在给定用户的过程要求(包括约束/公差)的情况下如何搜索有效的关节解决方案的逻辑。

·机器人模型(robot models)定义必须完成给定轨迹的机器人的物理特征。机器人模型执行诸如正向和反向运动学以及有效性检查之类的计算。

·规划器(planners)是笛卡尔体系结构的最高层次的组成部分。它们负责通过给定机器人模型的一系列轨迹点找到有效和最佳的解决方案。

这些主要组件中的每一个都有一个单独的程序包,每个程序包都提供了参考实现。

 

结构

笛卡尔软件包集分为以下软件包:

1. descartes_core

descartes_core包定义了轨迹点(trajectory points),机器人模型(robot_models)和计划器(planners)的接口。 有关与这些概念相关的API的更多信息,请参阅文档。descartes_core程序包为轨迹计划创建关节轨迹。 轨迹计划通常是在空间中定义不明确的路径,允许运动/动态公差,例如未指定的工具滚动。

 

2. descartes_moveit

descartes_moveit软件包提供了使用MoveIt!提供其功能的Descartes robot_model的参考实现。 有关详细信息,请访问descartes_moveit。该软件包通过使用MoveIt以提供正向和反向运动学解决方案以及配置有效性检查实现了笛卡尔机器人模型。 笛卡尔的用户在创建/初始化机器人模型之后通常不需要直接使用。 路径规划器被设计用于在此方面进行繁重的工作。

 

3. descartes_planner

descartes_planner软件包包含规划程序的参考实现,可以使用不同算法为轨迹提供解决方案。有关详细信息,请访问descartes_planner。该软件包包含笛卡尔计划器的实现。笛卡尔计划器负责智能搜索给定轨迹(具有公差)的有效机器人配置,并生成一系列关节配置形式(关节轨迹点)的解决方案。

参考实现

笛卡尔目前提供轨迹规划器的两种参考实现。 两者都接受输入的任意轨迹点序列,并输出一系列的关节轨迹点。

Ⅰ.密集规划器

第一个也是最直接的规划器是DensePlanner。它需要密集的轨迹,并试图通过这些点找到一条路径,以使整体关节运动最小化。

从概念上讲,它执行以下操作:

对于每个轨迹点计算该点所有逆运动学解。这些是使用轨迹点实现的采样逻辑以及机器人模型的静态/动态知识计算得出的。

对于每对连续点,计算起点的每个关节解和终点的每个关节解之间的移动成本和可行性。

根据数据构建图形,其中顶点表示运动学解决方案,边表示运动成本。

使用Dijkstra算法在此图上搜索从任何起始配置到任何结束配置的最低成本路线。

 

Ⅱ.稀疏规划器

稀疏计划程序建立在密集计划程序的工作原理之上,但是尝试通过“采样”给定轨迹来节省计算时间。稀疏计划程序对原始点的子集进行逆运动学,然后尝试使用关节空间插值和正向运动学来解决轨迹的其余部分。

例如,如果规划器必须求解点A,B和C。它可能会在A和C上进行逆运动学,然后尝试从中推论出B的关节解。它会通过运行正向运动学并将其与所需姿势进行比较来检查其推断。

局限性和失败模式

当前,规划器都无法解决由用户轨迹生成的关节空间图中的不连续性,并且如果发生以下任何情况都将失败:

·机器人模型无法达到轨迹上的点。

·一个点是可以到达的,但涉及到的配置翻转超过某个阈值。

 

4. descartes_trajectory

descartes_trajectory包包含用于常见类型的轨迹点的参考实现,例如定义特定笛卡尔姿势或特定关节配置的点。 在descartes_trajectory上有更多详细信息。

参考实现

笛卡尔提供了指定机器人路径的最常用方法的参考实现。对于更特殊的要求,您可以使用descartes_core中的界面创建自己的轨迹点。

 

关节轨迹点(JointTrajectoryPt)

descartes_trajectory :: JointTrajectoryPt表示机器人配置,该配置通过指定机器人中每个活动关节的位置来定义。该点可由名义关节位置和每个关节的一组允差来构造。

 

笛卡尔轨迹点(JointTrajectoryPt)

descartes_trajectory :: CartTrajectoryPt表示一种机器人配置,其中机器人的工具末端(例如激光切割头)处于指定的6DOF姿势。与关节轨迹点不同,笛卡尔点可能具有许多可能的关节解。姿势的笛卡尔分量和旋转分量均可容差。

给定笛卡尔点的样本空间是通过获取公差范围并使用用户定义的离散步长逐步遍历它们而生成的。这些点在内部由转换矩阵表示,该转换矩阵首先组合了到工具(x,y,z)坐标的平移,然后是围绕X,Y,Z轴顺序的移动轴的旋转。

 

轴对称点(JointTrajectoryPt)

descartes_trajectory :: AxialSymmetricPt表示具有自由旋转轴的特殊笛卡尔轨迹点。用户可以为末端执行器指定名义位姿,并指定代表解决方案的名义姿势轴的轴(X_AXIS,Y_AXIS或Z_AXIS)。所有其他容差均保持为零。这对于诸如搅拌之类的应用程序非常有用,而这些应用程序并不关心工具的确切偏航。

 

5. 笛卡尔实用程序(descartes_utilities)

该软件包包含与Descartes运动计划库一起使用的辅助例程,该例程简化了实际使用,但完全适合核心库。 这包括到ROS轨迹的转换以及类似的操作。

 

 

主要特点

笛卡尔作为路径规划库,经常与MoveIt进行比较。但是,它在几个关键方面与MoveIt不同:

·笛卡尔规划:MoveIt计划自由空间运动(即从A到B的运动),笛卡尔规划针对半约束笛卡尔路径(即其航路点可能小于完全指定的6DOF姿势的机器人)的机器人关节运动。

·高效,可重复,可扩展的规划:笛卡尔生成的路径看起来与人工生成的路径非常相似,但无需付出任何努力。这些计划也是可重复的且可扩展的,以适应问题的复杂性(简单路径的规划非常迅速,复杂路径需要时间,但仍然可以解决)。

·动态重新计划:计划完成后,路径计划结构将保留在内存中。当对所需路径进行更改时,几乎可以立即生成更新的机器人关节轨迹。

·离线计划:类似于MoveIt,但与其他计划者不同,笛卡尔主要致力于离线或感知/规划/动作应用。实时规划不是笛卡尔的功能。

 

应用领域

笛卡尔已经在多种ROS-Industrial应用中使用。 第一个应用程序涉及使用笛卡尔(Descartes)作为机器人路由的离线路径规划器。笛卡尔的第二个应用是机器人磨削应用的自动计划器。

 

 

 

 

参考

http://wiki.ros.org/descartes

https://roscon.ros.org/2015/presentations/ROSCon_Descartes.pdf

https://vimeo.com/142622435

 

 

 

这篇关于ROS Industrial 软件包_笛卡尔路径规划器_介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942375

相关文章

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

利用Python把路径转为绝对路径的方法

《利用Python把路径转为绝对路径的方法》在Python中,如果你有一个相对路径并且想将其转换为绝对路径,你可以使用Path对象的resolve()方法,Path是Python标准库pathlib中... 目录1. os.path.abspath 是什么?怎么用?基本用法2. os.path.abspat

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

浅谈MySQL的容量规划

《浅谈MySQL的容量规划》进行MySQL的容量规划是确保数据库能够在当前和未来的负载下顺利运行的重要步骤,容量规划包括评估当前资源使用情况、预测未来增长、调整配置和硬件资源等,感兴趣的可以了解一下... 目录一、评估当前资源使用情况1.1 磁盘空间使用1.2 内存使用1.3 CPU使用1.4 网络带宽二、

MySQL连表查询之笛卡尔积查询的详细过程讲解

《MySQL连表查询之笛卡尔积查询的详细过程讲解》在使用MySQL或任何关系型数据库进行多表查询时,如果连接条件设置不当,就可能发生所谓的笛卡尔积现象,:本文主要介绍MySQL连表查询之笛卡尔积查... 目录一、笛卡尔积的数学本质二、mysql中的实现机制1. 显式语法2. 隐式语法3. 执行原理(以Nes

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1