roboforum.ru

Технический форум по робототехнике.

 

"Robbe"

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Re: "Robbe"

Сообщение space » 11 окт 2009, 23:07

Чтож на ютуб по каким то не понятным причинам видео не грузится, поэтому загрузил на ютубру. ТОЛЬКО ЗВУК ЗАРАНЕЕ ВЫКЛЮЧИТЕ. Почему то после загрузки вместо звука шум.
http://rutube.ru/tracks/2478545.html?v= ... 235a93b5d1
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: "Robbe"

Сообщение pashteet » 12 окт 2009, 09:22

Выглядит прелесно :D

Еще бы чуть чуть по плавнее сделать и вообще будет айс :twisted:
Аватара пользователя
pashteet
 
Сообщения: 930
Зарегистрирован: 28 авг 2009, 12:50
Откуда: Волжский
Skype: pashok0988
ФИО: Павел Петрович

Re: "Robbe"

Сообщение galex1981 » 12 окт 2009, 10:14

Молодец!
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: "Robbe"

Сообщение space » 12 окт 2009, 15:14

pashteet писал(а):Выглядит прелесно :D

Еще бы чуть чуть по плавнее сделать и вообще будет айс :twisted:

и так плавно. просто скорость побольше сделал.

вот думаю стоит ещё ставить дальномеры для определения препятствия или можно всё таки до идеала довести один дальномер на серве :idea: :?:
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: "Robbe"

Сообщение space » 30 янв 2010, 01:51

Народ мож кто идейку подкинет . Уже всю голову сломал :o как лучше будет управлять 3-мя дальномерами работающих на объезд препятствий. Значит 3 датчика зафиксировано на платформе один прямо другие направлены вправо и влево под углом 45. Один на подвижной туреле(движения влево-вправо, вверх-вниз, но он скорей всего будет на измерения расстояния работать, поэтому по возможности его не трогаем). С боковым всё понятно препятствие слева поворачиваем вправо и т.д. А как быть с центральным. Допустим ножка стула, не делать же отъезд назад чтоб робот поехал снова вперёд и наткнулся на эту ножку снова. А разворот лишь в одну сторону не то. Если есть идеи внимательно слушаю
Вложения
CIMG2816.JPG
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: "Robbe"

Сообщение vadinator » 30 янв 2010, 02:50

Можно ввести несколько переменных (типа память :wink: ) и использовать результаты накопленных в них событий... сколько до этого было поворотов направо или налево.... сколько пройдено расстояния вообще и от последнего поворота...например: если последний поворот был налево и пройдено большое расстояние (например по времени) то поворот налево ещё раз, так как впереди скорее всего стена... :crazy: ну или, как то так...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: "Robbe"

Сообщение space » 30 янв 2010, 15:09

Во спасиб, навёл на нужные мысли :wink: . Ну несколько не обязательно достаточно одной будет. Можно попробовать сделать переменную которая будет изменяться. Типо первый раз перед сабой видит стену, поворачивает влево и изменяет переменную с 0 на 1. А в след. раз когда увидит препятствие уже будет проверять чему равна данная переменная если 0, значит влево, если 1 значит вправо, затем обнуляем переменную.
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: "Robbe"

Сообщение vadinator » 30 янв 2010, 23:50

Идея была пошире конечно...но принцип один, использование памяти. Причём я думаю, что зацикливаться на бинарных ячейках не стоит. Гораздо интересней использовать несколько ячеек, увеличивая значение одной из них, при наступлении события, а затем сравнивать накопленные события и выбирать действия. При достижении заполнения одной из связанных ячеек (например переменные - количество поворотов направо и к-во налево) делить значения обоих ячеек на 2...не давая им переполнится. И на основе разницы значений в них, "знать" куда мы давно не поворачивали... лучше если это будет небольшой массив переменных, в которых запоминаются разные события и отдельная ветка программы (возможно вызываемая по таймеру) которая и обрабатывает этот массив, являющийся как-бы "виртуальными датчиками", для основной программы. Такой вот маленький и непредсказуемый мозг :crazy:
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: "Robbe"

Сообщение space » 31 янв 2010, 00:25

То что ты предлагал эт уж оч круто, но говорю на мысли нужные навёл. Пробовал заносить значение переменной в ячейку внешней памяти, но чёт не получилось. Датчик вообще перестал реагировать.
Код: Выделить всёРазвернуть
$regfile = "m16def.dat"
$crystal = 16000000

Config Adc = Single , Prescaler = Auto , Reference = Internal

Config Pind.2 = Output : M1f Alias Portd.2
Config Pind.3 = Output : M1b Alias Portd.3
Config Pind.4 = Output : M2f Alias Portd.4
Config Pind.5 = Output : M2b Alias Portd.5

Enable Interrupts

Dim АЦП As Word , Q As Byte
Q = Inp(&H800)                      'Q равняется ячеки памяти по адресу  &H800 
   
Do

If АЦП >= 500 Then
If Q = 0 Then : Gosub Разворот_вправо : End If
If Q = 1 Then : Gosub Разворот_влево : End If
Else : Gosub Вперёд : End If
Loop

Вперёд:

M1f = 1 : M2f = 1
M1b = 0 : M2b = 0
Return

Разворот_вправо:
Out &H800 , 1  ' записать 1 по адресу &H800
M1f = 1 : M2f = 0
M1b = 0 : M2b = 1
Return

Разворот_влево:
Out &H800 , 0
M1f = 0 : M2f = 1
M1b = 1 : M2b = 0
Return

Сделал по другому и работает :Yahoo!: :
Код: Выделить всёРазвернуть
$regfile = "m16def.dat"
$crystal = 16000000

Config Adc = Single , Prescaler = Auto , Reference = Internal

Config Pind.2 = Output : M1f Alias Portd.2
Config Pind.3 = Output : M1b Alias Portd.3
Config Pind.4 = Output : M2f Alias Portd.4
Config Pind.5 = Output : M2b Alias Portd.5

Enable Interrupts

Dim АЦП As Word , Q As Bit

Q = 0

Do
Start Adc : АЦП = Getadc(2)
If АЦП >= 500 Then : Gosub Отъехать_от_препятствия_спереди : Else : Gosub Вперёд : End If

Loop

Вперёд:
M1f = 1 : M2f = 1
M1b = 0 : M2b = 0
Return

Отъехать_от_препятствия_спереди:
   M1f = 0 : M2f = 0
   M1b = 1 : M2b = 1
   Wait 1

         If Q = 0 Then
      M1f = 1 : M2f = 0
   Else
      M2f = 1 : M1f = 0
   End If
   Wait 1
   If Q = 0 Then
      M2f = 1  : M1f = 0
   Else
      M1f = 1  : M2f = 0
   End If
   'переустанавливаем переменную
   If Q = 0 Then
      Q = 1
   Else
      Q = 0
   End If
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: "Robbe"

Сообщение CiSi » 31 янв 2010, 00:43

Идея наверное древна как сам мир, но, а что если с помощью этих дальномеров сканировать область перед роботом (или да же вокруг него). Потом с помощью "графика" определить где находится ножка стула, и сделать уже вывод куда поворачивать/ехать.
Аватара пользователя
CiSi
 
Сообщения: 972
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: "Robbe"

Сообщение space » 31 янв 2010, 00:47

Ды лан, зачем так всё усложнять. Да и если сканирование нужно, то это можно сделать с помощью одного дальномера, который вращается.
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: "Robbe"

Сообщение CiSi » 31 янв 2010, 00:52

Ну да, для этого и одного дальномера хватило бы. :)
Аватара пользователя
CiSi
 
Сообщения: 972
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: "Robbe"

Сообщение vadinator » 31 янв 2010, 00:53

CiSi писал(а):...а что если с помощью этих дальномеров сканировать область перед роботом (или да же вокруг него)..

интересная мысль! если механика позволит "поводить носом", перед препятствием слева на право :D типа "обнюхать" и решить, что дальше делать :good:
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: "Robbe"

Сообщение CiSi » 31 янв 2010, 01:03

Зачем механике позволять, там же на боте серва стоит с дальномером.
Аватара пользователя
CiSi
 
Сообщения: 972
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: "Robbe"

Сообщение vadinator » 31 янв 2010, 01:15

Я о том, как это могло бы выглядеть с позиции имитации "домашнего животного" :D просто прикольно, обнухал с двух сторон и дальше...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Пред.След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Mail.ru counter