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

Artie
Expert:

кто подскажет где купить 328ю в москве?

Если это только для работы конфигтула, то не знаю…

А так - V2.2, вроде, должна умещаться в 168 с запасом (скажу честно, собирать под этот кристалл не пробовал, но, судя по avr-nm, там получается всего порядка 15К кода и 700 байт данных). И еще там огромное поле для оптимизации как по коду, так и по переменным (да и по скорости - тоже). - Все-таки, не каждый, кто пишет программы, на самом деле является программером ! 😉

Кстати, после того, как я вывел отдалочную инфу с автопилота на экран телеметрии, все стало понятно и RTL у меня заработал. - Оказалось, что мои кривые руки синтерферировали с кривыми руками Джорди, который забыл “проинвертировать” ширину канальных импульсов с приемника при реверсе серв…
И хотя коэффициенты регуляторов в ветер 5м/с подбирать несерьезно, а потому некое перерегулирование (по стабилизации, по крайней мере) осталось, но “у целом” оно живет.

Artie
Панкратов_Сергей:

Загрузчик, сидящий в кристалле какое-то место занимает.
Потому и V2.2 не влазит.

А подскажите сколько там нехватает (у меня сейчас под рукой тулчейна нет, сам быстро проверить не могу), - глядишь, я его и утопчу до нужного объема… - Там местами ФАНТАСТИЧЕСКИ неэффективный код.

Expert

коллеги, стабилизация работает стабильно? есть ли смысл использовать V2 заместо V1 + copilot

Artie
Expert:

коллеги, стабилизация работает стабильно?

А в каком смысле “стабильно” ? Сравнить с работой fma я его не могу, но вообще - работает. При ветре, разумеется, аппарат чуток побалтывает, так что стабилизатор подвеса камеры эта штука не заменит, но и свалиться - тоже не дает. Ручки можно бросать спокойно.
Как оно работает без ветра - сказать тоже не могу, бо на штиль еще не попадал ни разу… 😁

ЗЫ: Правда, у меня пиродатчик трехосевой и со средней точкой (которая, по факту, оказалась лишней), но не думаю, что это всерьез влияет на стабилизацию.

Панкратов_Сергей
Artie:

А подскажите сколько там нехватает (у меня сейчас под рукой тулчейна нет, сам быстро проверить не могу), - глядишь, я его и утопчу до нужного объема… - Там местами ФАНТАСТИЧЕСКИ неэффективный код.

Загрузчик занимает 2К.
А сколько на программу- не знаю.

Artie
Панкратов_Сергей:

Загрузчик занимает 2К.
А сколько на программу- не знаю.

На программу - 15К (примерно). Значит, нужно поджать всего на килобайт…
На следующей неделе постараюсь сделать.

ЗЫ: Только я это буду делать для обработки NMEA, как самого универсального протокола, ну и чтобы тот же поток в любую телеметрию скармливать можно было.
Проприетарные бинарные режимы выдачи оптимизировать не хочу (впрочем, они и места должны занимать значительно меньше, так что если уместим энмею, то и все остальное должно будет влезть).

Artie

Разумеется.
“Как только - так сразу…”

ЗЫ: У меня-то как раз 328.

Панкратов_Сергей

[QUOTE=Artie;1320073ЗЫ: Только я это буду делать для обработки NMEA, как самого универсального протокола, ну и чтобы тот же поток в любую телеметрию скармливать можно было.
).[/QUOTE]

Вопрос от дилетанта-
Пытаюсь освоить программирование.
Есть ли смысл в Ардуино - или лучше сразу Си и не терять времени, про ассемблер не спрашиваю?
Насколько Ардуино ограничит возможности?

Artie
Панкратов_Сергей:

Есть ли смысл в Ардуино - или лучше сразу Си и не терять времени, про ассемблер не спрашиваю?

Дык, оно на сях и сделано (вернее, даже на плюсах, что для данного конкретного применения - скорее минус, чем плюс (“Калабур-с, господа !” 😃)

На самом деле, насколько я успел понять, ардуино - это “комплект” из следующих трех вещей:

  1. Готовая платка с однокристаллкой, в которую зашит загрузчик. - Позволяет ничего не паять (точнее, паять только то, что ты вешаешь снаружи), и не заботиться о программаторе.
  2. Оболочки для avr-gcc (написанной на жабе, поэтому тупой и тормозной). - Позволяет в один клик скомпилить программу и залить ее в однокристаллку.
  3. Библиотек, “абстрагирующих” пишущего от всего железа и дающих некий набор более высокоуровневых функций, вроде обмена по I2C, работы с индикаторами, шаговыми двигателями, сервомашинками, и даже с ethernet’ом.

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

Насколько Ардуино ограничит возможности?

Как составная часть некоего законченного продукта (например, то же автопилота) - с моей точки зрения, оно никуда не годится (сразу по многим причинам), но вот именно для обучения эмбеддерству (не профессиональному, а так, “для дома, для семьи”) - я считаю, что это платформа практически идеальная.
… Поскольку для начала, эффективность кода - вещь, в общем, не самая важная, а вот возможность практически с первого же дня начать крутить какой-нибудь сервой или ШД, измерить какое-нибудь напряжение и выбросить его значение в красивом текстовом виде в терминалку (встроенную в оболочку), не вдаваясь в изучение периферии однокристаллки, ее ассемблера, процедуры ее программирования, и так далее, - для начинающего штука достаточно ценная…

Самое же правильное в ардуино именно то, что при всей простоте освоения, оно позволяет учиться писать сразу на нормальном языке, а не на разнообразных ублюдках, вроде пикбэйсика, а в дальнейшем - по мере обучения - ничто не мешает отказаться от оболочки и от “плохих” функций работы с железом, благо в основе у него - полноценный кросскомпайлер и открытые сорсы тех же библиотек.
(Например, мне не понравилось то, что в сериальной библиотеке нельзя проконтролировать переполнение приемного буфера или проверить ошибки приема. - Можно было, разумеется, и написать все эти функции с нуля, и портировать их из какого-нибудь старого проекта, но это заняло бы, как минимум, полдня. А так - три минуты на поиск сорсов, еще три на правку, - и у класса HardwareSerial появился новый метод - status…)

Панкратов_Сергей

Спасибо,понятно.
Меня смущало наличие

некий набор более высокоуровневых функций

Больше плюсов в этом или минусов?
Что более быстро можно обучиться - это ясно.
А вот не послужит ли это тормозом в дальнейшем в написании более эффективных кодов, без использовании этих высокоуровневых функций?
Теперь сомнения сняты.😃

Artie
Панкратов_Сергей:

Что более быстро можно обучиться - это ясно.
А вот не послужит ли это тормозом в дальнейшем в написании более эффективных кодов, без использовании этих высокоуровневых функций?

Нет, конечно.
Библиотеки - это такие штуки, которыми можно не пользоваться, если не хочешь. 😁
А когда они еще и открытые, то переход (в любую сторону) становится вообще настолько плавным, насколько пожелаешь.

smalltim

Не понимаю, для чего столько траха с памятью, попытками вычистить чужой корявый код и прочим на ардуино, когда можно взять набор
ATUSBKEY с AT90USB1287 на борту - 128к памяти, 8к оперативки, 2к EEPROM, 16 МБ внешней памяти, нативный USB интерфейс, USB бутлоадер, и ничего паять не надо. Все Атмеговские прелести в виде 8 каналов АЦП, SPI, USART и прочая и прочая - в наличии. AVR GCC и стопицот сторонних библиотек, если надо - в наличии.

Artie
smalltim:

Не понимаю, для чего столько траха с памятью, попытками вычистить чужой корявый код и прочим на ардуино, когда можно взять набор ATUSBKEY с AT90USB1287 на борту - 128к памяти, 8к оперативки, 2к EEPROM, 16 МБ внешней памяти, нативный USB интерфейс, USB бутлоадер, и ничего паять не надо. Все Атмеговские прелести в виде 8 каналов АЦП, SPI, USART и прочая и прочая - в наличии. AVR GCC и стопицот сторонних библиотек, если надо - в наличии.

Если разговор о собственно железяке, то вот лично мне USB нафиг не нужен, а ничем более принципиальным оно не отличается. И “гигазы” памяти мне тоже не нужны.
С точки же зрения софта, это - готовый open-source проект (пусть и кривой, но все-таки работающий), с которого многим значительно проще начинать делать что-то свое.

Лично я купил эту платку только потому, что это значительно дешевле и быстрее, нежели заказывать изготовление такой же своей собственной, и чуть аккуратнее, чем на макетке МГТФом. А про то, что такое ардуино, я узнал уже после того, как приехала плата 😛 (бо мне это было достаточно пофигу).
Кому нужно - могут почистить что хотят, кому не нужно - могут пользоваться тем, что есть. А “трах с памятью” возникает только у тех, кто хочет в старую плату с “мелкой” однокристаллкой залить новую версию кода…

PS: У благородного дона переполнена личка.

smalltim

Личку ща почищу.

Ну я как бы совсем не против ардуино, просто всяк кулик свое болото хвалит, и я, как взял по совету Dikoy ATUSBKEY, так и остаюсь ему сильно благодарен, а приобретением жутко доволен. Всё это, разумеется только с точки зрения железа. По софту ничего сказать не могу.

Artie

Ну, они просто под разные задачи. Ардуино (именно в виде этих самых “трех источников, трех составных частей”) - это хорошая учебная платформа, удобная для тех, что начинает с нуля. И его “комплектные” библиотеки - просто для ускорения старта.
… А персонально я брал ардупайлот главным образом как “плату с двумя микрухами за $24”, - для экономии времени (и мысли 😃).

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

Панкратов_Сергей
Artie:

… А персонально я брал ардупайлот главным образом как “плату с двумя микрухами за $24”, - для экономии времени (и мысли 😃).
.

Там же есть платы,на основе которых быстро и задешево можно собрать ту-же
телеметрию от благородного дона 😁
Только бутербродиком на нее посадить платку с датчиками и и селектором синхроимпульсов.
www.sparkfun.com/commerce/product_info.php?product…

Artie

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