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

Alexey_1811

Нужна ваша помощь. Мне для осд нужно чтобы Arducopter сбрасывал следующие сообщения:
#define MAVLINK_MSG_ID_HEARTBEAT 0
#define MAVLINK_MSG_ID_SYS_STATUS 1
#define MAVLINK_MSG_ID_GPS_RAW_INT 24
#define MAVLINK_MSG_ID_VFR_HUD 74
#define MAVLINK_MSG_ID_ATTITUDE 30
#define MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT 62
#define MAVLINK_MSG_ID_MISSION_CURRENT 42
#define MAVLINK_MSG_ID_RC_CHANNELS_RAW 35

Не могу догнать что нужно сделать что бы “мозги” арду начали отсылать эти данные.

rual
Alexey_1811:

Нужна ваша помощь. Мне для осд нужно чтобы Arducopter сбрасывал следующие сообщения:

Алексей, я в самом коде АПМ совсем не лазил, я занимался портом РТОС Нутекс по запуск АПМ на плате F4BY, поэтому квалифицированно помочь не могу.
Вроде как в libraries\GCS_MAVLink\include\mavlink\v1.0\common\mavlink_msg_attitude.h есть прототипы функций, вызываются они из ArduCopter\GCS_Mavlink.pde

SergDoc

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

Sir_Alex
Alexey_1811:

Не могу догнать что нужно сделать что бы “мозги” арду начали отсылать эти данные.

HEARTBEAT отсылается всегда (вроде раз в секунду). Остальное надо запрашивать. Проще всего посмотреть код того же MinimOSD. По сути, вы запрашиваете такие то данные и говорите, что надо их отправлять с частотой 10HZ, дальше данные будут капать с указанной частотой.

Alexey_1811

Скоро мозг взорвется.
Посмотрел что шлет ArduCamOSD в контроллер при старте. Получил:

//                          STX  |           HEADER          |                      DATA            | CRC    |
unsigned char strInit0[] = {0xFE, 0x06, 0x00, 0x0C, 0x01, 0x42, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0xD7, 0xD3};
unsigned char strInit1[] = {0xFE, 0x06, 0x01, 0x0C, 0x01, 0x42, 0x02, 0x00, 0x01, 0x01, 0x02, 0x01, 0x22, 0x69};
unsigned char strInit2[] = {0xFE, 0x06, 0x02, 0x0C, 0x01, 0x42, 0x05, 0x00, 0x01, 0x01, 0x03, 0x01, 0x55, 0x0A};
unsigned char strInit3[] = {0xFE, 0x06, 0x03, 0x0C, 0x01, 0x42, 0x02, 0x00, 0x01, 0x01, 0x06, 0x01, 0x61, 0xA1};
unsigned char strInit4[] = {0xFE, 0x06, 0x04, 0x0C, 0x01, 0x42, 0x05, 0x00, 0x01, 0x01, 0x0A, 0x01, 0x3C, 0x63};
unsigned char strInit5[] = {0xFE, 0x06, 0x05, 0x0C, 0x01, 0x42, 0x02, 0x00, 0x01, 0x01, 0x0B, 0x01, 0x69, 0xAB};

Выдрал код подсчета контрольной суммы с ArduCamOSD

void _crc_accumulate(unsigned char data, unsigned short *crcAccum)
{
    unsigned char tmp;

    tmp = data ^ (unsigned char)(*crcAccum &0xff);
    tmp ^= (tmp<<4);
    *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
}

//====================================================================================================
void _crc_init(uint16_t* crcAccum)
{
    *crcAccum = X25_INIT_CRC;
}

//====================================================================================================
unsigned short _crc_calculate(unsigned char* pBuffer, unsigned short length)
{
    unsigned short crcTmp;
    _crc_init(&crcTmp);
    while (length--) {
        _crc_accumulate(*pBuffer++, &crcTmp);
    }
    return crcTmp;
}

Считаю CRC16 для 0x06, 0x00, 0x0C, 0x01, 0x42, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01 и у меня нифига не получается 0xD7, 0xD3.
То ли лыжи не едут то ли я что то не понимаю.😵

Rabbit_Fly
SergDoc:

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

шумы сравниете и поймете что это не 6000 это хуже.

SergDoc

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

Drinker

Привет камрады, выдалось время, как просили выкачал через терминал какието логи из ириса. Че с ними делать? вот например: yadi.sk/d/ZJo7jkVoDwXXX

Gapey

есть две новости , хорошая и плохая …

  1. хорошая … судя по code.google.com/p/esc32/source/list автоквады допиливают CAN на своих регулях …
  2. плохая … гдето в сети видел фото китайской версии ESC32 с обратной стороны (везде у продавцов фото почемуто только с одной стороны) , так вот , там небыло места под CAN трансивер (видимо поэтому Шопу и не показывают) …
    скоро придедут китайцы , посмотрим … если CAN вырезали , придется препарировать плату …
SergDoc
Gapey:

если CAN вырезали

ну какбы одна лапа на jtag разъёме, а вот вторая х.з.

Drinker:

вот например:

чёт мне кажется это крайнее включение на столе, не? у меня на SD-шке они под номерами складываются…

Drinker

На столе как раз крайний в списке был, а этот из середины списка. Так че с ним делать? Мишн планер не хочет его открывать, ошибку выдает мол файл занят…И так скаждым. Как смотреть их?

SergDoc
Drinker:

На столе как раз крайний в списке был, а этот из середины списка. Так че с ним делать? Мишн планер не хочет его открывать, ошибку выдает мол файл занят…И так скаждым. Как смотреть их?

у меня открывает, у вас ardu 3 rc-2 (в кино что я делал rc-5 летала 😈 )

Gapey
SergDoc:

ну какбы одна лапа на jtag разъёме, а вот вторая х.з.

это не решает проблему … нельзя юзать китайскую , бум делать свою …
буду сдувать детали и срисовавать схематик … ну а дальше делать этажерку - контроллер с драйверами на одной плате (18 микрон меди) а мосфеты на другой (70/105 микрон)

Gapey

ну чтото в этом духе … тока с транзисторами они явно грубанули … 2х160 ампер , вот это запас прочности …плата сгорит намного раньше чем мосфеты …
думаю если поставить IRFHM830 также по 2 штуки в параллель то будет намного легче и компактнее … да они всего 40 ампер каждый , но думаю этого будет достаточно … сопротивление 3,8 миллиома против 3,1 миллиома тоже ненамного выше …
переключатели нафиг , 4 перемычки намного компактнее …

SergDoc

ну да 4 перемычки дадут 16 адресов, больше и не надо 😃 хотя can драйвера на плате не видно, но они там две с куевой хучей слоёв…

Dhole
Gapey:
  1. плохая … гдето в сети видел фото китайской версии ESC32 с обратной стороны (везде у продавцов фото почемуто только с одной стороны) , так вот , там небыло места под CAN трансивер (видимо поэтому Шопу и не показывают) …

Юрий, эт вот не те ESC32? - witespyquad.gostorego.com/…/rtf32.html

Gapey

похоже что те … приедут посмотрим …
одно дело ломать железка за 20 баксов и совсем другое за 40 евро …

Dhole

Там, кстати, есть вид и с джёппы -

SergDoc

если всё гуд, то на свободное место как раз приклеится платка с максом, резюком и кондёрчиком 😃