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

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

Эта история не про успех, а про 1000 и 1 проблему, с которыми мы столкнулись при разработке. Надеюсь, эти знания и опыт помогут кому-то сэкономить время и силы.

Мини модель и проверка концепции проекта

Использовались дальномеры, которые стояли в ряд и смотрели вниз. Информация с них будет поступать в микроконтроллер для обработки и проверки того, является ли поверхность ровной или выявилась неровность. Были добавлены пьезодинамик (buzzer) и светодиоды для индикации при обнаружении ямы и все это крепилось на машину на Дистанционном Управлении.

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

Мы в итоге имели машину на ДУ, который натыкаясь на нервность пищит и мигает светодиодами. Успех!

Разработка полноценной модели

Концепция работала и мы приступили к разработке полноценной модели, которую можно было бы пристроить к машине и она фиксировала бы ямы.
Прибавилось количество дальномеров, GPS и модуль SD карты.
Вопросов по увеличению количества дальномеров думаю у вас не возникло.
GPS модуль использовался для определения местоположения ямы и модуль SD карты для записи информации по ямам.

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

Определение размеров ямы

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

(картинку можно сделать)

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

Рассматривали разные варианты. Например, была идея прикрутить инкрементальный энкодер на колесо, с помощью которого можно было понять скорость колеса и соответственно, вычислить размер ямы. Но инкрементальный энкодер при его тестировании давал сбой даже при скорости колеса игрушечной машины на ДУ. Была идея на колесо установить магнит и с помощью датчика холла фиксировать один круг колеса. Это нам дало бы возможность вычислить скорость машины.
После, мы узнали, что GPS модуль может нам предоставить скорость передвижения.
Было решено использовать это, как оптимальный вариант.

Огромная проблема, которую мы пропустили

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

Сейчас постараюсь все объяснить. В теории, устройство должно было сканировать дорогу как сканер сканирует бумагу. Зеленые отметки это отсканированная часть дороги:

На деле все работало примерно так (при превышении скорости 20 км в час):

Ямы на дорогах могли быть частично или полностью не зафиксированы:

Сканер лидар

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

Исследования привели нас к лидар сканеру. При этом, он должен был быть высокоскоростным и возможен для использования вне помещений (outdoor). Потому как, для сканера лидар, предназначенного для использования внутри помещений, солнечные лучи являются критичными и сканер не будет работать корректно. Собрав всю информацию и поговорив с руководством, мы пришли к решению, что для нас лидар сканер не подходит по нескольким причинам. Он был дорогим, стоимость сканера, который мог бы сканировать дорогу на скорости 60 км в час, была в пределах 1500-2500. Много неопределенностей, многие мощные лидар сканеры нужно предварительно заказывать, при таких расценках любой промах в предварительных расчетах обходился бы дорого по цене и времени, была неопределенность, связанная с дополнительным железом - сможет ли, например, raspberry pi обрабатывать поступающую информацию или для него потребуется докупать что-то помощнее.

Камера

После некоторых размышлений, мы решили попробовать использовать камеру для фиксации ям и трещин на дорогах. Хотели, чтобы камера была направлена вниз на дорогу для более точной фиксации. Придумали как прикрепить камеру сзади машины, чтобы она смотрела на дорогу, объездили город, записывая на видео дорогу. Обновляли имеющиеся знания по компьютерному зрению, изучали существующую информацию и наработки в данном направлении, и разработали решение.
Снизу будут указано несколько минусов данного решения.
Мы планировали, что камера будет подключена к raspberry pi и весь алгоритм будет работать на нем, но разработанный алгоритм компьютерного зрения довольно медленно работал на компьютере. О его работе на raspberry pi не могло быть и речи.

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

Им больше понравилось наше прежнее решение с датчиками дальномерами. Ошибкой с нашей стороны было то, что не был сделан полный сбор бизнес требований. 

Заключение

После, несколько раз презентовали проект, но дальше он не развивался. Я был направлен на другой проект и на этом проект “Цифровая дорога” был приостановлен. 

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

Если кто-то будет заинтересован в проекте и имеются вопросы, или хотели бы использовать наработки, вы можете связаться со мной. Буду рад поделиться накопленными знаниями в этом деле.

Комментарии (6)


  1. trir
    27.02.2022 22:20

    Есть же готовые решения и давно http://sdtech.ru/store/lab/


  1. tvl
    27.02.2022 23:46

    2011 год. Бостон. Просто приложение для смартфона. http://www.streetbump.org/


    1. MarksMan09
      28.02.2022 00:23

      Неплохо, но это не поможет, когда на дороге один сплошной bump ...


  1. vakhramov
    28.02.2022 04:40
    +2

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

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

    Для построения карты на высокой скорости никакие ардуины не подойдут, 60 km/h это 1000 метров в минуту, если требуемое разрешение (не нашёл в тексте, оно должно быть в 2 раза выше, чем минимально обнаруживаемый объект) 2 см (чтобы детектить минимальный объект 0.05 м) нам надо делать 50.000 замеров в минуту всеми датчиками (полоса 4м, датчики каждые 0.02 м, 200 датчиков).

    У производителей измерительной аппаратуры для упрощения передачи создаётся RLC (run length code), в котором кодируются регионы отклонившихся от номинальных значений датчиков (например - слева направо 10 датчиков отсканировали ровную поверхность, потом яма 40 датчиков, потом снова ровная поверхность 70 датчиков, потом яма 30 датчиков, потом 50 датчиков ровно - код будет 10 40 70 30 50, первая цифра кодирует всегда количество не "сработавших", то есть если слева сразу яма, то код начнётся с 0)

    Поскольку требуют глубину, массив будет двумерный. Максимальное количество регионов пусть 16,

    итого 32 unsigned char нужно формировать каждую 1мс (при скорости 60 км/ч) и ставить их в очередь на отправку в систему (верхнего уровня) управления хранением полученных данных. Ethernet подходит, можно паковать по 10 замеров.

    Скорость запрашивать системой верхнего уровня по can, в машине уже есть нужные "энкодеры".

    Датчики подобрать согласно данным условиям, они тоже не все быстрые


  1. exception_cpp
    28.02.2022 10:44

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

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

    Успехов вам и удачи в получении опыта :)


  1. Oegir
    28.02.2022 11:00

    Почему не использовать g-сенсор и ML?

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

    ИМХО при оценке состояния дороги нет нужды считать каждую ямку, нужно учитывать общий износ покрытия. На основе статистики КМК это можно будет сделать довольно точно.