JointTrajectoryController
http://wiki.ros.org/joint_trajectory_controller/
用于在一组关节上执行关节空间轨迹的控制器。 轨迹被指定为在特定时刻到达的一组路点,控制器试图执行以及机制允许的路线点waypoints。航点由位置,速度和加速度组成。
1. Trajectoryrepresentation
控制器被模板化以处理多个轨迹表示。 默认情况下,提供样条插补器,但可以支持其他表示。 样条插补器根据航点规范使用以下插补策略:
线性Linear:仅指定位置。 保证职位级别的连续性。 不鼓励,因为它会产生不连续的速度在航点的轨迹。
立方体Cubic:指定位置和速度。 在速度级别保证连续性。
五次插补Quintic:指定位置,速度和加速度:在加速级别保证连续性。
2. Hardwareinterface type
该控制器被模板化以使用多种硬件接口类型。目前支持位置,速度和力接口的关节。对于位置控制的关节,所需的位置简单地转发到关节;而对于速度(力)关节,位置+速度轨迹跟随误差通过PID回路映射到速度(力)命令。
示例控制器配置可以在这里找到。
http://wiki.ros.org/joint_trajectory_controller#Controller_configuration_examples
与上面的轨迹表示情况类似,可以支持新的硬件接口或者对已经支持的接口(例如用于生成工作命令的代理控制器)的替代映射。
3. Other features
实时安全实施。
正确处理包装(连续)关节。
对系统时钟变化的鲁棒性:不连续的系统时钟变化不会导致执行已经排队的轨迹段的不连续性。
4. Sending trajectories
4.1Available interfaces
有两种向控制器发送轨迹的机制:通过操作界面或主题界面。两者都使用trajectory_msgs / JointTrajectory消息来指定轨迹,并且如果allow_partial_joints_goal未设置为True,则需要为所有控制器关节指定值(而不仅仅是一个子集)。
发送轨迹的主要方式是通过操作界面,并且可以执行监视。行动目标不仅可以指定要执行的轨迹,还可以(可选)指定路径和目标公差。如果未指定容差,则使用参数服务器中给出的默认值(请参见下面的ROS API)。如果在轨迹执行过程中公差被违反,操作目标会中止并通知客户端。
重要提示即使目标已被中止,控制器仍会尽可能地尝试执行轨迹。
主题界面是一个不容忽视的选择。如果您不关心执行监控,请使用此接口