PIXHAWK PX4 Autopilot еще одна летающая железка

Zodiak-vesi
SovGVD:

Понятия не имею, если там есть AUX выходы, то можно через PWM, если у вас контроллер alexmos (код есть, тестов не видел) или storm32 (работает 100%), то через любой доступный Serial управление можно сделать.

Спасибо! Я только начал собирать гексу на раме tarot 690, сейчас выбираю контроллер, не совсем ещё разобрался со всеми тонкостями(((. Подвес смотрю в сторону Tarot 2D или им подобные. Может подскажите связку контроллер + подвес?

alexeykozin

и еще случилась совсем невероятная фиговина. удалось “с места сдвинуть скалу”.
раньше сервис медиатека максимум мог скомпилить прошивку только с измененными настроками по дефолту.
ругался с ними что нет команды исключить из решения спутники низкого восхождения. изза неравномерности атмосферы именно они мешают точной навигации.
непрошло и полгода мне прислали на тест прошиву которая новой пмтк командой позволяет определить угол ниже которого спутники не принимат в решение.
немного потестил дома. команда вроде работает. но есть и косяки например если задать 60 градусов то пишет что в решении 1 спутник и есть 3д фикс…
отписался им, но пока без ответа

SovGVD
Zodiak-vesi:

Может подскажите связку контроллер + подвес?

ну pixhawk + storm32 (например на goodluckbuy за примерно 70$ 3х осевой как раз со storm32)
из плюшек - можно будет заливать скрипты, например чтобы делать панораму в воздухе автоматически, делать слежение камеры за трекеров и в будущем (крайне надеюсь) рулить шутером для камер Sony, Panasonic, Nikon, Canon

Zodiak-vesi
SovGVD:

ну pixhawk + storm32 (например на goodluckbuy за примерно 70$ 3х осевой как раз со storm32)
из плюшек - можно будет заливать скрипты, например чтобы делать панораму в воздухе автоматически, делать слежение камеры за трекеров и в будущем (крайне надеюсь) рулить шутером для камер Sony, Panasonic, Nikon, Canon

Ткните в ссылочку на 3х осевой со storm32!? Типа такого ru.aliexpress.com/item/…/32364090619.html ? Сам в сторону PIXHAWK смотрю, мозможности поражают)))

SovGVD
Zodiak-vesi:

Ткните в ссылочку на 3х осевой со storm32!?

на сайте goodluckbuy вбейте в поиск “3-Axis Brushless Gimbal Camera Mount with 32bit Storm32 Controller for Gopro 3 4 FPV Black” он там будет за 70.49
ссылу не дам - меня чето за ссылки банить любят на разных сайта =)

Zodiak-vesi
SovGVD:

на сайте goodluckbuy вбейте в поиск “3-Axis Brushless Gimbal Camera Mount with 32bit Storm32 Controller for Gopro 3 4 FPV Black” он там будет за 70.49
ссылу не дам - меня чето за ссылки банить любят на разных сайта =)

Спасибо огромное!

lokanaft
alexeykozin:

они мешают точной навигации

А вот с той же высотой - какой от неё смысл, если рельеф меняется. Прочитал про радиодальномер на каком то крыле - не могу найти ничего подобного и компактного. Чем 25 метров измерить от веток деревьев?

alexeykozin
lokanaft:

Чем 25 метров измерить от веток деревьев?

заказал себе лидар - изучу - отпишусь

lokanaft

Забыл сразу про юсб модуль px4lite:

Его корпус весит как обе платы вместе)

ions

Так он тоже алюминиевый? Николай, вы его пробовали подключать к компьютеру? Еще интересует, сколько весит этот комплект реально?

SovGVD

Взываю ковыряющих код.
Задача: заставить контроллер подвеса Storm32 не только крутить “головой”, но и активировать спукс его штатными средствами при подключении к PixHawk через UART. (copter.ardupilot.com/wiki/common-storm32-gimbal/)
Возможности: Storm32 понимает 2 MAVLink команды на спуск (MAVLINK_MSG_ID_DIGICAM_CONTROL и MAV_CMD_DO_DIGICAM_CONTROL, котовую должен кидать контроллер при любой активации спуска)
Тесты: используем скрипт, который крутит головой и нажимает спуск для создания панорамы, скрипт загужаем через Mission Planner из соотвествующей ветки

  1. контроллер подвеса подключен через UART и FTDI адаптер к ПК. Скрипт выполняется, спуск активируется, фотографии делаются.
  2. контроллер подвеса подключен через UART к Pixhawk с прошивкой 3.3.2, в планере вылезает окошко с выбором MAVLink устройства, выбирают hexacopter-1. Скрипт выполняется, спуск не активируется, фотографии соотвественно не делаются.
  3. контроллер подвеса подключен через UART к Pixhawk с прошивкой 3.3.2, в планере вылезает окошко с выбором MAVLink устройства, выбираю gimbal. Скрипт выполняется, спуск активируется, фотографии делаются.

OlliW пишет что косяк в ArduCopter, Ренди пишет что OlliW разбирается со storm32, но похоже все заняты другими делами =)

(далее могу путаться в терминах ардукоптеровых, времени нет разбираться и тестить, прошу понять и исправить)
Код работы со спуском (github.com/diydrones/ardupilot/…/AP_Camera.cpp) отправляет верную команду MAV_CMD_DO_DIGICAM_CONTROL на выполнение всем mavlink устройствам в роутинге: GCS_MAVLINK::send_to_components(). Затем в github.com/diydrones/…/MAVLink_routing.cpp всё это добро проходит почти на все устройсва из массива route:

void MAVLink_routing::send_to_components(const mavlink_message_t* msg)
{
    bool sent_to_chan[MAVLINK_COMM_NUM_BUFFERS];
    memset(sent_to_chan, 0, sizeof(sent_to_chan));

    // check learned routes
    for (uint8_t i=0; i<num_routes; i++) {
        if ((routes[i].sysid == mavlink_system.sysid) && !sent_to_chan[routes[i].channel]) {
            if (comm_get_txspace(routes[i].channel) >= ((uint16_t)msg->len) + MAVLINK_NUM_NON_PAYLOAD_BYTES) {
...
                _mavlink_resend_uart(routes[i].channel, msg);
                sent_to_chan[routes[i].channel] = true;
            }
        }
    }
}

Предполагаю что где то в условиях не проходит проверка подвеса по условиям и ему MAV_CMD_DO_DIGICAM_CONTROL не уходит.

Что посоветуют ковыряющие код?

UPD: Что такое routes[i].sysid == mavlink_system.sysid - это то что выбирает MissionPlanner?

alexeykozin
SovGVD:

в планере вылезает окошко с выбором MAVLink устройства, выбирают hexacopter-1.

вы посылаете мавлинк команду не гимбалу а коптеру. коптеру пофиг. он ведь не гимбал, зачем ему читать из сети чужие пакеты

представьте - мавлинк - это сеть.
гимбал, коптер, мишен планер - узлы сети
указывая получателя пакета вы отправяете команду на конкретный узел.
если не ошибаюсь есть и общая посылка на номер 255

SovGVD

логично =( тогда совершенно не понятно как например в миссии задать каманду именно гимбалу и почему команда не шлется гимбалу при шутере от пульта (когда servo или relay), хотя там как раз продкастная рассылка по идее идет на все устройва из массива routed.

У меня предположение что строка routes[i].sysid == mavlink_system.sysid как раз и не пропускает команду дальше коптера, похоже надо искать как это всё дебажить… или ftdi в разрыв провода на гимбал ставить и слушать какие команды лезут.

А вообще в AP_Mount… идет рассылка конкретно подвесу, вот как бы это всё сделать внутри кода шутера или рассылки, чтобы определенная команда улетала любой ценой в гимбал.

Попробую завтра дописать что-то вроде:

if ((routes[i].sysid == mavlink_system.sysid || (routes[i].mavtype ==MAV_TYPE_GIMBAL && msg->command==MAV_CMD_DO_DIGICAM_CONTROL)) && !sent_to_chan[routes[i].channel]) {

чтобы игорировалось условие, если гимбал и шутер

alexeykozin

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

SovGVD

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

// create command long mavlink message
        mavlink_command_long_t cmd_msg;
        memset(&cmd_msg, 0, sizeof(cmd_msg));
        cmd_msg.command = MAV_CMD_DO_DIGICAM_CONTROL;
        cmd_msg.param5 = 1;
        // create message
        mavlink_message_t msg;
        mavlink_msg_command_long_encode(0, 0, &msg, &cmd_msg);

        // forward to all components
        GCS_MAVLINK::send_to_components(&msg);

вся суть в cmd_msg, но не пойму как оно переходить в msg и переходит ли вообще? mavlink_msg_command_long_encode в переменную по ссылке (в сях & по ссылке? или что-то другое?) ничего не пихает, только делает return, т.е. вроде как вывод mavlink_msg_command_long_encode надо чему то присваивать?

UPD: там какая то магиня с копированием памяти, команды cmd_msg перетекают в msg… похоже на какогое наследие старого кода, чтобы не ломать совместимость

SovGVD

Ладно, всё фигня, одни неведомые и неработающие догадки…

Костыль за который должно быть стыдно, но работает:

AP_Camera.h в private секцию:

    bool _gimbalcam_search;              // try to search gimbal
    bool _gimbalcam_initialised;              // true once the driver has been initialised
    uint8_t _gimbalcam_sysid;                 // sysid of gimbal
    uint8_t _gimbalcam_compid;                // component id of gimbal
    mavlink_channel_t _gimbalcam_chan;        // mavlink channel used to communicate with gimbal.

AP_Camera.cpp в trigger_pic после GCS_MAVLINK::send_to_components(&msg);:

    if (!_gimbalcam_search) {
        _gimbalcam_search=true;
        if (GCS_MAVLINK::find_by_mavtype(MAV_TYPE_GIMBAL, _gimbalcam_sysid, _gimbalcam_compid, _gimbalcam_chan)) {
            _gimbalcam_initialised=true;
        }
    }

    if (_gimbalcam_initialised) {
        mavlink_msg_command_long_send(_gimbalcam_chan,
                                  _gimbalcam_sysid,
                                  _gimbalcam_compid,
                                  MAV_CMD_DO_DIGICAM_CONTROL,
                                  0,
                                  0,
                                  0,
                                  0,
                                  0, 1, 0,
                                  0);
    }
Конструктор

Всем добрый день!

Не могу скачать логи с карточки при подключенной телеметрии.

Смотрю логи вынимая карточку из контроллера.

Как можно скачать логи по телеметрии на комп?

lokanaft

Не знаю, я попробую из герметика силиконового в формочке залить под те изначальные отверстия виброразвязку.

Спрашивал же перед этим у другого продавца, мол сфоткай, чё там внутри - ой, на завод я писать, они ничего не ответить, я сам сложно сломать и тд

Я его когда подключил первый раз без зуммера и провода led - он не хотел подключаться. Потом всё это подсоединил и он издавал 3 длинных 3 коротких не прекращая - всё равно не хотел подключаться, потом прошил и нормально стало. Вроде откалибровал всё, но всё равно пишет про: bad mag position что то

ions
lokanaft:

Вроде откалибровал всё, но всё равно пишет про

На rcgroups пишет, что нужно проверять распиновку разъемов, не соответствует как у пикса. Там-же дает пояснения на картинке. Он плату поставил на квадрик без внешней виброразвязки и утверждает, что полет отличный.

GocMAN
ions:

Он плату поставил на квадрик без внешней виброразвязки и утверждает, что полет отличный.

Полеуретан мягкий, все-таки виброразвязка. На вид, даже лучше чем у Pixhack (ИМХО). Потому как у того пластиковый короб виброразвязки (я очень надеялся что делают силиконовый), в котором датчики между 2 кусков ППУ.
Пробовать летать, должно все получится!