Ребята, можете п0м0чь со скетчем для робота? робот, который пятится от препятствия

Тема в разделе "Закажу проект", создана пользователем Camille, 30 мар 2024.

  1. Camille

    Camille Нуб

    Всем привет!

    Ребята, строю своего первого робота, вроде в железе он готов, но теперь сложности со скетчем.
    В качестве моторов для колес (крышек от сока) взяты две сервомашинки SG90, УЗ-датчик расстояния (определить препятствие впереди) HC-SR04, "бортовой компьютер" - Arduino Nano, еще красненький LED, чтобы включаться, когда робот видит препятствие и самая обычная 18650 как источник питания.

    Вот он на фото:

    1.jpg 2.jpg 3.jpg

    Пожалуйста, если вам не трудно и есть свободное время, могли бы помочь со скетчем?
    Просто, поначалу казалось, что это вообще легко будет, но у сервомашинок, оказывается абсолютное позиционирование (!), нельзя задать просто "+1 оборот вперед", чтобы робот поехал.

    Сначала хочу просто решить задачу минимум - чтобы робот просто "пятился" от препятствия (выставленной ладони перед ним) назад и старался объехать ладонь справа или слева. То есть, датчик расстояния определяет препятствие на расстоянии 50мм или ближе - дает команды светодиоду - "включиться на 2 секунды, затем выключиться", затем сервам - "отъехать назад на полкорпуса, повернуть направо или налево, повернуться вперед (влево/вправо) на 90 градусов, поехать вперед снова, пока нет препятствия", правильно?

    Если я верно понимаю, то "пятиться" робот будет так - внешний диаметр-крышек-колес - 35 мм, значит по формуле длины окружности C = Пи * диаметр = 110 мм. 80 мм (полкорпуса робота) назад - это 80 / 110 = 0.72 оборота или поворот левой сервы по часовой стрелке вперед, а правой назад на 260 градусов.
    Но лучше вообще как-то вначале "конвертировать" абсолютное движение серв SG90 в "относительное" движение.

    Я не прошу сделать за меня все, я делаю этого робота просто как хобби в свободное от учебы время.
    Но с программированием "не дружу", мне проще руками что-то собрать, чем писать код.

    Если можете - пожалуйста, помогите составить "каркас" будущего кода робота, а я уже дальше буду его усложнять, добавлять ему более сложное поведение, вроде запоминания пройденного пути (добавлю еще карту памяти SD).

    Заранее большое спасибо всем!
     
  2. DetSimen

    DetSimen Гуру

    Ношкой топнуть забыл.
     
    Asper Daffy нравится это.
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Прежде скетча, - вопрос о колёсах - Сервомашинка крутит только на 180 градусов. И как вы хотите двигаться ? Вот на "среднее" колесо "навесить" поворотные функции - вполне логично. Так что без DC движка - не попрёть.
     
    Camille нравится это.
  4. Camille

    Camille Нуб

    Блин, есть такое!
    Посмотрел сейчас на своих (сине-прозрачных) - там прям видно внутри зубцы ограничителей.
    Придется завтра идти шаговики покупать с драйверами :(
    В одной дремелем попытался удалить ограничитель (можно их заставить вращаться на 360 градусов, есть такие, без стопора), но просто испортил одну серву :D
    Спасибо, что подказали!!!
     
  5. parovoZZ

    parovoZZ Гуру

    Зачем? Чем не устраивают обычные электродвигатели?
     
  6. parovoZZ

    parovoZZ Гуру

    Нельзя.
     
  7. Camille

    Camille Нуб


    На Ютубе показывает, тут нет, но там доказывает, что можно - нужны только сервы без ограничителя (физического).
     
  8. Airbus

    Airbus Радиохулиган Модератор

    А что готовых проектов в Сети нет? Даже у Амперки есть проекты Роботов для начинающих. Потом код можно править под свои цели. Все что Вам нужно есть в разделе Проекты. Там же основы написания кода и ликбез по датчикам и подключаемым устройствам Ну и в Сети много информации. Но по моему Вы и сами пока не знаете чего хотите?
     
    Последнее редактирование: 30 мар 2024
  9. Camille

    Camille Нуб

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

    А делать какой-то датчик на колесо - это еще сложнее.
     
  10. Camille

    Camille Нуб

    мне интересно самому что-то собрать и заставить работать так, как нужно.
    не хочу просто тупо повторять чей-то проект.
    ну и в наличии только те компоненты, что есть дома.
    я студент, а это мое хобби.
     
  11. parovoZZ

    parovoZZ Гуру

    я несколько раз там видел, как изобрели вечный двигатель. Но мои познания в физике говорят, что это невозможно. Для начал необходимо разобраться, что такое сервопривод:
    Отсюда делаем выводы, что сервопривод с датчиком положения в виде потенциометра не способен вращаться вокруг оси в силу строения этого самого потенциометра.
     
    Ariadna-on-Line нравится это.
  12. Airbus

    Airbus Радиохулиган Модератор

    Ну так и собирайте? В чем проблема?
     
  13. Camille

    Camille Нуб

    ладно -_-
     
  14. Camille

    Camille Нуб

    я и собираю
    если мои слова как-то Вас оскорбили - ради бога, простите пожалуйста
    не со зла, а токмо по неразумению
     
  15. Airbus

    Airbus Радиохулиган Модератор

    Да нет что вы! Просто Вы както путанно обьясняете и я не могу понять в чем у Вас проблема. У Вас 2 путя. Писать код с ноля самому или взять чужой код и немного переписать под свои датчики и алгоритм. Не всегда второе бывает проще первого. Но все равно рекомендую Вам посмотреть готовый код и понять как он работает.
     
    Ariadna-on-Line и Camille нравится это.
  16. parovoZZ

    parovoZZ Гуру

    я не могу понять - к чему все эти точные вычисления на МК, который их не поддерживает аппаратно? Да если бы и поддерживал, то неизбежно будет копиться ошибка, которую придётся как-то компенсировать. Используйте целочисленную математику. Пусть это будут попугаи, но зато будет всё быстро считаться. Например, можно считать количество шагов на один оборот колеса. Это число будет целым и целым будет всё остальное.

    это просто решается на машине состояний.

    проблема в том, что обороты колеса жёстко связаны со временем. Если робот буксует, то без разницы ,что считать - оба значения будут не верны. На высокоскоростных ЖД используют радиоскоростемеры именно по этой причине.
     
    Camille нравится это.
  17. parovoZZ

    parovoZZ Гуру

    а есть алгоритм, который выдаст решение? Я сомневаюсь, что с одним датчиком это получится. Тут либо сюда, либо туда.
     
  18. Airbus

    Airbus Радиохулиган Модератор

    Можно только вправо, как американцы
     
  19. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Водила, объезжая препятствия, ни разу не ориентируется на километраж. Он ориентируется на глаза, то бишь - на сенсор. А сенсор у вас есть. Поставьте его на серву - будет вроде локатора. А можете поставить Два сенсора на одну серву, чтоб смотреть вперед-назад одновременно. Это намного дешевле будет, чем шаговики.
    Бессмысленно задавать шаги движку по этой же причине.
     
    Последнее редактирование: 31 мар 2024
  20. Sergku

    Sergku Нерд

    ?