Pull to refresh

Comments 63

UFO landed and left these words here
По использованию акселлерометра в смартфоне вопрос логичный и закономерный. Действительно, в готовых реализациях мониторинга его и используют, правда, возможно, с дополнительными шагами правильной устрановки и калибровки. Почему здесь был выбран заведомо сложнее варинт — две причины
1. Поскольку проект по фану, то главным интересом для меня здесь была железка, без ее существования заниматься всеми остальными 80% было бы не интересно. Можно считать, что она сюда насильно прикручена.
2. Изначально, для оправдания использования отдельного акселерометра, было задумано собирать еще и скорость с колеса (которая была собрана, но проигнорирована на этапе определения качества). Поэтому раз железка уже нужна, то и акселерометр туда же можно было добавить, для возможности например пользоваться смартфоном во время трекинга, без жесткой его фиксации.
Ну еще минус — то, что смартфон (если он на владельце едет) дополнительно самортизирован.
Можно на руль прикрепить — для этого уже куча готовых решений. А если взять какой-то старый и не сильно нужный — изолентой к раме)
У меня так и закреплен, на такую
штуку
image

Но так его юзабельность сужается конечно, а выкручивать вперед-назад надоедает, если активно фоткать например или разговаривать. Так что отдельный смартфон выглядит более выигрышным решением.
Не хватает корреляции данных с стравой, скорее всего они будут совпадать во многом.
Делал что-то подобное, но для анализа качества воздуха. В коробочке акселерометр, плата для логов, точного времени, GPS, «показометр» качества воздуха. Потом все скидывалось в Influx/Grafana. Делал для себя, но потом забросил — качественные датчики стоят дорого.
Картинки








Круто! Да, общая часть значительная, только данные разные. А для чего использовался акселерометр в вашем случае?
Была идея данные с видеорегистратора по времени связать с показаниями акселерометра, чтобы вытаскивать фотографии с ямами, а потом на основе этих фотографии обучать сети и как-то потом выйти на качество дороги.
Тк паять я не умею, возникла идея попробовать добавить данные с акселерометра в gpx, который можно взять из велокомпа или похожего устройства.
Как справедливо заметили в первом комментарии, здесь можно обойтись и одним смартфоном без пайки. Железное устройство здесь притянуто за уши, можно сказать от моих личных хотелок. Вроде даже есть приложения для работы с акселлерометром, которые могут писать в лог. Так что и кастомное мобильное приложение можно отбросить при желании.

Насчет кофе-теста — если стакан достаточно тяжел, можно не расплескать кофе и на плохой дороге, за счет инерции самого стакана колебания кофе будут слабее.

Стакан — твёрдое тело, относительно жёстко зафиксированное. Кофе — невязкая жидкость со своей инерцией. Если кофе в стакане больше половины, никакие силы не удержат его от расплёскивания при резких ускорениях.
Тест прекрасен, хочется иногда предложить его некоторым водителям автобуса, а иногда и метро. Как раз в метро очень хотелось наличия подобного приложения у большинства пассажиров, чтобы все косяки линии и наплевательское отношение водителя поступали сразу в диспетчерскую метро.
Было бы круто, если бы множество катальщиков собирало эти данные. Для этого действительно нужно упростить «железную» часть только до одного смартфона. Чтобы катальщики были заинтересованы во время катания запускать это приложение, нужно в него добавить каких-то полезных фишек, одна из них — сами результаты работы — карта качества дорог.
Я, как тоже катальщик на велосипеде, скажу, что большее раздражение вызывает не тряска, а необходимость прикладывать усилия, например езда по песку. Как такое измерить, даже не знаю, на ум приходит сопоставление пульса и скорости движения.
Ну про песок в городах это преувеличение. Не видел давно таких тротуаров/дорог, чтоб прям в рыхлом песке были
Песок, кстати, ещё не худший случай — он легко укатывается и на нём можно неплохо ездить на широкой приспущенной резине, ещё лучше на фатбайке. Жёваный асфальт, шебёнка, застывшие потёки от бетономешалок, выкрошенная тротуарная плитка, бордюры через каждый метр с ямами перед и за ними — это да, бывает нередко.

В городской черте песок именно на дорогах бывает обычно только после ремонта, например, канализации до укладки нового асфальта. А вот щебёнкой могут засыпать, а заасфальтировать через полгодика.
Песок это в качестве примера — его не засечет датчик вибрации (в отличие от щебенки), но он ухудшает качество дороги на уровне не меньше, чем щебенка.
С другой стороны, применение приложения можно и расширить — не только город, а и везде, где катаются велосипедисты.
Был случай, катался за городом и уже возвращался, можно было ехать по трассе, но по карте посмотрел и получалось, что срезать через лес было бы выгоднее. А через лес дорога была с песком, причем проходимость снижалась по нарастающей. Возвращаться тоже уже был не вариант — далеко и опять по песку. Вот для таких случаев приложение было бы идеальным помощником.
Прям истории с моей maps.me навигацией :D Часто кажется, что там, где пробежала собака — уже тропинка, а там, где по полю проехал разок трактор — на карте это автобан

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











UFO landed and left these words here
да, отсюда и плюсы/минусы как у любых краудсорсинговых проектов. Но я отдаю предпочтение в этом деле объему информации, которая есть на OSM, хоть и есть риск поиска брода

мост, который не дождался



UFO landed and left these words here
UFO landed and left these words here
Пульс поднимается не сразу, он интегрирует нагрузку. Для протяжённых участков можно использовать. Также зависит от других факторов — ветра, физподготовки, степени усталости, настроения и т.д. КМК нужен датчик натяжения цепи — можно снимать значения с отдельного небольшого натяжителя, значения скорости, каденса и уклона — его можно снимать с жёстко закреплённого акселерометра. Возможно, что-то окажется лишним.

Вопрос с картой качества дорог в её назначении — прокладка маршрута — понятно. Ремонт дорог — под вопросом, здесь нужны инициативная группа и выход на городские службы. А там бюджет, внесение в планы работ на предстоящий период, собственно ремонт, повторный контроль и т.д. Иногда складывается впечатление, что при наличии у служб актуальной информации об участках дороги, действительно нуждающихся в ремонте, асфальт перестанут закапывать из года в год на одних и тех же местах.
Тензометрический датчик в педалях подойдет (используется для замера выходной мощности велосипедиста вполне активно)
Деформацию какой детали покажет тензодатчик? Шатун и ось педали не подходят, их деформацией можно пренебречь. Можно было бы схимичить демпфирующую накладку на педаль и снимать с неё.
оч круто. можно еще авторассылку сделать с плохими местами дороги на сайт 115.бел. К слову, я часто гуляю с ребенком в коляске, покрытие тоже очень важно (привет, новая боровая!), в общем я кидал туда фотки и координаты, где были плохие пандусы на лестницах, в переходах метро, кидал фотки, где штыри торчат в земле, они достаточно быстро все исправляют. сайт хороший, молодцы
image
image

вот пример. важно это им всё отправлять, так как они не физически не могут видеть все проблемы города
На первом фото почти идеальный пандус. Перехожу ежедневно по швеллерам, на которые сначала нужно взобраться — ступень сантиметров 25, затем умудриться не зацепиться за швеллер. На выходе повторить.

Просто отсутствуют как класс отработанная технология и контроль, конкретные технические решения принимает на месте либо прораб, у которого в лучшем случае есть некоторый опыт и смекалка, в худшем — непосредственно Джумшут. В результате гнут бетонные бордюры, делают специальные уклоны на краю тротуара для удобного скольжения по льду под машину и другие дикости, и это никто не контролирует, а подрядчики ни за что не отвечают, переделывают за другие деньги другие джумшуты.

Нет системы. Нужно при приёмке заставлять прораба по готовому пандусу провезти на тачке пять мешков цемента. Если не помогло — подниматься по иерархии — повторить с руководителями подрядчика, контролирующего органа… И всё нормализуется.

А так да, отдельные обращения удовлетворяются.
да, но оно больше подходит для «латания дыр», когда все уже сделано хорошо и правильно. А когда нужно переделывать например весь тротуар, менять организацию движения и тд., то исправление мелких «ям» выглядит как бессмысленная мышиная возня, оттягивающая время двух сторон от вопросов глобальнее. Поэтому отношусь осторожно к этому сервису, но для правильных целей он хорош, согласен
чем больше сообщений что надо поменять весь тротуар, тем выше вероятность, что его поменяют)
да, если речь про весь. Но часто это превращается в репорт про отдельную плиточку на тротуаре где каждая 5я плохая. А поскольку, я подозреваю, что у этих ребят тоже есть метрики, то получается они фиксят эти тикеты по отдельности, тратя намного больше сил и времени вместо того, чтобы подумать и заменить все целиком. Утрировано получилось, но, надеюсь, позицию получилось описать. Хорошо если у них есть какой-то мета-прораб, который в силах отследить тренды и не дать работягам фиксать то, что будут решать «фундаментально» объединив кучу заявок (предыдущих и будущих) и решив источник проблемы, а не симтом.
с чего-то надо начинать. в наше дни популярными стали средства личной мобильности(электроколеса, элетросамокаты, и прочая колесная каталка), для них покрытие намного критичнее, чем для велосипедиста. А дальше их будет много больше. Вообще, по моим наблюдениям, надо пол Минска переделывать для этих целей. Но с чего-то надо начинать, но и нам грех жаловаться — велодорожки у нас огонь. То, что в своё время через весь центр сделали велодорожку, учитывая наш совок, для меня было нонсенсом!
Пожалуй, это лучший курсач, который я видел! Причём сразу по нескольким предметам. А может даже и на дипломный проект тянет…
Но если включить старого пердуна быть честным, давайте признаем, что практическая ценность этого проекта (в данной реализации) стремится к нулю. И вот почему:
1. Лисапедист — не трамвай, он старается объезжать препятствия на дороге. То есть если дорога в целом убита вусмерть, но есть маленькая колея с приличным покрытием — мало кто «ради чистоты собираемых данных» будет систематически ездить по ямам (а ткнуть в условной программе на телефоне кнопку «дорога — хлам» — легко мог бы).
2. Возможна и обратная ситуация, когда дорога вполне себе норм, но локальные обстоятельства вынуждают велосипедиста выбирать «буераки» (например, при объезде группы пешеходов)
3. Само по себе понятие качества тротуаров — весьма относительно. Например, для лясика плитка — вполне себе годное покрытие, но для роллера (который по простоте душевной решит воспользоваться данной картой) — это верная смерть. Для «горника» или фэт-байка мелкие ямки тоже не проблема, но для шоссера — печаль грустная. Кстати, грунтовки тоже могут быть очень разными, но данный девайс в принципе никак не поможет оценить их качество.
4. У всех, конечно, разные навыки и стили катания, и это стоило бы учитывать. То есть карта для девчачьих покатушек «на расслабоне» и нормальной «вкатки» — это очень разные карты.
З.Ы. Когда я жил в Минске, я в среднем вкатывал по 50-70 км в день (пара-тройка часов быстрой езды). Хотя по правде, качество дорог — это последнее, о чём я думал (ибо на лясике все дороги проходимы). Искатаны были все дороги (и лесные тропинки) Цнянки/Зелёного Луга/Уручья, половина парков города, все проспекты, велодорожки и много «просто улиц». Я не про-райдер, но катаю быстро, могу кое-где «перепрыгнуть» препятствие, все типы покрытия (включая снег и гололёд) для меня были норм. Впрочем, чаще всего я принципиально нарушал действующее ПДД, катаясь по дорогам. Однажды даже был привлечён за это к ответственности, с присущей белорусским силовикам неадекватностью (ехал часа в два ночи по пустой освещённой дороге домой (по две широченных полосы в каждую сторону), и навстречу гайцы… Маякнули мне сигнализацией, дескать, вали на тротуар, паря. Но конкретно в тот момент между мной и тротуаром была зелёная зона, а я не люблю без надобности «давить» траву; решил доехать до съезда во двор и там уже (разумеется, временно) съехать на тротуар. ДПСники, видимо, посчитали это личным оскорблением (отказ от мгновенного и бесприкословного подчинения их намёкам), развернулись (через две сплошные и без включения спецсигналов) и, обогнав меня, остановились. И вместо того, чтобы спокойно запрыгнуть на тротуар и «умчать вдаль», я решил всё же пообщаться, объяснив свою позицию. В итоге, второй гаишник гулял вокруг нас где-то с полчаса, а достучаться до человека за ширмой винтика в системе мне так и не удалось (хотя порой казалось, что лёд почти сломлен). С тех пор законные требования гайцов остановиться не замечаю. Для тех водителей, кто не поленился дочитать и преисполнился праведным гневом «что за дятел на дороге, да ещё и кичится этим», поверьте, я исключительно корректный водитель (и на лясике, и на авто/мото). Моя скорость на лясике в среднем близка скорости общественного транспорта (хотя вечерние троллейбусы, конечно, любят поиграть в шашки), все правила ПДД (кроме запрета ездить по проезжей части) я выполняю, в случае спорной ситуации всегда принципиально уступаю водителям/пешеходам (как раз по причине «незаконности» своего движения по проезжей части). Но двигаться по тротуарам/велодорожкам чаще всего (при моём стиле езды) гораздо опаснее (для окружающих), поэтому и выбираю меньшее из доступных зол…
з.з.з.ы ещё раз респект за проект! уверен, получили много удовольствия и знаний при разработке. Если (когда) вернусь в Минск, с удовольствием бы познакомился/покатался бы вместе. Удач! ;)
1. Лисапедист — не трамвай, он старается объезжать препятствия на дороге. То есть если дорога в целом убита вусмерть, но есть маленькая колея с приличным покрытием — мало кто «ради чистоты собираемых данных» будет систематически ездить по ямам
А если дорога исполосована траншеями поперёк? Или бордюрами, как в данном случае? В ПДД внести правку, конечно проще и существенно дешевле, чем обустроить велоинфраструктуру, но вариант хоть и оригинальный, но явно не оптимальный.
ткнуть в условной программе на телефоне кнопку «дорога — хлам» — легко мог бы
Одно дело ткнуть во всю дорогу, на ремонт которой целиком деньги выделят никогда. Совсем другое попытаться создать техническую основу для сбора координат конкретных провалов. Скажем, на ЖД есть специальные вагоны-лаборатории, которые периодически цепляют к составам и логируют состояние перегонов с целью дать конкретные указания путейщикам для замены конкретных шпал или отсыпки щебня. Теоретически такую лабу можно представить для автодороги. А на тротуарах Вы хоть раз видели лабораторию, официальную? То-то же.
2. Возможна и обратная ситуация, когда дорога вполне себе норм, но локальные обстоятельства вынуждают велосипедиста выбирать «буераки» (например, при объезде группы пешеходов)
Снова ключевое слово — «инфраструктура», которая теоретически должна подразумевать замкнутую систему велодорожек. Если на велодорожке пешеход — вопрос уже к нему в соответствии с ПДД.
3. Само по себе понятие качества тротуаров — весьма относительно. Например, для лясика плитка — вполне себе годное покрытие, но для роллера (который по простоте душевной решит воспользоваться данной картой) — это верная смерть. Для «горника» или фэт-байка мелкие ямки тоже не проблема, но для шоссера — печаль грустная. Кстати, грунтовки тоже могут быть очень разными, но данный девайс в принципе никак не поможет оценить их качество.
Слова не мальчика, но мужа. Автор статьи представил своё средство передвижения и техническое решение под него. Да, жёсткая прицепная тележка на двух небольших колёсах в этом смысле будет универсальнее. Критикуя — предлагайте.
Тут первоначально неверное решение запретить движение по дорогам в случае наличия тротуаров заложило хороший фундамент для последующих проблем, в т.ч. с легализацией моноколёс и прочих самокатов. Теоретически это может повлечь положительные изменения в сквозной проходимости тротуатов — по ним ведь и коляски с детьми возят, и тележки-чемоданы. Но практически такой вариант развития что-то сомнителен — больно дорого переделать все тротуары.

4. На вкус и цвет, конечно, но некоторые не гоняют, а передвигаются из пункта А в пункт Б, и тут чем меньше сюрпризов, тем лучше. Ведь удивительно было бы видеть, скажем, бордюры поперёк шоссе. А главное, есть же опыт стран с развитой велоинфраструктурой и оживлённым велотрафиком.
А если дорога исполосована траншеями поперёк? Или бордюрами, как в данном случае? В ПДД внести правку, конечно проще и существенно дешевле, чем обустроить велоинфраструктуру, но вариант хоть и оригинальный, но явно не оптимальный.

Я не очень понял, как это соотносится с моим комментарием… ))
С велодорожками существенная проблема не только в том, что их надо сделать (и это стоит денег), но и в том, что нужна культура велодвижения, а её в Беларуси (и других постсоветских странах, насколько я могу судить) пока нет. То есть катаясь по велодорожке, вы на ней встретите и роллеров, и мамочек с колясками, и детские лясики и собак и просто пешеходов… И всех этих людей (и животных), конечно, легко понять — дорожка-то удобная, не только ж для этих сумасшедших идиотов велосипедистов она… Но как вы правильно подметили, должна быть только для них (причём не унылые пару метров ширины в обе стороны, а по паре метров в каждую, да вдоль проезжей части), а иначе она — просто тротуар. Я тоже думаю, что тут стоит равняться на пример датчан или голандцев — там действительно созданы условия для велосипедистов — и народ действительно катает… Но у нас пока законодателям глубоко безразличны интересы масс, думали больше об откатах пожирнее… С надеждой ждём движемся к переменам…
Касательно ремонтов… Эээ… С чего бы нормальную дорогу ремонтировать? Но имхо, тут (в топике) речь немного не о том была (потому что для ремонта дорог уже есть шикарный проект, но только для России пока). Вот вам, кстати, и встречное предложение (запилить подобный проект/сайт для других стран)… Но критики моей как таковой нет, потому что какая может быть критика DIY? Человек реально нормально заморочился, довольно глубоко погрузился в тему. Не думаю, что он всерьёз думает «взлететь» на этом проекте, скорее всё «по фану» делалось… Собственно:
Главным техническим интересом, позволившим ухватиться за эту идею, стала возможность наконец-то сделать какую-нибудь железку
Как я это понял, идея была в том, чтобы (после составления внесения данных в автоматическом режиме) открыл карту и увидел, где лучше проехать. Но в такой реализации это очень недостоверно будет.
Касательно автоматического распознавания качества дорог. ИМХО, тут только системы CV помогут. Ну либо какие-нибудь хитрые эхолоты/лазеры… Ну или городить что-то малоадекватное (для XXI века) типа тележки со множеством колёс в ряд и датчиком на каждом…
Конкретно в Минске в основном тротуары широкие (наследие советских архитекторов, спасибо им за это). И страндартная практика «дорожников» — это просто нарисовать полосы для велосипедистов. Но это не решает проблему, а усугубляет её. На хорошей ровной дороге я вкатываю в среднем 30км/ч. Массы во мне 85 кг. Коэффициенты сцепления и площадь пятна контакта не знаю, но метров 5-8 мне надо точно, чтобы остановиться (и это на сухом асфальте)… Но пешеход, идущий «по ту сторону линии», меня не слышит и не видит, физически ему зайти на велодорожку ничего не мешает, результат бывает предсказуемо печален для всех… Ровно по этой причине я и езжу по проезжей части, там ко «встрече» со мной участники ДД более готовы…
если дорога в целом убита вусмерть, но есть маленькая колея с приличным покрытием
Просто на некоторых дорогах нет даже узкой колеи — например, старая поперечная траншея под трубу/кабель, когда-то заасфальтированная, но провалившаяся, или выскокие бордюры/бетонные блоки/металлические заграждения поперёк дороги.
1. Не написал в статье, но мой метод исследования не предполагал каких-то отличий от повседневной езды. Ехал именно так как еду всегда — если на тротуаре тропинка с норм асфальтом, а по кругу ямы, то едем так как оптимально. То есть карта фактически показывает с какой минимальной болью(в то конкретное время) можно преодолеть дорогу, а не что нужно починить (что нужно починить это косвенно показывает конечно)

2. Все так, поэтому краудсорсинг решил бы проблему, механизм мержинга данных разных профилей/пользователей есть

3. Да, поэтому была идея получить некую унверсальную оценку качества. А каждое траспортное средство или наездник уже может выбрать дороги соответственно своим лимитам (весенний шоссер — q = 8-10, летний горожанин — q = 5-10, осенний мтбшник — q = 2-10) Получить такую оценку не так и просто, но идея такая была.

4. Та же идея, что и в 3м пункте

По поводу неадекватности наказания — привлекался не раз, но в этом плане минские по моим впечатлением намного адекватнее местечковых ГАИ (что кстати подтверждает ваш факт про просьбу съехать на тротуар, у меня тоже так было). Меня штрафовали за езду по дороге, но каждый раз в районных цетрах, когда я был навьючен велобаулом на пару дней путешествия и преодолевать бордюры никак не мог был. Один раз даже оштрафовали за выездом из мелкого города, потому что оказалось, что с другой стороны дороги (за встречкой) в низине есть тротуар загородный, который 20 метров, а мне после этого по дороге все равно ехать с автомобилями десятки километров. (обозначен был разноцветно и заметно) Что самое забавное — штрафовал меня начальник ГАИ лично этого города. После этого мои представления о справедливости немного пошатнулись :D
На мой очень субъективный взгляд, ценность проекта, в достоверности данных которого необходимо сомневаться, достаточно невысока… А при таком раскладе достоверность очень невысока. Надеюсь, вы понимаете, что я не критикую ваш проект, как по мне, для «фанового» проекта вы зашли даже дальше, чем стоило бы )) Но если говорить про потребительскую ценность «карт качества дорог для велосипедистов», то надстройка над OSM с возможностью оценки этого самого качества была бы куда более достоверна (хотя и требовала бы ручного/полуавтоматического по данным телефона внесения информации).
4. У меня именно на веле не очень большой опыт по Беларуси, может, пару тысяч всего… Но как-то с райцентральными гайцами не сталкивался (один раз хотели было привлечь за «без фликера» (стопил куда-то ночью), но были корректно посланы). Впрочем, я давно не был в родных краях, вполне допускаю, что сейчас «местячковые» стали злее… Ну и да, те столичные не просили меня съезать на тротуар, это я так расценил их сигнализацию (они не сразу ко мне кинулись, а сначала коротко маякнули; а потом (вероятно посчитав, что я их проигнорировал), через пару секунд, поехали за мной)…
Но да, в целом в той системе ничтожно мало адекватных людей. Система дрессировала их не предупреждать нарушения, а карать (причём невсегда даже за что-то, просто по факту нашего существования)…
Да, я конечно это все понимаю. Про ценность при создании всего этого я больше думал для обучения, в первую очередь себя, иллюзий про реальную применимость этого вот всего не было :) Кстати, в осм точно есть атрибуты типа покрытия, возможно и качество там в каком-то виде присутствует
Очень круто, я думал про что-то похожее но для скейта или в крайнем случае самоката — колёса меньше, проехать сложнее, на скейте так много где вообще невозможно где велосипед проедет.
Ну и в том решении, про котрое мы думали и GPS был на плате, подключать к телефону или компу нужно было бы только уже дома.

Но мы только думали, а тут и сделали и проехали весь город.

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

Осталось определить где и в каком виде хранить результаты и написать в службы шеринговых самокатов )
больше как мысль для идеального мира с розовыми единорогами :)
Тоже нужна была карта ровных тротуаров для лонгборда. Но все сервисы, которые такую карту строили, уже умерли. «Велосипед» автора был бы прекрасен, если бы позволял наносить на карту данные с акселерометра телефона. Меня бы даже устроило, если бы карта была только моя личная, без агрегации чужих данных. Это бы позволило хранить мои лучшие маршруты не в голове, а в телефоне.
Но увы, столько работы проделано и всё бестолку.
Очень интересный материал! Если вы ещё не слышали о Минском Велосипедном Обществе, то обязательно свяжитесь [и вступайте], наверняка наработки пригодятся.
Очень крутая и подробная статья, спасибо! Как раз работаю над чем-то подобным, только с использованием существующих велокомпьютеров.

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

Можно поинтересоваться, исследовали ли вы этот вопрос подробнее?
Может проводили тесты с креплением на каретку/вилку/вынос и другие места?

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


фейл

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

Неужели при закреплении на дропаутах у вас нет горизонтальных шумов?

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

P.S. извиняюсь, промахнулся веткой.

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

Отличный проект! Но у меня как инженера много вопросов к реализации. Такие проекты, как говорят, «easy to start, hard to master».

Во-первых, bluetooth не очень хороший протокол для сбора реал-тайм даты из-за недетерменированных задержек передачи. Для этой цели я бы рекомендовал радиопередачу, скажем, через LoRa. Как вариант: передача через bluetooth, но синхронизация через LoRa, которая будет передавать отсчеты времени от мастер-устройства через равные промежутки времени, а сенсор добавляет эти синхронизирующие отсчеты в фрейм даты.

Во-вторых, использовать GPS для позиционирования мало — вы могли бы прикрутить фильтр Калмана и интегрировать информацию из трех источников (GPS, скорость, акселерометр).

В-третьих, меня смущает странная обработка сигнала — передача пиков. Теорема Котельникова при правильной настройке акселерометра (частота дискретизации + сглаживающий фильтр) гарантирует, что сохраненный в отсчетах сигнал будет соответствовать измеренному. Ну хорошо, вы хотите сжать сигнал — для этого можно зафитить сигнал на кубический сплайн (= применить аналитическую формулу в замкнутой форме) и сохранять только коэффициенты сплайна, а заодно зафиксировать ошибку сжатия. Насколько же ваш переданный «в пиках» сигнал соответствует измеренному — это большой вопрос, надо подумать на досуге.

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


  1. Да, проблемы с этим, определенно, были, из-за чего был имплементирован алгоритм Кристиана, который предполагает разное время задержек и кое-как справляется с этим. Что касается LoRa, никогда не слышал (да, я тот еще эксперт в электронике). В качестве мастер-устройства для синка времени может в данном случае выступить дефолтное андроид устройство с базовым набором периферии?


  2. Не совсем понял про недостаточность GPS для позиционирования и как связан акселерометр с этим, можно поподробнее?


  3. Пиками я обошелся по двум причинам — одна из которых то, что упрощенный донельзя алгоритм определения качества сегмента использует только экстремумы, без учета формы сигнала. Про проблему пиков не уверен, что вы меня правильно поняли. Основной вопрос был в том, что если передавать все значения измерянные вподряд, то на передачу уходит значительное время, во время которого нет возможности продолжать измерения ускорения из-за синхронной отправки данных. Поэтому высока вероятность упустить важные данные, передавая все вподряд.
    image


Для передачи по LoRa (будь то дата или синхросигналы) вам как-то надо коннектить передатчик, поэтому андроид не подойдет. Я бы вообще взял для этой задачи M5Stack и набросал слои нужных шилдов (типа GPS, аккумулятора и т.д.), там же и измерял дату, сохранял на SD-карту и, возможно, обрабатывал сигнал. Это такое маленькое, компактное и недорогое устройство на ESP-32. Пропала бы необходимость в синхронизации. На телефон можно было бы отображать текущее состояние датчика по WiFi.

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

По поводу передачи пиков — вы передаете не измеренный сигнал, а искаженный, причем нетрадиционным образом. В связи с этой «нетрадиционностью» я пока не понимаю, какую теорию можно было бы подогнать, чтобы понять, насколько переданный сигнал искажен. Если бы вы подгоняли под ваш сигнал кубический сплайн, то вы бы тоже передавали искаженный сигнал, но в этом случае на вашей стороне было бы понимание насколько этот сигнал искажен.
  1. Тут сознательно остановился на решении с мобильным устройством, этом мне показалось интереснее в данном случае. Поэтому, синхронизация через BT вроде ок решение в моем случае


  2. А, имеется ввиду про ускорение по горизонтали?


  3. Хм, не чувствую уверенности в этой области, но проясните, если можно. Начнем с того, что я не передаю сигнал и не хочу его передавать, так как его форма никак не использутеся, а только максимальные значения. Вот на простом примере для меня чтобы было понятно:



В первоначальной имплементации я каждые 2ms читаю значения ускорения и передаю их по БТ, после чего в данных для оценки качества у меня последовательность некая значений моментальных:
1,7,11,5,-2,-8,-4,0,3 => max = 11, min = -8


Чтобы отправлять меньше данных (принимая во внимание факт, что для алгоритма будут использованы только максимальные значения) мы читаем момнтальные значения быстрее, но отправляем только экстремумы
Для предыдущего примера это будет выглядеть как
11,-8 => max = 11, min = -8


В итоге алгоритм упрощенный даст те же оценки качества, но количество данных намного меньше. Где в моем рассуждении фейл?

Правильно ли я понимаю, что каждые 2 мс вы считываете данные в массив, а когда массив заполняется, то вы передаете минимальные/максимальные значения из этой последовательности и очищаете массив?

Небольшой оффтоп: для чтения потока данных лучше использовать соответствующий режим ADXL 345 непрерывного чтения, там же надо выставить сглаживающий фильтр, соответствующий скорости чтения, чтобы не столкнуться с проблемой альясинга. Например, если на входе будет идти быстрая синусоида, а у вас не стоит входной сглаживающий фильтр, то вы можете принять быструю синусоиду за более медленную синусоиду, как на этой картинке:
image

В общем да, только отправляю данные и очищаю когда график начинает двигаться в противоположную сторону (место перегиба).


Хм, интересно, не в курсе про разные режимы (точнее знаю про много настроек, но пользовался только частотой и точностью). Да, судя по тому, что я прочитал — проблема альясинга вполне возможна в моем случае. Но в моем случае это не изменит значение качества дороги, так как форма не используется в алгоритме. А непрерывное чтение как происходит, какие механизмы отличные от моего варианта?

Непрерывное чтение гарантирует стабильность появления отсчетов, стабильность их значений, а также включает входной сглаживающий фильтр, чтобы избежать альясинга. В противном случае датчику надо инициализироваться и де-инициализироваться при каждом отдельном вызове процедуры считывания, в итоге возникает «дрожание» значений как по времени, так и по значению акселерометра.

Касательно того, что вы используете для оценки тряски минимум и максимум — звучит как-то не очень надежно. У акселерометров даже в покое существует высокочастотный шум. Вы считываете значения каждые 2 мс — но это только один из режимов, взятый произвольно. Значения можно считывать и чаще, и реже, причем если чаще, то минимумы и максимумы просто потонут в возникающем шуме самого датчика. Я допускаю, что эмпирически можно подобрать режим (например, те же каждые 2 мс, но считываемые потоком), в котором максимумы и минимумы позволят оценить тряску, но я бы лучше взял за меру тряски что-то более надежное, например — энергию сигнала. Уверен, что разница между хорошим асфальтом и плохим будет заметная, но вы при этом находитесь в области изученной прикладной инженерии.

Вполне возможно, толком сигнал я не исследовал, хотя изначально предполагал. Объем всего остального функционала меня поглотил, как итог получилось всего по чуть-чуть и ничего доверенного до идеала :) видел много работ, связанных именно с методами определения качества по показаниям акселерометра, но оно так и осталось в мыслях :/
Про 2ms написал условно, я там менял настройки акселерометра, отвечающие за рейт этот, по дефолту было много больше.
А всё-таки про поточное чтение — механизм тот же взаимодействия акселерометром, только устанавливается настройка при ините?

Я бы на вашем месте, на самом деле, забил бы улучшать этот проект, но намотал на ус, чтобы в следующий раз сделать лучше.

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

Второй заключается в том, что сэмплы данных в большинстве случаев желательно считывать через равные промежутки времени. Если промежутки времени не равны, то данные искажаются («дрожание времени считывания» или Jitter). Если у микросхемы есть поточный режим, то он и гарантирует равные промежутки времени. А на контроллере для равных промежутков времени считывания еще нужно заморочиться, и то — может неожиданно прилететь другое прерывание, которое внесет задержку.

Третий аспект — поточный режим обычно включает в себя сглаживающий фильтр, который устранит проблемы альясинга.

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

Sign up to leave a comment.

Articles