Четырехногий робот
Неспособность первого варианта робота самостоятельно двигаться привело с созданию новой модели — робота с четырьмя ногами. Целью создания этого варианта — научить робота самостоятельно передвигаться в пространстве. Вот что получилось:
Характеристики:
- Материал — 3 мм акрил (оргстекло).
- Размеры — корпус: 200х200х56, нога бедро: 140, лодыжка: 160.
- Общий вес — 1800 гр .
- Сервоприводы TowerPro MG995, HXT12K. По три в каждой ноге.
- Контроллер — OR-AVR-M128-S + модуль подключения по OR-USB-UART
- Два блока питания TURNIGY 8-15A UBEC. Питание внешнее.
- Гироскоп, акселерометр, компас, термометр Pololu MinIMU-9
- Датчик тока, напряжения (спаян самостоятельно, ACS713).
- Моделирование деталей Компас 3D
- Управление роботом — с компьютера, собственной программой на hta + jsсript.
Видео движения робота:
Как видно из видео основная цель достигнута — робот умеет самостоятельно перемещаться. Причем может двигаться в любом указанном направлении. Однако, его движение далеко от оптимального. Это связано с тем, что центр тяжести робота находится точно посередине, поэтому, для того, что бы оторвать и переместить любою ногу необходимо сместить центр тяжести в сторону, противоположную перемещаемой ноги, что бы робот сохранил равновесие и не упал. Из за смещения центра тяжести при перемещении каждой ноги робот движется медленно постоянно раскачиваясь и меняя центр тяжести.
Для движения этого робота пришлось перейти на вариант управления следующего поколения. Если первый вариант робота управлялся ручной установкой углов поворота сервоприводов, запоминание позиций и затем воспроизведение сохраненных позиций по порядку, то для этого робота такой вариант управления оказался слишком трудоемким. Поэтому пришлось создать сначала математическую модель одной ноги, затем системы из четырех ног. В этом варианте, достаточно задать смещение в координатах X и Y и робот самостоятельно выполнит все расчеты последовательно переместив каждую ногу в нужное положение. В таком варианте управлять движением робота стало гораздо проще и удобнее.
Трудности:
Обнаружилась нелинейность угла поворота сервоприводов, особенно на углах больше 50 градусов. Кроме того, у некоторых сервоприводов нелинейность есть и в районе углов близких к 0. Так же разные сервоприводы по разному меняют угол наклона под нагрузкой. Все эти факторы приводят к небольшим нарушениям геометрии движения робота. Отличным вариантом исправления этого было бы добавление сенсора поворота для каждого сервопривода (интересно попробовать, например, такой Magnetic Rotary Position Sensors), но это дополнительное усложнение и удорожание конструкции. Зато позволило бы создать обратную связь контроллирующую реальное положение сервопривода. Такая связь позволила бы вносить коррективы в положения сервоприводов, компенсирующие нелинейность и изменение положения под нагрузкой. Еще более интересным вариантом видятся сервоприводы с встроенным датчиком поворота, если не ошибаюсь такие существуют. Кроме того, есть еще вариант подключиться к резистору поворота в самом сервоприводе и снимать сигнал оттуда. В этом случае потребуется некоторая доработка привода, но весьма простая. Остается вопрос, можно ли снимать данные с резистора не нарушая работу электроники сервопривода? Если да, можно будет получить недорогой сервопривод с встроенным датчиком поворота. Хотя, сам сервопривод опирается на показания этого же резистора, поэтому обратная связь такого рода вроде как бессмысленна. Возможно нелинейность поворота связана как раз с нелинейностью резистора. Одним словом, интересно проверить эту идею.