首页 > 其他分享 >Ros2 - Moveit2 - TimeParameter(时间参数化)

Ros2 - Moveit2 - TimeParameter(时间参数化)

时间:2024-09-12 09:36:40浏览次数:10  
标签:轨迹 limits 算法 MoveIt 关节 加速度 TimeParameter Moveit2 Ros2

时间参数化

MoveIt 目前主要是一个运动规划框架 - 它规划关节或末端执行器的位置,但不规划速度或加速度。但是,MoveIt 确实利用处理来对速度和加速度值的运动轨迹进行时间参数化。下面我们将解释 MoveIt 这一部分所涉及的设置和组件。

 

速度控制

来自文件

默认情况下,MoveIt 将关节轨迹的关节速度和加速度限制设置为机器人 URDF 或 joint_limits.yaml 文件中允许的默认值。joint_limits.yaml 文件是由 Setup Assistant 生成的,最初与 URDF 中的值完全相同。用户可以根据需要修改这些值,将其设置为比原始 URDF 值更小的值,以满足特殊约束。可以通过以下键修改特定的关节属性:

  • max_position:关节允许的最大位置
  • min_position:关节允许的最小位置
  • max_velocity:关节允许的最大速度
  • max_acceleration:关节允许的最大加速度
  • max_jerk:关节允许的最大冲击(加速度的变化率)

关节限制可以通过以下键开启或关闭:

  • has_velocity_limits:是否应用速度限制
  • has_acceleration_limits:是否应用加速度限制
  • has_jerk_limits:是否应用冲击限制

在运行时,参数化运动轨迹的速度也可以根据配置值中设定的最大速度和加速度进行调整,调整幅度为0到1之间的一个值。要在每个运动规划的基础上改变速度,你可以在 MotionPlanRequest.msg 中设置两个缩放因子。MoveIt MotionPlanning RViz 插件中也提供了用于设置这两个因子的旋转框。

时间参数化算法

MoveIt 可以支持不同的算法来对运动轨迹进行后处理,以添加时间戳和速度/加速度值。目前 MoveIt 中只有一个选项:

PR #809#1365中引入了时间最优轨迹生成 (TOTG) 。它可生成具有非常平滑和连续速度曲线的轨迹。该方法基于将路径段拟合到原始轨迹,然后从优化路径中采样新航路点。这与严格的时间参数化方法不同,因为生成的航路点可能会在一定公差范围内偏离原始轨迹。因此,使用此方法时可能需要进行额外的碰撞检查。它是 MoveIt 2 中所有位置的默认设置。

本教程记录了时间参数化算法作为规划请求适配器的使用方法。

限制加速度的轨迹平滑

时间参数化算法(例如 TOTG)可计算轨迹的速度和加速度,但所有时间参数化算法均不支持抖动限制。这并不理想——轨迹上的大抖动可能会导致运动不平稳或损坏硬件。作为进一步的后处理步骤,可以应用 Ruckig 抖动限制平滑算法来限制轨迹上的关节抖动。

要应用 Ruckig 平滑算法,应在joint_limits.yaml文件中定义抖动限制。如果您没有为任何关节指定抖动限制,则将应用合理的默认值并打印警告。

 

最后,将 Ruckig 平滑算法添加到计划请求适配器列表(通常在中ompl_planning.yaml)。Ruckig 平滑算法应最后运行,因此将其放在列表顶部:

response_adapters:
  - default_planning_request_adapters/AddRuckigTrajectorySmoothing
  - default_planning_request_adapters/AddTimeOptimalParameterization
  ...

 

标签:轨迹,limits,算法,MoveIt,关节,加速度,TimeParameter,Moveit2,Ros2
From: https://www.cnblogs.com/ai-ldj/p/18409563

相关文章

  • ROS2开发前置基础知识
    前言笔者发现现在市面上(主要是某站上)的ros2相关的教程内容大多不太基础(例如古某居(手动狗头保命),对于那些不熟悉Linux和C++甚至Python的童鞋来说不太友好,之前笔者自己在跟着学习过程中也有不少疑惑,踩了不少坑,现进行一些前置知识的总结(主要学习古某居和鱼香ros的教程,墙裂推荐),一......
  • Ros2- Moveit2 - Visualizing Collisions(可视化碰撞)
    本节将引导您了解C++示例代码,该代码可让您在RViz中移动和与机器人手臂交互时可视化机器人本身与世界之间的碰撞接触点。入门运行代码使用Roslaunch启动文件直接从moveit_tutorials运行代码:roslaunchmoveit_tutorialsvisualizing_collisions_tutorial.launch现在......
  • ROS2 - Moveit2 - 创建Moveit插件(MoveIt Plugins)
    创建MoveIt插件本节详细说明了如何在ROS中添加插件。两个必需元素是基类和插件类。插件类继承自基类并覆盖其虚拟函数。用于此目的的主要库是pluginlib。本教程包含三种不同类型的插件,即运动规划器、控制器管理器和约束采样器。运动规划器插件在本节中,我们将展示如何将新......
  • 拉取ros2_control_demos存储库
    目录克隆存储库方法1:使用gitclone和rosdep安装依赖方法2:使用vcs工具管理多个存储库区别总结rosdep和APT的关系网络问题安装依赖克隆存储库方法1:使用gitclone和rosdep安装依赖下载存储库:mkdir-p~/ros2_ws/srccd~/ros2_ws/srcgitclo......
  • ros2框架分析
    工作流包创建ros2pkgcreateimage_server--build-typeament_python--dependenciescv_bridgerclpysensor_msgsstd_msgs使用ros2pkgcreate创建的ROS2包默认位于你执行该命令时所在的当前工作目录下。定义消息类型定义服务接口配置包package.xml:作用:......
  • 【Moveit2】MoveGroupInterface设置目标姿态,然后创建一个计划到该姿态的运动路径,stati
    PlanandExecuteusingMoveGroupInterface//CreatetheMoveItMoveGroupInterfaceusingmoveit::planning_interface::MoveGroupInterface;automove_group_interface=MoveGroupInterface(node,"panda_arm");//SetatargetPoseautoconsttarget_p......
  • ROS2- Moveit2 - 运动规划API(Motion Planning API)
     在MoveIt中,运动规划器使用插件基础结构加载。这允许MoveIt在运行时加载运动规划器。在此示例中,我们将运行执行此操作所需的C++代码。入门如果您还没有这样做,请确保您已经完成入门指南中的步骤。 运行演示打开两个shell。在第一个shell中启动RViz并等待所有内......
  • ROS2- Moveit2 -Planning Scene ROS API (规划场景 ROS API)
    在本教程中,我们将研究如何使用规划场景差异来执行两项操作:在世界中添加和移除物体将物体安装到机器人上或从机器人上卸下入门如果您还没有这样做,请确保您已经完成入门指南中的步骤。运行代码打开两个shell。在第一个shell中启动RViz并等待所有内容完成加载:ros......
  • Ros2-Moveit2-PlanningSceneMonitor(规划场景监控)
    PlanningSceneMonitor是维护最新规划场景的推荐接口。RobotState、CurrentStateMonitor、PlanningScene、PlanningSceneMonitor和PlanningSceneInterface之间的关系一开始可能非常令人困惑。本教程旨在阐明这些关键概念。机器人状态RobotState是机器人的快照。它包含RobotMod......
  • NVIDIA 系列之 使用生成式 AI 增强 ROS2 机器人技术:使用 BLIP 和 Isaac Sim 进行实时
    简介在快速发展的机器人领域,集成先进的AI模型可以显著增强机器人系统的功能。在本博客中,我们将探讨如何在ROS2(机器人操作系统2)环境中利用BLIP(引导语言图像预训练)模型进行实时图像字幕制作,并使用NVIDIAIsaacSim进行模拟。我们将介绍如何实现一个ROS2节点,该节点订......