信号处理
为了便于在非理想网络连接下控制机器人,libfranka 包括信号处理函数,这些函数将修改用户命令的值,使其符合 接口限制。所有实时控制回路中都包含两个 可选功能:
一阶低通滤波器 low-pass filter,用于平滑用户命令信号。
一个速率限制器 rate limiter,它使用户命令值的时间导数饱和。
从版本
0.5.0开始,libfranka 包括一个低通滤波器 low-pass filter,用于 默认运行 的所有实时接口,截止频率为 100Hz。滤波器平滑命令信号以提供更稳定的机器人运动,但不能防止违反 接口限制。从版本
0.4.0开始,所有实时接口的 速率限制器 (rate limiters) 默认运行 。速率限制器 (rate limiters) ,也称为安全控制器 (safe controllers),将限制用户发送的信号的变化率,以防止违反 接口限制。. 对于运动生成器,它将限制加速度和加加速度,而对于外部控制器,它将限制扭矩变化率。它们的主要目的是提高控制回路的稳健性。在数据包丢失的情况下,即使发送的信号符合接口限制,Control 也可能检测到违反速度、加速度或加加速度限制的情况。速率限制将调整命令以确保不会发生这种情况。有关更多详细信息,请查看 不合规错误部分 。小心
速率限制将确保除了逆向运动学之后的关节限制之外没有任何限制被违反,其违反会产生以
cartesian_motion_generator_joint_*开头的一系列错误。有关更多详细信息,请查看 不合规错误部分 。提示
速率限制器中使用的限制在
franka/rate_limiting.h定义并被设置到接口限制中。如果这会产生急动或不稳定的行为,可以将限制设置为较低的值,激活低通滤波器或降低其截止频率。
为了控制信号处理函数,所有 robot.control() 函数调用都有两个额外的可选参数。第一个是启用或停用速率限制器的标志,而第二个指定一阶低通滤波器的截止频率。如果达到截止频率 >=1000.0,滤波器将被停用。例
// Set Cartesian impedance (optional)
robot.setCartesianImpedance({{2000, 2000, 2000, 100, 100, 100}});
// Runs my_external_motion_generator_callback with the Cartesian impedance controller,
// rate limiters on and low-pass filter with 100 Hz cutoff
robot.control(my_external_motion_generator_callback, franka::ControllerMode::kCartesianImpedance);
// Identical to the previous line (default true, 100.0 Hz cutoff)
robot.control(my_external_motion_generator_callback, franka::ControllerMode::kCartesianImpedance, true, 100.0);
// Runs my_external_motion_generator_callback with the Cartesian impedance controller,
// rate limiters off and low-pass filter off
robot.control(my_external_motion_generator_callback, franka::ControllerMode::kCartesianImpedance, false, 1000.0);或类似的外部控制器
// With rate limiting and filter robot.control(my_external_controller); // Identical to the previous line (default true, 100.0 Hz cutoff) robot.control(my_external_controller, true, 100.0); // Without rate limiting but with low-pass filter (100.0 Hz) robot.control(my_external_controller, false); // Without rate limiting and without low-pass filter robot.control(my_external_controller, false, 1000.0);
危险
低通滤波器和速率限制器是用来针对数据包丢失的稳健性功能,在已经设计了平滑运动生成器或控制器 之后 使用。对于新控制回路的首次测试,我们强烈建议停用这些功能。过滤和限制非平滑信号的速率会产生不稳定性或意外行为。太多的数据包丢失也会产生不稳定的行为。通过监控 control_command_success_rate 机器人状态信号来检查通信质量。