Репозиторий проекта робота-картографа, который может ориентироваться по построенной карте и выполнять роль умного робота-пылесоса
Что уже готово:
- Точное передвижение робота к заданным координатам. Через послдовательный порт можно отправить ему координаты относительно точки включения в формате "1.2 3.4" в метрах. Робот вычисляет целевой угол, на который ему нужно повернуться и расстояние, которое ему нужно проехать, и движется к нему.
- Если на пути к цели робота развернуть/поставить на пути препятствие, которое его отклонит, то он сразу же корректирует мощность, необходимую для каждого из мотор-колес, чтобы держать заданное направление. При этом используется модуль гироскопа, чтобы постоянно иметь точный угол робота относительно того, в котором он был включен.
- Измерение расстояния вокруг робота и пока что отправка в последовательный порт без записи в ОЗУ. Для этого используется самодельный LIDAR с двумя дальномерами, направленными ровно в противоположные стороны. Сканер крутится с определенной скоростью, которая определяется частотой срабатывания датчика холла. Лазерные дальномеры могут делать одно измерение в 50 миллисекунд, и зная скорость вращения, можно определить угол, на котором находился дальномер во время измерения
- Python-скрипт для отображения карты в реальном времени, которую строит робот.
Что планируется сделать:
Перенести проект на ESP32 с Arduino, для этого нужно будет поменять все пины в проекте, заменить библиотеку для bluetoth на еспэшную
Вынести некоторые функции в библиотеки для удобочитаемости
Добавить запись значений с Лидара в ОЗУ (буквально строить карту)
На основе карты, находящейся в ОЗУ можно будет реализовать алгоритм движения к цели, выбирая наиболее оптимальный путь, избегая препятствия. Алгоритм "A*" кажется одним изсамых лучших, на мой взгляд
Добавить алгоритм для движения по квартире, чтобы строить карту, а после - пройти по квартире так, чтобы не осталось непройденных мест (Все-таки робот-пылесос)