Odometry ru: Unterschied zwischen den Versionen

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche
(Ground measurement error)
(Encoder pinout (Ardumower motors))
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Abstract =
+
= Описание =
  
 
<gallery>
 
<gallery>
Zeile 7: Zeile 7:
 
</gallery>
 
</gallery>
  
Latest Ardumower code requires motor encoders for odometry. Using odometry you can calculate the robot's speed and the short-term position of the robot. This works by counting the rotations of left and right wheel (motor encoders - required by latest Ardumower software).
 
  
Currently, odometry is used:
+
Последняя прошивка Ardumower требует моторные датчики оборотов (энкодеры).
* to ensure the robot left and right wheel are turning the same speed (in forward direction)
+
  
= Encoder pinout (Ardumower motors) =
+
Их использование позволяет рассчитать скорость робота и направление движения робота.
 +
 +
Алгоритм работает путем подсчета импульсов с датчиков оборотов левого и правого колеса.
  
The Ardumower has a 2-channel encoder with 5 pulses at one cycle of motor multiplied by gear ratio 1:212, resulting in 1060 encoder ticks per one full tire resolution.
 
  
Wiring/pinout of motor encoder connector:
+
В настоящее время датчики используются для:
 +
* Для обеспечения прямолинейного движения (чтобы робот не уходил вправо или влево)
  
green  ---- GND
+
= Выводы энкодера (колесные двигатели) =
brown  ---- VCC
+
blue  ---- odometry1
+
purple ---- odometry2
+
  
 +
В Ardumower имеет 2-х канальный кодер с 5 импульсов на один цикл двигателя умножается на передаточное число 1:212, в результате чего 1060 шифратора тактов за один полный шиномонтаж резолюции.
  
IMPORTANT: PCB v0.5/1.2 are missing pull-ups! You need to add them yourself:
+
Разводка разъема энкодера:
 +
зеленый    ---- GND
 +
коричневый  ---- VCC
 +
синий      ---- odometry1
 +
фиолетовый  ---- odometry2
 +
 
 +
 
 +
Внимание!: В печатных платах версий v0.5/1.2 отсутствуют подтягивающие резисторы. Добавьте из самостоятельно:
  
 
  odometry1 --- 4.7k --- 5v
 
  odometry1 --- 4.7k --- 5v
 
  odometry2 --- 4.7k --- 5v
 
  odometry2 --- 4.7k --- 5v
  
= Signal of odometry encoders =
+
= Сигнал от энкодеров =
 
<gallery>
 
<gallery>
 
File: ardumower_odometry_encoder.jpg
 
File: ardumower_odometry_encoder.jpg
 
</gallery>
 
</gallery>
  
  Forward: pin1 makes LOW->HIGH transition and pin2 = HIGH
+
  Вперед: pin1 переключает LOW->HIGH и pin2 = HIGH
  Reverse: pin1 makes LOW->HIGH transition and pin2 = LOW
+
  Назад: pin1 переключает LOW->HIGH и pin2 = LOW
  
= Do-It-Yourself encoders =
+
= Самодельные экнодеры =
 
<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>
  
== Circuit ==
+
== Подключение ==
  
 
  VCC          pinArduino
 
  VCC          pinArduino
Zeile 50: Zeile 55:
 
  +--380 Ohm------------Anode      Kathode---GND
 
  +--380 Ohm------------Anode      Kathode---GND
  
== Differential drive ==
+
== Расчет расстояния, пройденного каждым колесом ==
By adding (integrating) Odometry speed, we can calculate distance and heading.  
+
 
 +
При подключении датчиков оборотов мы можем вычислить расстояние и направление движения.
  
 
<gallery>  
 
<gallery>  
File: differential_drive.png | Differential drive
+
File: differential_drive.png | При повороте разные колеса проходят разное расстояние
 
</gallery>
 
</gallery>
  
  
Distance per wheel:
+
Расстояние на каждое колесо:
 
  left_cm  = ticksLeft  / odometryTicksPerCm
 
  left_cm  = ticksLeft  / odometryTicksPerCm
 
  right_cm = ticksRight / odometryTicksPerCm
 
  right_cm = ticksRight / odometryTicksPerCm
 
   
 
   
Heading:
+
Направление движения (курс):
 
  wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm
 
  wheel_theta = (left_cm - right_cm) / odometryWheelBaseCm
 
  odometryTheta += wheel_theta
 
  odometryTheta += wheel_theta
  
Overall distance:
+
Общее расстояние:
 
  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)

Aktuelle Version vom 23. August 2015, 15:33 Uhr

Описание


Последняя прошивка 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):

Видео

Еще нет видео (функционал в разработке)