2009-02-12 2 views
22

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

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

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

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

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

+1

Перейти в магазин Lego NXT. –

ответ

5

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

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

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

1

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

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

0

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

Вы можете найти более подробную информацию об этом site, это DSL для описания поведения агента, выполненного на Java. Это называется интерпретатором Джейсона, а языком является AgentSpeak (L).

8

Вы должны зарегистрироваться Microsoft Robotics Studio (MRS). У них много videos/screencasts и written tutorials. Кроме того, Channel9 имеет many videos, интервью и т. Д. На тему робики. Включая демонстрации и интервью с разработчиками MRS.

+0

+1, любое приятное введение является хорошим! –

3

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

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

Если вам интересно, я предлагаю вам взглянуть на this book, который является хорошим грунтовкой.

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

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

3

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

+0

Как это легко? –

17

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

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

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

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

+1

+1 для Lego Mindstorms в качестве отправной точки – lpfavreau

1

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

2

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

1

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

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

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

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

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

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

1

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

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

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

0

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

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

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

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

4

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

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

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

Смежные вопросы