Какие языки/интернет-протоколы для удаленного управления роботами/электроникой?

Интересно, какие языки используются в робототехнике и электронике. Это языки низкого уровня, такие как Java, C, C++ и т. д.?

И если этими роботами и электроникой можно было бы управлять из другого места, какой протокол используется?

Это не может быть HTTP Rest, не так ли? :)


person ajsie    schedule 27.10.2010    source источник
comment
Java ни в коем случае не является языком низкого уровня.   -  person Puppy    schedule 27.10.2010
comment
Вы видели язык Lego Mindstorms? По сравнению с ним Java — язык положительно низкого уровня. Вы должны печатать, не можете программировать Java с помощью одной мыши!   -  person MSalters    schedule 27.10.2010


Ответы (8)


Как насчет LEGO Mindstorms? Если у вас нет особых требований к физическим свойствам робота, исключающих Mindstorms/NXT, вы можете многое с ним сделать. И это серьезный набор — не ведитесь на бренд «LEGO».

http://mindstorms.lego.com/en-us/Default.aspx

Помимо того, что он поставляется с собственным языком программирования, он также поддерживается Microsoft Robotics Developer Studio, так что вы можете использовать .Net для написания кода для него.

http://msdn.microsoft.com/en-us/robotics/default

Самое замечательное в этом то, что это на самом деле LEGO с его изначально модульной системой кирпичей для сборки самого робота, что позволяет быстро создавать прототипы и экспериментировать без необходимости покупать специальные детали.

Он имеет встроенный Bluetooth, что позволяет осуществлять дистанционное управление. Вы также можете загрузить в него скомпилированный программный код, чтобы он работал автономно, либо через USB, либо через Bluetooth.

Я купил предыдущую версию еще в 2008 году и дополнил ее некоторыми обычными моделями Technics на запчасти. Он включает в себя такие вещи, как сенсорные датчики, звуковые датчики, ультразвуковые датчики, датчики света / цвета и (двусторонние) серводвигатели, и вы можете получить сторонние надстройки, такие как гироскоп, акселерометр, компас и т. д. Большое удовольствие.

person d7samurai    schedule 27.10.2010
comment
Вы не можете запрограммировать его с помощью javascript? И насколько мощный двигатель? (Например, какой вес он может поднять?) - person ajsie; 28.10.2010
comment
Javascript - я так не думаю. Но, видимо, вы можете использовать Java, используя сторонние инструменты. Я предлагаю вам заглянуть на страницу Википедии Mindstorms для получения более подробной информации: en.wikipedia.org/wiki/ Lego_Mindstorms. Кроме того, на YouTube есть множество роликов, демонстрирующих различные конструкции. Моторы довольно мощные, условно говоря, и в стандартном комплекте их 3 штуки, которые можно комбинировать для более мощных задач. Кроме того, вы можете использовать систему передач, чтобы получить от них больше мощности (за счет скорости). - person d7samurai; 28.10.2010
comment
Что касается управления блоком NXT через Интернет, вот несколько роликов на YouTube, демонстрирующих именно это: youtube.com /watch?v=p68ycEsFGeA и youtube.com/watch?v=tG_Vs6hb7VY. - person d7samurai; 28.10.2010
comment
d7samurai: Какую операционную систему использует Mindstorms? - person ajsie; 29.10.2010
comment
Если вы имеете в виду инструмент графического программирования, поставляемый с Mindstorms, NXT-G, он поддерживается Windows XP-7 и Mac OS X: en.wikipedia.org/wiki/Lego_Mindstorms_NXT#NXT-G. Фактический мозг набора, блок NXT, может быть запрограммирован на разных языках в разных операционных системах, если они поддерживают компиляцию в байт-код NXT и загрузку в блок: en.wikipedia.org/wiki/Lego_Mindstorms#Programming_languages_2 - person d7samurai; 29.10.2010
comment
Вы также можете запрограммировать блок напрямую, используя его встроенный ЖК-экран и пару кнопок, но это дает очень ограниченную функциональность. - person d7samurai; 29.10.2010

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

В качестве примера небольших платформ, Ada доступна для Atmel AVR (8-бит) как AVR-Ada. См. http://sourceforge.net/apps/mediawiki/avr-ada/index.php?title=Main_Page

Для LEGO MindStorms Ada доступна на GNAT в виде версии GPL, которая также поддерживает профиль задач Ravenscar. Следовательно, вы можете легко создавать многозадачные приложения на платформе MindStorms. См. http://libre.adacore.com/libre/tools/mindstorms/.

person Schedler    schedule 27.10.2010

Я бы сказал, что это зависит от вашего проекта. Я использовал C/Assembler для программирования электронного микропроцессора, но я знаю, что вы можете использовать высокие языки программирования -level, а также для некоторых проектов, если это позволяет операционная система вашего робота. Например, Java/C# и так далее. Существует множество протоколов, используемых для подключения к прибору, и я считаю, что TCP/IP или UDP/IP является наиболее распространенным. Но некоторые люди предпочитают писать/программировать свои собственные протоколы.

person dirbacke    schedule 27.10.2010
comment
Где купить робота, чтобы написать программу для управления? Есть ли для этого книга для начинающих? - person ajsie; 27.10.2010
comment
Каков ваш бюджет, возможно, было бы лучшим ответом... :) - person dirbacke; 27.10.2010
comment
Это еще один крутой робот: robosavvy.co.uk/store/ product_info.php/products_id/ - person dirbacke; 27.10.2010

Большинство роботов, которые я построил, были собраны с помощью Lego Mindstorms. Есть несколько языков, которые вы можете использовать, но языком по умолчанию является визуальная рабочая среда. Вы можете дистанционно управлять роботом через Bluetooth или ИК-порт (а Lego включает в себя ИК-передатчик, подключенный через USB).

person MSalters    schedule 27.10.2010
comment
Неужели нельзя управлять через интернет? - person ajsie; 28.10.2010
comment
Нет в наличии, но вы взломаете это менее чем за день. - person MSalters; 28.10.2010

С/С++, Java и Python.

Я бы сказал, что C/C++ более широко используются для программирования роботов, чем такие языки, как Java и Python, просто потому, что уже существует так много всего. И C также очень часто используется для встраиваемых приложений. Многие люди, которых я знаю в промышленности, используют C в качестве средства управления роботами и оборудованием, таким как RS-232, UART, шаговые двигатели и т. д.

Когда я занимался академическими исследованиями, мои немецкие коллеги использовали Java почти исключительно на автономных роботах с удовлетворительными результатами. Если вы используете Java, вам просто нужно абстрагировать аппаратное обеспечение, когда вы его используете, что можно сделать с помощью Player/Stage или ROS.

Все зависит от того, что вы хотите сделать, я думаю. В моей конкретной области (ПЛК Mitsubishi) предпочтительным языком является C++. Другие отрасли промышленности используют C++ для программирования робототехники, например, Honda ASIMO. AMD ATi использует Python для программирования своих графических ускорителей. Практически любой язык, который может общаться с коммуникационным портом, можно использовать для робототехники.

Что касается удаленного управления ими, боевые роботы, вероятно, будут отличным примером:

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

person AndyUK    schedule 27.10.2010

Недавно с помощью этой книги я сделал простого робота с дистанционным управлением, запрограммированного на Java.

http://www.google.co.uk/products/catalog?q=build+java+robots&hl=en&cid=346434932749925759&ei=WATITISGE5_g2ASm_tilCQ&sa=title&ved=0CAcQ8wIwADgA#p

Эта книга показала мне, как разговаривать с роботом с помощью Bluetooth.

Я также читал, что BASIC — хороший язык для начала работы при создании своего первого робота.

person Ash Burlaczenko    schedule 27.10.2010
comment
Как вы построили своего робота? - person ajsie; 27.10.2010
comment
Я купил большинство компонентов на ebay. Книга расскажет вам о том, на что следует обратить внимание при покупке различных элементов управления. Я использовал PIC-контроллер и USB-программатор, которые очень легко настроить. - person Ash Burlaczenko; 27.10.2010

Отказ от ответственности: я не эксперт.

У меня есть только опыт работы с Arduino, который можно программировать на ассемблере или C (цепочка инструментов AVR-GCC). Однако, если целевая среда достаточно мощная или имеет достаточно памяти, ничто не мешает использовать язык более высокого уровня, кроме других технических ограничений, таких как, скажем, жесткое реальное время — например, Lua или что-то еще более высокого уровня.

Что касается коммуникаций, то они также зависят от конечной транспортной среды. Для, скажем, Bluetooth, Zigbee, просто цифровой радиосвязи или, может быть, знаете, пары проводов (или даже один провод) или что-то еще, это было бы довольно низко пропускная способность последовательного протокола... Но, конечно, все зависит от целевой платформы.

Для чего бы это ни стоило, что касается HTTP - я построил управляемый по HTTP RGB-подсветку настроения (который плавно переходит между цветами! : P), используя Arduino и доступный для него Ethernet Shield. HTTP-сервер работает на Arduino.

person AKX    schedule 27.10.2010

Вы можете управлять роботами и электронными гаджетами с помощью разных языков, которые вам наиболее удобны. Но это также зависит от типа гаджетов, которыми вы пытаетесь управлять, т.е. если вы разрабатываете робота или гаджет с нуля, вы можете запрограммировать его с помощью язык по вашему выбору, например C, C++. Python, Java и т. д. Вы также можете использовать встроенный язык для программирования контроллера на выбранном вами языке. Существует множество различных компиляторов, доступных только для компиляции вашей программы из контроллера, например, MicroC — один из них, который я часто использую для компиляции. мой встроенный код для микроконтроллеров. Если вы программируете какую-то плату, такую ​​​​как Arduino, вы можете использовать ее собственную IDE, где вы можете ее запрограммировать. Для удаленного управления роботами и гаджетами вы можете использовать множество различных способов, например:

  1. Интернет: вы можете использовать Интернет для управления ими, интегрируя их с такими модулями, как ESP8266, NodeMcu, модули GSM и т. д., и использовать специальное веб-приложение, мобильное приложение для управления ими. Это относится к Интернету вещей (IOT).

2. Bluetooth: вы даже можете использовать Bluetooth для управления устройствами, интегрировав модуль Bluetooth с вашим устройством, но радиус действия Bluetooth невелик.

  1. Радиочастотная радиочастота: вы также можете использовать радиочастотные радиочастотные модули для управления роботами в удаленных районах, но стоимость реализации выше, чем в остальных случаях.
person carbon    schedule 10.05.2019