ArduCopter Mega: порт на обычную Arduino (тестим)
Вот с этого места можно поподробнее?
Я пытался его отключить, делал так: Открывал файл “\libraries\AP_HAL_MPNG\RCInput_MPNG.cpp” обычным блокнотом. Менял нужную строчку на SERIAL_PPM_DISABLED, ну и раскладку на Multiwii поменял… потом все это дело сохранил, открыл Arduino, скомпилировал, прошил…
Но все равно не реагирует на стики…
питание к плате приходит только от USB
ИМХО (проверить не могу, коптер в машине сейчас) но по моему +5В от USB не питает средний пин MotorOut. Подключи свободный средний пин на приемнике к свободному среднему пину MotorOut на мозгах, перемычку лучше убрать. Может ошибаюсь… Но хуже не будет ))
ИМХО (проверить не могу, коптер в машине сейчас) но по моему +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
Вот и все… компилирую, прошиваю… Но результата (сигналов с аппы) нет…
Вот и все… компилирую, прошиваю… Но результата (сигналов с аппы) нет…
проверьте действительно ли текстовый файл в библиотеках ардуино www.megapirateng.com/…/ide-set-folder.jpgтот самый который Вы исправили,возможно тот самый RCInput_MPNG.cpp Arduino подхватывает из другого каталога.Как вариант намеренно внести ошибку в этот файл RCInput_MPNG.cpp и попробовать скомпилировать.
Папка указана правильно… А не нужно папку libraries копировать в ардуину? вроде в старых прошивках копировали…
Папка указана правильно… А не нужно папку libraries копировать в ардуину? вроде в старых прошивках копировали…
Еще один момент напрягает… в ардуино файл -> папка со скетчами -> libraries нету папки “AP_HAL_MPNG”
Это нормально?
Как вариант намеренно внести ошибку в этот файл RCInput_MPNG.cpp и попробовать скомпилировать.
А это идея… С ошибкой в файле, не компилируется, выдает ошибку…
Без ошибки, после компиляции пишет:
Building for MegaPirateNG
Excluding arduino core from include paths
Excluding arduino core from link
Размер скетча в двоичном коде: 213 354 байт (из 258 048 байт максимум)
Папка указана правильно… А не нужно папку libraries копировать в ардуину? вроде в старых прошивках копировали…
Еще один момент напрягает… в ардуино файл -> папка со скетчами -> libraries нету папки “AP_HAL_MPNG”
❗Папка лежит в корне в месте с папками проекта❗
Вот пошаговое видео
С этим направили к вам.
Добрый день, вот приобрел квадрик для некоего проекта (так, мозг размять ну и кошелек уменьшить в весе). Интересует использование андурины так как знаком с ним, непосредственно интересует его точность позиционирования места относительно немецкой сборки.
кстати,камраты,ахтунг
красная хк плата может сама заармиться при подрубе к компу и перезагрузке в процессе.
я сегодня пострадал,да
газ был оставлен на максимуме случайно на пульте
подрубаю коптер к компу и тут же на максимум раскручиваются движки.
у меня они 750кв и 11 винты,хрупкие,но 4 пальца - шкура покоцана,мясо чуток,по ногтю -не прорубило,но след от удара
кстати,камраты,ахтунг
красная хк плата может сама заармиться при подрубе к компу и перезагрузке в процессе.
Ни разу подобного не было. Да и как бы взял себе за правило: при любых экспериментах с платой ESC обесточены. Да и не так часто нужны они подключенными(compasmot появился недавно, честно написано что версия beta, что означает возможны баги… будьте аккуратны). Однажды полез проверять цифровым тестером питание на выводах, внезапно раскрутился один двигатель-минус проп.
мне так же больше не удалось данную ситуацию повторить
но факт остается фактом - плата способна заармиться сама.
С этим направили к вам.
Добрый день, вот приобрел квадрик для некоего проекта (так, мозг размять ну и кошелек уменьшить в весе). Интересует использование андурины так как знаком с ним, непосредственно интересует его точность позиционирования места относительно немецкой сборки.
Сравнить не могу, но при отсутствии ветра у меня точность возврата в точку старта - плюс-минус пол метра. Вообще, я думаю, железо не очень влияет. Влияют настройки, ПИДы, и количество пойманных спутников.
======================================================
Уважаемые сведущие, а кто может что рассказать про параметр PILOT_VELZ_MAX? (Pilot maximum vertical speed) Он регулирует максимальную вертикальную скорость в режиме loiter. Но мне в списке стандартных параметров не дает выставить более 500 см в сек. Однако через список всех параметров я выставил 1000 см в сек… Чем это чревато? Я хочу полетать высоко-высоко. Но сегодня при максимальной скорости 500см в сек улетел на 800 метров над уровнем моря, но акума еле хватило на спуск… Изверещался весь и я с испугу неаккуратно сел и поломал проп 😃
Но сегодня при максимальной скорости 500см в сек улетел на 800 метров над уровнем моря, но акума еле хватило на спуск… Изверещался весь и я с испугу неаккуратно сел и поломал проп 😃
Иван, 500см/сек=5м/с, это очень много и для подъёма и для спуска. Я например для подъёмов использую стаб, а для спусков акро. Ну а по теме - черевато только дестабилизацией аппарата при спуске(начнёт трясти), такова особенность спуска блинчиком…
По мне так спуск с выключенными винтами.
Только всегда боюсь, что дисармиться.
По мне так спуск с выключенными винтами.
Только всегда боюсь, что дисармиться.
У знакомого так и произошло… В итоге расхреначил коптер об детскую металлическую карусель 😃 А спуск с 800 метров будет явно больше 2 секунд, так что дизарм точно случится…
Я например для подъёмов использую стаб
Стаб стремно использовать для подъема - наверху ветер неизвестно какой и неизвестно куда улетит. RTL конечно, если что, сработает, но если там наверху что-то случится и коптер рухнет, неизвестно куда он рухнет, поди сыши потом…
Коптер без FPV ?
А время до дисарма нельзя накрутить ?
Коптер без FPV ?
да, FPV пока еще в проекте 😃
да, FPV пока еще в проекте 😃
а) ну тогда всё ещё в переди, я на такие высоты только по FPV поднимаюсь, больше 200м ориентацию коптера не определить уже 😦
а) ну тогда всё ещё в переди, я на такие высоты только по FPV поднимаюсь, больше 200м ориентацию коптера не определить уже
Поэтому Lioter и использую: взлетаю пока взлетается на месте, кручусь-делаю фотографии, спускаюсь на месте 😃 Думал сегодня попробовать взлет PILOT_VELZ_MAX = 10м/c, как оно будет (может выше получится), но погода как обычно…
Может быть кто-то[Сэр Алекс? 😃] сможет подсказать мне по коду Пирата?
Залез здесь немного в библиотеки, стало интересно, какая фильтрация применяется… Наткнулся на 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 - время в квадрате пополам.
Ну а в реальном коде это немного не так… Стало очень интересно, в чем дело 😃😃
Стало очень интересно, в чем дело
Вопрос снимается - оказывается эта библиотечка нигде не используется и даже вроде выпилена из APM коптера.