Вызов super () .__ init __ () для подкласса ForceElement вызывает конструктор не определен - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь создать пользовательский ForceElement следующим образом

class FrontWheelForce(ForceElement):
    def __init__(self, plant):
        front_wheel = plant.GetBodyByName("front_wheel")
        front_wheel_node_index = front_wheel.index()
        pdb.set_trace()
        ForceElement.__init__(self, front_wheel.model_instance())

Но в строке появляется следующая ошибка ForceElement.__init__(self, front_wheel.model_instance())

TypeError: FrontWheelForce: No constructor defined!

Ответы [ 3 ]

1 голос
/ 28 октября 2019

Пожалуйста, посмотрите документы здесь для ForceElement;«ForceElement позволяет моделировать зависящие от состояния и времени силы в модели MultibodyTree». То есть силовой элемент, который является функцией крутящего момента на колесе, не может быть смоделирован как ForceElement. Я считаю, что вы хотите FrontWheelSystem, то есть LeafSystem, которое выдает силу, которую вы хотите смоделировать. Вы можете применить внешнюю силу вашей модели к установке через исполнительные механизмы, подключенные к get_actuation_input_port(), или как внешние приложенные пространственные силы, подключенные к get_applied_spatial_force_input_port().

1 голос
/ 26 октября 2019

Вы не показали нам определение родителя.

Я немного удивлен, что вы не увидели эту диагностику:

TypeError: object.__init__() takes exactly one argument (the instance to initialize)

Я представляю, какую среду вы используетевызывает "no constructor" как напоминание о том, что у вас есть еще код для реализации перед использованием этого родительского класса.

0 голосов
/ 04 ноября 2019

Обобщение нескольких комментариев в правильный ответ

По ekhumoro

В сообщении об ошибке указывается, что класс ForceElement не поддерживает создание подклассов. То есть привязки Python для Drake не заключают в себе метод __init__ для этого класса - так что, предположительно, ForceElement.__init__ поднимет AttributeError.

Эрик Кузино

this (ForceElement) не записан как класс батута, который необходим pybind11 для разрешения подкласса Python связанного класса C ++

Ref: pybind11 docs ,ForceElement связывание

...