Следование за препятствием\от препятствия

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем underW, 3 янв 2017.

  1. underW

    underW Нуб

    Есть в наличии вот такой mBot, хотел реализовать для него следующую задачу:

    для программирования mBot использовал среду mBlock IDE, получился вот такой графический скетч:
    2017-01-03.png

    Вроде как все просто и понятно, но вот если запустить программу то получаем следующее:
    робот следует за препятствием, если препятствие отодвигать от робота,
    робот начинает двигаться назад, если препятствие передвинуть в сторону к роботу.
    НО
    если препятствие недвижимое, то робот НЕ стоит на месте, а начинает "дергается" вперед-назад.

    Мой вопрос: как решить данную проблему? Ведь если препятствие в состоянии покоя то и сам робот должен оставаться на месте а не дергаться "туда-сюда".
     
  2. rkit

    rkit Гуру

    Вписать остановку в программу, как.
     
  3. mcureenab

    mcureenab Гуру

    Пороги развести надо и создать оставить мертвую зону.
    Больше 10 см преследует, меньше 9 см - убегает. А между тем и тем - стоит.
     
    Кириллstrelok и rkit нравится это.
  4. Arkad_snz

    Arkad_snz Гик

    Добавьте понятие "состояние" (вперед/назад/стоп), и по датчику оперируйте состоянием, а не движением. Тогда у бота появится шанс достичь состояния "стоп".
    Потом добавьте реализацию состояния - соотв. телодвижения.
    Сейчас у вас, фактически написано:
    1. Если (случай==истина), то идивперед, иначе - идиназад.
    2. goto 1
    На каждом проходе цикла (перед шагом 1) бот всегда куда-то случайно движется - вот и имеете броуновское движение в итоге!
    Условие (dist>10) - истинно по прихоти их величеств случая и флуктуаций - вот и...
     
    Последнее редактирование: 4 янв 2017
  5. mcureenab

    mcureenab Гуру

    Состояние и так уже есть. В зависимости от значения датчика робот что-то делает. Но нет состояния покоя.
    Как вариант, можно уменьшать скорость до нуля, когда расстояние приближается к 10.
    А так, робот успевает проехать значительное расстояние, пока сообразит, что проскочил точку разворота.
     
  6. Arkad_snz

    Arkad_snz Гик

    Нет состояния покоя не у робота, а у алгоритма.
    Нет у алгоритма - не будет и у робота.
     
    Последнее редактирование: 4 янв 2017