机器人状态

机器人状态以 1kHz 的速率提供机器人传感器读数和估计值。它提供:

  • 关节层级信号:电机和估计的关节角度及其导数、关节扭矩及其导数、估计的外部扭矩、关节碰撞/接触。

  • 笛卡尔层级信号:笛卡尔位姿、配置的末端执行器和负载参数、作用在末端执行器上的外部力旋量、笛卡尔碰撞

  • 接口信号:上一小节中解释的最后的命令和期望值及其导数值。

如需完整列表,请查看 franka::RobotState API 。如上一小节所示,机器人状态始终是控制循环的所有回调函数的输入。但是,如果希望只读取机器人状态而不对其进行控制,则可以使用功能 readreadOnce 来收集它,例如用于记录或可视化目的。

通过合法连接,可以使用以下函数 readOnce 读取 机器人的单次采样状态

franka::RobotState state = robot.readOnce();

下一个示例显示如何使用 read 函数和回调连续读取机器人状态。返回 false 会在回调中停止循环。下面显示了 echo_robot_state 示例的代码片段:

size_t count = 0;
robot.read([&count](const franka::RobotState& robot_state) {
  // Printing to std::cout adds a delay. This is acceptable for a read loop such as this,
  // but should not be done in a control loop.
  std::cout << robot_state << std::endl;
  return count++ < 100;
});