Специальные цены   новые товары
+ Ответить в теме
Страница 74 из 226 ПерваяПервая ... 64 72 73 74 75 76 84 ... ПоследняяПоследняя
Показано с 2,921 по 2,960 из 9004

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

Тема раздела Коптеры. Комплектующие, сборка, настройка. в категории Квадрокоптеры и мультироторы; Блинчиком в ветер особо не полетаешь...

  1. #2921

    Регистрация
    06.05.2005
    Адрес
    Санкт-Петербург
    Возраст
    40
    Сообщений
    1,309
    Блинчиком в ветер особо не полетаешь

  2.  
  3. #2922

    Регистрация
    29.01.2011
    Адрес
    Дмитров
    Возраст
    29
    Сообщений
    4,591
    Записей в дневнике
    77
    в ветер вообще особо не полетаешь если коптер легкий и ничего внизу не подвешанно к нему (аккум тяжелый, камера тяжелая)

  4. #2923

    Регистрация
    02.06.2011
    Адрес
    Москва
    Возраст
    31
    Сообщений
    353
    MegaPirateNG 2.0.44 Alpah2

    Аксель не удается откалибровать.
    Пробовал даже с самым последним планером.

  5. #2924

    Регистрация
    29.01.2011
    Адрес
    Дмитров
    Возраст
    29
    Сообщений
    4,591
    Записей в дневнике
    77
    а в CLI калибруется (если CLI вообще есть в новой)? (setup - level)
    кстаии обновил рисовалку, теперь немного считает коллизии, т.е. если межу пропами расстоние меньше 2см, то ругнется, расскажет сколько минимум надо и нарисует как будет выглядеть =) впереди просчет складывающейся рамы... в идеале можно отдавать чертеж и примерный вес рамы, но нюансов многовато, поэтому не обещаю

  6.  
  7. #2925

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

  8. #2926

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    Цитата Сообщение от SovGVD Посмотреть сообщение
    я на квадрике не смещал ничего
    ну контроллер то держать будет в равновесии, но фактичеки нагрузка на моторы будет не равномерная...

    Цитата Сообщение от iBat Посмотреть сообщение
    коптер прямо во время полета резко меняет направление, относительно которого стики работают.
    если память не изменяет это и есть фишка симпл мода для новичков, т.е. как коптер не верти, попа его всегда к вам лицом будет
    это чеб не зарулиться и не потерять управление...

  9. #2927
    Давно не был
    Регистрация
    01.10.2010
    Адрес
    Ashkelon israel
    Возраст
    62
    Сообщений
    1,131
    Записей в дневнике
    8
    Цитата Сообщение от alexTAG Посмотреть сообщение
    Подскажите пожалуста, что я сделал не так? Коптер Y6 - все подсоединено согласно рисунка. При взлете идет юлой, как будто верт без стабилизатора!
    Моторы неправильно подсоединены. На рисунках Ардукоптер. Посмотрите в Вики Мегапирата.

    Цитата Сообщение от Ar2r Посмотреть сообщение
    MegaPirateNG_2.0.44_Alpah2.zip

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

    В итоге почему-то Trotl, Yaw, Roll Поменялись местами. Где это исправить?
    Если распайка приемника стандартная выблать Дефайн в APM_RC.cpp

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

    Проверьте, в какую сторону вращаются моторы. Верхние против часовой стрелки, нижние по часовой.
    Последний раз редактировалось Alex_from_Israel; 24.09.2011 в 20:46.

  10.  
  11. #2928

    Регистрация
    06.05.2005
    Адрес
    Санкт-Петербург
    Возраст
    40
    Сообщений
    1,309
    Цитата Сообщение от iBat Посмотреть сообщение
    Loiter - то ли не работает, то ли я не умею его готовить.
    Прежде чем мучать лойтер, надо домучать альт холд, и только когда он начнет держать высоту уже переходить к лойтер. Проблемы у вас как раз с первым пунктом, на газ в этих режимах он не реагирует, даже если его совсем сбросить, так как пытается удержать коптер на заданной высоте. Смотрите показания барометра ну и сонара если имеется.

  12. #2929

    Регистрация
    06.05.2005
    Адрес
    Санкт-Петербург
    Возраст
    40
    Сообщений
    1,309
    Народ, а подскажите как выполнить какое то действо по достижению точки? Допустим сделать фото? Полагаю можно задействовать сервопривод... Даже есть команда "do_repeat_servo" это оно? Кто нибудь пробовал?

  13. #2930

    Регистрация
    23.01.2011
    Адрес
    Минск
    Возраст
    46
    Сообщений
    1,345
    Цитата Сообщение от LeonVS Посмотреть сообщение
    подскажите как выполнить какое то действо по достижению точки
    А еще как управлять с помощью джойстика?

  14. #2931

    Регистрация
    06.05.2005
    Адрес
    Санкт-Петербург
    Возраст
    40
    Сообщений
    1,309
    А в ответ тишина... походу не кто сие дело еще не пробовал

    Цитата Сообщение от tusik Посмотреть сообщение
    А еще как управлять с помощью джойстика?
    Ну самое простое наверно будет вот это дело:
    http://www.hobbyking.com/hobbyking/s..._Joystick.html

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

  15. #2932

    Регистрация
    23.01.2011
    Адрес
    Минск
    Возраст
    46
    Сообщений
    1,345
    Цитата Сообщение от LeonVS Посмотреть сообщение
    А так же можно тупо вывести контакты от резистора джоя и подпаятся вместо резисторов аппы
    А зачем тогда в планере настройка джойстика?

  16. #2933

    Регистрация
    06.05.2005
    Адрес
    Санкт-Петербург
    Возраст
    40
    Сообщений
    1,309
    А хз, возможно если пашет телеметрия полноценно, а не как у нас через одно место по АСР220... то скорей всего эта настройка для подключенного к компу джою

  17. #2934

    Регистрация
    29.01.2011
    Адрес
    Дмитров
    Возраст
    29
    Сообщений
    4,591
    Записей в дневнике
    77
    насколько я понимаб это режим GUIDED, можно на карте тыркать - и коптер туда полетит, видимо и джойстиком от туда же рулится

  18. #2935

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    29
    Сообщений
    1,392
    Цитата Сообщение от Sir Alex Посмотреть сообщение
    Да и вообще, ерундень какая то с этими датчиками, если довольно сильно поболтать плату, то горизонт конкретно сбивается и потом потихоньку доплывает. Я думаю это из за того, что гира у нас относительно медленно опрашивается (раз в 4 мс = 250Hz). Если переделать на прерывания, то можно увеличить частоту выборок до 1KHz. Жалко у меня нету оригинального OilPan'a, что бы сравнить, как у них ведут себя датчики.
    Алексей, я сейчас проверял Ардуино+AllinOne. Если "кувыркать" плату, то горизонт сбивается и медленно доплывает только за счет акселерометров. А если сильно не болтать, а делать резкие наклоны, то гиры мгновенно возвращают в горизонт. Я думаю, что в болтанку гиры дрейфуют и сбиваются, а по акселю выравнивание идет медленно (возможно, коэффициент гиры большой, а у акселя - мал, поэтому горизонт только за счет акселей медленно восстанавливается)

  19. #2936

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

  20. #2937

    Регистрация
    23.01.2011
    Адрес
    Минск
    Возраст
    46
    Сообщений
    1,345
    Цитата Сообщение от iBat Посмотреть сообщение
    это подтверждается показаниями Raw Sensors в планере
    А пульт в планере калибровали?

  21. #2938

    Регистрация
    02.06.2011
    Адрес
    Калуга
    Возраст
    31
    Сообщений
    191
    Цитата Сообщение от tusik Посмотреть сообщение
    А пульт в планере калибровали?
    В планере - нет. В терминале - да.

  22. #2939

    Регистрация
    23.01.2011
    Адрес
    Минск
    Возраст
    46
    Сообщений
    1,345
    Попробуйте в планере

  23. #2940

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    29
    Сообщений
    1,392
    Цитата Сообщение от 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.
    Последний раз редактировалось Musgravehill; 25.09.2011 в 18:45.

  24. #2941

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Алексей, я сейчас проверял Ардуино+AllinOne. Если "кувыркать" плату, то горизонт сбивается и медленно доплывает только за счет акселерометров. А если сильно не болтать, а делать резкие наклоны, то гиры мгновенно возвращают в горизонт. Я думаю, что в болтанку гиры дрейфуют и сбиваются, а по акселю выравнивание идет медленно (возможно, коэффициент гиры большой, а у акселя - мал, поэтому горизонт только за счет акселей медленно восстанавливается)
    Я както подрубал мультивийные датчики к пирату и с толкнулся с той же проблемой. На умеренно-быстрых поворотах все ок, а на оч. резких, либо если уж очень сильно кувыркать платку, сплошные доплывания. Олег тогда меня убедил что это из-за дешевых датчиков, я всеж настаивал что дело как раз в быстродейсвии системы в целом, т.к. в мультиви цикл ~300гц и гораздо сложнее выбиться из горизонта. Если память не изменяет, то у пирата цикл 50гц (по крайней мере Олег так писал), соот-но быстрые изменения угловых скоростей (высокие ускорения) система не в состоянии нормально "ловить"... Кроче Олег меня тогда убедил не суваться с вии датчиками в пират... Жаль кроче, а то может и на вийных датчиках полетел бы тогда.

  25. #2942

    Регистрация
    29.01.2011
    Адрес
    Дмитров
    Возраст
    29
    Сообщений
    4,591
    Записей в дневнике
    77
    никто OSD от МегаПиратоСамолета не ковыряет щас? а то занятся, а друг уже есть =)

  26. #2943

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    29
    Сообщений
    1,392
    Цитата Сообщение от mahowik Посмотреть сообщение
    быстрые изменения угловых скоростей (высокие ускорения) система не в состоянии нормально "ловить"
    Александр, но почему тогда система быстро не "доплывает" в горизонт за счет акселей?
    "Поколбасил" плату и замер, держу ровно и в покое: Гиры = 0, но аксели сигналят, что наклон 90-120-180 градусов!

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

    Я смотрю RAW данные - никакого доплывания там нет! Значения мгновенно встают в нужные Замедление происходит где-то в модели IMU\DCM. Частота опроса (fast_loop) 250Гц.
    Последний раз редактировалось Musgravehill; 25.09.2011 в 19:31.

  27. #2944

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Александр, но почему тогда система быстро не "доплывает" в горизонт за счет акселей? "Поколбасил" плату и замер, держу ровно и в покое: Гиры = 0, но аксели сигналят, что наклон 90-120-180 градусов!
    С этим согласен, влияние акселей видимо значительно задушено в IMU...
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Гиры явно работают, потому что отлично ловят быстрые короткие наклоны (такие в полете происходят)
    У меня "доплывание" на 20-30гр. вопроизводилось и при разовых оч. резких наклонах (гира 3205->3200), потому и решил что не хватает пирату скорости ловить быстрые ускорения, т.к. в мультивии поблема с доплыванием на разовые резкие повороты вопроизводилась всего 3-5гр.

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

  28. #2945

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    29
    Сообщений
    1,392
    Цитата Сообщение от 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;
    }
    Последний раз редактировалось Musgravehill; 25.09.2011 в 20:32.

  29. #2946

    Регистрация
    06.05.2005
    Адрес
    Санкт-Петербург
    Возраст
    40
    Сообщений
    1,309
    Цитата Сообщение от SovGVD Посмотреть сообщение
    никто OSD от МегаПиратоСамолета не ковыряет щас? а то занятся, а друг уже есть =)
    Увы нет... А хотелось бы, квадрик все же это только низко и близко, а иногда хотца далеко и высоко Поэтому самолетный вариант обновленный бы точно не помешал

  30. #2947

    Регистрация
    29.01.2011
    Адрес
    Дмитров
    Возраст
    29
    Сообщений
    4,591
    Записей в дневнике
    77
    я чето застрял с прошивкой e-osd, avrdude умеет шить atmega88, на e-osd atmega88p - вот думаю рассказть ему чтоб забил на различия? или 88 и 88P отличаются принципиально?
    Код:
    avrdude: Device signature = 0x1e930f
    avrdude: Expected signature for ATMEGA88 is 1E 93 0A
             Double check chip, or use -F to override this check.
    udp: обновил avrdude, теперь он знает про 88p =)
    upd2: прошился, работает, показывает много инфы... осталось код в пирата вкрутить
    Последний раз редактировалось SovGVD; 25.09.2011 в 21:46.

  31. #2948

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    29
    Сообщений
    1,392
    Проблема медленного доплывания горизонта решена! Вес акселя в этом процессе был зажат. Я расширил границы "ошибок" определения положения от 1.17 до 30 единиц по модулю. И повысил вес акселя от (0..1) до 10 единиц.

    Положение коптера в Планнере мгновенно определяется. Как летает - не знаю.
    Код:
    AP_DCM::drift_correction(void)
    {
    	//Compensation the Roll, Pitch and Yaw drift.
    	//float mag_heading_x;
    	//float mag_heading_y;
    	float error_course;
    	float accel_magnitude;
    	float accel_weight;
    	float integrator_magnitude;
    	//static float scaled_omega_P[3];
    	//static float scaled_omega_I[3];
    	static bool in_motion = false;
    	Matrix3f rot_mat;
    
    	//*****Roll and Pitch***************
    
    	// Calculate the magnitude of the accelerometer vector
    	accel_magnitude = _accel_vector.length() / 9.80665f;
    
    	// Dynamic weighting of accelerometer info (reliability filter)
    	// Weight for accelerometer info (<0.5G = 0.0, 1G = 1.0 , >1.5G = 0.0)
    	//accel_weight = constrain(1 - 3 * fabs(1 - accel_magnitude), 0, 1);	// upped to (<0.66G = 0.0, 1G = 1.0 , >1.33G = 0.0)
            accel_weight = 10.0;  //повышаем вес акселя, чтобы быстрее доплывал горизонт
    	//	We monitor the amount that the accelerometer based drift correction is deweighted for performance reporting
    	_health = constrain(_health+(0.02 * (accel_weight - .5)), 0, 1);  //вроде нигде не используется. сэкономить время и убрать???
    
    	// adjust the ground of reference
    	_error_roll_pitch =  _dcm_matrix.c % _accel_vector;			// Equation 27  *** sign changed from prev implementation???
            
    		
    	// error_roll_pitch are in Accel m/s^2 units
    	// Limit max error_roll_pitch to limit max omega_P and omega_I
    	_error_roll_pitch.x = constrain(_error_roll_pitch.x, -30.00f, 30.00f);   //было от -1.17 до +1.17   зачем? 
    	_error_roll_pitch.y = constrain(_error_roll_pitch.y, -30.00f, 30.00f);  //в raw приходит от -25 до +25, не будем сужать диапазон
    	_error_roll_pitch.z = constrain(_error_roll_pitch.z, -30.00f, 30.00f);  
    
    	_omega_P =  _error_roll_pitch * (_kp_roll_pitch * accel_weight);  //теперь горизонт быстро доплывет!
    	_omega_I += _error_roll_pitch * (_ki_roll_pitch * accel_weight);
    
    
    	//*****YAW***************
    
    	if (_compass) {
    		// We make the gyro YAW drift correction based on compass magnetic heading
    		error_course = (_dcm_matrix.a.x * _compass->heading_y) - (_dcm_matrix.b.x * _compass->heading_x);	// Equation 23, Calculating YAW error
    
    	} else {
    
    		// Use GPS Ground course to correct yaw gyro drift
    		if (_gps->ground_speed >= SPEEDFILT) {
    
    			_course_over_ground_x = cos(ToRad(_gps->ground_course/100.0));
    			_course_over_ground_y = sin(ToRad(_gps->ground_course/100.0));
    			if(in_motion) {
    				error_course = (_dcm_matrix.a.x * _course_over_ground_y) - (_dcm_matrix.b.x * _course_over_ground_x);	// Equation 23, Calculating YAW error
    			} else  {
    				float cos_psi_err, sin_psi_err;
    				// This is the case for when we first start moving and reset the DCM so that yaw matches the gps ground course
    				// This is just to get a reasonable estimate faster
    				yaw = atan2(_dcm_matrix.b.x, _dcm_matrix.a.x);
    				cos_psi_err = cos(ToRad(_gps->ground_course/100.0) - yaw);
    				sin_psi_err = sin(ToRad(_gps->ground_course/100.0) - yaw);
    				// Rxx = cos psi err, Rxy = - sin psi err, Rxz = 0
    				// Ryx = sin psi err, Ryy = cos psi err,   Ryz = 0
    				// Rzx = Rzy = 0, Rzz = 1
    				rot_mat.a.x = cos_psi_err;
    				rot_mat.a.y = -sin_psi_err;
    				rot_mat.b.x = sin_psi_err;
    				rot_mat.b.y = cos_psi_err;
    				rot_mat.a.z = 0;
    				rot_mat.b.z = 0;
    				rot_mat.c.x = 0;
    				rot_mat.c.y = 0;
    				rot_mat.c.z = 1.0;
    
    				_dcm_matrix = rot_mat * _dcm_matrix;
    				in_motion =  true;
    				error_course = 0;
    			}
    
    		} else {
    			error_course = 0;
    			in_motion = false;
    		}
    	}
    
    	_error_yaw = _dcm_matrix.c * error_course;	// Equation 24, Applys the yaw correction to the XYZ rotation of the aircraft, depeding the position.
    
    	_omega_P += _error_yaw * _kp_yaw;			// Adding yaw correction to proportional correction vector.
    	_omega_I += _error_yaw * _ki_yaw;			// adding yaw correction to integrator correction vector.
    
    	//	Here we will place a limit on the integrator so that the integrator cannot ever exceed half the saturation limit of the gyros
    	integrator_magnitude = _omega_I.length();
    	if (integrator_magnitude > radians(300)) {
    		//_omega_I *= (0.5f * radians(300) / integrator_magnitude); // Why do we have this discontinuous?  EG, why the 0.5? Я тоже не знаю, убрал
    	}
    	
    }
    конец.
    --------------------
    Другая идея. Показания акселя делятся на 4 (adc_value[4] = ((rawADC_BMA180[3]<<8) | (rawADC_BMA180[2])) >> 2; ).
    То есть, разрешение снижается искуственно. Если в AP_ADC_ADS7844.cpp убрать деление (adc_value[4] = ((rawADC_BMA180[3]<<8) | (rawADC_BMA180[2])); ), то диапазон значений возрастает.
    Но это влечет за собой:
    AP_IMU_Oilpan.h _gravity = 11200, а не 2730; ///< 1G (For BMA180) in the raw data coming from the accelerometer
    _accel_scale = 9.80665 / 11200, а не 2730;
    _adc_constraint = ? станет больше ? 5100; // 360degree
    _accel_total_cal_change = ? больше? 4.0;
    _accel_max_cal_offset = Больше? 250.0;
    Возможно, где-то еще будут переполнения. Если купить серьезные аксели и гиры, то код придется адаптировать(?)
    Последний раз редактировалось Musgravehill; 25.09.2011 в 22:07.

  32. #2949

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Другая идея. Показания акселя делятся на 4 (adc_value[4] = ((rawADC_BMA180[3]<<8) | (rawADC_BMA180[2])) >> 2; ). То есть, разрешение снижается искуственно. Если в AP_ADC_ADS7844.cpp убрать деление (adc_value[4] = ((rawADC_BMA180[3]<<8) | (rawADC_BMA180[2])); ), то диапазон значений возрастает. Но это влечет за собой: AP_IMU_Oilpan.h _gravity = 11200, а не 2730; ///< 1G (For BMA180) in the raw data coming from the accelerometer _accel_scale = 9.80665 / 11200, а не 2730; _adc_constraint = ? станет больше ? 5100; // 360degree _accel_total_cal_change = ? больше? 4.0; _accel_max_cal_offset = Больше? 250.0; Возможно, где-то еще будут переполнения. Если купить серьезные аксели и гиры, то код придется адаптировать(?)
    Это не так. BMA180 имеет 14 бит разрешение, вот на эти 2 бита и смещается значение. Так что все там правильно.

    По гире, я думаю проблема в том, что она работает на частоте 250Гц, что не достаточно для отработки быстрых перемещений. Надо повышать частоту, например до 500Гц или 1КГц. Предполагаю, что надо задействовать INT Gyro, что бы успевать считывать с нее данные.

  33. #2950

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    29
    Сообщений
    1,392
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Проблема медленного доплывания горизонта решена!
    ArduCopter Mega: порт на обычную Arduino (тестим)

    Вот что бывает после болтанки в руке:


    Цитата Сообщение от Sir Alex Посмотреть сообщение
    Это не так. BMA180 имеет 14 бит разрешение, вот на эти 2 бита и смещается значение. Так что все там правильно.
    В мультивие BMA180 смещается >>5. Странно, но ладно.
    Цитата Сообщение от Sir Alex Посмотреть сообщение
    По гире, я думаю проблема в том, что она работает на частоте 250Гц, что не достаточно для отработки быстрых перемещений. Надо повышать частоту, например до 500Гц или 1КГц. Предполагаю, что надо задействовать INT Gyro, что бы успевать считывать с нее данные.
    Это было бы отлично! По гире видно, что очень быстрые наклоны она не отрабатывает, кратковременные скачки не успевают захватиться и интегрироваться.

  34. #2951

    Регистрация
    23.01.2011
    Адрес
    Минск
    Возраст
    46
    Сообщений
    1,345
    Только что отлетал два пака на 44альфа2. Летает стабильно. Один раз был глюк. Летал на алт-холде в полутора метрах от земли. На стоковых пидах колебания порядка 50 см. При переключении в стабиле коптер стал на бок и вошел в планету. После пробывал много много раз менять режимы в руках - такого не было. РТЛ работает, но скорость возврата гораздо больше чем на 40 прошивке

  35. #2952

    Регистрация
    29.01.2011
    Адрес
    Дмитров
    Возраст
    29
    Сообщений
    4,591
    Записей в дневнике
    77
    итак, OSD, который писал Олег, но так и не добавил в коптерную версию прошивки


    пока что работает только авиагоризонт (остальное не тестилось), остальное вернуть не проблема - надо только значения с нужных параметров отсылать
    прошивал через ардуинку (скетч ArduinoISP) + avrdude:
    Код:
    /usr/local/bin/avrdude -p m88p -P /dev/ttyUSB0 -c avrisp -b 19200 -e -U flash:w:mpo.hex
    Запаять провод на 30 ногу (на фотке тут 29, 30 и 31 почти слились, припаивать надо к 3 ноге, считая сверху слева, крайне не удобно паять!), а другой конец на TX1, в прошивке (SVN) раскоментить //#define OSD ENABLED

    распиновка E-OSD (стоит перепроверить)


    судя по коду он должне корректно показывать высоту (в метрах), вместо компаса (то что сверху над горизонтом) - направление домой, скорость берется от GPS, дистанция до дома тоже
    а еще у меня не влезает строчка со статусами аппы/гпс и собственно сами гпс координаты =) строк чтоли не хватает в камере
    некорректно показывает режим полета (расчитано на самолет, надо перешивать сам e-osd с новыми значениями)
    данные о батарекий берет не с самой OSDшки =( так что придется (даже надо, особенно для автополета) допаивать делитель

    зы: думаю заказать еще одну OSDшку, малоли спалю =)
    Последний раз редактировалось SovGVD; 26.09.2011 в 03:11.

  36. #2953

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,291
    Записей в дневнике
    19
    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Проблема медленного доплывания горизонта решена! Вес акселя в этом процессе был зажат.
    Видимо в этом и было дело. Ща вот вспомнил, что пробовал на днях в DCM мультивии уменьшать вес акселя и получал тотже эффект доплывания, НО судя по всему это сделано в АС не просто так. Из личных наблюдений, аксель более чувствителен к вибрациям (нунчак по аналогу или bma020 в сравнении с гирой 3205). И видимо если уменьшить его вес в DCM, то углы будут высчитываться в основном на показаниях гиры, которая менее чувствительна к вибрациям.
    В мультивии стабмоде так и не полетел в итоге (сегодня тестил на bma020), т.к. только дашь газку аксель сходит с ума и никакими предварительными калибровками не равняется, хотя в ГУИ при выключенных моторах красота!
    Надо будет существенно увеличить GYR_CMPF_FACTOR и попробовать подлетнуть...

    Код:
    /* Set the Gyro Weight for Gyro/Acc complementary filter */
    /* Increasing this value would reduce and delay Acc influence on the output of the filter*/
    /* Default WMC value: 300*/
    #define GYR_CMPF_FACTOR 310.0f

  37. #2954

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    29
    Сообщений
    1,392
    Цитата Сообщение от mahowik Посмотреть сообщение
    аксель более чувствителен к вибрациям
    Да, он гораздо более шумный.

    Цитата Сообщение от mahowik Посмотреть сообщение
    углы будут высчитываться в основном на показаниях гиры, которая менее чувствительна к вибрациям.
    1. Ровный полет: вес акселя =1
    2. полет с перегрузками (или вибрация): вес акселя -> 0 accel_weight = constrain(1 - 3 * fabs(1 - accel_magnitude), 0, 1);

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

    Попробую вечером сохранить большой вес акселя, но жестко фильтровать его (accel_filtered). Еще в IMU надо покопать, там тоже какие-то ограничения есть.
    kp_roll_pitch(0.05967) ki_roll_pitch(0.00001278) и error_roll_pitch тоже можно потестировать.
    Последний раз редактировалось Musgravehill; 26.09.2011 в 10:41.

  38. #2955

    Регистрация
    06.05.2005
    Адрес
    Санкт-Петербург
    Возраст
    40
    Сообщений
    1,309
    Цитата Сообщение от SovGVD Посмотреть сообщение
    никто OSD от МегаПиратоСамолета не ковыряет щас? а то занятся, а друг уже есть =)
    Глеб, а в чем заключается суть портирования? Изменения портов ввода вывода, или все гораздо сложней?
    Потестил сегодня режим авто... эх нравится мне 40 портированная прошивка (тест8), РТЛ работает, полет по точкам работает, высоту держит! Вот ее бы портировать на самули а? Есть умельцы в русских селеньях ?

  39. #2956

    Регистрация
    08.07.2011
    Адрес
    Украина
    Возраст
    30
    Сообщений
    52
    Кто нибудь пробовал использовать http://habrahabr.ru/blogs/DIY/125214/ (не реклама) заместо APC220? Сделал по инструкции к APC220 (поменял скорость) все подключилось но в планере показывает что плата повернута влево градусов на 190, хотя через юсб кабель нормально показывает. Прошивка родная (black vortex).
    Подскажите что нужно изменить в MegaPirateNG_2.0.40_Test8 чтобы работал на black vortex?
    Спасибо!

  40. #2957
    Y@N
    Y@N вне форума

    Регистрация
    13.10.2006
    Адрес
    Nesher (Орел) Israel
    Возраст
    43
    Сообщений
    1,490
    Посмотрите надцать страниц ранее. Или спросите Хатуля

  41. #2958

    Регистрация
    29.01.2011
    Адрес
    Дмитров
    Возраст
    29
    Сообщений
    4,591
    Записей в дневнике
    77
    Цитата Сообщение от LeonVS Посмотреть сообщение
    Глеб, а в чем заключается суть портирования?
    портирование OSD? или самого ArduCopter?
    в OSD надо тупо поменять значения режимов (и для моей камерки с 420 линиями еще и сдвиги для блока с тестом и графикой, а то за пределы всё уходит), в ардукоптере сложнее: http://code.google.com/p/megapirateng/wiki/portmanual (кто-то пополет по мере пиления?)

  42. #2959

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Цитата Сообщение от DossJ Посмотреть сообщение
    Кто нибудь пробовал использовать http://habrahabr.ru/blogs/DIY/125214/ (не реклама) заместо APC220?
    Я использовал, тока не помню, что бы у меня была разница с USB.

    Цитата Сообщение от Musgravehill Посмотреть сообщение
    Это было бы отлично! По гире видно, что очень быстрые наклоны она не отрабатывает, кратковременные скачки не успевают захватиться и интегрироваться.
    Вчера думал, куда же прикрутить INT Gyro... так и не придумал, т.к. походу все выводы, на которые можно повесить прерывание - заняты.
    Еще можно задействовать INT Baro (как в оригинальном AC), для этого можно задйствовать любой цифровой вывод (которых полно свободных).

    И еще, если тут есть специалисты в микроконтроллерах. Допустим мы подключим INT Gyro к одному из выводов и повесим на него прерывание. Как лучше организовать чтение значений гиры? Прямо в коде прерывания наверное нельзя... Видимо надо выставлять какой то флаг готовности и в основном цикле программы, вызывать чтение гиры как можно быстрее...? Но во втором случае, есть вероятность пропустить одну из итераций, т.к. у нас есть "медленный" код, который работает на частоте 50Hz...

    UPD: Походу придумал - можно TX Sonar перенести на обычные цифровые выходы, а его пин задействовать для INT Gyro... сегодня попробую вечером

  43. #2960

    Регистрация
    11.01.2011
    Адрес
    Ярославль
    Возраст
    29
    Сообщений
    1,392
    Цитата Сообщение от Sir Alex Посмотреть сообщение
    Вчера думал, куда же прикрутить INT Gyro... так и не придумал, т.к. походу все выводы, на которые можно повесить прерывание - заняты.
    Я думал сделать супер_быстрый цикл 1 кГц, в нем проверять флаг готовности. Gyro INT подать на d**. Если d** = 1, то считаем с гиры.

    Нужно узнать время на считывания гиры и интегрирование, от этого задавать время сверх_быстрого цикла.
    Как потом отдавать интегрированное значение в DCM ?
    ------------
    Или в супер_быстром цикле 1 кГц проверять флаг готовности. Gyro INT подать на d**. Если d** = 1, то считаем с гиры, значение акселя берем старое, все это подаем в DCM.fast_update();

    Цитата Сообщение от Sir Alex Посмотреть сообщение
    можно TX Sonar перенести на обычные цифровые выходы, а его пин задействовать для INT Gyro
    А что вызывать в коде прерывания? readAHRS() ? Или считывать гиро и копить, потом отдавать в IMU ?

+ Ответить в теме

Похожие темы

  1. mega 88 TQFP - проблемы сигатуры
    от Texnik в разделе Самодельная электроника, компьютерные программы
    Ответов: 11
    Последнее сообщение: 12.01.2012, 01:55
  2. Создание квадрокоптера на Arduino
    от Spin7ion в разделе Коптеры. Комплектующие, сборка, настройка.
    Ответов: 75
    Последнее сообщение: 15.11.2011, 19:10
  3. Продам Mega Power Infinity 960SR Digital Charger + Mega Power LCB-12S DeluxePro Balancer + БП MW S-350-15 (15V, 350W)
    от morro_lucky в разделе Барахолка. Аккумуляторы, зарядники
    Ответов: 3
    Последнее сообщение: 06.05.2011, 14:20
  4. Конфигурация Arducopter
    от Stulikov в разделе Коптеры. Комплектующие, сборка, настройка.
    Ответов: 28
    Последнее сообщение: 02.05.2011, 17:04
  5. Продам зарядное устройство mega power gemini-2014 duo 600w twins charger
    от kolobok в разделе Барахолка. Аккумуляторы, зарядники
    Ответов: 2
    Последнее сообщение: 27.01.2011, 16:45

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения