ArduCopter Mega: порт на обычную Arduino (тестим)
оффтоп: хз как в России, но конкретно в Дубне разливное не фильтрованное в половине магазинов есть (в нонейм бутылку наливают и езжай домой), по вкусу вполне похоже на пиво, пенится и даже когда выдыхается (оно же бродить должно! какое нафиг выдыхается?) всеравно можно пить =) почти всё что в бутылках - производство одного завода в г.Клин, а отсюда и одинаковый вкус - разница только в ощущених от надписи на бутылке и того что купил дороже
но это всё строго ИМХО, может другим больше везет =) последнее вкусное, приятное пиво пил года 3 назад в каком то клубе и было это разливной туборг
уже думаю - а не попробовать ли сварить самому? но гемору =)
любая CCD камера хорошо к вибрациям относится, в отличае от CMOS
Да уж… Сочуйствую… Самому варить, это не коптер строить, однако! Гемору намного больше. Ладно, офф топ прекращаю, просто еду на Мертвое море в четверг, а там пиво вроде вашего. Все на один вкус. Затарился жестянками с Карлсбергом. А бродить не должно. Его перед выходом с завода каким то газом обрабатывают. Брожение прекращается, а то взорвется, если долго хранить.
Спасибо за консультацию. Там у нее куча режимов через менюшку доступна. Попробую покумекать, может можно наладить дистанционный доступ к менюшке? Заодно и OSD прикручу, получил квиток, что пришла на почту G-OSD с GPS от Хоббикинга. Теперь только батарейка осталась. Мои все не тянут, слишком мощьный получился пепелац. Нужно не меньше 5000 маЧ и 45С
кстаии по значениям и режимам - очень много полезного и с опописаниями значений code.google.com/p/arducopter/wiki/AC2_ModeSwitch
кто то SIMPLE уже пробовал (code.google.com/p/arducopter/…/AC2_SimpleMode)? типа ставим коптер попой к себе и летаем так, что стик вреде/назад будет именно вперед назад относительно вас, а не относительно носа коптера, для FPV конечно крайне не удобно, а вот для вида сбоку может пригодится, особенно если далеко уделать
про Alt Hold:
THROTTLE_P is used to achieve the desired altitude change rate. A higher kP value will make your copter hold altitude more aggressively causing high pulsing of the motors and vertical oscillations. (высокое знаение сделает ваш коптер более агрессивным из-за высокой пульсации моторов и вызовет дрожанием по высоте)
THROTTLE_I is used to compensate for a bad throttle hold value or a battery whose voltage is dropping over time. A value that’s too high can induce vertical oscillations. (слишком высокое значение вызовет дрожание по высоте)
“дрожание” - это то что коптер вверх/вниз ходит
при Auto и RTL:
NAV_P is used to tilt the copter to achieve the desired rate of speed, be it fast or no speed at all. The higher the P the more the copter will tilt. (чем больше, тем сильнее коптер будет наклонятся и возрастать скорость)
Nav_I is used to compensate for outside forces that would make your copter not maintain the desired rate. A high I term will ramp quickly to hold the desired rate, and will ramp down quickly to avoid overshoot (перелет).
Guided режим - тыкаем в планере на карте куда лететь и коптер туда полетит и зависнет в точке
ну и другие режими тоже рекомендую к прочтению (гуглопереводчик вполне хорошо справляется)
Там у нее куча режимов через менюшку доступна.
у Олега есть видео с разными режимами для какой то камеры
типа разный алгоритм экспозиции чтоли
Да, она самая. На картинке тоже такая менюшка в описании. Буду пробовать. Все равно еще одна Ардуинка на борту, не прпадать же добру, раз ОСД теперь отдельный. Перенесу туда работу с сонаром. Заказал еще 3 сонара, буду делать защиту от врубания в стены. Основная Ардуина такое все равно не потянет. Пока маракую по интернету, как их между собой заставить обмениваться информацией.
tmp_float = (float)abs_pressure /(float)ground_pressure; //станд. формула рассчета высоты относительно исходного давления
Угую Только поясните,плз, почему нужно делить давление на высоте на давление у земли, в качестве стандартной формулы вычисления? Вроде логичнее вычитать? Или я чего то не врубаюсь?
Александр, скачайте даташит для ВМР085 narod.yandex.ru/100.xhtml?mkpochtoi.narod.ru/BMP08… (красивая формула из авиации) или посмотрите libraries\APM_BMP085\examples\APM_BMP085_test (эта же формула преобразована для удобного вычисления):
tmp_float = (APM_BMP085.Press / 101325.0); -давление по барометру делим на давление на уровне моря (101325 Па принято)
tmp_float = pow(tmp_float, 0.190295);
Altitude = 44330 * (1.0 - tmp_float); - высота относительно уровня моря (где принято 101325 Па)
Но я беру не давление на уровне моря (101325 Па), а groun_pressure - давление у земли, когда коптер включили. Поэтому отсчет высоты идет от текущей земли.
Данный код в sensors.pde у меня отлично работает! Библиотеки не трогал!
static void init_barometer(void)
{
#if HIL_MODE == HIL_MODE_SENSORS
hil.update();// look for inbound hil packets for initialization
#endif
int i;
for(i = 0; i < 20; i++){
delay(50);
barometer.Read();
}
ground_pressure = 0;
for(i = 0; i < 8; i++){
delay(50);
#if HIL_MODE == HIL_MODE_SENSORS
hil.update(); // look for inbound hil packets
#endif
barometer.Read();
ground_pressure += barometer.Press; //считал 8 раз давление у земли
}
ground_pressure /=8; //усреднил давление у земли
abs_pressure = ground_pressure; //нужно
}
static long read_barometer(void)
{
float x, tmp_float, altitude_cm;
barometer.Read();
abs_pressure = (float)abs_pressure * .5 + (float)barometer.Press *.5; // берем 0.5 от прошлого давления и 0.5 от нового, чтобы не прыгало сильно
tmp_float = (float)abs_pressure /(float)ground_pressure; //формула из авиации: давление на уровне моря заменил на ground_pressure
tmp_float = pow(tmp_float, 0.190295);
altitude_cm = 44330.0 * (1.0 - tmp_float); // мы узнали высоту относительно текущей земли! потому что использовали abs_pressure \ ground_pressure
x = -altitude_cm*100; //так требует программа
return (x);
}
Основная Ардуина такое все равно не потянет.
угу, у нас закончились таймеры/прерывания/итд
Пока маракую по интернету, как их между собой заставить обмениваться информацией.
через Serial порт, на меге еще один свободный вроде есть и в коде опроса сонара добавить код опроса (Serial.print Serial.read или как там) другой ардуинке, а та в свою очередь ждет когда у неё чето спросят и постоянно хранит данные
такое уже было в проекте ArduIMU кажется - там и код есть и всё что надо (это где ракетной для настольного тениса поптр отгоняют)
Можете меня бить! Но я не понимаю!
Включаю коптер, он ловит ноль. Лечу вверх - эта зеленая полоска на альтиметре ползет вниз! Снижаюсь в овраг ниже земли - зеленая полоска ползет вверх!
В то же время, в Терминале все адекватно! Если коптер поднял вверх, то test altitude: baro 200cm sonar 200cm, если в овраге test altitude: baro -200cm sonar 200cm
Это происходит в тест7 и тест8. В 2.0.38 такого не было. Планнеры 47 и 66. Код не трогал! У всех так показывает?
Сейчас видео пересмотрел, раньше у меня “в облаках” высота отображалась в плюс… фигня какая-то.
Прошу прощения! В коде нужно “x = altitude_cm*100; //так требует программа” , а не “x = - altitude_cm*100; //так требует программа”. Т.е высота положительная, без минуса.
ЗЕЛЕНАЯ ПОЛОСКА - УРОВЕНЬ ЗЕМЛИ (нуля)
если взлетаем вверх - то земля становится НИЖЕ, полоска ползет ВНИЗ
Хм… а чем тогда Р от I отличается? Если Р увеличить будет прыгать, так же и про I сказано… В чем принципиальная разница интересно?
В чем принципиальная разница интересно?
В том, что управляющее воздействие Р возникает сразу и пропорционально ошибке, а И - по мере накопления суммы всех ошибок.
а в чем физический смысл?
и еще - кто бы поковырял логирование на SD карту =) шилд крайне простой под SPI порт
А можно поподробней для прапорщиков по пидам В энглише не очень силен. Что есть I и IMAX?
А что логировать то 😃? Если есть АРС220 то все логируется в планере 😃
А вот токовый датчик замутить да напругу снимать чтоб знать сколько липестричества еще в баках было бы не плохо 😃
кто бы поковырял логирование на SD карту
бюджетный модуль пишущий на SD есть?
модуль пишущий на SD есть?
Гы… не понял, эт как я умудрился запомидорить 😃))) Каюсь, не хотел 😃
А почему иногда слетает левел? Сегодня пошел полетать, включил алт_холд, коптер подпрыгивал, подпрыгивал, подлетел к траве, зацепился, перевернулся. Поставил на ноги, запускаю, а коптер пытается лететь боком Смотрю в планере - горизонт градусов 40.
Думаю дело в механике, платко внутри контейнера случаем не отвалилась 😃?
платко внутри контейнера случаем не отвалилась
Обижаешь, начальник 😃 Нет конечно. У меня это было раза три. Первых два раза не заморачивался, а теперь задумался… А если в полете…
Хм… в 40 прошивке левел можно выставлять без CLI режима, может здесь собака порылась…?
Такое происходит только при падениях? У меня сколько не падал, такого глюка еще не было…
происходит только при падениях?
Ну, скажем, при нештатных ситуациях