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

iBat

Сегодня впервые отлетал полный пак без происшествий 😁 доволен как слон.
Летал на Test8 с дефолтными пидами. В основном в Simple. Все здорово, но раза 3 столкнулся с глюком: коптер прямо во время полета резко меняет направление, относительно которого стики работают. 2 раза менялось градусов на 90, и 1 раз на все 180. Причем никакого уплывания нет - просто резко поменялось и все, летим дальше.
Loiter - то ли не работает, то ли я не умею его готовить. Все разы, что пытался его включить - ловил коптер у самой земли. 1 раз не поймал. Причем на газ вообще не реагирует.

mahowik
SovGVD:

я на квадрике не смещал ничего

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

iBat:

коптер прямо во время полета резко меняет направление, относительно которого стики работают.

если память не изменяет это и есть фишка симпл мода для новичков, т.е. как коптер не верти, попа его всегда к вам лицом будет 😃
это чеб не зарулиться и не потерять управление…

Alex_from_Israel
alexTAG:

Подскажите пожалуста, что я сделал не так? Коптер Y6 - все подсоединено согласно рисунка. При взлете идет юлой, как будто верт без стабилизатора!

Моторы неправильно подсоединены. На рисунках Ардукоптер. Посмотрите в Вики Мегапирата.

Ar2r:

MegaPirateNG_2.0.44_Alpah2.zip

Тротл вверх-вниз, а в планере Roll меняется.

В итоге почему-то Trotl, Yaw, Roll Поменялись местами. Где это исправить?

Если распайка приемника стандартная выблать Дефайн в APM_RC.cpp

У меня Y6 с стандартной распайкой приемника и моторы подключены, как в ВИКИ Мегапирата. Все работает адекватно. Была проблема с задними моторами, когда Yav поворачиваешь, коптер трял устойчивость. Оказалось, что были наоборот включены моторы. При отклонении стика руля направления верхние и нижние моторы ВСЕ должны работать одинаково. Или все верхние снижают обороты, а все нижние повышают. И наоборот, если в другую сторону.

Проверьте, в какую сторону вращаются моторы. Верхние против часовой стрелки, нижние по часовой.

LeonVS
iBat:

Loiter - то ли не работает, то ли я не умею его готовить.

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

LeonVS

Народ, а подскажите как выполнить какое то действо по достижению точки? Допустим сделать фото? Полагаю можно задействовать сервопривод… Даже есть команда “do_repeat_servo” это оно? Кто нибудь пробовал?

tusik
LeonVS:

подскажите как выполнить какое то действо по достижению точки

А еще как управлять с помощью джойстика?

LeonVS

А в ответ тишина… походу не кто сие дело еще не пробовал 😦

tusik:

А еще как управлять с помощью джойстика?

Ну самое простое наверно будет вот это дело:
hobbyking.com/…/__17165__BT_1_8_Channel_FPV_Joysti…

А так же можно тупо вывести контакты от резистора джоя и подпаятся вместо резисторов аппы 😃

tusik
LeonVS:

А так же можно тупо вывести контакты от резистора джоя и подпаятся вместо резисторов аппы

А зачем тогда в планере настройка джойстика?

LeonVS

А хз, возможно если пашет телеметрия полноценно, а не как у нас через одно место по АСР220… то скорей всего эта настройка для подключенного к компу джою 😃

SovGVD

насколько я понимаб это режим GUIDED, можно на карте тыркать - и коптер туда полетит, видимо и джойстиком от туда же рулится

Musgravehill
Sir_Alex:

Да и вообще, ерундень какая то с этими датчиками, если довольно сильно поболтать плату, то горизонт конкретно сбивается и потом потихоньку доплывает. Я думаю это из за того, что гира у нас относительно медленно опрашивается (раз в 4 мс = 250Hz). Если переделать на прерывания, то можно увеличить частоту выборок до 1KHz. Жалко у меня нету оригинального OilPan’a, что бы сравнить, как у них ведут себя датчики.

Алексей, я сейчас проверял Ардуино+AllinOne. Если “кувыркать” плату, то горизонт сбивается и медленно доплывает только за счет акселерометров. А если сильно не болтать, а делать резкие наклоны, то гиры мгновенно возвращают в горизонт. Я думаю, что в болтанку гиры дрейфуют и сбиваются, а по акселю выравнивание идет медленно (возможно, коэффициент гиры большой, а у акселя - мал, поэтому горизонт только за счет акселей медленно восстанавливается)

iBat

Что-то не так с Alpha 2. Делаю setup esc - все ок, пищит как положено. Потом можно даже погудеть нормально.
Отключаем-подключаем батарейку. ESC пищат, что тротл не в нижнем положении. Самый прикол, что это подтверждается показаниями Raw Sensors в планере - сразу после включения там где то 20% полосок на всех моторах. Хотя раньше там был почти минимум.

tusik
iBat:

это подтверждается показаниями Raw Sensors в планере

А пульт в планере калибровали?

iBat
tusik:

А пульт в планере калибровали?

В планере - нет. В терминале - да.

Musgravehill
Musgravehill:

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

Сглаживание акселя очень сильное (пробовал отказаться, горизонт плывет, все-равно)


AP_IMU_Oilpan::update(void)
{
	_gyro.x = _gyro_gain_x * _sensor_in(0, adc_values[0]);
	_gyro.y = _gyro_gain_y * _sensor_in(1, adc_values[1]);
	_gyro.z = _gyro_gain_z * _sensor_in(2, adc_values[2]);


	_accel_filtered.x = _accel_filtered.x * .98 + _accel.x * .02;
	_accel_filtered.y = _accel_filtered.y * .98 + _accel.y * .02;
	_accel_filtered.z = _accel_filtered.z * .98 + _accel.z * .02;


	return true;
}

Если в Планнере смотреть Test DCM, то значения очень быстро выравниваются в горизонт, а в Test IMU видно, что акселерометр медленно выходит на нужное значение. Значит, собака зарыта в IMU.

mahowik
Musgravehill:

Алексей, я сейчас проверял Ардуино+AllinOne. Если “кувыркать” плату, то горизонт сбивается и медленно доплывает только за счет акселерометров. А если сильно не болтать, а делать резкие наклоны, то гиры мгновенно возвращают в горизонт. Я думаю, что в болтанку гиры дрейфуют и сбиваются, а по акселю выравнивание идет медленно (возможно, коэффициент гиры большой, а у акселя - мал, поэтому горизонт только за счет акселей медленно восстанавливается)

Я както подрубал мультивийные датчики к пирату и с толкнулся с той же проблемой. На умеренно-быстрых поворотах все ок, а на оч. резких, либо если уж очень сильно кувыркать платку, сплошные доплывания. Олег тогда меня убедил что это из-за дешевых датчиков, я всеж настаивал что дело как раз в быстродейсвии системы в целом, т.к. в мультиви цикл ~300гц и гораздо сложнее выбиться из горизонта. Если память не изменяет, то у пирата цикл 50гц (по крайней мере Олег так писал), соот-но быстрые изменения угловых скоростей (высокие ускорения) система не в состоянии нормально “ловить”… Кроче Олег меня тогда убедил не суваться с вии датчиками в пират… Жаль кроче, а то может и на вийных датчиках полетел бы тогда. 😃

SovGVD

никто OSD от МегаПиратоСамолета не ковыряет щас? а то занятся, а друг уже есть =)

Musgravehill
mahowik:

быстрые изменения угловых скоростей (высокие ускорения) система не в состоянии нормально “ловить”

Александр, но почему тогда система быстро не “доплывает” в горизонт за счет акселей?
“Поколбасил” плату и замер, держу ровно и в покое: Гиры = 0, но аксели сигналят, что наклон 90-120-180 градусов!

Гиры явно работают, потому что отлично ловят быстрые короткие наклоны (такие в полете происходят). А вот аксель BMA180 сильно зажат, что-то не дает ему быстро вернуть горизонт.

Я смотрю RAW данные - никакого доплывания там нет! Значения мгновенно встают в нужные Замедление происходит где-то в модели IMU\DCM. Частота опроса (fast_loop) 250Гц.

mahowik
Musgravehill:

Александр, но почему тогда система быстро не “доплывает” в горизонт за счет акселей? “Поколбасил” плату и замер, держу ровно и в покое: Гиры = 0, но аксели сигналят, что наклон 90-120-180 градусов!

С этим согласен, влияние акселей видимо значительно задушено в IMU…

Musgravehill:

Гиры явно работают, потому что отлично ловят быстрые короткие наклоны (такие в полете происходят)

У меня “доплывание” на 20-30гр. вопроизводилось и при разовых оч. резких наклонах (гира 3205->3200), потому и решил что не хватает пирату скорости ловить быстрые ускорения, т.к. в мультивии поблема с доплыванием на разовые резкие повороты вопроизводилась всего 3-5гр.

з.ы. хотя вот вспомнил, что тогда я не учел что НЧ фильтр в вии был 256гц а в пирате 20гц… может в этом дело, т.к. если я правильно понимаю то чем ниже значения фильтра, тем ниже способность гиры измерять высокие/быстрые угловые ускорения…

Musgravehill
mahowik:

влияние акселей видимо значительно задушено в IMU

mahowik:

не хватает пирату скорости ловить быстрые ускорения

Поэтому смысл покупать крутые датчики (?). Данные с них быстро идут, а обработка тормозит. И я не могу сказать, что AllinOne - “шумная”, очень даже нормальная.

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


Нашел _adc_constraint = мое значение 12000; // 360degree было 5100


AP_IMU_Oilpan::_sensor_in(uint8_t channel, int adc_value)
{
    adc_in = adc_value;

    // constrain sensor readings to the sensible range

    if (fabs(adc_in) > _adc_constraint) {
        adc_constraints++;                                              // We keep track of the number of times
        adc_in = constrain(adc_in, -_adc_constraint, _adc_constraint);    // Throw out nonsensical values
    }
    return adc_in;
}