MoveIt! 学习笔记9 -Time Parameterization(时间参数化)(设置机器人运动时的速度/加速度等约束)

此博文主要是用来记录ROS-Kinetic 中,用于机器人轨迹规划的MoveIt功能包的学习记录。 

英文原版教程见此链接:http://docs.ros.org/en/kinetic/api/moveit_tutorials/html/doc/time_parameterization/time_parameterization_tutorial.html

引:之前涉及到的运动学规划主要是控制机器人按照一个指定的轨迹运行,而没有关注到机器人运行速度+机器人运行加速度等限制参数,此教程将谈到这2点。

MoveIt目前主要是一个kinematic运动规划框架-主要用来规划机器人各关节或末端执行器的位置,但没有涉及到机器人的速度和加速度限制。

因此,MoveIt可以利用后处理时间参数化运动轨迹的速度和加速度值。下面将解释MoveIt的这一部分所涉及的设置和组件。

比较简单的设置速度和加速度的方法是: 在URDF模型或者yaml文件中,设置相关参数,在ROS启动时,进行加载。

高阶用法是:使用相应的Plugin,这个用法主要应用于轨迹跟随或者对轨迹控制速度要求比较高的情况下使用。


一.Speed Control
1.From File (通过设置某一个文件内部的参数,ROS 在运行Launch文件时,加载这个参数,从而指定速度和加速度值)
默认情况下MoveIt将关节轨迹的速度和加速度,设置在robot的URDF文件中joint_limits.yaml文件中

其中: joint_limits.yaml是从moveit_setup_assistant生成的,最初是URDF中值的精确副本。如果需要特殊的约束,用户可以将这些值修改为小于原始的URDF值。可以使用键max_position、min_position、max_velocity、max_acceleration来更改特定的关节属性。可以通过键has_velocity_limits、has_acceleration_limits来打开或关闭关节限制。
2.During Runtime
参数化的运动轨迹的速度也可以在运行期间修改为配置值中最大速度和加速度集的一部分,即0-1之间的值。要在每个运动计划的基础上更改速度,可以按照MotionPlanRequest.msg中描述的那样设置两个缩放因子。用于设置这两个因素的Spinbox也可以在MoveIt MotionPlanning RViz插件中找到。

二.Time Parameterization Algorithms
MoveIt可以支持不同的算法对运动轨迹进行后处理,以添加时间戳和速度/加速度值。目前两个是默认的MoveIt: Iterative Parabolic Time Parameterization,和Iterative Spline Parameterization
Iterative Parabolic Time Parameterization算法在Motion Planning Pipeline中被默认用作本教程中记录的Planning Request Adapter。虽然Iterative Parabolic Time Parameterization算法,MoveIt在过去的几年里,已经有数百个机器人使用过它,但它也有缺陷。
Iterative Spline Parameterization算法最近被融合到主流MoveIt中。在PR 382中处理这些问题。虽然初步的实验是很有希望的,但在完全取代Iterative Parabolic Time Parameterization算法之前,还在等待社区的更多反馈。

猜你喜欢

转载自blog.csdn.net/weixin_42503785/article/details/111939270