Платформа + дальномер

Тема в разделе "Глядите, что я сделал", создана пользователем leo141198, 25 ноя 2012.

  1. leo141198

    leo141198 Нерд

    Всем доброго времени суток!
    Возникла проблема. Есть двухколесная платформа, Arduino UNO, Troyaka и Motor Shields, дальномер Sharp (10 - 80 см). Проблема в том, что робота во время езды подкашивает вправо, но непонятно почему. Могу выложить скетч или видео


    Заранее спасибо!
     
  2. Unixon

    Unixon Оракул Модератор

    Двигатели с разной скоростью вращаются?
     
  3. leo141198

    leo141198 Нерд

    Вот код:
    Код (Text):
    //Подключаем все пины
     
    #define SPEED_LEFT      6
    #define SPEED_RIGHT    5
    #define DIR_LEFT        7
    #define DIR_RIGHT      4
    #define SENSOR_PIN      A5
     
    void go(int speed, bool reverseLeft, bool reverseRight, int duration)
    {
        analogWrite(SPEED_LEFT, speed);
        analogWrite(SPEED_RIGHT, speed);
        digitalWrite(DIR_LEFT, reverseLeft ? LOW : HIGH);
        digitalWrite(DIR_RIGHT, reverseRight ? LOW : HIGH);
        delay(duration);
    }
     
    void setup()
    {
        Serial.begin(9600);
        for(int i = 5; i <= 8; i++)  
            pinMode(i, OUTPUT);
    }
     
    void loop()
    {
      int val = analogRead(SENSOR_PIN); //читаем значение с сенсора
      if (val > '200')
      {
          go(125, true, false, 10000); //если значение больше 200 то разворот, пока значение не станет меньше 200
      }
      else
      {
          go(150, false, false, 10000); //иначе едем вперед
      }
     
    }
     
  4. leo141198

    leo141198 Нерд

    Напряжение на моторах не мерил, но в скетче, вроде, все нормально
     
  5. Unixon

    Unixon Оракул Модератор

    Похоже пора импровизировать с энкодерами на колесах...
     
  6. leo141198

    leo141198 Нерд

    В каком смысле?
     
  7. Unixon

    Unixon Оракул Модератор

    Отклониться от прямолинейного движения платформа может либо из-за разной скорости вращения колес или из-за различной степени механического сцепления с поверхностью, по которой она перемещается. Если дело в различной скорости вращения (т.е. в скетче она одинаковая, а в реальности - разная), то, чтобы компенсировать отклонение, нужно измерить фактическую скорость вращения колеса и скорректировать задаваемую в скетче скорость. Сделать это можно каким либо датчиком оборотов, в качестве которого может выступать датчик угла (положения вала/колеса). Поскольку готовые датчики не дешевы и стоят как сама платформа, скорее всего придется импровизировать и собирать датчик оборотов из подручных деталей.
     
    nailxx нравится это.
  8. leo141198

    leo141198 Нерд

    1) Какие нужны детали?
    2) Может попробуем обойтись без датчика угла и методом проб и ошибок подогнать скорость одного из колес под нужно значение?
     
  9. Unixon

    Unixon Оракул Модератор

    Ну можете и так, конечно, попробовать - откалибровать платформу подгонкой балансировочных коэффициентов на скорости. Дешево и сердито. :)
    Если статическая корректировка не поможет, тогда будем думать про датчики.
     
    nailxx нравится это.
  10. Dmitriy Kunin

    Dmitriy Kunin Гик

    Любое транспортное средство, если оно не по рельсам едет, требует подруливания.

    Введение поправочных коэффициентов, обязательно.

    Это на стадии калибровки платформы.

    Для калибровки нужна большая ровная поверхность с постоянным коэффициентом сцепления, например ламинат на полу, желательно горизонтальный, что в наших домах увы не всегда.

    Энкодеры сильно облегчают жизнь при калибровке, не отменяя её, но никак не помогают в реальной жизни, польза от них есть, но в последствии вы всё равно придёте к тому, что питать моторы нужно ещё и стабилизированным напряжением.

    Дело в том, что моторы, которыми мы располагаем, имеют нелинейную зависимость скорости вращения от напряжения на них поданного и у всех экземпляров моторов эта зависимость разная.

    Что на практике означает, что по мере посадки вашего аккумулятора, мотор-редуктор который крутится “туже” будет крутиться медленней.

    Научив ваше детище ходить боле или менее прямо, вы получите платформу, которая управляется легче, но не легко.

    В реальной жизни поверхности, не бывают ровными, а сцепление с этой поверхностью постоянным.

    Датчики ускорения и гироскопы наше всё!

    Надо всегда следить за углом поворота, независимо едем мы по прямой или поворачиваем.

    Я раньше про это знал, но за лето хорошо прочувствовал на практике собственным вестибулярным аппаратом :)
    [​IMG]
     
    Unixon нравится это.