libfranka--echo_robot_state

本文介绍如何使用Franka库中的robot.read()函数来读取机器人的当前状态,并展示了读取到的具体数据,包括末端执行器的位置姿态、关节扭矩等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数主体

  try {
    franka::Robot robot(argv[1]);

    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会增加延迟。对于这样的读取循环是可以接受的,但不应该在控制循环中完成。
      std::cout << robot_state << std::endl;
      return count++ < 100;
    });

    std::cout << "Done." << std::endl;
  } catch (franka::Exception const& e) {
    std::cout << e.what() << std::endl;
    return -1;
  }

代码中较为重要函数是robot.read(),主要功能为:

函数:void franka::Robot::read(std::function<bool (const franka::RobotState &)> read_callback)
功能描述: Starts a loop for reading the current robot state.Cannot be executed while a control or motion generator loop is running.
参数:read_callback – Callback function for robot state reading.

通过描述可以看到robot.read()函数的主要功能是读取当前机器人的状态,接收的参数是bool型,为true则读取。

执行结果

{
  "O_T_EE": [0.998578,0.0328747,-0.0417381,0,0.0335224,-0.999317,0.0149157,0,-0.04122,-0.016294,
             -0.999017,0,0.305468,-0.00814133,0.483198,1],
  "O_T_EE_d": [0.998582,0.0329548,-0.041575,0,0.0336027,-0.999313,0.0149824,0,-0.0410535,
               -0.0163585,-0.999023,0,0.305444,-0.00810967,0.483251,1],
  "F_T_EE": [0.7071,-0.7071,0,0,0.7071,0.7071,0,0,0,0,1,0,0,0,0.1034,1],
  "EE_T_K": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],
  "m_ee": 0.73, 
  "F_x_Cee": [-0.01,0,0.03], 
  "I_ee": [0.001,0,0,0,0.0025,0,0,0,0.0017],
  "m_load": 0, 
  "F_x_Cload": [0,0,0], 
  "I_load": [0,0,0,0,0,0,0,0,0],
  "m_total": 0.73, 
  "F_x_Ctotal": [-0.01,0,0.03], 
  "I_total": [0.001,0,0,0,0.0025,0,0,0,0.0017],
  "elbow": [-0.0207622,-1], 
  "elbow_d": [-0.0206678,-1],
  "tau_J": [-0.00359774,-5.08582,0.105732,21.8135,0.63253,2.18121,-0.0481953],
  "tau_J_d": [0,0,0,0,0,0,0],
  "dtau_J": [-54.0161,-18.9808,-64.6899,-64.2609,14.1561,28.5654,-11.1858],
  "q": [0.0167305,-0.762614,-0.0207622,-2.34352,-0.0305686,1.53975,0.753872],
  "dq": [0.00785939,0.00189343,0.00932415,0.0135431,-0.00220327,-0.00492024,0.00213604],
  "q_d": [0.0167347,-0.762775,-0.0206678,-2.34352,-0.0305677,1.53975,0.753862],
  "dq_d": [0,0,0,0,0,0,0],
  "joint_contact": [0,0,0,0,0,0,0], 
  "cartesian_contact": [0,0,0,0,0,0],
  "joint_collision": [0,0,0,0,0,0,0], 
  "cartesian_collision": [0,0,0,0,0,0],
  "tau_ext_hat_filtered": [0.00187271,-0.700316,0.386035,0.0914781,-0.117258,-0.00667777,
                           -0.0252562],
  "O_F_ext_hat_K": [-2.06065,0.45889,-0.150951,-0.482791,-1.39347,0.109695],
  "K_F_ext_hat_K": [-2.03638,-0.529916,0.228266,-0.275938,0.434583,0.0317351],
  "theta": [0.01673,-0.763341,-0.0207471,-2.34041,-0.0304783,1.54006,0.753865],
  "dtheta": [0,0,0,0,0,0,0],
  "current_errors": [], 
  "last_motion_errors": [],
  "control_command_success_rate": 0, 
  "robot_mode": "Idle", 
  "time": 3781435
}

可以看到robot_state中包含了机器人状态中大多数数据(如末端执行器在极坐标下的齐次变换矩阵、各关节的扭矩、角度以及它们的微分等等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值