Собрание клуба робототехники 18.01.14

Собрание клуба робототехники 18.01.14

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

 

Что для этого потребовалось?

Для этого сначала нужно было узнать как решаются прямая и обратная задачи кинематики.

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

 

 

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

Параллельно с математикой я знакомилась с платой Arduino.

 

Краткие сведения о плате Arduino.

Arduino — это небольшая плата с собственным процессором и памятью. На плате также есть пара десятков контактов, к которым можно подключать всевозможные компоненты: лампочки, датчики, моторы, чайники, роутеры, магнитные дверные замки и вообще всё, что работает от электричества.

 

Arduino приобрела свою популярность в основном из-за простоты программирования. Для прошивки платы достаточно ее подключения к компьютеру через USB-порт. Для Arduino существует специальная, кроссплатформенная интегрированная среда разработки IDE Arduino. Язык программирования в ней основан на С++, с добавлением некоторых специфических функций.

 

Программная среда IDE Arduino.

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

В каждой программе должны быть две функции: setup() и loop(). После названия функции и круглых скобок идут фигурные скобки, внутри которых будет располагаться ваш код.  Говорят, что между фигурными скобками располагается блок кода для функции или, иначе говоря, тело функции.

void <Имя функции>() { код }

 

Особенности функций:

  1. Функция setup() запускается один раз, после каждого включения питания или сброса платы Arduino. В теле данной функции пишется код для инициализации переменных, установки режима работы цифровых портов, и т.д.
  2. Функция loop() в бесконечном цикле последовательно раз за разом исполняет команды, которые описаны в ее теле.

 

Связь между ПК и платой через последовательный порт. Создание обработчика.

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

 

Описание и презентация программного продукта, управляющего движением гексапода в реальном времени.

Кроме обработчика, на обычном С++, в Code Blockse было написано приложение, которое в 3D-виде показывает движение гексапода. С помощью клавиатуры можно изменять направление движения гексапода. В будущем можно будет изменять и характер движения (он будет поворачиваться вместе с корпусом, сможет реализовать иные разнообразные действия). Программа формирует строку с углами поворотов серводвигателей, для текущего положения гексапода и посылает ее через COM-порт. После чего плата обрабатывает полученный пакет и ставит сервоприводы на нужные углы. В результате реальный гексопод двигается так-же, как и его 3D-модель.

 

  Заказать набор“Гексапод”

Центр робототехники "BOTEON".
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: