Odometry ru: Unterschied zwischen den Versionen
(→Video) |
(→Encoder pinout (Ardumower motors)) |
||
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | = | + | = Описание = |
<gallery> | <gallery> | ||
Zeile 7: | Zeile 7: | ||
</gallery> | </gallery> | ||
− | |||
− | + | Последняя прошивка Ardumower требует моторные датчики оборотов (энкодеры). | |
− | + | ||
− | + | Их использование позволяет рассчитать скорость робота и направление движения робота. | |
+ | |||
+ | Алгоритм работает путем подсчета импульсов с датчиков оборотов левого и правого колеса. | ||
− | |||
− | + | В настоящее время датчики используются для: | |
+ | * Для обеспечения прямолинейного движения (чтобы робот не уходил вправо или влево) | ||
− | + | = Выводы энкодера (колесные двигатели) = | |
− | + | ||
− | + | ||
− | + | ||
+ | В Ardumower имеет 2-х канальный кодер с 5 импульсов на один цикл двигателя умножается на передаточное число 1:212, в результате чего 1060 шифратора тактов за один полный шиномонтаж резолюции. | ||
− | + | Разводка разъема энкодера: | |
+ | зеленый ---- GND | ||
+ | коричневый ---- VCC | ||
+ | синий ---- odometry1 | ||
+ | фиолетовый ---- odometry2 | ||
+ | |||
+ | |||
+ | Внимание!: В печатных платах версий v0.5/1.2 отсутствуют подтягивающие резисторы. Добавьте из самостоятельно: | ||
odometry1 --- 4.7k --- 5v | odometry1 --- 4.7k --- 5v | ||
odometry2 --- 4.7k --- 5v | odometry2 --- 4.7k --- 5v | ||
− | = | + | = Сигнал от энкодеров = |
<gallery> | <gallery> | ||
File: ardumower_odometry_encoder.jpg | File: ardumower_odometry_encoder.jpg | ||
</gallery> | </gallery> | ||
− | + | Вперед: pin1 переключает LOW->HIGH и pin2 = HIGH | |
− | + | Назад: pin1 переключает LOW->HIGH и pin2 = LOW | |
− | = | + | = Самодельные экнодеры = |
<gallery> | <gallery> | ||
File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301) | File: l50_odometry_sensor.jpg | Ambrogio L50: An encoder wheel of a computer mouse is glued to a slice. The screw of the wheel shaft is unscrewed, and the slice is added. Embedded in two Plexiglas pieces is a photo diode and photo transistor of a light barrier (e.g. LTH 301) | ||
Zeile 44: | Zeile 49: | ||
</gallery> | </gallery> | ||
− | == | + | == Подключение == |
VCC pinArduino | VCC pinArduino | ||
Zeile 50: | Zeile 55: | ||
+--380 Ohm------------Anode Kathode---GND | +--380 Ohm------------Anode Kathode---GND | ||
− | == | + | == Расчет расстояния, пройденного каждым колесом == |
− | + | ||
+ | При подключении датчиков оборотов мы можем вычислить расстояние и направление движения. | ||
<gallery> | <gallery> | ||
− | File: differential_drive.png | | + | File: differential_drive.png | При повороте разные колеса проходят разное расстояние |
</gallery> | </gallery> | ||
− | + | Расстояние на каждое колесо: | |
left_cm = ticksLeft / odometryTicksPerCm | left_cm = ticksLeft / odometryTicksPerCm | ||
right_cm = ticksRight / odometryTicksPerCm | right_cm = ticksRight / odometryTicksPerCm | ||
− | + | Направление движения (курс): | |
wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm | wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm | ||
odometryTheta += wheel_theta | odometryTheta += wheel_theta | ||
− | + | Общее расстояние: | |
avg_cm = (left_cm + right_cm) / 2.0 | avg_cm = (left_cm + right_cm) / 2.0 | ||
odometryX += avg_cm * sin(odometryTheta) | odometryX += avg_cm * sin(odometryTheta) | ||
odometryY += avg_cm * cos(odometryTheta) | odometryY += avg_cm * cos(odometryTheta) | ||
− | == | + | == Неточность наземных измерений == |
− | + | Путем сложения (интеграции) показателей движения и скорости, мы можем вычислить расстояние и направление движения. Однако из-за не точного физическое измерения, расстояние и угол ошибки возрастает с каждой итерацией. Это может быть решено путем [http://wiki.ardumower.de/index.php?title=Sensor_fusion обработки сигналов с разных датчиков]. | |
<gallery> | <gallery> | ||
Zeile 78: | Zeile 84: | ||
</gallery> | </gallery> | ||
− | = | + | = Регулятор скорости мотора (ПИД) = |
− | + | Скорость двигателей регулируется с помощью программного ПИД-регулятора. Вы можете следить за качеством управления скорости через pfodApp (Plot->Motor control): | |
<gallery> | <gallery> |
Aktuelle Version vom 23. August 2015, 15:33 Uhr
Inhaltsverzeichnis
Описание
Последняя прошивка Ardumower требует моторные датчики оборотов (энкодеры).
Их использование позволяет рассчитать скорость робота и направление движения робота.
Алгоритм работает путем подсчета импульсов с датчиков оборотов левого и правого колеса.
В настоящее время датчики используются для:
- Для обеспечения прямолинейного движения (чтобы робот не уходил вправо или влево)
Выводы энкодера (колесные двигатели)
В Ardumower имеет 2-х канальный кодер с 5 импульсов на один цикл двигателя умножается на передаточное число 1:212, в результате чего 1060 шифратора тактов за один полный шиномонтаж резолюции.
Разводка разъема энкодера:
зеленый ---- GND коричневый ---- VCC синий ---- odometry1 фиолетовый ---- odometry2
Внимание!: В печатных платах версий v0.5/1.2 отсутствуют подтягивающие резисторы. Добавьте из самостоятельно:
odometry1 --- 4.7k --- 5v odometry2 --- 4.7k --- 5v
Сигнал от энкодеров
Вперед: pin1 переключает LOW->HIGH и pin2 = HIGH Назад: pin1 переключает LOW->HIGH и pin2 = LOW
Самодельные экнодеры
Подключение
VCC pinArduino +--13 KOhm----+-------Collector Emitter---GND +--380 Ohm------------Anode Kathode---GND
Расчет расстояния, пройденного каждым колесом
При подключении датчиков оборотов мы можем вычислить расстояние и направление движения.
Расстояние на каждое колесо:
left_cm = ticksLeft / odometryTicksPerCm right_cm = ticksRight / odometryTicksPerCm
Направление движения (курс):
wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm odometryTheta += wheel_theta
Общее расстояние:
avg_cm = (left_cm + right_cm) / 2.0 odometryX += avg_cm * sin(odometryTheta) odometryY += avg_cm * cos(odometryTheta)
Неточность наземных измерений
Путем сложения (интеграции) показателей движения и скорости, мы можем вычислить расстояние и направление движения. Однако из-за не точного физическое измерения, расстояние и угол ошибки возрастает с каждой итерацией. Это может быть решено путем обработки сигналов с разных датчиков.
Регулятор скорости мотора (ПИД)
Скорость двигателей регулируется с помощью программного ПИД-регулятора. Вы можете следить за качеством управления скорости через pfodApp (Plot->Motor control):
Видео
Еще нет видео (функционал в разработке)