Переход с завода Rigidbody на завод Multibody - PullRequest
0 голосов
/ 11 января 2020

В старом коде раньше была возможность выбора между inverse_dynamics_controller и kuka_torque_controller. Они немного отличаются, когда входы в kuka_torque_controller имеют «вход Tau». Inverse_dynamics_controller выбран для управления положением, где kuka_torque_controller выбран для управления крутящим моментом.

Почему в новом коде для манипулирования_станцией пропал параметр использования 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 */);
  }

Спасибо

1 Ответ

0 голосов
/ 12 января 2020

Станция манипуляции - это просто обертка на многотомных растениях (которая также добавляет камеры и объекты и т. Д. c) в том смысле, в каком мы ее используем для обучения в классе манипуляции MIT. В этом случае мы всегда запускаем kuka в режиме совместного управления импедансом; блок обратной динамики у селезня выполняет почти то же самое. (Я на самом деле планирую заменить его соответствующим совместимым контроллером импеданса, но это пока не является главным приоритетом.) код, то вы можете абсолютно отправить команды крутящего момента роботу. (это то, что сейчас делает контроллер обратной динамики)

...