Failsafe'ы неподалеку

Я стал замечать, что часто мини-коптер начал входить в failsafe, когда я летаю не то чтобы далеко или за препятствиями, а буквально в 50 метрах. Пульт у меня Futaba 7C 2.4Ghz FASST, я летал с ним на 1300 м вверх, и только начинало лагать управление. С бустером 2w отлетал и дальше, и даже не знаю, на сколько мог бы. Когда срабатывает failsafe, на коптере пищит сигнал, так что я знаю точно, что управление не добивает.

Неделю назад отказало управление рядом со мной, когда управлял сидя на террасе отеля Voksenåsen. Failsafe у меня настроен на медленное снижение, и коптер начал снижаться, а через 2-3 секунды управление вернулось и я его поймал. Осмотрев местность, я заметил в 30 метрах на столбе сотовую (вероятно) базовую станцию. У нее было три антенны, а наверное одна из них излучала в сторону коптера.

Вчера летал с бустером и в 100 метрах коптер запищал и стал снижаться, неуправляемый. У самой земли управление восстановилось и коптер удалось вернуть. Никакой базовой станции рядом не просматривалось, но стояла подозрительная железная будочка с метровой полосатой палкой, которая могла бы быть антенной. Походив в этом месте с SDR-sharp, я поймал сильные узкополосные передачи на частоте 937, 939, 946, 948, 954 MHz. Похоже, это также передача базовой станции сотовой сети, только очень направленная. Может быть, эта будка с палкой - репитер.

Мораль такова - все предвидеть невозможно, и даже Futaba глохнет. Может можно поставить какой-то полосовой фильтр на 2.7GHz на усы приемника?

www.youtube.com/watch?v=DCqGs5zNHmk

  • 1794
Comments
pilot01

Андрей, получилось RTH с harakiri GPS на мини-коптере подружить?

Prikupets

GPS пока подрубил, но только к Cleanflight. Только на столе, пока не летал. Изучаю код Harakiri, чтобы понять, что все нужное мне там имеется.

pilot01
Prikupets;bt137656

GPS пока подрубил, но только к Cleanflight. Только на столе, пока не летал. Изучаю код Harakiri, чтобы понять, что все нужное мне там имеется.

Аналогично, правдо в harakiri смутил факт, что последний коммит 2013 года.
Разбираюсь с флип32 и Cleanflight 1.9 (10dof) на трехе.
подключил сенсор тока и вольтажа, gps, телемитрию, все вроде ок.

По идее есть в Cleanflight RTH, осталось попробовать =)

dreel

Андрей, именно поэтому я и перешел на Frsky … там где я вдруг падал на своём JR, ребята нормально летали на Frsky,
короче - Таранис тебе нужно, давно говорю об этом - там постоянное Диверсити с прыганием по сетке.
Хотяяя конено может и не панацея - так - моё мнение.

Prikupets

Постоянно обновляется тут: github.com/Crashpilot1000/HarakiriWebstore1
RTH не достаточно, надо чтобы FailSafe его сам включал.

Prikupets

Андрей, ну причем тут diversity? У Futaba то же, но входной каскад глушится излучением от базовой станции. Вот если бы там фильтр стоял… Зато я знаю теперь супер место для тестирования приемников - в след. раз туда FrSky принесу и проверю - глушится ли. Можно еще и видео-передатчики протестить.

Вот рекомендуют заворачивать приемники в фольгу: rc.runryder.com/helicopter/t426144p1/

A lot of these towers are linked to base using microwave links. The beam-width is very narrow, and the field strength inside the beam is quite intense. If you fly though the beam, the power is high enough to get rectified inside the semiconductors in the receiver and screw up all the carefully designed working points. The result is a big glitch as you pass through the beam!It doesn’t happen to metal cased receivers (few and far between these days!) and one effective solution is to wrap the receiver in cooking foil! Note: the interference is generated directly inside the receiver, it doesn’t come down through the aerial!I don’t suppose wrapping a 2.4 GHz receiver in cooking foil is a good idea, but on the other hand these receivers will require better screening than VHF sets anyway! Also the reduced size should make them less susceptible to this kind of pick up.

pilot01
Prikupets:

Постоянно обновляется тут: github.com/Crashpilot1000/HarakiriWebstore1
RTH не достаточно, надо чтобы FailSafe его сам включал.

Андрей, спасибо за ссылку.
Если я не ошибаюсь, активацию RTH возможно запрограммировать чере FailSafe приемника?

chanov

Какой приёмыш для SDR-sharp используете, где брали? Надо проверенное заказать, а то много несовместимых сейчас на рынке.

Prikupets
chanov;bt137669

Какой приёмыш для SDR-sharp используете, где брали? Надо проверенное заказать, а то много несовместимых сейчас на рынке.

Не уверен, что у меня лучший: USB2.0 Digital DVB-T SDR+DAB+FM HDTV TV Tuner Receiver Stick HE RTL2832U+R820T
www.ebay.com.au/itm/…/201140299234?ssPageName=ADME…
Типа до 1.7GHz.

Prikupets
pilot01;bt137668

Андрей, спасибо за ссылку.
Если я не ошибаюсь, активацию RTH возможно запрограммировать чере FailSafe приемника?

В ArduPilot ставите FailSafe preset на газ например 965 мкс., и включаете фичу throttle FailSafe.
Но в Harakiri я этого не нашел, но там есть фича DeadPilot. Если сумма значений в каналах 1-4 в течении какого-то времени остается такой же с точносттью +/- 20, то считается, что приемник выдает failsafe preset, и включается режим FailSafe (и далее уже RTH, если есть GPS lock).

mw.c

static bool DeadPilot(void)
{
    static int16_t  lastchecksum = 0;
    static uint32_t deadtimer    = 0;
    bool            output       = false;
    int16_t         checksum     = 0;
    uint8_t         i;

    if (!f.ARMED || !cfg.fs_ddplt)
    {
        deadtimer = 0;
        return output;
    }
    for (i = 0; i < 4; i++) checksum += rcData[i];
    if (abs_int((int32_t)checksum - (int32_t)lastchecksum) > 20) deadtimer = 0;
    else if(!deadtimer) deadtimer = currentTimeMS + (uint32_t)cfg.fs_ddplt * 1000;
    lastchecksum = checksum;
    if (deadtimer && currentTimeMS > deadtimer) output = true;
    return output;
}
pilot01
Prikupets;bt137673

В ArduPilot ставите FailSafe preset на газ например 965 мкс., и включаете фичу throttle FailSafe.
Но в Harakiri я этого не нашел, но там есть фича DeadPilot. Если сумма значений в каналах 1-4 в течении какого-то времени остается такой же с точносттью +/- 20, то считается, что приемник выдает failsafe preset, и включается режим FailSafe (и далее уже RTH, если есть GPS lock).

Лаконичное название функции =)

А если активировать RTH (Aux канал в flight mode) с помощью failsafe на выделенный свободном канале (Aux)?

Prikupets

Ну наверное и так получится. Должно получиться, все равно под смену режимов 1-2 канала занимается… И на одном из них можно выставить RTH.

В mw.c:

//      SPECIAL RTL Crashpilot
#define RTLsettleTime 2000                                                  // 2 sec
...
            PHminSat = 5;                                                   // Sloppy PH is sufficient
            if (!RTLstate) RTLstate = 1;                                    // Start RTL Sequence if it isn't already running
            if (GPS_satnum < 5) RTLstate = 0;                               // Error!
            if (cfg.rtl_mnd && RTLstate == 1 && GPS_distanceToHome < cfg.rtl_mnd)
                RTLstate = 0;                                               // Dont Do RTL if too close and RTL not already running

            switch (RTLstate)
            {
            case 0:                                                         // Error!! Do landing
                rcData[THROTTLE] = cfg.rc_minchk - 10;                      // Put throttlestick to lowest-10
                break;
            case 1:                                                         // prepare timer
                RTLGeneralTimer = currentTimeMS + RTLsettleTime;
                RTLstate++;
                break;
            case 2:                                                         // Hover certain time and wait for solid PH
                if (currentTimeMS > RTLGeneralTimer && ph_status == PH_STATUS_DONE) RTLstate++;
                break;
            case 3:                                                         // Check hight and climb if neccessary
                if (cfg.rtl_mnh)
                {
                    if (EstAlt < ((uint16_t)cfg.rtl_mnh * 100)) GetClimbrateTorcDataTHROTTLE((int16_t)cfg.rtl_cr);
                    else RTLstate++;
                }
                else RTLstate++;                                            // For safety, skip if turned off
                break;
            case 4:                                                         // Wait for Tailstuff before RTL
                if (cfg.nav_controls_heading)                               // Tail control
                {
                    if (cfg.nav_tail_first) magHold = wrap_180((float)(GPS_directionToHome - 180));
                    else magHold = GPS_directionToHome;
                    if(fabsf(wrap_180(heading - magHold)) < 6.0f) RTLstate++; // Turns true, when in range of +-6 degrees
                }
                else RTLstate++;
                break;
            case 5:                                                         // Prepare RTL
                DistanceToHomeMetersOnRTLstart = GPS_distanceToHome;        // Set actual distance to Home in meters
                rcOptions[BOXGPSHOLD] = 0;                                  // GPS hold OFF
                rcOptions[BOXGPSHOME] = 1;                                  // Engage RTL
                RTLstate++;
                break;
            case 6:                                                         // OMG Do the f** RTL now
                rcOptions[BOXGPSHOLD] = 0;                                  // GPS hold OFF
                rcOptions[BOXGPSHOME] = 1;                                  // RTL
                tmp0 = (int32_t)GPS_distanceToHome - DistanceToHomeMetersOnRTLstart; // tmp0 contains flyawayvalue
                if ((cfg.gps_rtl_flyaway && tmp0 > (int32_t)cfg.gps_rtl_flyaway) ||
                        (wp_status == WP_STATUS_DONE && ph_status == PH_STATUS_DONE)) RTLstate++;
                break;
            case 7:                                                         // Do Autoland
                rcData[THROTTLE] = cfg.rc_minchk - 10;                      // Put throttlestick to lowest-10
                break;                                                      // Repeat forever because Autoland will disarm the thing
            }
        }
        else RTLstate = 0;                                                  // No BOXGPSHOME request? Reset Variable
//      SPECIAL RTL Crashpilot END

Кстати, научился компилировать baseflight и harakiri с помощью Keil и gcc-arm-none-eabi-4_9.
Качал: MDKCM515.EXE, MDK515.EXE с официального сайта Keil, и gcc-arm-none-eabi-4_9-2015q1-20150306-win32.zip.

pilot01
Prikupets;bt137675

Ну наверное и так получится. Должно получиться, все равно под смену режимов 1-2 канала занимается… И на одном из них можно выставить RTH.

В mw.c:


//      SPECIAL RTL Crashpilot
#define RTLsettleTime 2000                                                  // 2 sec
...
            PHminSat = 5;                                                   // Sloppy PH is sufficient
            if (!RTLstate) RTLstate = 1;                                    // Start RTL Sequence if it isn't already running
            if (GPS_satnum < 5) RTLstate = 0;                               // Error!
            if (cfg.rtl_mnd && RTLstate == 1 && GPS_distanceToHome < cfg.rtl_mnd)
                RTLstate = 0;                                               // Dont Do RTL if too close and RTL not already running

            switch (RTLstate)
            {
            case 0:                                                         // Error!! Do landing
                rcData[THROTTLE] = cfg.rc_minchk - 10;                      // Put throttlestick to lowest-10
                break;
            case 1:                                                         // prepare timer
                RTLGeneralTimer = currentTimeMS + RTLsettleTime;
                RTLstate++;
                break;
            case 2:                                                         // Hover certain time and wait for solid PH
                if (currentTimeMS > RTLGeneralTimer && ph_status == PH_STATUS_DONE) RTLstate++;
                break;
            case 3:                                                         // Check hight and climb if neccessary
                if (cfg.rtl_mnh)
                {
                    if (EstAlt < ((uint16_t)cfg.rtl_mnh * 100)) GetClimbrateTorcDataTHROTTLE((int16_t)cfg.rtl_cr);
                    else RTLstate++;
                }
                else RTLstate++;                                            // For safety, skip if turned off
                break;
            case 4:                                                         // Wait for Tailstuff before RTL
                if (cfg.nav_controls_heading)                               // Tail control
                {
                    if (cfg.nav_tail_first) magHold = wrap_180((float)(GPS_directionToHome - 180));
                    else magHold = GPS_directionToHome;
                    if(fabsf(wrap_180(heading - magHold)) < 6.0f) RTLstate++; // Turns true, when in range of +-6 degrees
                }
                else RTLstate++;
                break;
            case 5:                                                         // Prepare RTL
                DistanceToHomeMetersOnRTLstart = GPS_distanceToHome;        // Set actual distance to Home in meters
                rcOptions[BOXGPSHOLD] = 0;                                  // GPS hold OFF
                rcOptions[BOXGPSHOME] = 1;                                  // Engage RTL
                RTLstate++;
                break;
            case 6:                                                         // OMG Do the f** RTL now
                rcOptions[BOXGPSHOLD] = 0;                                  // GPS hold OFF
                rcOptions[BOXGPSHOME] = 1;                                  // RTL
                tmp0 = (int32_t)GPS_distanceToHome - DistanceToHomeMetersOnRTLstart; // tmp0 contains flyawayvalue
                if ((cfg.gps_rtl_flyaway && tmp0 > (int32_t)cfg.gps_rtl_flyaway) ||
                        (wp_status == WP_STATUS_DONE && ph_status == PH_STATUS_DONE)) RTLstate++;
                break;
            case 7:                                                         // Do Autoland
                rcData[THROTTLE] = cfg.rc_minchk - 10;                      // Put throttlestick to lowest-10
                break;                                                      // Repeat forever because Autoland will disarm the thing
            }
        }
        else RTLstate = 0;                                                  // No BOXGPSHOME request? Reset Variable
//      SPECIAL RTL Crashpilot END

Кстати, научился компилировать baseflight и harakiri с помощью Keil и gcc-arm-none-eabi-4_9.
Качал: MDKCM515.EXE, MDK515.EXE с официального сайта Keil, и gcc-arm-none-eabi-4_9-2015q1-20150306-win32.zip.

После чтения кода APM, небо и земля!

Prikupets

Будка скорее всего непричем, это Kabledon 400v 400A - ящик с фьюзами, а палка на нем - “marking pole”.

Vertyozi

Надеюсь на вашу помощь. Суть проблемы в том, что не работают все функции. У меня walkera f210. Полетник f3, после обновления перестал видеть некоторые функции. Немогу настроить фаилсейф. GUi тоже неработает. Версий много на гитхабе. У меня стояла 1.2.4. Один момент неработало, потом подключилось. После обновления автоматом до 1.2.5 перестал видеть эти параметры.