Самый точный способ измерения линейного расстояния, пройденного колесом
Предположим, бот с колесами движется по прямой, и мы хотим измерить это пройденное им линейное расстояние как можно точнее. Один из способов заключается в использовании оптического энкодера для измерения угла поворота колес и получения линейного пройденного расстояния. Другим способом может быть использование данных акселерометра и получение линейного пройденного расстояния. Какой из этих двух методов был бы лучше ? Или есть ли третий метод, который является более точным, чем предыдущие два?
@karnyrocks, 👍2
Обсуждение2 ответа
Если вы измеряете одно из колес свободного хода (без подключения к нему двигателя), это зависит от тяги колеса, но это может быть довольно точно.
Если вы двигаетесь горизонтально, то был бы хорош простой акселерометр (1 ось). Но если у вас есть вертикальная составляющая, то вы не можете отличить ускорение от силы веса (Эйнштейн). Если вы используете 3-осевой акселерометр, вы можете вычислить / извлечь скорость перемещения роботов (вычтите составляющую G = 9,81 м / с2) и, следовательно, расстояние. В этом случае вы должны использовать векторную арифметику.
Если земля имеет достаточную "структуру", вы могли бы использовать оптический датчик (как у оптических мышей).
Если у вас есть эталонный объект (например, стена, книга), вы можете использовать лидарный датчик (https://en.wikipedia.org/wiki/Lidar) для измерения абсолютных расстояний в моменты времени и вычисления относительного расстояния между этими моментами времени.
Комментарий к идее колеса свободного хода. Еще в 1970-х годах стандартным методом, использовавшимся инженерами General Motors, было "пятое колесо", прикрепленное к задней части автомобиля. Это было обычное велосипедное колесо, которое свободно подпрыгивало вверх и вниз на поворотном сцепном устройстве. Мы могли бы выглянуть в заднее окно и * увидеть*, как он подпрыгивает. Но он всегда был точен, так как имел достаточную инерцию вращения, чтобы поддерживать скорость, даже несмотря на то, что большую часть времени находился в воздухе., @Boggyman
Если вы используете акселерометр, вам придется дважды интегрироваться, чтобы получить пройденное расстояние. Эти две интеграции также приведут к ошибкам и шуму, поэтому результат будет не очень точным без большого количества исправлений.
Если колесо не проскальзывает и не приводится в движение, результаты подсчета оборотов колеса должны быть достаточно точными, когда робот движется по прямой.
Перетаскивание дешевой компьютерной мыши за роботом и считывание ее выходных данных также могло бы сработать, но я еще не пробовал это делать.
Наиболее точным, если вы можете настроить плоский объект, который достаточно хорошо отражает направление движения робота, вероятно, является ЛИДАР. Недешево, но достаточно легко сделать, пока робот движется по прямой.
Другим вариантом может быть подсчет оборотов колес и калибровка с помощью лидара (или GPS для очень больших расстояний) и использование калиброванных оборотов колес в окончательной версии, или использование двух или более методов и слияние датчиков.
- В чем разница между акселерометром, гироскопом и датчиком магнитометра?
- Как связаться с датчиком через порты RX/TX Arduino?
- Взаимодействие с датчиком SSI?
- Правильный способ получить значения крена, тангажа и перемещения
- Определение относительно точной скорости с помощью ИДУ
- Arduino Nano IOT LSM6DS3 получить угол гироскопа в градусах
- Не удалось найти подходящую библиотеку для MPU9250.
- Как прочитать необработанные данные с модуля GY-85?
Вычисление скорости и пройденного расстояния исключительно путем интегрирования (дважды) входных данных акселерометра является сложным и никогда не будет очень точным (небольшие ошибки измерения приведут к большим ошибкам). Я бы порекомендовал использовать для этого оптический датчик и окружность колес, поскольку это намного проще и точнее., @StarCat