Как создать реальных роботов? - PullRequest
22 голосов
/ 12 февраля 2009

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

Например, если я написал этот код:

object=Robot.ScanSurroundings(300,400);
if (Objects.isEatable(object))
{
   Robot.moveLeftArm(300,400);
   Robot.pickObject(object);
}

Как процессор будет следовать этой программе таким образом, чтобы робот выполнял физические действия, глядя влево, двигая рукой и тому подобное? Это делается в основном на двоичном языке / ASM?

Наконец, куда бы я пошел, если бы я хотел научиться создавать робота?

Ответы [ 14 ]

17 голосов
/ 12 февраля 2009

В конце концов, что-то должно разбивать команды высокого уровня на команды очень низкого уровня. Что-то должно переводить «Поднимите чашку» в том, как двигать руку (под какими углами должны быть суставы) к аппаратным командам, которые фактически вращают двигатели.

Существуют фреймворки, которые пытаются предоставить некоторую сумму этого перевода, включая (но не ограничиваясь):

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

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

8 голосов
/ 12 февраля 2009

Вы должны проверить Microsoft Robotics Studio (MRS). У них есть много видео / скринкастов и письменных учебных пособий . Кроме того, на канале 9 есть много видео , интервью и т. Д. По теме робитики. Включая демонстрации и интервью с разработчиками MRS.

5 голосов
/ 12 февраля 2009

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

Пока рука движется, ваша сервосистема будет получать информацию о ее фактическом положении. Простые сервосистемы могут использовать базовый контур обратной связи ПИД для регулировки двигателей. Более сложные системы будут включать параметры прямой связи, которые компенсируют инерцию, гравитацию, трение и так далее. Они могут стать очень сложными.

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

4 голосов
/ 12 января 2010

Мне просто нужно добавить кое-что о проектах Arduino , потому что я не вижу упомянутого выше.

Существует очень низкая планка для входа в проекты робототехники на базе Arduino. «Эскизные» программы, которые вы пишете для аппаратного обеспечения, очень легко подобрать и похожи на синтаксис Си. Если вы не знаете свои транзисторы по резисторам, эти платы по-прежнему позволяют вам много делать с подключаемым оборудованием и дополнительными «экранами» , расширяющими базовую плату компьютера.

Это очень весело, очень гибко и позволяет вашему коду взаимодействовать с реальным миром. Плюс его «Open Hardware» очень похоже на ПО с открытым исходным кодом.

3 голосов
/ 12 февраля 2009

Если вы достаточно хорошо разбираетесь в программировании, вы можете обнаружить, что вам даже не нужен робот, чтобы тестировать большую часть самого сложного кода, который вам нужно написать ... (IE, чтобы робот видел и распознавал Сцена всегда очаровывала меня ... Но в какой-то момент я понял, что физический робот, необходимый для решения этой проблемы, - легкая часть ... Программное обеспечение - сложная часть!) ...

3 голосов
/ 12 февраля 2009

Роботы будут работать, взаимодействуя с оборудованием. Мост из вашего кода часто делается через порты ввода / вывода другого типа. Например, это может быть кабель RS232 (вы знаете эти старые порты COM1). Аппаратные части будут состоять из двигателей (таких как серводвигатели ) и датчиков (таких как ультразвук для определения препятствий, лазеры для определения расстояния или переключатели).

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

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

Кроме того, вы можете попробовать запрограммировать Basic stamp , это довольно легко, следуя инструкциям, и даст вам хорошее начало в том, как создавать роботов. Это не слишком дорого, и вы будете взаимодействовать с оборудованием в кратчайшие сроки.

Удачи и веселья!

2 голосов
/ 09 марта 2009

Найти местную ПЕРВУЮ команду робототехники и добровольно стать наставником. FIRST - это соревнование по робототехнике для школьников средних и старших классов. Цель состоит в том, чтобы дети делали всю работу по созданию, программированию, тестированию и запуску робота, но у вас все равно будет много возможностей покопаться и по-настоящему изучить программное обеспечение. Они используют LabView от National Instruments, и по состоянию на 8 февраля только что начали региональные соревнования в этом году. LabView - это графическая среда программирования, которая взаимодействует с аппаратным обеспечением NI, позволяя программировать двигатели, приводы и датчики. NI довольно приятный и простой в использовании, плюс он предоставляется бесплатно для каждой команды, так что вам не нужно покупать аппаратное и программное обеспечение самостоятельно (по крайней мере, для начала.) Кроме того, вы получаете дополнительный бонус помочь новому поколению инженеров начать работу.

2 голосов
/ 12 февраля 2009

Вероятно, проще получить более высокоуровневый язык, чтобы описать поведение и интеллект робота, и позволить низкоуровневому языку действовать (двигать рукой, ходить, останавливаться). Существует много исследований в области так называемой архитектуры BDI для интеллектуальных агентов, Google для этого.

Вы можете найти больше информации на этом сайте , это DSL для описания поведения агента, созданного в Java. Он называется «переводчик Джейсона», а язык - «AgentSpeak (L)».

1 голос
/ 09 июня 2009

Начните с Phidets , если вы знакомы с .Net. Вы можете проверить TrossenRobotics.com на запчасти.

Комплект интерфейса Phidgets - хорошее место для начала. Оттуда вы можете получить сервоконтроллер и начать строить вещи, которые движутся.

Форумы Trossen также являются хорошим местом для обзора проектов других людей. У них также есть новый дата-центр с примерами кода / проекта. Я не работаю на них ... просто счастливый клиент.

1 голос
/ 09 марта 2009

У меня такой же зуд .. Я собираюсь купить мою первую Beagle Board и некоторые датчики / сервоприводы, которые могут использовать шину I2C . Я собираюсь использовать управляемый событиями дизайн и грубую реализацию волокон (фибрилл, если хотите), которые являются потоками пользовательского пространства.

В основном мой дизайн требует одного процесса, который запускает один поток на группу сервоприводов. Каждый поток менеджера группы будет запускать х # фибрилл, 2 на серво (скорее всего). Одна фибрилла используется для управления сервоприводом, другая фибрилла обрабатывает события из этого сервопривода (т. Е. Объект слишком тяжел, чтобы его поднять, объект упал и т. Д.).

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

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

Скорее всего, я буду использовать микроядро, а не Linux.

Я делаю это так же, чтобы оттачивать себя с помощью событийно-ориентированных методов, а также мое желание сделать свой собственный R2:)

...