ArduCopter Mega: порт на обычную Arduino (тестим)

egor-mav

Вот с этого места можно поподробнее?
Я пытался его отключить, делал так: Открывал файл “\libraries\AP_HAL_MPNG\RCInput_MPNG.cpp” обычным блокнотом. Менял нужную строчку на SERIAL_PPM_DISABLED, ну и раскладку на Multiwii поменял… потом все это дело сохранил, открыл Arduino, скомпилировал, прошил…
Но все равно не реагирует на стики…

kren-DEL
egor-mav:

Вот с этого места можно поподробнее?

тут

По поводу краша - отвилился разъём на токодатчике 😦

masteryoda
egor-mav:

питание к плате приходит только от USB

ИМХО (проверить не могу, коптер в машине сейчас) но по моему +5В от USB не питает средний пин MotorOut. Подключи свободный средний пин на приемнике к свободному среднему пину MotorOut на мозгах, перемычку лучше убрать. Может ошибаюсь… Но хуже не будет ))

egor-mav
masteryoda:

ИМХО (проверить не могу, коптер в машине сейчас) но по моему +5В от USB не питает средний пин MotorOut. Подключи свободный средний пин на приемнике к свободному среднему пину MotorOut на мозгах, перемычку лучше убрать. Может ошибаюсь… Но хуже не будет ))

Питание есть везде, проверял тестером. Да и регулятор пробовал подключать (без движка, как вес), но это тоже не помогло…
Теперь я не могу понять почему в Mission Planner не реагирует на стики (с прошивкой 3.0.1-R2)…
Делаю все как тут и тут описано…
В файле RCInput_MPNG.cpp меняю (открываю обычным блокнотом меняю и сохраняю…) строчку

#define SERIAL_PPM SERIAL_PPM_ENABLED      на     #define SERIAL_PPM SERIAL_PPM_DISABLED

Раскладка каналов выглядит так:

//*****************  RC pin mapping  *******************************************************
// To change pinmapping, uncomment ONE line starting with 'static unit8_t...'

// Graupner/Spektrum
// PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,CAMPITCH,CAMROLL
//static uint8_t pinRcChannel[8] = {1, 3, 2, 0, 4, 5, 6, 7};

// Standard (Default)
// ROLL,PITCH,THROTTLE,YAW,MODE,AUX2,CAMPITCH,CAMROLL
//static uint8_t pinRcChannel[8] = {0, 1, 2, 3, 4, 5, 6, 7};

// some Hitec/Sanwa/others
// PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,CAMPITCH,CAMROLL
//static uint8_t pinRcChannel[8] = {1, 0, 2, 3, 4, 5, 6, 7};

// Multiwii
// ROLL,THROTTLE,PITCH,YAW,AUX1,AUX2,CAMPITCH,CAMROLL
static uint8_t pinRcChannel[8] = {1, 2, 0, 3, 4, 5, 6, 7};

// JR
// FLAPS:MODE, GEAR:SAVE TRIMM = apm ch7
//static uint8_t pinRcChannel[8] = {1, 2, 0, 3, 5, 6, 4, 7};
//*****************  End of RC pin mapping  ************************************************

В этом файле вроде больше ничего менять не надо…

Файл APM_Config.h изменяю уже в открытой Arduino-1.0.3

// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-

// User specific config file.  Any items listed in config.h can be overridden here.

// If you used to define your CONFIG_APM_HARDWARE setting here, it is no longer
// valid! You should switch to using a HAL_BOARD flag in your local .

// If you have CRIUS V1 - Uncomment next line to disable logging
#define LOGGING_ENABLED       DISABLED            // disable logging for boards without dataflash chip

// If Arduino IDE hang while uploading firmware to your board, try to change string below, just enter some random characters
#define BOOTLOADER_BUGFIX "234fs34567hf"

// Currently not supported
#define CONFIG_SONAR DISABLED

//#define HIL_MODE              HIL_MODE_SENSORS    // build for hardware-in-the-loop simulation
//#define HIL_MODE              HIL_MODE_ATTITUDE    // build for hardware-in-the-loop simulation

// QuadCopter selected by default
#define FRAME_CONFIG TRI_FRAME
/*
 *  options:
 *  QUAD_FRAME
 *  TRI_FRAME
 *  HEXA_FRAME
 *  Y6_FRAME
 *  OCTA_FRAME
 *  OCTA_QUAD_FRAME
 *  HELI_FRAME
 */

// User Hooks : For User Developed code that you wish to run
// Put your variable definitions into the UserVariables.h file (or another file name and then change the #define below).
//#define USERHOOK_VARIABLES "UserVariables.h"
// Put your custom code into the UserCode.pde with function names matching those listed below and ensure the appropriate #define below is uncommented below
//#define USERHOOK_INIT userhook_init();                    // for code to be run once at startup
//#define USERHOOK_FASTLOOP userhook_FastLoop();            // for code to be run at 100hz
//#define USERHOOK_50HZLOOP userhook_50Hz();                // for code to be run at 50hz
//#define USERHOOK_MEDIUMLOOP userhook_MediumLoop();        // for code to be run at 10hz
//#define USERHOOK_SLOWLOOP userhook_SlowLoop();            // for code to be run at 3.3hz
//#define USERHOOK_SUPERSLOWLOOP userhook_SuperSlowLoop();  // for code to be run at 1hz

Вот и все… компилирую, прошиваю… Но результата (сигналов с аппы) нет…

damian
egor-mav:

Вот и все… компилирую, прошиваю… Но результата (сигналов с аппы) нет…

проверьте действительно ли текстовый файл в библиотеках ардуино www.megapirateng.com/…/ide-set-folder.jpgтот самый который Вы исправили,возможно тот самый RCInput_MPNG.cpp Arduino подхватывает из другого каталога.Как вариант намеренно внести ошибку в этот файл RCInput_MPNG.cpp и попробовать скомпилировать.

egor-mav

Папка указана правильно… А не нужно папку libraries копировать в ардуину? вроде в старых прошивках копировали…

Папка указана правильно… А не нужно папку libraries копировать в ардуину? вроде в старых прошивках копировали…

Еще один момент напрягает… в ардуино файл -> папка со скетчами -> libraries нету папки “AP_HAL_MPNG”

Это нормально?

damian:

Как вариант намеренно внести ошибку в этот файл RCInput_MPNG.cpp и попробовать скомпилировать.

А это идея… С ошибкой в файле, не компилируется, выдает ошибку…

Без ошибки, после компиляции пишет:

Building for MegaPirateNG
Excluding arduino core from include paths
Excluding arduino core from link
Размер скетча в двоичном коде: 213 354 байт (из 258 048 байт максимум)

RTemka

Папка указана правильно… А не нужно папку libraries копировать в ардуину? вроде в старых прошивках копировали…

Еще один момент напрягает… в ардуино файл -> папка со скетчами -> libraries нету папки “AP_HAL_MPNG”

Папка лежит в корне в месте с папками проекта

Вот пошаговое видео

verial

С этим направили к вам.
Добрый день, вот приобрел квадрик для некоего проекта (так, мозг размять ну и кошелек уменьшить в весе). Интересует использование андурины так как знаком с ним, непосредственно интересует его точность позиционирования места относительно немецкой сборки.

MaF

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

damian
MaF:

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

Ни разу подобного не было. Да и как бы взял себе за правило: при любых экспериментах с платой ESC обесточены. Да и не так часто нужны они подключенными(compasmot появился недавно, честно написано что версия beta, что означает возможны баги… будьте аккуратны). Однажды полез проверять цифровым тестером питание на выводах, внезапно раскрутился один двигатель-минус проп.

MaF

мне так же больше не удалось данную ситуацию повторить
но факт остается фактом - плата способна заармиться сама.

limon_spb
verial:

С этим направили к вам.
Добрый день, вот приобрел квадрик для некоего проекта (так, мозг размять ну и кошелек уменьшить в весе). Интересует использование андурины так как знаком с ним, непосредственно интересует его точность позиционирования места относительно немецкой сборки.

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

======================================================

Уважаемые сведущие, а кто может что рассказать про параметр PILOT_VELZ_MAX? (Pilot maximum vertical speed) Он регулирует максимальную вертикальную скорость в режиме loiter. Но мне в списке стандартных параметров не дает выставить более 500 см в сек. Однако через список всех параметров я выставил 1000 см в сек… Чем это чревато? Я хочу полетать высоко-высоко. Но сегодня при максимальной скорости 500см в сек улетел на 800 метров над уровнем моря, но акума еле хватило на спуск… Изверещался весь и я с испугу неаккуратно сел и поломал проп 😃

kren-DEL
limon_spb:

Но сегодня при максимальной скорости 500см в сек улетел на 800 метров над уровнем моря, но акума еле хватило на спуск… Изверещался весь и я с испугу неаккуратно сел и поломал проп 😃

Иван, 500см/сек=5м/с, это очень много и для подъёма и для спуска. Я например для подъёмов использую стаб, а для спусков акро. Ну а по теме - черевато только дестабилизацией аппарата при спуске(начнёт трясти), такова особенность спуска блинчиком…

RTemka

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

limon_spb
RTemka:

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

У знакомого так и произошло… В итоге расхреначил коптер об детскую металлическую карусель 😃 А спуск с 800 метров будет явно больше 2 секунд, так что дизарм точно случится…

kren-DEL:

Я например для подъёмов использую стаб

Стаб стремно использовать для подъема - наверху ветер неизвестно какой и неизвестно куда улетит. RTL конечно, если что, сработает, но если там наверху что-то случится и коптер рухнет, неизвестно куда он рухнет, поди сыши потом…

RTemka

Коптер без FPV ?
А время до дисарма нельзя накрутить ?

limon_spb
RTemka:

Коптер без FPV ?

да, FPV пока еще в проекте 😃

kren-DEL
limon_spb:

да, FPV пока еще в проекте 😃

а) ну тогда всё ещё в переди, я на такие высоты только по FPV поднимаюсь, больше 200м ориентацию коптера не определить уже 😦

limon_spb
kren-DEL:

а) ну тогда всё ещё в переди, я на такие высоты только по FPV поднимаюсь, больше 200м ориентацию коптера не определить уже

Поэтому Lioter и использую: взлетаю пока взлетается на месте, кручусь-делаю фотографии, спускаюсь на месте 😃 Думал сегодня попробовать взлет PILOT_VELZ_MAX = 10м/c, как оно будет (может выше получится), но погода как обычно…

limon_spb

Может быть кто-то[Сэр Алекс? 😃] сможет подсказать мне по коду Пирата?

Залез здесь немного в библиотеки, стало интересно, какая фильтрация применяется… Наткнулся на github.com/MegaPirateNG/…/AP_LeadFilter

Согласно описанию эта либа удялет задержку GPS

1ый непонятный момент: зачем в AP_LeadFilter.h строка

#include <AP_LeadFilter.h>

В С++ уже давно, но иногда чувствую себя новичком 😃

2ой Непонятный для меня момент.
задача, как я её понял:
Дана позиция(pos), известно время между измерениями(lag_in_seconds), известна скорость на предыдущем такте(_last_velocity), известна скорость на этом такте(vel). Нужно спрогнозировать позицию в следующем такте.
Как решается там:

int32_t
AP_LeadFilter::get_position(int32_t pos, int16_t vel, float lag_in_seconds)
{
    // assumes a 1 second delay in the GPS
    int16_t accel_contribution = (vel - _last_velocity) * lag_in_seconds * lag_in_seconds;
    int16_t vel_contribution = vel * lag_in_seconds;

    // store velocity for next iteration
    _last_velocity = vel;

    return pos + vel_contribution + accel_contribution;
}

Здесь, как я понял, предполагается, что движение равноускорено, т.е. из школьных воспоминаний
S = So + Vo * t + a * t*t/2;

Т.е. получается, что accel_contribution должно вычисляться по формуле (если не сокращать ничего):

int16_t accel_contribution = (vel - _last_velocity) / lag_in_seconds * lag_in_seconds * lag_in_seconds / 2.0;

где
(vel - _last_velocity) / lag_in_seconds - это вычисленное ускорение.
lag_in_seconds * lag_in_seconds / 2.0 - время в квадрате пополам.
Ну а в реальном коде это немного не так… Стало очень интересно, в чем дело 😃😃

limon_spb
limon_spb:

Стало очень интересно, в чем дело

Вопрос снимается - оказывается эта библиотечка нигде не используется и даже вроде выпилена из APM коптера.