Форум программистов, компьютерный форум, киберфорум
Робототехника и умный дом
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/237: Рейтинг темы: голосов - 237, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 1,264

Определение скорости движения робота?

12.02.2011, 04:55. Показов 46226. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно сабж. Как можно определить скорость движения робота? Именно движения. А не вращения двигателей.

Планировал использовать акселерометр. Но я его угробил. И перед тем как заказывать новый думаю может есть какие нибудь более эффективный способы.
Также подозреваю, что с акселерометрами в этом плане не все так гладко будет.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2011, 04:55
Ответы с готовыми решениями:

Определение скорости движения тела
Определять скорость движения тела в Ардуино при помощи ультразвукового датчика расстояния

Программа для движения робота в AVR Studio язык Assembler
Как написать макросы движения в AVR Studio язык Assembler Есть наземный робот и для его движения в программу для движения необходимо...

Ультразвуковой датчик для измерения скорости движения
Добрый день. Нужен датчик скорости. Пришла в голову такая идея: взять два УЗ сенсора, один приемник, другой - излучатель. Расположить их...

48
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
12.02.2011, 07:08
Как не странно, но именно через скорость вращения двигателя можно узнать. Двигатель вращает колесами с определенной скоростью. Колесо совершает N оборотов в единицу времени. За один оборот проходится расстояние, равное длине окружности. Длинна окружности = 2*пи*радиус. Следовательно, если за секунду колесо совершает 10 оборотов, то пройденное расстояние = 10 длин окружности в секунду.
0
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
12.02.2011, 08:51
Ну, это только в идеальных условиях. Колеса еще и буксовать могут. Абстрагируйтесь от них. Считайте, что движитель- воздушный винт.
0
SWK
12.02.2011, 09:47
Цитата Сообщение от o9d
Как можно определить скорость движения робота? Именно движения. А не вращения двигателей.
Обычно важннее не скорость, а пройденный путь. Есть 2 варианта:
1. Cчитать отдельно для каждого из ведущих колес или гусеницы, по их разности также вычисляя угол поворота. Из этих данных несложно получить и скорость, но это в большинстве случаев для домашних мобильных роботов не имеет особого значения.
2. Определять непосредственно перемещение робота относительно поверхности, по которой движется. Например, по принципу оптической мыши.
3. Определять непосредственно пространственное положение робота. Например, относительно каких - то реперных маяков, или используя спутниковые навигаторы.

Вариант 1 легко реализуется одометрами, установленными на колесе или его приводе. Точность определяется разрешением одометра и проскальзыванием (пробуксовкой) колеса или гусеницы. Например, при длине окружности колеса 200мм и количестве секторов диска одометра на нем = 50, в зависимости от алгоритма подсчета можно иметь точность от 4 до 1 мм на оборот колеса (без учета проскальзывания и ложных срабатываний или потери импульсов). Ложные срабатывания могут быть, например, если колесо не вращается, а дрожит, вызывая срабатывания одометра на границе сектора. В простых алгоритмах (простой счет импульсов с одной оптопары или с двух, но без учета предыдущего состояния) это приводит к накоплению ложного пути.

Вариант 2 - проблемы возникают с отслеживанием поверхности, которая обычно неровная, что нарушает фокусировку или вызывает потерю пятна.

Вариант 3, например, с использованием навигатора, не дает необходимой точности при малых перемещениях, например, в пределах комнаты. Вариант с маяками требует наличия этих маяков, сложных тригонометрических вычислений, а главное - сложно определять направление на маяк с высокой точностью.
Цитата Сообщение от o9d
Также подозреваю, что с акселерометрами в этом плане не все так гладко будет.
С акселерометром проблема в том, что он определяет не скорость или путь, а всего лишь ускорение по осям.
При этом многие забывают о силе тяжести, создающей ускорение свободного падения. Например, я так и не смог доказать одному из своих знакомых, что акселерометр будет показывать ускорение свободного падения, если сам неподвижен. Его аргумент: "Если он неподвижен - ускорения нет. Если он будет падать - оно появится". На самом же деле наоборот. Если он будет падать, то должен будет показывать 0.
Кроме того, если акселерометр не горизонтален, он будет раскладывать ускорение свободного падения по трем осям. Можно исключить постоянную составляющую из показаний, и учитывать только динамические изменения ускорений. Но это будет уже третья производная от пути по времени. (первая - это скорость, вторая - ускорение).
И при равномерном прямолинейном движении ускорение равно нулю... И вообще, для малых скоростей, свойственных большинству мобильных роботов, возникающие ускорения слишком малы, что дает большие погрешности их измерения...
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 504
12.02.2011, 14:28
Посмотрите на реализацию инерциальных систем наведения ракет.В теории там все как раз описано.Не требуется ни внешних маяков ни управления.Основываясь на показаниях гироскопов и акселерометров,а также количества топлива в секунду проходящего через ту или иную форсунку(в роботе - угловое положение колеса\двигателя)возможно довольно точно рассчитать текущее положение.Также требуется хорошо знать свойства среды,в которой двигается устройство и параметры самого устройства(вес,размеры,векторы тяги,центры тяжести)Еще в 70годах подобные системы достигали точности +-1км на дальности 15тыс км.
0
SWK
12.02.2011, 14:56
Цитата Сообщение от Btomdyi
Посмотрите на реализацию инерциальных систем наведения ракет.В теории там все как раз описано.Не требуется ни внешних маяков ни управления.Основываясь на показаниях гироскопов и акселерометров,а также количества топлива в секунду проходящего через ту или иную форсунку(в роботе - угловое положение колеса\двигателя)возможно довольно точно рассчитать текущее положение.Также требуется хорошо знать свойства среды,в которой двигается устройство и параметры самого устройства(вес,размеры,векторы тяги,центры тяжести)Еще в 70годах подобные системы достигали точности +-1км на дальности 15тыс км.
Зато там требуется офигенная точность изготовления и повторяемость, недостижимые в домашних условиях, а также высокая точность измерения и поддержания параметров.
Казалось бы что может быть проще автоматного патрона. Но попробуйте изготовить дома вручную сотню штук, постреляйте с ними метров на 400, и посмотрите, какой получится разброс, по сравнению с заводскими...
0 / 0 / 0
Регистрация: 19.07.2010
Сообщений: 270
12.02.2011, 15:05
Оптимального способа нет, всё зависит от задач... И уже было описано выше... Для повышения точности можна использовать комбинированое измерение... Но как правило если идёт вопрос о домашнем роботе достаточно одометра (коректировать даные которого можно с помущью оптического дальномера или сонара). Если же большой робот то можна использовать джпс+датчик давления (трубку пито), коректируя значения темже одометрами, или акселерометрами.
0
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
12.02.2011, 15:06
Цитата Сообщение от STT
Ну, это только в идеальных условиях. Колеса еще и буксовать могут. Абстрагируйтесь от них. Считайте, что движитель- воздушный винт.
Ну, пробуксовка не будет сильно влиять на точность. Я не думаю, что автору нужно знать скорость прям уж так точно. А то тогда надо будет еще сопротивление воздуха брать в расчет и улучшать свойства корпуса... Поэтому думаю, что пробуксовкой можно пренебречь и записать ее в "математическую" погрешность, которую, кстати, дает число "пи". А для снижения пробуксовки нужно просто сделать хорошее сцепление колеса и дороги.
0
0 / 0 / 0
Регистрация: 19.07.2010
Сообщений: 270
12.02.2011, 15:08
Ну имхо с автоматными патронами тоже не совсем правильный пример при наявности оборудования, и желания можна и в домашних условия получить хорошее качество.. проблема не в качестве а в соотношение (ресурсы(время в том числе)/качество*количество)
0
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 504
12.02.2011, 15:11
Просто далеко не каждый может спроектировать систему подобного уровня.
0
0 / 0 / 0
Регистрация: 19.07.2010
Сообщений: 270
12.02.2011, 15:21
Я бы сказал вопрос не стоит возможно ли спроектировать, а есть ли смысл? какой смысл например в точности позиционирования (скорости) домашнего робота?
0
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 69
12.02.2011, 15:22
Можно еще добавить одно колесо, которое будет просто крутиться при движении объекта и по числу его оборолтов определять пройденный путь (получится нечто вроде датчика расстояния), тогда о пробуксовке можно забыть)))). Затем делим расстояние на время и получаем скорость)))
0
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 504
12.02.2011, 15:28
Цитата Сообщение от Dykk
Можно еще добавить одно колесо, которое будет просто крутиться при движении объекта и по числу его оборолтов определять пройденный путь (получится нечто вроде датчика расстояния), тогда о пробуксовке можно забыть)))). Затем делим расстояние на время и получаем скорость)))
Это колесо может тоже пробуксовать-оно тоже круглое и катится по той же плоскости(на которой могут быть неровности).Допустим,оно стоит,если шасси танковое,посередине между гусеницами.Робот едет и попадает в промежуток между двумя коврами.Ехать-он и дальше поедет,а колесо в какие то моменты крутиться не будет.Если же его постоянно прижимать к полу за счет какого то механизма то может получиться-робот подьезжает к невысокому препятствию,заезжает на него,и в тот момент колесо-измеритель может просто заклинить его движение,просто застряв в щели(колесо не гусеница,и вполне может застрять).
0
0 / 0 / 0
Регистрация: 19.07.2010
Сообщений: 270
12.02.2011, 15:43
Да кучу всего можна :) можна поставить маленький пропелер который будет крутиться от набегающего потока, таже трубка пито, в комнате можна использовать дальномеры, можна сделать систему радиолокации, можна как уже говорилось использовать метки, нигнитный компас, НО всё будет иметь свою точность, и не всегда будет пременимо.... Можна вообще у гаишников радар взять и самим следить за роботом и руками вводить скорость (ну или посадить человека :)...
0
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 69
12.02.2011, 15:47
Ну вероятность пробуксовки такого колеса очень мала, так как его не крутит двигатель, а оно крутится за счет движения платформы. С застреванием можно бороться сделав к примеру пружинный прижим, насчет расположения тут подумать можно))) Так что, было бы желание...))))
0
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
12.02.2011, 15:54

http://enc.lib.rus.ec/bse/010/001/245069039.jpg
Под номером 5 - специальное колесо-путеизмеритель.
0
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 1,264
12.02.2011, 16:08
На сайте электроникса, как собственно и здесь порекомендовали самый простой способ определения скорости(или пути).
Это поставить дополнительное колесико и по его вращению определять скорость.
Но как это будет влиять на повороты. Это еще загадка.

Скорость(или путь) необходимы для отрисовки пройденного маршрута. Зная маршрут можно вернутся в исходную точку.

Я думал сделать привязку к вращению траков. Но если робот зацепится, то они двигаться не будет а скорость, в этом случае, отображаться будет.
0
SWK
12.02.2011, 16:15

http://pics.qip.ru/1001D47.jpg
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 504
12.02.2011, 16:35
В случае с луноходом,робот имеющий не гусеницы а более четырех колес(опорных точек)может получать вполне правдивую информацию только от датчиков поворота колес(каждого в отдельности).Вводим условие -все колеса должны вращаться почти одновременно.Насколько "почти"?Это число можно вывести из предполагаемой скорости движения,вектора(вдруг робот поворачивает).Подбирается экспериментально(простейшая табличка,выведенная для разных скоростей на одной массе).Также если затормозилось одно-два колеса,сигналы от них считать неверными.То есть обрабатывая все восемь колес,алгоритмически определять какое из них буксует(не все ведущие,разумеется)и по этой картине можно составит довольно реальное представление о скорости и направлении движения.Чем больше колес-тем меньше будет ошибок(но тем больше длина робота и сложность обработки данных)Плюс-на каждое колесо придется поставить угловой датчик положения,на основе данных которого робот рассчитает свою скорость.
В случае гусеничных движителей можно попробовать сделать несколько систем - колеса,оптодатчик от мыши,хотя бы два маркера,и т.д.На основе этих данных интерполированием выводим текущую скорость и направление.

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

SWK,это реально такие доски существуют или же игра воображенияфотошоп?
0
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
12.02.2011, 17:18
Цитата Сообщение от Btomdyi
Это колесо может тоже пробуксовать-оно тоже круглое и катится по той же плоскости(на которой могут быть неровности).
Я считаю, что вы неправы. Пробуксовывать могут только ведущие колеса. Свободно катящееся колесо может только проскальзывать, да и то на очень скользкой/гладкой поверхности. Резиновый обод с хорошим протектором решает эту проблему даже на льду.
Такое доп. колесо- самое простое решение задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2011, 17:18
Помогаю со студенческими работами здесь

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

Определение скорости передачи данных по Ethernet
На отладочной плате STM32F746 discovery настроен HTTP сервер передающий по запросу в браузер htm страницу и данные. Данная плата должна...

Определение скорости по акселерометру на плате STM32F3 Discovery
Доброго времени суток! Имеется плата STM32F3 Discovery и по данным её акселерометра необходимо определять скорость движения устройства. ...

Запуск, Контроль скорости, Определение крайнего положения(перегрузки) электродвигателя. Двигатель есть(идёт по почте) по
Здравствуйте, Собираю механизм, контролируемый электродвигателем. Двигатель крутит ходовой винт, к гайке прикреплён груз. Всё будет...

Определение скорости движения мышки по форме
Нужно знать скорость перемещения курсора по форме:-[


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru