Создание собственной системы стабилизации

SergDoc

Следуя за Таймкопом code.google.com/p/afrodevices/source/list , я тоже обновил прошивку маленькой платки, “полёт” нормальный, правда пока не до самих полётов 😦 (не приехало ещё всё что нужно, но в пути)
добавление LSMки:
board.h


typedef enum AccelSensors {
    ACC_DEFAULT = 0,
    ACC_ADXL345 = 1,
    ACC_MPU6050 = 2,
    ACC_MMA8452 = 3,
+  ACC_LSM330A = 4,
} AccelSensors;
-------------------------------------------------------------------------
 // AfroFlight32
#include "drv_system.h"         // timers, delays, etc
#include "drv_adc.h"
#include "drv_adxl345.h"
#include "drv_bmp085.h"
#include "drv_hmc5883l.h"
#include "drv_i2c.h"
#include "drv_ledring.h"
#include "drv_mma845x.h"
#include "drv_mpu3050.h"
#include "drv_mpu6050.h"
#include "drv_l3g4200d.h"
#include "drv_pwm.h"
#include "drv_uart.h"
#include "drv_hcsr04.h"
+ #include "drv_lsm330acc.h"
+ #include "drv_lsm330gyro.h"

#endif

sensors.c


// Autodetect gyro hardware. We have MPU3050 or MPU6050.
    if (mpu6050Detect(&acc, &gyro, cfg.mpu6050_scale)) {
        // this filled up  acc.* struct with init values
        haveMpu6k = true;
    } else if (l3g4200dDetect(&gyro)) {
        havel3g4200d = true;
    }
 - else if (!mpu3050Detect(&gyro)) {    //хотя тут  можно подумать о совместимости
}
+  else if (!lsm330gyroDetect(&gyro)) {
        // if this fails, we get a beep + blink pattern. we're doomed, no gyro or i2c error.
        failureMode(3);
    }

// Accelerometer. Fuck it. Let user break shit.
retry:
    switch (cfg.acc_hardware) {
        case 0: // autodetect
        case 1: // ADXL345
            acc_params.useFifo = false;
            acc_params.dataRate = 800; // unused currently
            if (adxl345Detect(&acc_params, &acc))
                accHardware = ACC_ADXL345;
            if (cfg.acc_hardware == ACC_ADXL345)
                break;
            ; // fallthrough
       case 2: // MPU6050
            if (haveMpu6k) {
                mpu6050Detect(&acc, &gyro, cfg.mpu6050_scale); // yes, i'm rerunning it again.  re-fill acc struct
                accHardware = ACC_MPU6050;
                if (cfg.acc_hardware == ACC_MPU6050)
                    break;
            }
            ; // fallthrough
        case 3: // MMA8452
            if (mma8452Detect(&acc)) {
                accHardware = ACC_MMA8452;
                if (cfg.acc_hardware == ACC_MMA8452)
                    break;
            }
        +case 4: // LSM330ACC
        +    if (LSM330ACCDetect(&acc)) {
        +       accHardware = ACC_LSM330A;
        +      if (cfg.acc_hardware == ACC_LSM330A)
        +           break;
        +   }

    }

ну и соответственно сами драйвера (они в архиве) положить в папку src и подключить к проекту сишные файлы в папку Drivers, как-то так…

только вот пока незнаю, баро у меня дохлый или конфликт где-то (новый баро едет)

SergDoc

TO Gapey
Юрий, JST разъёмы это SH или SR тип? библиотек таких нет - надо самому рисовать…

Всё, уже нашел

SergDoc

Немного прикинул размеры плат, получается:
Нижняя 52Х64 крепления 45Х45 сзади хвостик - умещаются как раз 16 входов-выходов с корпусом и питанием (8 разъёмов MA03-2), в передней части умещаются 4 разъёма JST-SH 4-pin (4 входа на ключи для подсветки ULN2003, 2 UART и разъём для сонара) снизу (спереди) USB и MicroSD, по бокам два переходных разъёма на верхнюю плату MA12-1
Верхняя 52Х52, крепление 45Х45, пока думаю что делать со светодиодами, либо все вынести на верхнюю плату (что не есть хорошо), либо забить пусть тупо остаются на нижней (можно продублировать), можно так же сделать эротичный вырез в верхней плате, пока не знаю, начну разводить видно будет…

Razek
SergDoc:

4 входа на ключи для подсветки ULN2003

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

SergDoc

Я вообще в раздумьях - а надо оно мне, я просто копался в загашниках и нашел микруху…

Уряяя, все недостающие детали к моей трёшке уже на таможне, скоро испытания маленькой платки 😃 , обидно только, баро где-то затерялся, ну и фиг с ним 😃

Razek

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

SergDoc

Заказал на орz светодиодиков, конденсаторов, разъёмов - ну, в общем, всякой мелочевки, оплатил 10-го, ещё не выслали, поругатся с ними или ещё подождать?

SergDoc

Написал претензию 😦 блин аж руки опускаются…
Денюжку вернут куплю лучше ещё одну батарейку…

lomaster

Смотрю есть не мало людей и проектов желающих разработать свой пилотный контроллер 😃 Я собственно квардик собираю с той же целью: Разработка контроллера и ПО для автономного л/а. Автономного в том смысле, что летать он будет без пульта ДУ.
Задачу разбиваю на такие части

  1. Моторика - управление моторами, стабилизация, выполнение заданных паттернов движения.
  2. Сенсорика - стандартный набор инерционных датчиков, определение возможного изменения положения.
  3. Построение карты местности и локализация - дальнометрия, алгоритмы типа FastSLAM, DP-SLAM, Particle Filter.
  4. Планирование маршрута для перемещения в заданную точку пространства.

На данный момент имеется отладочная плата STM32F4Discovery и стандартный набор датчиков. Плата тяжеловата, но пока возможно сойдёт.
Не хватает средств дальнометрии, kinect или xtion пожалуй тяжеловаты будут. Хотелось бы несколько лазерных дальномеров, но таких я не нашёл в принципе.
Возможно потребуется и более производительный процессор для слэма и навигации.
ESC пока думаю оставить какие есть (от rctimer).

SergDoc

Конечно не в обиду, но, я хочу, я делаю и т.п. - куча сферических слов в вакууме, а где свои извращения результаты, какие-то наработки? Всё в секрете? Юрий я не только про вас. Один Александр rual хоть какое-то видео, какие-то решения выкладывает, да, у меня ничего особого нет - трудновато мне, и с программированием, да и с финансами, но тоже пытаюсь что-нибудь выложить по мере готовности… Выкладывайте свои наработки (эт я ко всем) мы (это не только я, а надеюсь кто-то ещё) их украдём покритикуем или возьмём на вооружение 😃

Извиняйте никого не хотел обидеть - накатило что-то 😃

lomaster

Мои наработки на данный момент времени касаются больше колёсных роботов 😃
Несколько устаревшее видео, но общий вид такой:

rual
SergDoc:

Выкладывайте свои наработки

Не вопрос, Сергей, могу выложить свой проект как есть. Вот только он у меня не под ГЦЦ, посему мэйк-файл приложить не могу, а так же не знаю как себя поведёт себя ассемблерный стартап в ГЦЦ.
Проект сумбурный, т.к. это мой первый проект на СТМ32 и первый проект применения датчиков ориентации. В некоторых местах есть упоминания Virtual Com POrt Demo , что есть следствие того, что мой проект я вырастил на этой демке. Вообще в планах переструктурировать объекты, но пока руки не доходят.
А так пользуйтесь, в принципиальных местах, если не лень, упомяните автора.
Апааратную конфигурацию выложу поздже , хотя все выводы описаны русским языком в файле hw_config.h.
Вся соль проекта в файле IMU.cpp, там описаны ИНС, стабилизатор и вычислитель угловых разностей. Фильтр альфа-бетта на кватернионах.
Все остальные файлы обеспечивают управление и настройку внутрених устройств СТМа, связь и интерфейс пользователя, снятие ППМ сигнала на входах, формирование ШИМ на выходе в соответсвии с матрицей конфигурации рамы, формирование управляющего кватерниона из входного ППМ.
Весь алгоритм вымучен мной лично, все совпадения считать случайными. Функции работы с кватернионами взяты с сайта GameDev.ru
Поздже выложу схему подключения ЛСМки и последенее видео.

MyIMU.rar

SergDoc

Если почта не накуралесит, то завтра или крайний срок во вторник (понедельник выходной на почте) всё необходимое приедет, то на свой день варенья тоже устрою полетушки 😃 не лучше завтра, со вторника могу и не успеть…

rual:

Не вопрос, Сергей, могу выложить свой проект как есть.

А с гуи виевским полностью дружит? или это задел на будущее? Мне очень нравится станция ОР, но к ней прицепится думаю сложно будет, а своё сварганить рук не хватит…

SergDoc:

не лучше завтра

ого а завтра то уже сегодня 😃

rual
SergDoc:

А с гуи виевским полностью дружит

уг
Пока совсем не дружит, я только код интерфейса с какого-то вийного проекта вставил и прикрутил к своим переменным. Но гуй мой контроллер так и не признал…

rual
SergDoc:

трудновато мне, и с программированием

я тут могу помочь, вот только времени не хватает. Ну и аппаратура у нас с тобой разная, писать код под ту железку, которой у тебя нет, дело не простое. В своём проекте последние существенные изменения сделаны ещё до майских праздников, сейчас только донастройка и лётные испытания. До компаса всё руки никак не дойдут((( Опять же гуй виевский не прикрутил ещё… Свой интерфейс надо расширять, а то у меня все буквы латиницы уже заняты )))
А вот крайнее видео:

SergDoc

Почта сработала отлично на день варенья буду с коптером 😃

SergDoc

Вот интересно, на прошлом контроллере minthrottle у меня было 1300 сейчас 1150, думаю сразу менять или потестить (пока аппарат легче предыдущего получается), был прецедент - батарейку не прицепил, а просто на пол положил, так аппарат задним ротором в пол зарылся при арминге, наверно оставлю пока как есть…
коптер почти готов (мосх оттестирован - входы выходы работают, стабилизация отрабатывает, батарейку меряет правильно, серва слишком резвая - на столе рядом с контроллером в резонанс какой-то входит - ну это уже на аппарате проверю) главно не поленится - последний рывок остался - движки к регулям подцепить (перепаиваю разъёмы - ой как я не люблю с проводами возится) и поворотку закончить, “судный день” уже близко (четверг) - жена сказала что не успею, а надо 😃

rual:

А вот крайнее видео

чёт лучи слишком близко друг к другу что это окта или гекса?

HikeR

там же “расшифровано”:

  • Powered by a proprietary technology that dramatically increases flight time and reduces recharge time

топливные ячейки либо ещё какая химическая гадость.

rual
SergDoc:

чёт лучи слишком близко друг к другу что это окта или гекса?

Квадра 525, просто авторегистратор имеет 120гр обзор.

SergDoc:

Вот интересно, на прошлом контроллере minthrottle у меня было 1300 сейчас 1150, думаю сразу менять или потестить (пока аппарат легче предыдущего получается)

у меня стоит 1200. Этот параметр надо не по весу подбирать, у моторов должен быть устойчивый режим, возможно минимимальные обороты при достаточной приёмистости.