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

相关文章

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,