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

Как создать реальных роботов?

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

Удачи и приятного времяпровождения!

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

У вас должен быть драйвер, сопряженный с оборудованием (скорее всего, STAMP или FPGA с двигателями и т.д.). Затем вы вызываете функцию me.moveLeftArm(x, y); и водитель узнает, что moveLeftArm() означает перемещение привода в течение X секунд/миллисекунд/градусов.

Я уверен, что вы можете найти набор, который программирует робот.

Ответ 10

Если вам нужна альтернатива Java, я могу порекомендовать книгу Linux Robotics. Он содержит много полезной информации о том, где можно получить комплекты, детали и датчики, а также полный список исходного кода на Java.

Ответ 11

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

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

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

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

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

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

Ответ 12

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

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

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

Ответ 13

Здесь есть много хороших ответов. ваш фрагмент фэнтезийного кода находится недалеко от того, как вы будете делать на языке более высокого уровня, таком как С# над MS Robotics Studio. Просто имейте в виду, что даже простые вещи (например, "перемещение руки влево" ) очень нагружены "искажением информации".

вплоть до металла, роботизированная рука представляет собой набор звеньев и [возможно] моторизованных суставов. Поэтому "перемещать руку влево" (или любую точку в координате) уже является очень сложной задачей для вычисления (найдите D & H Table, вперед и обратную кинематику для манипуляторов).

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

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

Ответ 14

Относительно последнего вопроса "как создать робота" я начинаю с поиска связанного проекта в онлайн-сообществах, таких как [Adafruit] [1], [Hackster.io] [2] или даже [glitch] [3], или поиск сообщений в блоге того, кто создал робота с нуля, например, https://burningservos.com, или продукта, который предоставляет документацию и учебные пособия для аппаратного и программного обеспечения, например, http://emanual.robotis.com/документы/ru/платформа /openmanipulator_x/обзор/.