roboforum.ru

Технический форум по робототехнике.

OR Hexapod Control (Qt + GCC + SSC32)

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

OR Hexapod Control (Qt + GCC + SSC32)

Сообщение setar » 21 мар 2011, 16:19

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

Электроникой для шестинога я выбрал OR-AVR-M128-S, он идеально ложится под задачу.
Чтобы управлять роботом удаленно (я пока не хочу ставить мозг на борту, это следующий шаг) использую Bluetooth модуль OR-BT20-115.2
Ну и питание такое : аккумулятор Turnigy 1000mAh 3S 20C (11.1V) + Импульсный стабилизатор HexTronik 3A UBEC (с шумоподавлением) + Зарядник


Бюджет по электронике и механике такой:
  1. корпусная нарезка в поликарбонате = ??? (пока не считал, подправлю позже)
  2. 18 x HXT12k = 18x250р = 4500р (разумеется если покупать сервы самостоятельно у китайцев будет дешевле)
  3. OR-AVR-M128-S = 1300р
  4. OR-BT20-115.2 = 1200р
  5. питание = 400+460+460 = 1320р
  6. метизы = ???
* цены на момент начала этого проекта

После сборки шестинога встал закономерный вопрос о его управлении.
Попробовал Lynxmotion терминал, порулил PEP - прикольно но не более...
Нужно что то более серьезное и бесплатное, кроме того не хочу чтобы была привязка к форточкам :(

Собственно хочу организовать проект по написанию (адаптации уже имеющегося)

Чтобы полезность данного проекта была выше у меня есть следующие соображения:
  • GPL2 (бесплатно и открыто для всех)
  • Кросс-платформенность (смотрю в сторону Qt)
  • Распространенный язык кода и математики (смотрю в сторону С)
  • Управление контроллером системой команд SSC32 (так мы будем иметь большую полезность для всех и пользоваться чужими наработками)

Кому это потенциально интересно и кто готов принять посильное участие ?
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Hexapod Control Qt + C + SSC32

Сообщение Strijar » 21 мар 2011, 16:29

Я тоже буду осваивать шестиногов. Сервы идут, мозг на FPGA тоже скоро будет.

Насчет управлялки думаю давно. Писал кроссплатформенное на FLTK - самые быстрые и маленькие виджеты! QT это тот еще монстр. FLTK работает на win32 и mac тоже. Ядро пишу на скриптовом языке http://code.google.com/p/dao/ (синтаксис похож на Си + есть ООП) визуализация через OpenGL и расчет физики на Bullet physics. Скриптовый язык удобней чем Си - нам бешаные скорости не нужны, но зато получаем жуткую гибкость и отсутствие компиляции.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Hexapod Control Qt + C + SSC32

Сообщение setar » 21 мар 2011, 17:59

Сейчас изучу исходники.
Как с поддержкой линуксом там?

Что по коду уже сделано ??
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Hexapod Control Qt + C + SSC32

Сообщение Strijar » 21 мар 2011, 21:54

C Линуксом все хорошо - я же из под него и делаю ;)

Делаю врапперы для FTLK+OpenGL и Bullet:

http://code.google.com/p/daofltk2/
http://code.google.com/p/daobullet/

Сейчас запал подстих, но если направление интересно - продолжу активней.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Hexapod Control Qt + C + SSC32

Сообщение setar » 21 мар 2011, 22:35

" нам бешаные скорости не нужны"
может и нужны, относительно скорости микроконтроллеров с линуксом на борту
как нибудь бы проверить как этот скрипт язык будет себя вести будучи запущенным поверх линукса на mini2440

не хочется в самом начале проекта отрезать возможность автономного робота с мозгом на борту.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Hexapod Control Qt + C + SSC32

Сообщение Strijar » 21 мар 2011, 23:57

Я тестировал его и Lua на AT91SAM9260. Очень даже приемлемо. Dao примерно в 1.5-1.8 раза медленней Lua (на Lua у меня по работе проект) но это все равно намного быстрей Ruby, Python, Perl (быстрей Lua только gjc). Но в Dao потоки встроенные, а в Lua в виде патча. Да и так по мелочи. Но Dao сейчас мне нравиться, ибо ООП ;) и взоимодействие с Си проще.

Давай придумай тест - погоняю.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Hexapod Control Qt + C + SSC32

Сообщение setar » 22 мар 2011, 18:21

:) легко сказать придумай...
пошел думать ...
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Hexapod Control Qt + C + SSC32

Сообщение setar » 24 мар 2011, 14:28

пока Инверсную кинематику на чистом С от уважаемого wuselfuzz (создатель A-Pod) адаптирую к SSC32
осталось пересчёт угла сервы в требуемую скважность написать :)
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Hexapod Control Qt + C + SSC32

Сообщение setar » 26 мар 2011, 13:31

в общем походко-управлятор на C# я допилил
оно умеет уже по блютуз каналу калиброваться, проверять калибровку и инверсную кинематику установкой кончика ноги в заданую координату.
Ну и самое главное мой шестиног уже пошел :Yahoo!:
Отличный генератор походки с любой комбинацией параметров вперед/назад (на заданную длинну одного шага), вправо/лево (стрейф) высота поднятия ног и высота пуза над полом :)
пока не прикручивал повороты.

кино не покажу - зарядку от фотика посеял :(
исходники спрашивайте у меня, чтобы я вообще знал нужно ли оно кому то
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Hexapod Control Qt + C + SSC32

Сообщение Strijar » 27 мар 2011, 18:39

Т.е. мы общий софт уже не делаем - каждый сам по себе? ;)
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Hexapod Control Qt + C + SSC32

Сообщение setar » 27 мар 2011, 23:22

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

Добавлено спустя 1 час 26 минут 43 секунды:
Re: OR Hexapod Control (Qt + C + SSC32)
первые шаги :)
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: OR Hexapod Control (Qt + C + SSC32)

Сообщение Strijar » 27 мар 2011, 23:26

Да ну и зря! Если знаешь Си - то и Dao уже знаешь ;) А так бы сделали универсальную платформу для всякого роботехнического. И не надо ничего компилировать, модули расширения опять же добавлять за нечего делать.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: OR Hexapod Control (Qt + C + SSC32)

Сообщение =DeaD= » 28 мар 2011, 02:14

Отлично ходит! :good:

Теперь надо туториал по сборке, калибровке и подключению к своему софту.
Исходники уже куда-нибудь выложены, посмотреть что там к чему?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: OR Hexapod Control (Qt + C + SSC32)

Сообщение setar » 28 мар 2011, 09:24

Пока не определил исходники на постоянное место проживания, выкладываю тут.
Обращаю внимание что они сразу заведены в контроль версий (hg = mercurial), настоятельно рекомендую пользоваться им, чтобы не
возникало вопросов относительно версии.
По составу исходников кратко:
  • Все бинарники на управление собраны в двух вариантах: обычный и с добавлением -fakecomm. Второй вариант не пытается передавать реального сигнала через последовательный порт.
  • Для визуализации того что должно происходить (чтобы по крайней мере проверить правильность направлений движения серв) имеется визуализирующее приложение : hexapod_gl. Данные пока берутся в фиксированном файле /tmp/servodata туда их складывает любое управляющее приложение
  • приложение calibration : для калибровки. Получилось весьма сложным по управлению и неудобным, буду думать как упростить. Суть в калибровке заключается в том чтобы для всех 18 серв получить значения минимального и максимального угла отклонения и соответствующих им значений pwm (то что x в ssc32 команде #nPxxxx) ну и разумеется pwm для положения нуля.

    управление такое:
    -/= выбор активной ноги для калибровки
    [/] = выбор шага изменения параметра
    a/z = меняем текущее значения угла для активной coxa
    s/x = меняем текущее значение pwm который отрабатывает этот угол активной coxa
    d/c = угол для femur
    f/v = pwm для femur
    g/b = угол для tibia
    h/n = pwm для tibia

    работа с текущими матрицами (их видно на экране):
    ,/l/. = сохранить текущие значения по всем параметрам активной ноги (углы и pwm всех суставов) как минимум / центр / максимум
    j/i/k = прочитать текущие значения матриц для активной ноги, матрицы минимума / центра / максимума
    w = записать текущие матрицы servo_zero_pwm , servo_min_angle , servo_min_pwm, servo_max_angle, servo_max_pwm в файл calibration.bin
    r = прочитать матрицы из calibration.bin
    e = дамп текущих матриц на экран в виде для вставки в исходный код servo.c

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

    не забываем сохранить результаты.
  • ik_test - проверка инверсной кинематики. последовательно ставим каждую ногу в заданные точки
  • sequencertest - ходилка :) (пока не рулит вправо/влево, хотя в математике есть такие функции)
  • liblicks - сама библиотека (Linux-based Controller for Kinematic Systems)
  • demo, servooff - оригинальный код, не работает, не адаптировал
Вложения
or-hexapod-control.tar.gz
(145.37 КиБ) Скачиваний: 0
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: OR Hexapod Control (Qt + C + SSC32)

Сообщение setar » 29 мар 2011, 22:10

коллеги, подскажите красивую конструкцию кода вот такого ограничения от выхода pwm за заданные рамки:
Код: Выделить всёРазвернуть
if (servo_pwm[i]>servo_max_pwm[i]) servo_pwm[i]=servo_max_pwm[i];                                                                     
if (servo_pwm[i]<servo_min_pwm[i]) servo_pwm[i]=servo_min_pwm[i];

при условии что ячейка min может содержать значение большее чем max (изменено рабочее направление).

P.S. сам C# никогда не учил, лишь стараюсь понимать и адаптировать чужие наработки
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

След.

Вернуться в коллективные проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2