Подтвердить что ты не робот

Роботизированные приложения в Эрланге

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Erlang и Robotics работают Коррадо Санторо и др. много использует concurrency. Их 2007 мобильный робот-проект имеет множество разных (одновременных) действий OTP, которые варьируются от низкоуровневого ввода-вывода до планирования на высоком уровне. Обучение Erlang с использованием робототехники и игрока/этапа - еще одна недавняя работа.

Ваши идеи Robot Soccer или Cleaning Robot прекрасны и имеют большой объем возможностей для concurrency и межмашинной коммуникации. Но вы не просто произвольное приложение для роботов такого размера. Либо у вас есть команда, либо некоторые конкретные роботы, над которыми вы работаете, или вы получите себе симулятор (получите симулятор в любом случае).

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

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

Ответ 2

единственный способ понять, где лучше всего подходит erlang, и когда это лучше всего, это программа в erlang на некоторое время. Это не о том, что делает erlang лучше всего, это больше о понимании того, как шаблон функционального дизайна с использованием erlang small spawns и otp сравнивается с попыткой решить те же проблемы на императивном языке. Короткий список пропущенных плюсов и минусов не будет справедливым. Google выполняет программы и каналы, haskell и D могут действовать одинаково без каких-либо проблем. Эрланг особенно хорош в распространении. В новых параллельных языках вам не нужно слишком много работать, чтобы сделать вещи параллельными. В частности, в erlang, если вы создаете свои нерестилки, выполняйте интенсивные задачи cpu, которые вы используете concurrency. Вы не найдете много информации о 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