Управляем чем угодно откуда угодно

Проект АТОМ

Кто что сделал и кто что собирается делать

Проект АТОМ

Сообщение Mirmik » 16 сен 2013, 04:30

Изображение
Я тут разошелся... История тележки и журнал курения виртурилки.



Пилить и курить!!!





Это, вообще говоря, не проект на Виртурилке, а проект перепертый на Виртурилку...

Что я сразу хочу сказать - железо офигенное... Но линукс его портит.
Еще больше его портит отсутствие документации. Но да это дело наживное.

Впрочем, обо всем по порядку.
А начну я с самого начала, чтобы было понятно откуда че берется.


АТОМ пережил несколько капитальных переделок.
За все это время неизменными оставались двигатели и самопаянный контроллер шасси. (Впрочем и они перепаивались многократно).

Так Атом выглядел сначала:
версия 0.5. ИК канал.

Этот АТОМ катался по управлению с инфракрасного пульта. Тупиковый в общем путь, но протокол передачи пилить было интересно... На этом этапе усиленно эксперементировал с энкодерами. (Энкодеры и поныне в тележке, но с тех пор никогда к контуру управления не подключались).

АТОМ. Версия 1.0. Роутер.
Изображение
Тут уже все было куда серьёзней... Работа на этом этапе шла эволюционно. Постепенно добавились вай-фай с перепрошитого роутера tp-link mr3020 (прошивка OpenWRT, допиленная OpenRobotics), камера на сервоприводах, самопаянный DC-DC преобразователь, ардуинка, что-бы было куда подключить сервы...
Куча проводов, и даже моя мечта - встроенный непосредственно в саму тележку зарядник для литий-полимера, любезно спаянный китайцами в Китае... Ну и обвес конденсаторов на полкилограма, ибо роутер к питанию оказался сильно капризен...
Изображение
Ну и т.д.... Очень круто, очень мощно... Совершенно не юзабельно...

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



АТОМ. Версия 1.3. Геймпад.
Изображение
Дальнейшие модификации касались управления.
Я решил уйти от браузера и всего непрозрачного, хз, чем занимающегося ПО подальше.
Эта версия АТОМа управлялась геймпадом, подключенным к нетбуку. Данные с нетбука через самописный udp сервер-клиент по локалке утекали на роутер. Роутер, имеющей из числа портов единственный usart канал, да вход для видео, отдавал поступающей из сети сигнал на Ардуинку, которая рулила сервоприводами и пробрасывала по все тому же usart каналу сигнал на контроллер шасси. Система больше не лагала. Управление с геймпада было много удобней тракторного с компьютера. Количество разных железок, участвовавших в управление достигло 6-ти, а косвенно и восьми, причем пять из них стояли на самой машине. Рулилось это все пятью программами и четырьмя операционками. Плюс приходилось тягать с собой нетбук, ибо геймпад, хоть и беспроводной далеко от вычислителя не утащишь. Примерно в это время я перестал использовать встроенный зарядник, ибо он, малокачественый, не был благодушен к аккумуляторам...




АТОМ. Версия 1.5 Смартфон, акселерометр.
Изображение
... Выбирая более рациональный способ контроля, я остановился на смартфоне, уже имеющем, в отличие от геймпада вай-фай в самом себе. Думаю, это было правильное решение. Первоначально я хотел запилить управление двигателями с экрана, а сервоприводами по акселю, но попробовал, сплюнул и махнул их местами.
Долго крутил настройки, но все же добился. Спустя полтора года добился того, что управление стало удобным настолько, чтобы ответить моим ожиданиям. Надо сказать, что получилось что-то очень похожее на руль в автомобилях....



АТОМ. Версия 1.7 Virt2real
Впервые о сём дите природы я услышал еще до возни с геймпадом... Прочитал статью. Посмотрел с тоской на тележку и понял, что вундерфалия избавила бы меня от кучи деталей. Ну да и подписался. Быстро сказка сказывается, да нескоро дело делается, но таки оно дошло... Прибытие вундерфалии застало нас с АТОМом в экспериментах с I2C и фактически развалило программу исследований... Шутка ли, неделю писал систему ввода-вывода к ардуиновской операционке и прикручивал I2C к ней, а поездил всего пол дня... Ну да это лирика.


Дальше рассказ будет более развернутым и по теме.


День первый:
Virt2real очень красив. Открыв коробку, долго любовался... Посмотрел на usb-порт... Пол часа искал под столом нужный провод. Подключил. Не работает. Пошел курить инструкцию. Прочитал, что нужна sd-карта.
Посмотрел на смартфон. Внимательно посмотрел на смартфон...
Пошел в магаз за карточкой... Пришел, прошил, завелась. Офигеть, думаю... С первого раза завелась. Завелась с первого раза - значит не взлетит. И верно. Перепирание ее в локалку заняло часа три, благо форум помог. Что такое ap_scan, и почему он вредит не знаю до сих пор...

День второй:
СХЕМ НЕТ!!! Прямо как по назанию сайта, с той лишь разницей, что на схем.нет схемы есть, а на вирврил схем нет... Начальство занято, курит dsp, тероризирует почту... Почта - святое... Но блин, неужели dsp действительно важнее схемы разводки питания, которая пилится в двадцать минут (и то при условии, что ее до сих пор нет у самих разработчиков).
День прошел в гуглении компонентов, реверс-инженеринге и терорризировании форума... К концу дня я по крайней мере знал, что где на плате...

День третий:
ДОКУМЕНТАЦИИ НЕТ!!! Вики вызубрил наизусть. Начал читать даташит на проц. Понял, что забава сия как минимум на неделю и даташит временно отложил... Вытащил из темных нехоженных подвалов своего вычислителя штатный линукс... Отряхнул пыльную Федору. Скачал SDK.
SDK не завелась. Как впоследствии выяснилось, ибо Федора... Хороший человек orangeudav запилил виртуалку. Виртуалка завелась. Но не карточку не прошила. Плюнул, выключил...

День четвертый:
Вспомнил, что я крутой и могу кросскомпилировать. Токо нужен компилятор. В линухе я не зуб ногой, но догадался, что SDK без компилятора работать не может... Полчаса искал компилятор. Нашел. Написал ХеллоуВорлд... Завелся... С первого раза. Без последствий, как ни странно...
Помигал светодиодиком. Лёг спать доволный.

День пятый:
На пятый день я решил, что посмотрел уже все, что мог посмотреть и пора браться за дело.
Снёс Федору, поставил Убунту, завёл SDK, собрал ядро. Сыграл с виртурилкой в шахматы. Проиграл. Пересобрал АТОМа... Выкинул зарядник. На полку также ушли ардуинка, роутер, батарея кондеров. Вспомнил, что драйвер шасси работает на пяти вольтах, а ВирТуРиалка на трех... Задумался о сопряжении интерфейсов... Вспомнил про I2C.
СХЕМ НЕТ!!! Подтянута шина, не подтянута? Чем подтянута, если подтянута?... Выдержит пять вольт, не выдержит?... Ниче не известно... Взялся за мультиметр. Замерил. Точнее попытался, ибо мультиметр сдох...
Возможно запитать контроллер шасси от трех вольт, но есть тонкое место. Заведуться 5-ти вольтовые драйвера на трех вольтах или не заведуться... Контроллер то понятно, заведется, у него до 1,8 в даташите написано... Решил подумать позже, а пока заняться сервами, лег спать.

День шестой, Суббота:
Наконец-то я могу плотно заняться делом.
Подключил сервы. Задумался о том, как ими управлять. Написал скрипт в lua с shell вызовами. Другого то метод мигания портами, кроме вызова драйверов не предлагается. Косо посмотрел на скрипт... lua,shell,linux... Тяжеловато, но проц, думаю, мощный, справится... Ага, счас... Хорошо, я человек опытный, первым делом осцилограф подцепил.
Завел систему... импульсы есть. Только странные какие-то 50% скважность, хотя я просил от силы 3%... Знакомый симптом... Задержка, превышающая по длительности все sleep и delay программы в несколько раз, как раз так и выглядит...
Переписал скрипт на чистый shell. Стало немного быстрее, но все равно... Замерил время. Ужаснулся.

крутой скрипт lua+shell 20 миллисекунд. Черт побери, двадцать миллисекунд - это 12 600 000 тактов.
Что он делает все это время? Посмотреть бы в глаза монстру за гордым именем квант времени ОС...
А ведь это просто включил выключил...

Что до чистого shell-а.
shell 1,76 миллисекунд... 264 000 тактов. Это на операцию, которая может быть выполнена в шесть!

Базовая функциональность linux-овых драйверов?...

Для сравнения проверил Ардуинку... Функция digitalWrite, которую все хают за тормознутость...
6,40 микросекунд. Микросекунд! В 275 раз быстрее, при том, что процессор в 20 раз медленнее...

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

Интересно, как в Линухе запилить прерывание по таймеру?

Раз нет програмных импульсов, придется юзать ШИМ. ШИМ - это очень дорого для сервоприводов. Пока, конечно, у меня кроме серв ничего нет... Но на ШИМе далеко не уедешь, ибо ШИМа у нас мало... Что если у меня Хексапод? Октопод?
ШИМ завелся... Вроде бы...

День седьмой:
Собрал систему полностью. Скомпилировал UDP сервер, который юзал на ТРлинке, на новый камень. Сервер завелся с полпинка, чем меня несказанно опечалил, ибо я понимал, что завелось сразу - обязательно не взлетит... Пиздец пришел при попытке завести сервер из под автозапуска. Биндить порт из под автозапуска сервер отказался (видимо на тот момент не все подгрузилось), хотя на старой железке заводился. Пришлось пилить серверу холодный старт...
Что до контроллера шасси - драйвера движков разделились. Один из двух от трех вольт завелся. Второй - нет... Странно, дравера то вроде одинаковые.
Вспомнил, что у Вирт2Рилки есть пин PWR_VIN, который как оказалось 5 вольт... (Кто придумал название??? Помоему PWR_VIN - это входное питание, а не 5вольт после Sepic).
Запитал от пяти вольт. Завелась. Подцепил контроллер шасси к вирте по USART. Опасаясь спалить, использовал только линию TX виртурилки. СХЕМ ТО НЕТ!!!!

Дальше три часа воевал с операционкой контроллера шасси, пытаясь добиться повышения частоты приёма команд... Потом допиливал сервер, объединяя функциональность ардуинки и тплинка в вирте... Но это тема не этого рассказа... Сделал... Хотел было ехать... Но внезапно понял, что ШИМ на сервах обрабатывается с задержкой... Я пытаюсь так часто его устанавливать, что линух не успевает отрабатывать...

Моя операционка на 8Мгц успевает, а линух на 300Мгц не успевает... Пришлось команды сервы замедлять...

Поехало... Теперь надо камеру курить... У нее напервой разъём для вирты неформатный.

Изображение

ИТОГО: Минус провода, железо и программы... Быстрее, мобильнее, надёжнее... Хорошо.

В общем, железо офигенное, я так думаю, на полгода курения мне его хватит...
Линукс - тоже хорошо... Нравится... Но драйвера никуда не годятся...

Что-то тонкое на них запилить нереально.

Однозначно попытаюсь портировать свою ардуиновскую операционку на вирту...
Буду курить сборку ядра Линухи...

В общем, на полгода только курительной работы... Пилительной так вообще...




Спасибо за внимание.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Проект АТОМ

Сообщение Mirmik » 16 сен 2013, 09:26

З.Ы. Впрочем, вс проблемы со скоростью выполнения, наверняка решаются через какую-нибудь хитрую систему приоритетов.... А может и нет.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Проект АТОМ

Сообщение Arle » 16 сен 2013, 11:01

Дааа... без документации то тяжко. особенно если это вообще первый проект на управлении и нет опыта ни в программировании ни в радио =)
Аватара пользователя
Arle
 
Сообщения: 35
Зарегистрирован: 09 сен 2013, 16:42

Re: Проект АТОМ

Сообщение dimonix » 16 сен 2013, 13:33

линукс не является операционной системой реального времени, со всеми вытекающими последствиями. не зря же люди придумывают гибриды типа arduino yun.

еще есть вот такая интересная штучка, причем на i2c их можно посадить несколько.
dimonix
 
Сообщения: 35
Зарегистрирован: 07 сен 2013, 14:54

Re: Проект АТОМ

Сообщение Smit » 16 сен 2013, 15:02

А еще есть вот такая штука :)
Smit
 
Сообщения: 126
Зарегистрирован: 07 сен 2013, 00:53

Re: Проект АТОМ

Сообщение dimonix » 16 сен 2013, 15:06

Smit писал(а):А еще есть вот такая штука :)

уже портировано на виртурилку? :shock:
dimonix
 
Сообщения: 35
Зарегистрирован: 07 сен 2013, 14:54

Re: Проект АТОМ

Сообщение Smit » 16 сен 2013, 20:36

dimonix писал(а):
Smit писал(а):А еще есть вот такая штука :)

уже портировано на виртурилку? :shock:

Нет . Пока как видите проблем и без этого хватает. Но думаю в этом нет ничего невозможного.
Или вот еще вселяет надежду.
http://processors.wiki.ti.com/index.php/Realtime
Smit
 
Сообщения: 126
Зарегистрирован: 07 сен 2013, 00:53

Re: Проект АТОМ

Сообщение Mirmik » 16 сен 2013, 21:29

Интересно. Надо будет покурить этот вопрос.
... и перерастворяясь из одной формы реальности в другую. И вот он я, рядом с вами падаю в эту же нору, тот кто волшебной палочкой вра...
Аватара пользователя
Mirmik
 
Сообщения: 221
Зарегистрирован: 04 сен 2013, 19:20
Откуда: Московская область, Пушкино

Re: Проект АТОМ

Сообщение Smit » 16 сен 2013, 21:44

Mirmik писал(а):Интересно. Надо будет покурить этот вопрос.

Мне кажется для Вас это будет хорошим решением. Лично я виртурилку взял заинтересовавшись ее потенциалом по видео части. Ну пинами подрыгать было бы неплохо. Но не критично :) Кстати неплохой хост получится для bitfury asics ;)
Smit
 
Сообщения: 126
Зарегистрирован: 07 сен 2013, 00:53

Re: Проект АТОМ

Сообщение orangeudav » 16 сен 2013, 22:44

Я так понимаю, главный вопрос этого поста
будет ли схема?
или не будет потому что зачем плодить конкурентов.
Пост напомнил Хроники Лаборатории :mrgreen:
orangeudav
 
Сообщения: 152
Зарегистрирован: 04 сен 2013, 15:35

След.

Вернуться в Проекты на базе Виртурилки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1