roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 00:09

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: OR Hexapod Control (Qt + GCC + SSC32)
СообщениеДобавлено: 21 мар 2011, 16:19 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Коллеги, результатом коллективных обсуждений проекта по минимазации шестилапого робота из этой темы,
стал маленький робот на базе 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 (так мы будем иметь большую полезность для всех и пользоваться чужими наработками)

Кому это потенциально интересно и кто готов принять посильное участие ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 21 мар 2011, 16:29 
Не в сети
Аватара пользователя

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

Насчет управлялки думаю давно. Писал кроссплатформенное на FLTK - самые быстрые и маленькие виджеты! QT это тот еще монстр. FLTK работает на win32 и mac тоже. Ядро пишу на скриптовом языке http://code.google.com/p/dao/ (синтаксис похож на Си + есть ООП) визуализация через OpenGL и расчет физики на Bullet physics. Скриптовый язык удобней чем Си - нам бешаные скорости не нужны, но зато получаем жуткую гибкость и отсутствие компиляции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 21 мар 2011, 17:59 
Не в сети
Site Admin
Аватара пользователя

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

Что по коду уже сделано ??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 21 мар 2011, 21:54 
Не в сети
Аватара пользователя

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

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

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

Сейчас запал подстих, но если направление интересно - продолжу активней.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 21 мар 2011, 22:35 
Не в сети
Site Admin
Аватара пользователя

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

не хочется в самом начале проекта отрезать возможность автономного робота с мозгом на борту.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 21 мар 2011, 23:57 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
Я тестировал его и Lua на AT91SAM9260. Очень даже приемлемо. Dao примерно в 1.5-1.8 раза медленней Lua (на Lua у меня по работе проект) но это все равно намного быстрей Ruby, Python, Perl (быстрей Lua только gjc). Но в Dao потоки встроенные, а в Lua в виде патча. Да и так по мелочи. Но Dao сейчас мне нравиться, ибо ООП ;) и взоимодействие с Си проще.

Давай придумай тест - погоняю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 22 мар 2011, 18:21 
Не в сети
Site Admin
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 24 мар 2011, 14:28 
Не в сети
Site Admin
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 26 мар 2011, 13:31 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
в общем походко-управлятор на C# я допилил
оно умеет уже по блютуз каналу калиброваться, проверять калибровку и инверсную кинематику установкой кончика ноги в заданую координату.
Ну и самое главное мой шестиног уже пошел :Yahoo!:
Отличный генератор походки с любой комбинацией параметров вперед/назад (на заданную длинну одного шага), вправо/лево (стрейф) высота поднятия ног и высота пуза над полом :)
пока не прикручивал повороты.

кино не покажу - зарядку от фотика посеял :(
исходники спрашивайте у меня, чтобы я вообще знал нужно ли оно кому то


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 27 мар 2011, 18:39 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hexapod Control Qt + C + SSC32
СообщениеДобавлено: 27 мар 2011, 23:22 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Ну, пока получается так.
я выбор языка программирования в теме обозначил, и пока не вижу смысла менять его.
dao изучать времени нету, да и не уверен что много народу на нем программят.
Проект должен быть простым в адаптации и продолжении большинством программеров.

Добавлено спустя 1 час 26 минут 43 секунды:
Re: OR Hexapod Control (Qt + C + SSC32)
первые шаги :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OR Hexapod Control (Qt + C + SSC32)
СообщениеДобавлено: 27 мар 2011, 23:26 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OR Hexapod Control (Qt + C + SSC32)
СообщениеДобавлено: 28 мар 2011, 02:14 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Отлично ходит! :good:

Теперь надо туториал по сборке, калибровке и подключению к своему софту.
Исходники уже куда-нибудь выложены, посмотреть что там к чему?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OR Hexapod Control (Qt + C + SSC32)
СообщениеДобавлено: 28 мар 2011, 09:24 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Пока не определил исходники на постоянное место проживания, выкладываю тут.
Обращаю внимание что они сразу заведены в контроль версий (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
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OR Hexapod Control (Qt + C + SSC32)
СообщениеДобавлено: 29 мар 2011, 22:10 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
коллеги, подскажите красивую конструкцию кода вот такого ограничения от выхода 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# никогда не учил, лишь стараюсь понимать и адаптировать чужие наработки


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO