форум робототехников: Форум роботов и робототехники

Форум роботов и робототехники

На нашем форуме про роботов и робототехнику обсуждаем, конструируем из подручных средств или на 3D-принтере и программируем роботов на ардуино и из лего. Рассуждаем о развитие науки и техники в промышленности России, Японии и других стран! Высказывайте своё мнение о статьях, оставляйте комментарии на тему искусственного интеллекта, LEGO конструирования. Задавайте любые вопросы и ставьте задачи. Вместе будем их решать! Делитесь наработками своих роботов!


ПоискПоиск  
Сегодня: 19.03.2024 - 06:31:38
Страницы:  1  

Интересная задумка!

АвторСообщение

GrayHunter

G
гость-робототехник

Приветствую. Решил я реализовать свой проект и разработал следующую логическую схему. Планирую использовать микроконтроллер ATmega8.
Помогите мне пожалуйста в следующем:
I.напишите названия тех элементов, которые здесь понадобятся,
II.напишите пожалуйста собственно код, которым нужно будет прошить ATmega8 (в логической схеме есть неопределённое число “N” (яркость), которое должно быть самым тусклым светом, т.е. то, что уже нельзя назвать темнотой, так же есть знаки вопроса и могут быть неточности – это те моменты, которые я прошу Вас дописать/изменить так, чтобы общая логика работала – насчёт того, что же я хочу смотри в конце поста)

Общее:
Два колеса – два мотора,
С каждой из двух сторон по датчику, определяющего яркость света,
В памятях фигурируют две переменные – по одной от каждого датчика.
(подробнее что же это будет – см. под лог. схемой)

0. Включение робота.

Логическая схема:
1. Ждёт 5 сек
2. Проверяет яркость света на датчиках
2.1 Если яркость одинаковая – перейти к пункту № 3
2.2 Если яркость разная – перейти к пункту № 5
3. Запоминает яркость на каждом датчике в оперативной памяти
3.1 Берёт яркость из оперативной памяти и из постоянной памяти, и высчитывает среднее арифметическое, и проверяет его:
3.2 Если оно меньше N (это другое значение (никогда неизменяемое роботом!), которое тоже в постоянной памяти находится), то изменить полученное на N и перейти к пункту № 3.4
3.3 Если оно равно N или больше N – перейти к пункту № 3.4
3.4 Записать полученное в постоянную память
4. Двигаться вперёд на случайное кол-во сантиметров, но не больше 200 и не меньше 20, одновременно проверять яркость на датчиках каждую секунду (?) и сверять с яркостью, которая в оперативной памяти, и если:
4.1 Яркость на обоих датчиках больше или равна той, которая указана в постоянной памяти – перейти к пункту № 12, если нет – см. далее
4.2 Яркость на обоих датчиках заметно больше, чем в оперативной памяти – перейти к пункту № 11, если нет – см. далее
4.3 Яркость на обоих датчиках заметно меньше, чем в оперативной памяти – после проезда выбранного расстояния перейти к пункту № 9, если нет – см. далее
4.4 Яркость на обоих датчиках такая же, как в оперативной памяти – после проезда выбранного расстояния перейти к пункту № 7, если нет – см. далее
4.5 На одном из датчиков заметно больше яркости, чем в оперативной памяти – перейти к пункту № 5, если нет – см. далее
4.6 На одном из датчиков заметно меньше яркости, чем в оперативной памяти – перейти к пункту № 8
5. Остановиться
6. Повернуться в сторону датчика, яркость которого больше – перейти к пункту № 3
7. Остановиться
8. Повернуться в случайную сторону на случайный угол, но не больше 180 градусов – перейти к пункту № 4
9. Остановиться.
10. Повернуться в случайную сторону на случайный угол, но не меньше, чем на 150 и не больше 180 градусов – перейти к пункту № 4
11. Запомнить яркость на каждом датчике в оперативной памяти (продолжая делать всё то же, что и в пункте № 4, например, движение и, желательно, проверку яркости)
11.1 Берёт яркость из оперативной памяти и из постоянной памяти, и высчитывает среднее арифметическое, и проверяет его:
11.2 Если оно меньше N (это другое значение (никогда неизменяемое роботом!), которое тоже в постоянной памяти находится), то изменить полученное на N и перейти к пункту № 11.4
11.3 Если оно равно N или больше N – перейти к пункту № 11.4
11.4 Записать полученное в постоянную память
11.5 Перейти к пункту № 4.
12. Остановиться
13. Запомнить яркость на каждом датчике в оперативной памяти
13.1 Берёт яркость из оперативной памяти и из постоянной памяти, и высчитывает среднее арифметическое, и проверяет его:
13.2 Если оно меньше N (это другое значение (никогда неизменяемое роботом!), которое тоже в постоянной памяти находится), то изменить полученное на N и перейти к пункту № 13.4
13.3 Если оно равно N или больше N – перейти к пункту № 13.4
13.4 Записать полученное в постоянную память
14. Умножить яркость в оперативной памяти на 0,6 (?)
15. Записать полученное в оперативной память
16. Проверить яркость на датчиках через минуту (?) и сверить с яркостью, которая в оперативной памяти, и если:
16.1 Яркость на обоих датчиках больше, чем в оперативной памяти – перейти к пункту № 13, если нет – см. далее
16.2 Яркость на обоих датчиках такая же, как в оперативной памяти – перейти к пункту № 16, если нет – см. далее
16.3 Яркость на обоих датчиках заметно меньше, чем в оперативной памяти – перейти к пункту № 9, если нет – см. далее
16.4 На одном из датчиков заметно больше яркости, чем в оперативной памяти – перейти к пункту № 5, если нет – см. далее
16.5 На одном из датчиков заметно меньше яркости, чем в оперативной памяти – перейти к пункту № 16


-=-=-=-=-
ЧТО ЖЕ ЭТО БУДЕТ:

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

Итак, робот передвигается по местности в поисках наибольшего (по яркости) источника света постоянно приводя к реальности значения в постоянной памяти, но это значение не может быть ниже тусклого света, чтобы робот не прекращал поиски источника света, даже находясь в полной темноте. Когда робот найдёт самый яркий источник света, который ему повезёт и который будет в его зоне определения яркости – робот остановиться в зоне наибольшей яркости. Солнечные батареи будут заряжать аккумуляторы робота, а он будет проверять рентабельность (скажем так) своего пребывания в этом месте. Если яркость упала – он продолжит поиски. Если аккумуляторы сели так, что больше не смогут передвигать/питать робота – то реле переключится и соединит “экстренную” батарею со светодиодом – это будет сигналом, что робот разрядился.

По идеи, робот будет работать так (в комнате с единственным источником света – окно с выходом на глухую стену (т.е. звёзд и луны не видно)):
Всю ночь он будет искать источник света (если найдёт - остановиться)
Утром он либо переместиться к окну, либо у него и будет стоять (см. про ночь)
До того момента, когда солнце будет закатываться – он будет смирно стоять у окна.
Когда солнце будет уже давать меньше света – он снова начнёт искать свет…….

P.S.- было бы неплохо ещё прописать, что при возобновлении поисков света расстояние, которое будет проезжать робот будет зависеть от того, насколько сильно вдруг изменилась яркость, но сначала мне хотя бы это сделать…

--> ПРОШУ помочь мне в осуществлении этого проекта – в начале поста всего два пункта, в которых мне нужна помощь. Буду очень рад помощи. :)

Сообщение # 1 22.07.08 - 18:21:20

Aist35

интересующийся ботами



Данные профиля



Статистика:
Тем создано: 0
Сообщений: 15
Репутация: 30 ±
Нарушения: 0

Интересная задумка ... Не до конца конечно ясно зачем он вам ... но тем неменее интересно ... Чем сможем поможем... пока будем думать :)

Сообщение # 2 23.07.08 - 07:23:55

Aist35

интересующийся ботами



Данные профиля



Статистика:
Тем создано: 0
Сообщений: 15
Репутация: 30 ±
Нарушения: 0

Только еще вопро ..не лучше ли искать и в поиске опираться на градиент света???

Сообщение # 3 23.07.08 - 07:25:28

GrayHunter

G
гость-робототехник

а что это? яркость?

Сообщение # 4 23.07.08 - 08:35:36

GrayHunter

G
гость-робототехник

ДОПОЛНЕНИЕ:
Забыл дописать в свою логическую схему ИК-локатор, чтобы он не врезался в стены и даже уворачивался от идущих людей. Если не сложно - его тоже допишите плиз. ИК-локатор, например, как тут http://homorobot.narod.ru/teach/rober/rober.html ( http://homorobot.narod.ru/teach/rober/rober.html )

ДОПОЛНЕНИЕ 2:
Вот логическая схема для локатора, работающего одновременно с основной схемой, но имеющая приоритет:
1. Постоянно должен работать ИК-локатор (или иной – какой посоветуете) и, если:
1.1 Ничего нет в поле действия (например сантиметров 20), то никак не реагировать на это отсутствие чего-либо – перейти к пункту № 1
1.2 Если что-то появилось – перейти к пункту №2
2. Запомнить расстояние до объекта
3. Сверить полученное расстояние через полсекунды с тем, которое было запомнено в пункте № 2, и если:
3.1 Объект пропал – перейти к пункту № 1
3.2 Расстояние не изменилось – перейти к пункту № 3
3.3 Расстояние увеличилось – перейти к пункту № 2
3.4 Расстояние сократилось быстрее, чем скорость робота (т.е. объект двигается к роботу) – перейти к пункту № 4
3.5 Расстояние сократилось со скоростью робота (т.е. объект стоит) – перейти к пункту № 6
4. Повернуть направо на 90 градусов и прибавить к запланированному расстоянию 50 сантиметров
5. Перейти к пункту 2
6. Повернуть направо на 90 градусов
7. Запомнить расстояние до объекта
8. Продолжить двигаться на запланированное расстояние, и если:
8.1 Запланированное расстояние пройдено – перейти к пункту № 2
8.2 Объект исчез – перейти к пункту № 9
8.3 Расстояние не изменилось – перейти к пункту № 8
8.4 Расстояние увеличилось – перейти к пункту № 7
8.5 Расстояние сократилось быстрее, чем скорость робота (т.е. объект двигается к роботу) – перейти к пункту № 4
8.6 Расстояние сократилось со скоростью робота (т.е. объект стоит) – перейти к пункту № 6
9. Повернуть на 90 градусов налево
10. Продолжить двигаться на запланированное расстояние
11. Перейти к пункту № 1

Сообщение # 5 23.07.08 - 08:37:11

Aist35

интересующийся ботами



Данные профиля



Статистика:
Тем создано: 0
Сообщений: 15
Репутация: 30 ±
Нарушения: 0

Нет ... под градиентом я понимал вектор наибольшего роста некоторой функции ... ну тоесть если робот двигается в комнате с одним источником света то сначала ему надо происледовать некоторую локальную область пола ... например проехаться по восьмиугольнику .... для того что бы понять в какомнаправлени яркость света начинает возростать !!!
2 3
1 4
8 5
7 6

если условный 8-ми угольник промаркировать .. и узнать что при движении из точки 3 в точку 4 свет возростал а из точки 7 в 8 падал ... то дальнейшее движение надо продолжать опираясь на направлнеие 3-4 так как именно вэтом направлении предположительно находится источник света.... вот! ...

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

Сообщение # 6 23.07.08 - 11:27:45

Aist35

интересующийся ботами



Данные профиля



Статистика:
Тем создано: 0
Сообщений: 15
Репутация: 30 ±
Нарушения: 0

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

перерисую ....

**2**3**
1******4
8******5
**7**6**

Сообщение # 7 23.07.08 - 11:29:44

GrayHunter

G
гость-робототехник

прикольно. да, это стоящая доработка. спасибо.

Правда я не понял причёт тут зеркало, а именно, что в нём плохого? Ну отражается свет из окна, например, от зеркала и попадает на пол - робот вместо того, чтобы довольствоваться рассеяным светом, отражённым от потолка будет стоять и греться (заряжаться) под зеркалом - вроде нет ничего страшного :)
или предлагаемый Вами датчик нЕсколько иначе понимает зеркало (не как "стену", а как ... что?)?

И по поводу рада - мне немного сложнова-то встроить его в основную лог. схему, поэтому, надеюсь, мне в этом тоже помогут, как начинающему...

Ну и по поводу самого кода (т.е. переведённой лог. схемы на язык микроконтроллера) - вопрос всё ещё актуален - жду помощи

Сообщение # 8 23.07.08 - 11:35:52

Aist35

интересующийся ботами



Данные профиля



Статистика:
Тем создано: 0
Сообщений: 15
Репутация: 30 ±
Нарушения: 0

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

Сообщение # 9 23.07.08 - 11:39:40

GrayHunter

G
гость-робототехник

согласен с Вами.

Сможете ли Вы помочь мне такое воплотить (написать код) или это всё же слишком сложно?

Сообщение # 10 23.07.08 - 11:50:59

Aist35

интересующийся ботами



Данные профиля



Статистика:
Тем создано: 0
Сообщений: 15
Репутация: 30 ±
Нарушения: 0

Насчет зеркала ...

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

Насчет кода .... могу попробовать помочь ...все таки программист .. только у мну нету контроллера.. да и програмамтора тоже ...

потому могу сделать набросок который вам потом придейтсья допилять в случае чего :))

Сообщение # 11 25.07.08 - 07:45:32

GrayHunter

G
гость-робототехник

Был бы признателен. :)
Контроллер ATmega8, если Вам это поможет

Сообщение # 12 29.07.08 - 09:37:41
Воздушная подушка (модель) :Предыдущая темаСледующая тема: Просто программатор
Страницы:  1  

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени для обращения к участнику

Смайлы:

Ещё смайлы
Эмодзи
         
Защитный код: (введите цифры, которые на синем фоне)
Ответ на вопрос: (Какой сейчас год?)
   
Powered by WR-Forum Professional © 2.3 UTF-8 beta версия

Хотите видеть на нашем сайте больше статей? Кликните Поделиться в социальных сетях! Спасибо!

Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home/u00372/public_html/ahrefmainlink/mainlink.php on line 79

Обратите внимание полезная информация.