Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

Вам следует проверить Студия робототехники Майкрософт (МИССИС).У них много видео/скринкасты, и письменные руководства.Кроме того, Channel9 имеет много видео, интервью и т. д. по теме робототехники.Включая демонстрации и интервью с разработчиками MRS.

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

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

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

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

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

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

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

Удачи и получайте удовольствие!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top