roboforum.ru

Технический форум по робототехнике.

linvinus

Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.

Re: linvinus

linvinus » 10 сен 2016, 22:38

в теме про марсоход я давал ссылку на 4х колёсный "марсоход" распечатанный на 3Д принтере.
у автора есть и другие интересные модели https://www.youtube.com/user/Barbituric ... =0&sort=dd
мне вот этот понравился

https://www.youtube.com/watch?v=_eqha5_EZJs

Напомнило мне этот забавный ролик post326958.html#p326958

Re: linvinus

linvinus » 22 сен 2016, 21:59

Осень наступила захотелось ярких красок, захотелось подсветку функций в редакторе,
в моём любимом редакторе geany, такой функции нет (для C и C++)
Но мне так захотелось что я даже решил освоить vim, но больше чем на один день меня не хватило, конфиг разросся до неимоверных размеров а удобство всё не появлялось.

Загрустил я но ничего не оставалось, кроме как запилить этот функционал в geany.
В общем, если кому интересно, присоединяйтесь к тестированию.
исходники тут https://github.com/linvinus/geany/tree/ ... tion_names
Репозитарий с пакетами https://launchpad.net/~linvinus/+archive/ubuntu/geany
Обсуждение тут https://github.com/geany/geany/issues/1231

Добавлено спустя 1 час 23 минуты 20 секунд:
ранее я давал ссылки на подобное, вот ещё примеры chibios На arduino http://hackaday.com/2016/09/22/arduino- ... eneration/

Re: linvinus

linvinus » 28 сен 2016, 23:20

Наткнулся на перечень моторов и их маркировку по размерам.
Motor-12-kinds-DIY.jpg

Re: linvinus

linvinus » 30 сен 2016, 21:40


Re: linvinus

Dmitry__ » 30 сен 2016, 22:51

linvinus писал(а):Доставка дронами

На видео бегает толстый мыжЫк-пчела :ROFL:

Re: linvinus

linvinus » 01 окт 2016, 15:29

По пятницам только такие дроны работают :)

Re: linvinus

yra » 01 окт 2016, 22:31

По поводу протокола: я так понял, что это 'чисто протокол', т.е. для какой ситуации в каком порядке раскладывать байты. В качестве примера - COM-порт, т.е. устройство по природе символьное т.е. возникает такая ситуация, что фрейм оборвался на средине или ведомое перестало отвечать. В общем исключительная ситуация, с которыми борются все разработчики микроконтроллерного ПО с разной степенью успеха (таймеры программируют, перезапросы формируют). Из readme не ясно - полный дуплекс или мастер-ведомый. Если полный дуплекс (т.е. каждое устройство считает себя вправе в любой момент кинуть запрос другому вне зависимости от запросов от другого)- как решаются исключительные ситуации.
Одно из решений - в качестве транспортного уровня использовать MODBUS. Там в протоколе ещё и временные параметры фигурируют.Имплементация для ведомого - http://www.freemodbus.org/index.php?idx=5. Если проанализировать исходники, то там как раз очень большое внимание уделено обработке исключительных ситуаций и портируемости. ... но MODBUS 40+ лет!
В общем, моё мнение ,при выборе протокола нужно смотреть каким образом код обрабатывает исключительные ситуации, в полном дуплексе которых множество. Если же брать сторонний транспортный уровень, в котором это всё решено, то контрольные суммы не очень нужны (их транспортный уровень считает).
Не знаю как других - меня всегда отпугивала предельная краткость описания проекта (да ещё на английском). Проект предполагает некий уровень абстракции, которым сложно проникнуться через английские слова (особенно когда до этого ничего подобного не встречал)...

Re: linvinus

linvinus » 02 окт 2016, 10:31

MODBUS более "жирный" чем мой протокол, и там кодирование другое, если плохая связь modbus долго будет синхронизироваться.

Упс, для передачи по последовательному порту есть Modbus RTU, там организована повременная синхронизация, и пакеты достаточно маленькие (даже на байт меньше чем у меня).
Честно скажу я с ним не сталкивался раньше, скорее всего я бы его взял за основу.
нужно будет на практике сравнить.
у FreeMODBUS есть свои грабли https://habrahabr.ru/post/279747/


реадми немного устарел.

Дуплекс полный, разницы между хостом и контроллером с точки зрения протокола нет никакой.
Но у меня буфер протокола (буфер для разбора команды и подсчёта контрольной суммы) общий и для приёма и для передачи, полный дуплекс достигается за счёт буферов в драйвере последовательного порта (он есть на любой платформе arduino,chibios,linux), таким образом команды идут в обоих направлениях одновременно.

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

Задача протокола при отправке взять данные пользователя, закодировать, отправить в буфер драйвера последовательного интерфейса, дальше данные отправляет уже драйвер последовательного интерфейса.

При приёме задача протокола читать из буфера драйвера последовательного интерфейса и по мере поступления новых данных разбирать команду и вызывать соответствующий пользовательский обработчик.



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

В протоколе два типа отправки команд (send), с подтверждением доставки и без подтверждения.
send - отправить данные на удалённую сторону, либо без подтверждения (аналог UDP) либо с подтверждением (аналог TCP)

recieve - получить данные от удалённой стороны, эти команды по определению с подтверждением т.к. мы запрашиваем данные (это и есть наше подтверждение).


Команда send отправленная с подтверждением , ждёт ответа заданное время, в ответ либо ОК либо ошибка (неверный размер, неправильная чексумма и т.п)
в случае если неверная чексумма пакет просто отбрасывается с уведомлением об ошибке.

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

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

Я писал протокол для того чтобы организовать канал между ROS и роботом пылесосом,в котором моя собственная прошивка.
В такой конфигурации ROS ведущий - контроллер ведомый.
алгоритм взаимодействия
1) ROS запрашивает версию у контроллера, если ответ получен то считаем что связь установлена
2) ROS посылает конфигурацию в контроллер, если успешна то всё готово для нормальной работы, если неуспешно то начинаем с первого шага.
3) ROS в цикле начинает передавать управляющие команды и получать ответы, в случае ошибки начинаем с первого шага.

Для того чтобы понять почему именно так реализовано нужно понимать следующие моменты
1) последовательный порт это двунаправленный поток (stream) данные в нём никак не разбиваются на пакеты
2) чтобы разбить поток на пакеты используют разные методы кодирования, суть которых в том чтобы легко определять начало каждого пакета, самый простой случай - стартовые байты , например пять подряд 0xFF, но это ненадежно и расточительно, есть другие методы которые решают эту задачу.
3) как только появляется возможность разбивать поток на пакеты можно реализовать протокол верхнего уровня, тут уже всё более менее стандартно, в пакете делают заголовок и тело с полезными данными, если данные у всех одинаковые то различия протоколов только в заголовке, сколько байт в заголовке под адрес/номер команды, сколько под размер, сколько под чексумму.
Т.е. отличия modbus и моего протокола в пунктах 2 и 3.

4) далее есть ещё более тонкие моменты, как например серриализация данных, как вы верно отметили в другой ветке, на разных концах могут быть разные big-endian/lettle-endian системы, и кроме того данные в памяти могут лежать на разных концах по разному. но как я уже пояснял , если контролируем обе стороны то никаких проблем мы не получим.

у меня этот пункт отсутствует, но он есть например в протоколе http://wiki.ros.org/rosserial
Там есть специальный генератор на питоне который генерирует C++ классы для того чтобы правильно серриализовать сообщения.

Аналогично в протоколе https://github.com/mavlink/mavlink (популярный протокол для квадрокоптеров)

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

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

Re: linvinus

linvinus » 21 окт 2016, 23:26

очередной птницо, вечерело...
https://www.youtube.com/watch?v=3mBT0bp ... PzZhVO6fhA

Re: linvinus

ilalexey » 22 окт 2016, 00:14

Добра штука. Дзенькую.
Совсем про пятницу забыл.
А сиськи то где? :D

Добавлено спустя 33 минуты 37 секунд:
..О, да вот же они!!

Re: linvinus

linvinus » 22 окт 2016, 00:51

ilalexey писал(а):А сиськи то где? ...
О, да вот же они!!

зачёт!
моими лапками и то сложно на басу...

я ломаю голову как переделать станок на чпу.
В смежной теме была фраза
Чпу оборудования люди боятся по сей день и не понимают что это(выгоды). Народ не видит разницы вращения лимба вручную/двигателем(в любом из вариантов боятся себе это позволить).


помимо цены ещё есть фактор доступности.
например в моём случае я закупил шаговики, контролер и блок питания ещё в 11 году, но когда стал прорабатывать детали как переделать стол proxxon tk150 в ЧПУ понял что у у меня не хватит опыта (на тот момент), так что пришлось учиться крутить лимбы руками, постепенно что то освоил, теперь готов переделать. да и то для меня ещё остались сложные моменты.

Одна из сложностей - ось z просто никакая, там точная подача реализована на половинке бронзовой гайки, для ручной работы ещё годится, а чпу износит гайку очень быстро, я уж молчу про люфт., так что ось z полностью нужно переделывать, ставить новую гайку и т.д

в общем, чпу пока ещё не так легко доступен, особенно если речь о сколь нибудь значимых нагрузках.

Добавлено спустя 5 минут 31 секунду:
не довел мыль...
как переделать станок когда под рукой нет другого станка :))
как говориться одним фломастером можно покрасить почти всё... а двумя абсолютно все

я как по минному полю шагаю, сначала меняем то, потом на новом станке меняем то ...
если что то сразу не получится я попал, вернуться нельзя будет

Добавлено спустя 16 минут 55 секунд:
Кстати насчёт музычки, если нравится тежеляк вот кое что из "современного" , слушать на полную катушку
красивая вещь от кого то из питера https://www.realmusic.ru/songs/578473

и вот (по музыкальной нагрузке близко к классике но совсем не похоже на классику)
https://soulcyclemetal.bandcamp.com/album/soul-cycle-ii (если сходу не зацепит то можно прослушать Ethereal , Evolutia , Unphased, One Fleeting Moment, если не зацепит то ой :) )
к сожалению на третий альбом ребят не хватило, обещали сделать но так и не вышло
Последний раз редактировалось linvinus 22 окт 2016, 01:07, всего редактировалось 1 раз.

Re: linvinus

ilalexey » 22 окт 2016, 00:59

Я именно так и делал - нарисовал ещё один фломастер.
Начёркал чертёж и по лимбу плясал. Вышло идеально. Люфт учитывал. Сиди, крути да считай - главное не сбиться.
linvinus писал(а):ля ручной работы ещё годится, а чпу износит гайку очень быстро

Не парься. Пару раз подтянешь, а потом на другой уровень выйдешь.
linvinus писал(а):я уж молчу про люфт

Хи-хи.
Линцнц вполне справляется с этой чухнёй(меня устраивает).
На люминкевой станине напили из люминьки оснастку. У шпинделя оборотов сделай под тридцатник и фрезку острую.

Re: linvinus

linvinus » 22 окт 2016, 01:13

да материал это вторая проблема, я рассчитываю на капролон 10мм вместо люминя, люминя у меня нет.
а нужно сделат что то типа этого
Вложения
29102010278.jpg

Re: linvinus

ilalexey » 22 окт 2016, 01:32

Что у тебя есть?
На что готов тратиться(что важней - деньги или время)?
Что в загашнике?
--
Если это ремень, то шаговик и фанерка выдержит(может даже лучше будет). Фуншуй не когда не поздно навести - был бы резон.

Re: linvinus

Dmitry__ » 22 окт 2016, 01:56

Такс, бухаете и без меня, а я работу работаю :(
Пачиму тема сиське заглохла?
А хотите жестяк? Вспомнил, посмотрев видео про гусеничную базу в начале этой стр.
Приношу я такую базу домой (сверху сделали робота как в клубе) Потом могу фотку скинуть.
Сразу начинаю показывать ребенку (4.5 года). Он пальчики везде свои пихает, все больше в гусеницы. А я аккум вставляю, джойстик подключаю. Начинаю джойстик плавно прибавлять, а танк не едет (у нас такая опция, для дешевых джоев, работает только >20% наклона). Ну добавляю больше, танк как взревет, ребенок "ой", пальчик из гусениц вытаскивает, а он загнут под 30% в другую сторону, а из подушечки пальца кровь идет. Дальше можете представить что было со мной? Я тихо сползаю по стенке, начинаю продумывать куда везти ребенка со сломанным пальцем, мама тоже тихо сползает по стенке. Ребенок на нас посмотрел, начал орать. Через 2 минут этого шоу, я беру себя в руки и начинаю спрашивать его где болит. Он на подушечку пальца показывает, я ему "а тут не болит?" (где палец в другую сторону загнут). Он говорит - нет :) Тут я отойдя от шока, начинаю понимать , что у детей намного больше пальцы загибаются в обратную сторону. А потом до меня еще доходит, что палец на суставе так загнут.
Вощем, аккуратнее с этими монстроидальными базами. Да, ребенок сказал, чтоб я этот танк унес к себе в комнату и больше не приносил, так и делаю пока. На у папа, конечно, дебил полный :D

Добавлено спустя 14 минут 39 секунд:
IMG_4061.JPG

IMG_4069.JPG


Rambler\'s Top100 Mail.ru counter