Роботизированные приложения в Эрланге - PullRequest
12 голосов
/ 25 января 2011

Я хочу использовать Erlang для реализации роботизированного приложения.Большинство современных приложений, реализованных в Erlang, веб-.Робот, созданный профессором Коррадо , не использовал параллелизм Эрланга, который является сердцем Эрланга и больше сконцентрирован на искусственном интеллекте (согласно моему пониманию этого проекта).

Некоторые идеи приходят мне на ум, как Soccor Robots, Несколько роботов, убирающих комнату, но в таких системах Роботы могут программироваться на C (или любом другом языке программирования), которым можно управлять с помощью MATLAB.MATLAB помогает в обработке изображений (система видения) и в вычислениях сложных массивов, так какой смысл использовать Erlang? (Исправьте меня, если я ошибаюсь)

Может кто-нибудь предложить мне какое-нибудь роботизированное приложение, которое может использует функцию Erlang, особенно параллелизм , и можно утверждать, что Erlang лучше всего подходит для такого приложения из других языков.

Немного подробный ответ мне очень поможет.

Ответы [ 2 ]

9 голосов
/ 26 января 2011

Но Erlang может не быть лучшим подходом к любому приложению робота вообще.Но вы можете пойти на менее амбициозный тезис о том, что Эрланг поддерживает вычислительную модель, которая важна во многих робототехнических приложениях .Точки использования Erlang для робототехники включают

  • параллелизм для моделирования и мониторинга параллельного мира;
  • распределение датчиков, исполнительных механизмов и вычислительных ресурсов;
  • конечные автоматы для связывания поведения;и
  • супервизоры для отказоустойчивости.

Все может быть сделано на любом языке, но Erlang делает некоторые вещи удобными, особенно на архитектурном уровне.

Глава 14 в Параллельное программирование на Erlang , например, моделирует систему управления лифтом по одному процессу для каждого лифта и по одному для каждого этажа, а затем обсуждает структуру процесса для системы управления спутником.Лифты или спутники, возможно, не очень похожи на роботов, но их принципы одинаковы.

Работа Erlang & Robotics Corrado Santoro et al.много использует параллелизм.Их 2007 проект мобильного робота имеет множество различных (одновременных) режимов OTP, которые варьируются от низкого уровня ввода-вывода до высокого уровня планирования. Обучение Erlang с использованием робототехники и игрока / сцены * Еще одна недавняя работа - 1038 *.

Ваши идеи о роботе-футболе или роботе-уборщике хороши и имеют много возможностей для параллелизма и взаимодействия между роботами.Но вы не просто делаете произвольное приложение робота такого размера.Либо у вас есть команда и несколько конкретных роботов для работы, либо вы приобретаете себе симулятор (приобретайте симулятор в любом случае).

Попробуйте смоделировать количество роботов, которые движутся навстречу друг другу, пока все они не столкнутся, каждый робот запускает собственный процесс.Когда это сработает, замените задачу и добавьте процессы, которые (претендуют на) управляют двигателями, ощущают стены, видят окружающую среду, понимают команды пользователя, выходят из строя и т. Д., А также обмениваются сообщениями с другими роботами и процессами планирования.

Ознакомьтесь с архитектурами роботизированных систем , чтобы понять, что такие конструкции распространены и почему.Эрланг облегчил этот тип программирования?

3 голосов
/ 26 января 2011

единственный способ понять, где erlang лучше, а когда лучше, - это некоторое время программировать на erlang. Дело не в том, что erlang делает лучше всего, а в том, чтобы понять, как шаблон функционального дизайна, использующий маленькие порождения erlang и otp, сравнивается с попыткой решить те же проблемы на императивном языке. Короткий маркированный список плюсов и минусов не поможет. Google Go подпрограммы и каналы, Haskell и D могут действовать аналогично без каких-либо проблем. Эрланг особенно хорош в распространении. В более новых параллельных языках вам не нужно слишком много работать, чтобы сделать вещи параллельными. В частности, в erlang, если вы делаете свои спавны равномерными, выполняйте интенсивные задачи процессора, которые вы используете для параллелизма. Вы не найдете много информации об эрланге для робототехники, но вы найдете 3 книги с множеством примеров по распределению и одновременной работе, которые решают многие из тех же проблем. Другие параллельные языки обычно не специализируются таким образом. Многие полезные примитивы встроены в erlang.

Было много сообщений о том, как делать подобные вещи на других языках, но придерживаться erlang экономит много работы.

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=%22erlang+style%22+%22(concurrency|message+passing)%22 http://groups.google.com/group/golang-dev/browse_thread/thread/e120a586441b9b24/806eab93bd5281a0?#806eab93bd5281a0

...