时间参数化
MoveIt 目前主要是一个 运动学 运动规划框架 - 它规划关节或末端执行器位置,但不规划速度或加速度。但是,MoveIt 确实利用 后 处理来对速度和加速度值的运动轨迹进行时间参数化。下面我们将解释 MoveIt 这一部分所涉及的设置和组件。
速度控制
来自文件
默认情况下,MoveIt 将关节轨迹的关节速度和加速度限制设置为机器人的 URDF 或 joint_limits.yaml
. The joint_limits.yaml
是由设置助手生成的,最初是 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 中所述。用于设置这两个因子的 Spinbox 也可在 MoveIt MotionPlanning RViz 插件 中找到。
时间参数化算法
MoveIt 可以支持不同的算法来对运动轨迹进行后处理,以添加时间戳和速度/加速度值。目前 MoveIt 中只有一个选项:
Time-optimal Trajectory Generation (TOTG) was introduced in PRs #809 and #1365. 它产生的轨迹具有非常平滑和连续的速度分布。该方法基于将路径段拟合到原始轨迹,然后从优化路径中采样新的航点。这与严格的时间参数化方法不同,因为生成的航点可能会在一定公差范围内偏离原始轨迹。因此,使用此方法时可能需要额外的碰撞检查。它是 MoveIt 2 中所有地方的默认设置。
时间参数化算法作为规划请求适配器的使用记录在 this tutorial.
限制抖动的轨迹平滑
时间参数化算法(例如 TOTG)可计算轨迹的速度和加速度,但没有任何时间参数化算法支持抖动限制。这并不理想——轨迹上的大抖动可能会导致运动不平稳或损坏硬件。作为进一步的后处理步骤,可以应用 Ruckig 限制抖动的平滑算法来限制轨迹上的关节抖动。
要应用 Ruckig 平滑算法,应在 joint_limits.yaml
文件。如果您没有为任何关节指定急动限制,则将应用合理的默认值并打印警告。
最后,将 Ruckig 平滑算法添加到计划请求适配器列表中 (typically in ompl_planning.yaml
). Ruckig 平滑算法应最后运行,因此将其放在列表顶部:
response_adapters:
- default_planning_request_adapters/AddRuckigTrajectorySmoothing
- default_planning_request_adapters/AddTimeOptimalParameterization
...