从刚体植物转换为多体植物

问题描述 投票:0回答:1

在旧代码中,曾经有一个选项可以在inverse_dynamics_controller和kuka_torque_controller之间进行选择。两者略有不同,其中kuka_torque_controller的输入具有“ Tau输入”。选择inverse_dynamics_controller进行位置控制,选择kuka_torque_controller进行扭矩控制。

在新的stationation_station代码中,使用kuka_torque_controller的选项消失了,而inverse_dynamics_controller是唯一使用的控制器类型?这是否意味着操纵站仅用于位置控制而不是扭矩控制?

如果没有,那么如何启用扭矩控制?

下面的代码来自kuka_simulation

// Adds a iiwa controller.
  StateFeedbackControllerInterface<double>* controller = nullptr;
  if (FLAGS_torque_control) {
    VectorX<double> stiffness, damping_ratio;
    SetTorqueControlledIiwaGains(&stiffness, &damping_ratio);
    stiffness = stiffness.replicate(num_iiwa, 1).eval();
    damping_ratio = damping_ratio.replicate(num_iiwa, 1).eval();
    controller = builder.AddController<KukaTorqueController<double>>(
        RigidBodyTreeConstants::kFirstNonWorldModelInstanceId, tree.Clone(),
        stiffness, damping_ratio);
  } else {
    VectorX<double> iiwa_kp, iiwa_kd, iiwa_ki;
    SetPositionControlledIiwaGains(&iiwa_kp, &iiwa_ki, &iiwa_kd);
    iiwa_kp = iiwa_kp.replicate(num_iiwa, 1).eval();
    iiwa_kd = iiwa_kd.replicate(num_iiwa, 1).eval();
    iiwa_ki = iiwa_ki.replicate(num_iiwa, 1).eval();
    controller = builder.AddController<InverseDynamicsController<double>>(
        RigidBodyTreeConstants::kFirstNonWorldModelInstanceId, tree.Clone(),
        iiwa_kp, iiwa_ki, iiwa_kd,
        false /* without feedforward acceleration */);
  }

谢谢

drake
1个回答
0
投票

操纵站只是在多体植物上的包装(它还添加了相机,对象等),就像我们在MIT操纵课上使用它的方式一样。在这种用例中,我们总是在联合阻抗控制模式下运行kuka。德雷克的逆动力学块几乎完成了相同的工作。 (我实际上正计划尽快用适当的联合阻抗控制器来替换它,但这还不是重中之重)。

但是,如果您自己使用多体植物,或者愿意更改/复制操作站代码,则绝对可以向机器人发送扭矩命令。 (这就是逆动力学控制器现在正在做的事情)

© www.soinside.com 2019 - 2024. All rights reserved.