本文主要是介绍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 软件包_笛卡尔路径规划器_介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!