• Регистрация
Mirage_2142
Mirage_2142 +1.30
н/д

Вопрос про возможности Matlab и Simulink для моделирования ходьбы с нейросетью

02.08.2019

Здравствуйте.

Я выбираю систему моделирования ходьбы четвероногого и двуногого роботов.

До этого почти не работал с Matlab и прежде чем я погружусь в изучение этого средства для меня важно понять.

Возможно ли создать физическую модель робота в Simulink и получать/изменять в реальном времени ее параметры из вне?

 

Поясню подробнее:

Я хочу сделать физич. модель робота и обучить его ходьбе с использованием нейросети или генетических алгоритмов. Для этого мне нужна модель, которая будет в реальном времени реагировать на внешнее воздействие и управляющие сигналы.

Я планирую получать состояние модели из Simulink (положение ног, тела и пр.) и в тоже время вносить изменение сил действующих на моторы модели по указаниям нейросети. 

Положение ног, тела и окружение будут входами нейросети , а силы моторов – ее выходами.

Поскольку в Simulink не интегрирован TensorFlow, то придется разделить на 2 части весь процесс: модель c ее поведением в Simulink, обработка в TensorFlow.

Отсюда и вопрос: Возможно ли в реальном времени получать/передавать значения из Simulink и заодно видеть на экране поведение модели и получать ее параметры (в идеале, сразу в виде матриц)? 

И вообще правильный ли выбор Simulink для этой задачи?

 

В качестве примера реализации отображения+нейросети есть ролик https://youtu.be/wL7tSgUpy8w (Neural network racing cars around a track)

 

И еще вопрос: 

В темах и youtube-роликах связанных с matlab упоминаются: Анализ данных или машинное обучение, глубокое обучение 

(например, вот здесь есть упоминание об этом https://youtu.be/YGnOFMwj0cQ (Simulating Walking Robot Mechanics))

 

Насколько эти возможности развиты, подойдут ли они к этой задаче ? Или нужно сразу смотреть использование сторонних реализаций нейросетей типа TensorFlow?

 

Теги

      02.08.2019

      Ответы

      • Andrey Ermakov
        Andrey Ermakov +56.93
        5.08.2019 01:32

        Добрый день. Модель робота в Simulink построить не проблема, если у вас есть модели например в solidworks можно перенести физическую модель в Simscape multybody. Есть примеры в help MATLAB. 

        Взаимодействие системы управления с вашими исполнительными моторами тоже можно реализовать несколькими способами.

        1. Используя систему управления с нейростеяпи в самом simulink.

        2. Используя взаимодействие с сторонним приложением, в этом случае ваше приложение будет управлять моделью в simulink.

        А что значит в реальном времени? 

        • Andrey Ermakov
          Andrey Ermakov +56.93
          5.08.2019 13:37

          В видео по ссылке можно подробнее ознакомиться с возможностями.

          https://www.mathworks.com/videos/optimizing-robotic-systems-with-simscape-1561904111727.html

          • Павел Рословец
            Павел Рословец +239.28
            5.08.2019 14:40

            Simulink здесь это самый правильный выбор, потому что это мощнейшая среда симуляции, а Simscape Multibody позволяет малой кровью создавать трехмерные кинематические системы, в том числе путем импорта из CAD. Плюс Simulink тесно интегрируется с MATLAB, который имеет собственные нейросети, а также может работать с TensorFlow и другими фреймворками.

            Для моделирования и управления моделью из MATLAB будет полезен новый плейлист на нашем канале (Автоматизация системного моделирования).

            По поводу нейросети тут 3 варианта:

            1) Вместо TensorFlow использовать Reinforcement Learning Toolbox, он как раз для этих целей создан. Плюс в комплекте есть пример с обучением шагающего робота в Simulink

            2) Если по каким-то причинам нейросети из Reinforcement Learning Toolbox не подходят, можно попробовать импортировать в MATLAB сеть из TensorFLow, такой импорт предусмотрен для ряда сетей

            3) Если импортировать не удается, то можно из MATLAB обращаться к Python

            • Mirage_2142
              Mirage_2142+1.30
              5.08.2019 15:59

              Спасибо за ответы, начну подробнее исследовать Mathlab и Simulink.

              В реальном времени - для меня это означает, что результат работы нейр. сети можно было бы сразу видеть на экране, без записи в файл и только потом воспроизведения того что было.

              По другим советам есть еще возможность использовать unity 3d и blender. Плюсом этого подхода явл то, что можно разделить задачу на 3 части: для части визуализации взять все возможности Unity, для нейр сети напр. Caffe или просто Tensorflow, а систему уравнений для модели придется писать на бумаге и делать отд программу которая будет получать данные от части нейр сетей и визуализировать (это скорее всего придется встраивать в unity или делать взамиодействие через сокеты). Также плюсом этого подхода будет не завязанность на средства Simulink.

              Потому что пока не понятно как в Simulink, например, распараллелить обучение, чтобы пройти 1000 поколений быстро одновременно и насколько там все быстро работает.

              • Павел Рословец
                Павел Рословец +239.28
                12.08.2019 08:57

                Если вы энтузиаст, и вам хочется просто поэкспериментировать, можете на завязываться на Simulink и попробовать подобрать опенсорсные инструменты.

                Если вам нужен результат, например, по работе или в учебном проекте, лучше выбрать качественный инструмент - Simulink. Так справитесь быстрее.

                Чтобы распараллелить обучение, достаточно установить Parallel Computing Toolbox и активировать при обучении опцию распараллеливания, все остальное произойдет автоматически. Вот пример.

                В качестве визуализации можно использовать возможности Simscape Multibody, это если надо посмотреть в 3D как неловко ваш робот себя ведет) если надо отражать процесс обучения с эпохами, численным параметрами и т.д., то это в окно команд MATLAB выводится, или в отдельное графическое окно.

                • _______ ____________
                  _______ ____________ -1.52
                  12.08.2019 13:41

                  Не стоит забывать еще один этап - создание модели физического объекта, который будет ходить. В этом плане Simscape Multibody бует весьма кстати.