Автопилот Arduplane - открытое ПО

lio

еще внимательно проверьте как он передает данные на осд
могут быть неувязки по форматам
была какая то версия связки … показывал координаты совершенно не те что были в реалии (чет было намудрено в математике )
еще момент
у меня связка без шилд-платы … и для забивания точек приходится вырубать физически иму(мешает FTDI кабелю)
вроде с шилдом етой проблемы нету

alexeykozin

у меня тоже без платы датчика воздушной скорости, а чтобы не мешало прошивке зажимаю резет на иму на время прошивки пилота
а на какой версии иму и пилота вы остановились?

с широтой и долготой все нормуль

lio

2.7+1.7 + мод сделал (юстировку иму - если не точно стоит, по аналогии с триммированием пироголов)

alexeykozin

2 lio
юстирование неплохая штука в иму 1.8.2 такое тоже есть, она долго мигает после каждого ресета но зато потом никаких дрифтов, но на сколько я понял 1.8.2 не подойдет к прошивке пилота с выводом данных для ремзиби - она не передает инфу о спутниках, ваш мод - это продолжение ремзибиевской прошивки или официальной?

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

а в вашей версии пилота 2.7 вы нашли-исправили дрожание? по моему это серьезный баг, я пытался расковырять, выводил промежуточные значения переменных в сериалпорт, но пока безрезультатно, подумалось что перебороть то можно например сделав “скругление” перед выводом в серву не выводить запрашиваемое значение сразу а усредняя его с предыдущими. но потом подумал, что надо искать причину бага а не ставить заплату

lio

про юстировку … мож я не так сказал 😃
короч ето коррекция начального положения иму относительно горизонтального полета
типа как триммирование самика
столкнулся с тем что нужно было настроить иму на приблизительно 5 градусов (лет крыло при полете идет с таким углом атаки в горизонтальном полете)
и вот чтоб не ставить под иму подкладки и не угадывать угол начальной инициализации просто ввел корректировку угла в конфиг при сборке ардупилота
идея такая-же как у пироголов
#define PITCH_TRIM 0 // deg * 100 : allows you to offset bad IR sensor placement
#define ROLL_TRIM 0 // deg * 100 : allows you to offset bad IR sensor placement

а так то при предстартовой подготовке ставлю самик на стапель (заведомо выставленный в 0) иму проходит инициализацию … заливаю точки если нада и в путь 😃

на счет авто-калибровки по кнопочке … иму должна знать истинный 0 … на его основе она выравнивается
а если нажать калибровку кода самик в руке и наклонен … это чревато таким-же горизонтом кривым 😦

с дрожанием пока сильно не боролся … пока особо не напрягает … но думаю придется … зима длинная 😃

alexeykozin

насчет калибровки по кнопочке - так я об этом и говорю, типа если нужно откалибровать - ставишь на стапель и жмакаешь кнопку, значение сохраняется в епроме. Или оперативно надо перекалибровать “в поле” например изменил положение на модели - ставишь самоль по уровню и жмакаешь кнопку - не надо лезть в код, полюбому ноут раскладывать в поле не айс

Serj=

Вот, опять убил свой автопилот, решил записать на Attiny45 файл сейв из Fail_Safe_v16.zip.
Заливал avrdude, залилось вроде нормально, но после записи автопилот перестал на что-либо реагировать.
Стер Attiny45 и автопилот заработал но не переключаются режимы работы, похоже за это отвечала старая прошивка Attiny45.
Можно как то вытащить прошивку Attiny45 из работающего автопилота?

lio
alexeykozin:

насчет калибровки по кнопочке - так я об этом и говорю, типа если нужно откалибровать - ставишь на стапель и жмакаешь кнопку, значение сохраняется в епроме. Или оперативно надо перекалибровать “в поле” например изменил положение на модели - ставишь самоль по уровню и жмакаешь кнопку - не надо лезть в код, полюбому ноут раскладывать в поле не айс

ну как вариант 😃
можно будет подумать …
в тиньке у меня 15 версия была , так и не менял - мну устраивает

alexeykozin

2 serj
возможно дело не столько в прошивке сколько во фьюзах,
фюзы определяют с каким генератором (внутренним или внешним) работает проц всякие еще конфигурационные биты…
прикидываешь если ты его на внешний осцил настроил и еще чегото ждешь
там вроде мануал был…

вот они фьюзы:

смотри extended 0xff
high 0xdf
low 0xe2

инфа отсюда: www.rcgroups.com/forums/showthread.php?t=1254724

мануал avrdude nongnu.askapache.com/avrdude/avrdude-doc-5.5.pdf

пара батников втч с примерами фьюзов, правда для atmega168/328 - у меня
http://hobby.msdatabase.ru/project-updates/theresultsofoursurvey/ardupilot-imu
(в конце страницы приложен bootloader.rar)

Serj=
alexeykozin:

там вроде мануал был…

Там это где? Я по двум мануалам разбираюсь тынц и тынц
И чего то чем дальше тем меньше понимаю что есть фьюзы, efuse, hfuse и lfuse в avrdude могу задать, а как частоту внутреннего осцилятора настроить?

alexeykozin:

вот они фьюзы:

Так кроме них ничего и не надо?
кстати из после зашивки кода зашивать или до?

lio

для тиньки внутренний ставится … откуда внешний нашли то ?
diydrones.com/…/how-to-program-the-attiny-on

“Then make sure “Device” is Attiny45 and “Read signature”. At the bottom it should say that all’s okay. If so, switch to “Fuses” tab and uncheck CKDIV8”

alexeykozin

я как то всегдашью фьюзы после,

в той же вики по ардупилоту все версии тини 1, 15, 16
code.google.com/p/ardupilot/downloads/list

в тиньке мало того что внутренний так еще и еще деленный, кажись на 4,
вродеб он работает на 2 мегагерцах вместо 8 возможных - и это во фьюзах

Serj=

В 16й версии написано Added Fail Safe for analog radios. Похоже как раз мой вариант.
Вот у меня ручки и зачесались 😃

УРА!!! Спасибо мужики!!!
Мой автопилот опять жив, только с 15й прошивкой, 16я его убивает напрочь, похоже что файл сейв постоянно перезагружает Атмегу.

alexeykozin
Serj=:

А мануал зачетный! Что ж вы раньше то молчали? Надо б его на видное место.

я только начал его формировать, он еще не дописан и не отшлифован, коге где возможны заблуждения…
так что если что помогайте, подсказывайте, поправлю.
вообще хотелось бы написать по русски то что есть анло-вики и добавить то чего там нет но терзает.
а ситуация тут двоякая пока ты новичком въезжаещь в тему то кажется что все непонятно, а когда уже профи тогда все элементарно и непонятно о чем писать - поэтому сейчас конспектирую все траблы которые возникают, и тут же как решил (невсегда оптимально, но переписать то можно)
заходить лучше не через https на “гуглесайты” а через http доп. домен - так нет в некоторых браузерах глюков с безопасностью смешанного содержимого hobby.msdatabase.ru/project-updates/…/testing

в выходные эксперементровал с иму, попробовал туда залить из программы missionplaner точки маршрута, все залилось, потом несколько раз поменял прошивку, смотрю горизонт у меня в осд дико колбасит, думаю где это я напортачил, - запустил иму тест а там у акселя значения под 300 (норма до 100) гирики тоже скачут. тестером смотрю пол питающего напряжения - гдето 1,6 вольта на выходах - значит сенсоры живы, чтото с процом.
навсякей стер его, залил новый бутлоадер, фьюзы. Прошиваю еще раз, оригинальной прошивой - сенсоры словно сбесились самоль на картинке колбасит как в шторм попал, залил несколько прошив - данные выводит но с сенсорами бредятина полная. заглянул в тип платы ардуино - стоит duemianovе с 328 процом…
типа думаю у меня 5 же вольтовая схема, внешний кварц 16 мгц, поставил arduino pro or pro mini 5v 16 mhz
после прошивки все встало на свои места, странно то как вроде не менял там ничего, почему раньше работало?
барабашки прям какието…

alexeykozin

выложил свои правки предложенного выше кода поддерживающего осд,
теперь показывает режим автопилота, иму- горизонт, число спутников с прошивками ремзиби 1_72 и 1_73

hobby.msdatabase.ru/project-updates/…/remzibiosd

перечень правок и хексы прошивок в каждом архиве
единственное “но”- не было возможности облетать ни исходную прошивку ни результирующие (но правки минимальные)

Lazy

Мнээээээ…
Я что сказать хотел…
Количество спутников есть весьма относительным показателем.
Более важным есть уровень сигнала с них.
Можно иметь 9 с уровнем 27 дБ - и лететь в ж…пу.
А можно иметь 3 с уровнем 45 дБ - и ориентация будет замечательной.
Может имеет смысл поставить какой то порог уровня сигнала?

alexeykozin

мысль дельная, но я пока не допетрил где это можно вынуть из передаваемых жпс модулем команд,
пока число спутников используется для того чтобы понять имеет ли смысл захватывать позицию как точку возврата,
но на будущее надобы сделать, может есть какие наработки в какой строке и бите у nmea идет уровень сигнала?

alexeykozin

дауж погряз я на два дня с HDOP/GDOP
попутно изучил nmea и mtk иниициализацию

для вертикальной и совокупной погрешности надо будет менять инициализацию приемника и делать новый парсер
если по быстрому HDOP уже есть но неиспользуется

на этом и погряз - почему неиспользуется ведь пока погрешность нулевая то можно рулить по жпс, а если значение допов 50 то точность в половину футбольного поля надо больше верить магнитному компасу гирам и барометру…
почему не используется???

вроде регулировка этих факторов это установка ПИДов?
ни у кого не завалялось хорошего толкования что там и к чему?
есть идея динамически регулировать пиды (или ввести коэф) в зависимости от xDOP высоту от VDOP а курс от HDOP

alexeykozin

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

вот результаты испытаний:
C балкона, метров на 50 от карты гугле земля врет но не дрейфует, если отключить питание модулю и включить заново координаты перескакивают метров на 10 но также не дрейфуют
$GPRMC,074214.600,A,5543.8357,N,03744.6306,E,0.00,0.0,221011,*39
$GPGGA,074214.800,5543.8357,N,03744.6306,E,1,08,0.9,158.3,M,0000*04
Тут выделенная единичка = Fix Quality:

  • 0 = Invalid
  • 1 = GPS fix
  • 2 = DGPS fix
    на своем модуле я так 2 и не дождался (и тем более тройки описанной в вики дающей точность до см)

$GPGSA,A,3,10,12,25,09,04,31,02,29,1.6,0.9,1.2*3C

тут режим захвата и все допы
$GPGSA
1 = Mode:
M=Manual, forced to operate in 2D or 3D
A=Automatic, 3D/2D
2 = Mode:
1=Fix not available
2=2D
3=3D
3-14 = IDs of SVs used in position fix (null for unused fields)
15 = PDOP
16 = HDOP
17 = VDOP

заэкранировал: bad 2d mode
$GPRMC,075359.600,A,5543.8986,N,03744.6265,E,3.75,0.0,221011,*33
$GPGGA,075359.800,5543.8984,N,03744.6266,E,1,03,3.5,200.0,M,0000*07
$GPGSA,A,2,12,25,29,3.6,3.5,1.0*3E

у $GPGGA фикс, который ардупилот использует остался, а $GPGSA говорит что режим 2D и допы очень нехорошие

после экранировани во глубине бетонных стен - отраженные сигналы ошибка ~400м
$GPRMC,080340.600,A,5543.6992,N,03744.4800,E,0.00,0.0,221011,*30
$GPGGA,080340.800,5543.6992,N,03744.4800,E,1,07,1.6,120.5,M,0000*05
$GPGSA,A,3,10,02,12,04,30,25,29,2.2,1.6,1.6*39

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