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

SovGVD

оффтоп: хз как в России, но конкретно в Дубне разливное не фильтрованное в половине магазинов есть (в нонейм бутылку наливают и езжай домой), по вкусу вполне похоже на пиво, пенится и даже когда выдыхается (оно же бродить должно! какое нафиг выдыхается?) всеравно можно пить =) почти всё что в бутылках - производство одного завода в г.Клин, а отсюда и одинаковый вкус - разница только в ощущених от надписи на бутылке и того что купил дороже
но это всё строго ИМХО, может другим больше везет =) последнее вкусное, приятное пиво пил года 3 назад в каком то клубе и было это разливной туборг
уже думаю - а не попробовать ли сварить самому? но гемору =)

любая CCD камера хорошо к вибрациям относится, в отличае от CMOS

Alex_from_Israel

Да уж… Сочуйствую… Самому варить, это не коптер строить, однако! Гемору намного больше. Ладно, офф топ прекращаю, просто еду на Мертвое море в четверг, а там пиво вроде вашего. Все на один вкус. Затарился жестянками с Карлсбергом. А бродить не должно. Его перед выходом с завода каким то газом обрабатывают. Брожение прекращается, а то взорвется, если долго хранить.

Спасибо за консультацию. Там у нее куча режимов через менюшку доступна. Попробую покумекать, может можно наладить дистанционный доступ к менюшке? Заодно и OSD прикручу, получил квиток, что пришла на почту G-OSD с GPS от Хоббикинга. Теперь только батарейка осталась. Мои все не тянут, слишком мощьный получился пепелац. Нужно не меньше 5000 маЧ и 45С

SovGVD

кстаии по значениям и режимам - очень много полезного и с опописаниями значений 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 режим - тыкаем в планере на карте куда лететь и коптер туда полетит и зависнет в точке

ну и другие режими тоже рекомендую к прочтению (гуглопереводчик вполне хорошо справляется)

Alex_from_Israel:

Там у нее куча режимов через менюшку доступна.

у Олега есть видео с разными режимами для какой то камеры

типа разный алгоритм экспозиции чтоли

Alex_from_Israel

Да, она самая. На картинке тоже такая менюшка в описании. Буду пробовать. Все равно еще одна Ардуинка на борту, не прпадать же добру, раз ОСД теперь отдельный. Перенесу туда работу с сонаром. Заказал еще 3 сонара, буду делать защиту от врубания в стены. Основная Ардуина такое все равно не потянет. Пока маракую по интернету, как их между собой заставить обмениваться информацией.

Musgravehill
Alex_from_Israel:

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);
}
SovGVD
Alex_from_Israel:

Основная Ардуина такое все равно не потянет.

угу, у нас закончились таймеры/прерывания/итд

Alex_from_Israel:

Пока маракую по интернету, как их между собой заставить обмениваться информацией.

через Serial порт, на меге еще один свободный вроде есть и в коде опроса сонара добавить код опроса (Serial.print Serial.read или как там) другой ардуинке, а та в свою очередь ждет когда у неё чето спросят и постоянно хранит данные
такое уже было в проекте ArduIMU кажется - там и код есть и всё что надо (это где ракетной для настольного тениса поптр отгоняют)

Musgravehill

Можете меня бить! Но я не понимаю!
Включаю коптер, он ловит ноль. Лечу вверх - эта зеленая полоска на альтиметре ползет вниз! Снижаюсь в овраг ниже земли - зеленая полоска ползет вверх!
В то же время, в Терминале все адекватно! Если коптер поднял вверх, то 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; //так требует программа”. Т.е высота положительная, без минуса.

SovGVD

ЗЕЛЕНАЯ ПОЛОСКА - УРОВЕНЬ ЗЕМЛИ (нуля)
если взлетаем вверх - то земля становится НИЖЕ, полоска ползет ВНИЗ

LeonVS

Хм… а чем тогда Р от I отличается? Если Р увеличить будет прыгать, так же и про I сказано… В чем принципиальная разница интересно?

Musgravehill
LeonVS:

В чем принципиальная разница интересно?

В том, что управляющее воздействие Р возникает сразу и пропорционально ошибке, а И - по мере накопления суммы всех ошибок.

SovGVD

а в чем физический смысл?

и еще - кто бы поковырял логирование на SD карту =) шилд крайне простой под SPI порт

LeonVS

А что логировать то 😃? Если есть АРС220 то все логируется в планере 😃
А вот токовый датчик замутить да напругу снимать чтоб знать сколько липестричества еще в баках было бы не плохо 😃

Ar2r
SovGVD:

кто бы поковырял логирование на SD карту

бюджетный модуль пишущий на SD есть?

LeonVS

Гы… не понял, эт как я умудрился запомидорить 😃))) Каюсь, не хотел 😃

tusik

А почему иногда слетает левел? Сегодня пошел полетать, включил алт_холд, коптер подпрыгивал, подпрыгивал, подлетел к траве, зацепился, перевернулся. Поставил на ноги, запускаю, а коптер пытается лететь боком Смотрю в планере - горизонт градусов 40.

LeonVS

Думаю дело в механике, платко внутри контейнера случаем не отвалилась 😃?

tusik
LeonVS:

платко внутри контейнера случаем не отвалилась

Обижаешь, начальник 😃 Нет конечно. У меня это было раза три. Первых два раза не заморачивался, а теперь задумался… А если в полете…

LeonVS

Хм… в 40 прошивке левел можно выставлять без CLI режима, может здесь собака порылась…?
Такое происходит только при падениях? У меня сколько не падал, такого глюка еще не было…

tusik
LeonVS:

происходит только при падениях?

Ну, скажем, при нештатных ситуациях