Покажи участието

От тук може да видиш всички публикации на този потребител.


Публикации - cech

Страници: [1]
1
Общ форум / Re: Автопилот за бъги
« -: Януари 09, 2016, 05:15:04 pm »
Отговорът на въпроса ти зависи от много неща, но накратко - само с GPS - не.
GPS има точност от няколко метра. Ако бъгито трябва да следва тесен път (даже да е 4-5 метра широк), няма да може да се задържи на него само с данните от GPS.
За да работи идеята ти, първо трябва да се определи какви точно са условията при които ще действа бъгито и какви сензори ще се нужни за да се превъзмогнат препятствията.
Сега ще изредя част от вариантите:
1. Каква е настилката? Асвалт? Черен път? Трева? Офроуд? На асвалт или подобна настилка изпълнението ще бъде най-лесно, защото няма да е нужно да се взима в предвид кална/хлъзгава настилка (бъгито няма да забуквува или затъне в кал). Бабуни, камъни, дупки или други препятствия които бъгито трябва да избягваще те принудят да използваш допълнителни сензори и ще усложнят програмирането.
2.Ще има ли хора, деца, животни или други превозни средства по трасето?
3.Ще има ли "шофьор" на бъгито, който при необходимост да поеме управлението?
4. Колко автономо трябва да е бъгито? Само ще кара и при необходимост ще отива да се зарежда? При повреда или неочаквано положение какво ще направи бъгито? Колко често и при какви условия ще се намесва човек?

При нещата коит ти си описал бих предложил следното решение като най-лесно, бързо и евтино:
1.Трасето по което се движи бъгито да е асвалтирано (или друга твърда равна настилка)
2.Достъпът на хора и животни до трасето да е ограничен (оградено с ограда)
3.Трасетата да не се къстосват (без кръстовища) за да се избргне конфликт с други бъгита по трасето
4.Бъгито да се насочва по бяла (или друг ярък контрастен цвят) линия нарисувана на асвалта. Перпендикулярни линии по трасето могат да означават спирки и бъгито просто да брои колко спирки е изминало и да спре на тази на която е зададено.

Последно - това звучи като сложен проект с потенциала за нараняване на хора (тежки, мощни бъгита без шофьори могат да нанесат много щети ако нещо се абърка) и затова бих казал че е задължително да се направи от компетентен електроинжинер. Труда който ще платиш ще бъде значително по-скъп от материалите, по моя преценка.

2
Електроника / Re: Средна точка на акумолатор ?
« -: Февруари 23, 2015, 09:26:40 pm »
+5 волта и +12 волта е лесно (12 ги имаш директно от акумулатора). за 5-те волта можеш да използваш интегрална схема 7805, но само ако е под 1 ампер. ако съм те разбрал правилно и ти трябват +12 и -12 волта, тогава ще ти трябва сравнително сложна верига с интегрална схема с инвертор (бък конвертор най-вероятно). Освен ако не си добре запознат с такъв вид електроника е по-добре да потърсиш сглобен кит.

3
Програмиране / Генетичен алгоритъм
« -: Февруари 14, 2011, 05:32:54 pm »
Ами не съм сигурен точно какво съм изпуснал за да го допълня. Ако обичаш ми кажи.

И допълнително по темата:

http://www.boxcar2d.com

Генетичен алгоритъм създаващ кола, която да се движи по даден терен. Според мен е много интересно да се наблюдава алгоритъма в действие. На страницата е подробно обяснен начина на работа за това няма да го обяснявам аз. Ще ми бъде интересно да ви чуя отзивите а също така ако някой отдели време и да пусне кода на някоя кола, която е развил.

4
Програмиране / Генетичен алгоритъм
« -: Февруари 01, 2011, 10:05:39 pm »
Здравейте на всички,

новобранец съм във форума, но имам значително количество теоретични знания по роботика. За съжаление нямам време и ресурси все още за да практикувам това занимание. Началото на това лято ми дойде идея да си направя самообучаващ се робот. В началото си мислих да е на принципа "brute force" - с проба и грешка просто да запомни всяка отделна ситуация в която попадне и най-доброто действие в тази ситуация. Този метод е много добър за прости роботи с малко сензори и мотори,  но за по сложен робот е безсмислено да се използва поради факта че ще отнеме прекалено много време за обучаването му. Също така при този метод роботът не може да взима правилни решения при ситуации, в които не е попадал, независимо дали те са много близки до други ситуации в които е попадал. По-късно, във форума намерих тема относно невронни мрежи. Не ги разбрах напълно но ми харесаха като решение за самообучаващ се робот. Невронните мрежи могат да приемат информация от множество сензори и могат да контролират множество мотори при неограничен брой ситуации. Един от недостатъците на невронните мрежи обаче, е трудното им програмиране. За мен лично, а предполагам и за останалите от вас е трудно и неестествено да се мъчим да разберем точно какви тежести трябва да се дадат на всеки неврон за да сработи всичко както трябва. И в този момент на помощ идват генетичните алгоритми за които ще говоря от сега нататък.

Генетичния алгоритъм се използва за оптимизация. За какво? За всичко което може да бъде обективно изчислено колко е "добро". Говорим всичко от рода на дизайна на кола (аеродинамика, окачване и т.н.), дизайна на антена, програмиране на невронна мрежа за ходещ робот, разпознаване на изображения и всичко друго което можете да измислите. Същността на този алгоритъм се базира на теорията за биологична еволюция на Дарвин. Нашата програма ще се развива и размножава виртуално във нашият компютър. Преди за започнем да програмираме трябва първо да разясня няколко термина:

1. Организъм

Организъм ще наричаме набор от променливи, които ние искаме да подобрим. Това също може да се нарече геном, защото носи информацията на организма. Тези променливи могат да бъдат различни неща - тежести в невронна мрежа (за оптимизация на поведението на робот) или някакви размери или ъгли във дизайна на този робот (големина на гуми, твърдост на амортисьори и т.н.). Тези променливи се задават на случаен принцип в началото на изпълнението на алгоритъма или могат да бъдат въведени ръчно ( например сте се спрели на общ дизайн и само искате да го подобрите).
Тези и променливи като истински жив организъм са подложени на мутации ,размножаване и кръстосване,за които ще говоря по нататък.

2.Популация

Популацията е просто един сбор от организми. Колкото по-голяма е популацията толкова по-добър резултат ще имаме, но и също така всичко ще става по-бавно. Горна граница на популацията няма но засега не съм виждал някой да ползва повече от 10 000 организма в популация. Най-малко трябва да имаме два организма в популация, като единия може да бъде родител а другия дете (единия е от едно поколение а другия от следващото)

3.Мутация

Мутацията е случайна промяна в някоя от променливите в генома на организма. Мутацията не бива да бъде твърде голяма, защото може да навреди на организма и драстично да влоши неговото качество. Колкото е по- малък размерът на мутацията толкова по-съвършен и оптимизиран ще бъде той. При липса на мутации ще се постигне едно равновесно положение в популацията като всички организми ще бъдат абсолютно еднакви и в доста от случаите далеч от състоянието в което искаме да бъдат. Няма строго определена формула по-която да определим колко големи по размер трябва да бъдат мутациите. По принцип е добре да се започне с малко по-голяма стойност на мутациите за да се пести време и с наближаване на желания от нас резултат размерът на мутациите да се намали.

4.Размножаване или кръстосване

Размножаването или кръстосването е една много важна. Ако се сбърка начина на кръстоска между организмите, могат да се получат "изроди"- несъвместими променливи в генома. Има няколко начина по които можем да размножаваме организмите, като всеки си има своите силни и слаби страни. Разделят се на два основни дяла- сексуално и асексуално. При асексуалното размножаване няма полове, организмите се размножават като бактерии- създава се абсолютно копие на майчиния организъм, след което се прави малка промяна в генома (мутация). Асексуалният начин за размножаване е най-лесният и сигурен , но също така най-бавният. Сега ще дам пример за асексуално размножаване: имаме следния геном в който има няколко променливи-тежести в невронна мрежа (00110110). За да се размножи този организъм правим негово копие, след което добавяме случайна мутация (0011110). При сексуалното размножаване ни трябват два организма. Има няколко начина да кръстосаме геномите на два организма: да вземем минимална , максимална или средно аритметична стойност от променливите в двата майчини организма и да ги пренесем в дъщерния. Пример за максимално кръстосване: имаме следните два генома (21, 2, 15,77) и (18, 44, 6, 56) и получаваме следния дъщерен организъм (21, 44, 15, 77). Друг метод за кръстоска е да вземем началото на първият организъм и края на втория и да ги свържем. Можем да вземем по 50% от всеки от двата майчини оргаизма но може да бъде и в друго отношение. В следващия пример ще демонстрирам този вид кръстосване с отношение 30/70. Имаме следните два майчини организма (00110111011) и (1110001011), получаваме следните два дъщерни организма: (0010001011) и (11110111011). Сексуалното размножаване е много по-бързо и ефективно от асексуалното , но ако не го използваме по правилният начин има значителен шанс да се получат неблагоприятни грешки. Сексуално размножаване на максимален, минимален или средно аритметичен принцип не е желателно когато работим с двоичен геном. По-добър вариант е взимането на една част от всеки родител (последният пример) или асексуално размножаване. При асексуалното размножаване е необходимо при всяко размножаване да има мутация (няма смисъл иначе, просто създаваме клонинг- нито по-добър, нито по-лош), а при сексуалното размножаване може да внасяме мутации по- нарядко, например на всеки десети организъм.
При сексуалното размножаване е добра идея , не задължително да подберем два организма които си приличат, за да се намали риска от грешка при размножаването.

5.Фитнес

Фитнесът е също много важна част от генетичния алгоритъм. Фитнесът определя колко добре даден организъм върши своята задача. Той се определя от нас и чрез него задаваме какъв точно искаме да е крайния резултат. Фитнесът трябва да е измерима величина, тоест не можем да зададем параметри като красота или др. Например за един крачещ робот можем да зададем фитнес като: колко време стои прав преди да падне, колко разстояние изминава, колко бързо го изминава, колко високо скача, колко ефективно ходи и др. Фитнесът може да се изчислява и като сбор от изброените досега. За да може да се определи фитнесът трябва да направим симулация на организмът в работа. За това ни трябва симулатор за роботи или подобен софтуер. Възможно е и да проведем тестовете в реалният свят но там ни трябва повече време и усилие, свързано с наблюдаването на робота докато изпълнява алгоритъма (ако имаме крачещ робот ще е нужно да го изправяме след всеки опит).

Та какво точно става за да проработи генетичния алгоритъм.Първо задаваме какви ще са променливите на генома (организма). След това определяме фитнес формулата. Задаваме случайни начални стойности на генома. Минаваме всеки организъм през фитнес теста и отделяме най-добрите. Кръстосваме и размножаваме най добрите. Добавяме мутации. Повтаряме процеса (без случайните начални стойности на геномите) докато получим желаният резултат.
Това е основата на генетичния алгоритъм. Призовавам всички които имат въпроси да ме питат, а ако някои види ,че съм пропуснал нещо да го отбележи.Също така ще помоля да ми препоръчате някаква среда за симулация (искам да си направя ходещ робот) защото до сега не съм имал удоволствието да изпробвам някой от тези алгоритми.

Сега ще представя и няколко примерни клипа от YouTube за генетични алгоритми:

Симулация на ходещ робот, която е ползвана в новата GTA 4:
http://www.youtube.com/watch?v=lSG--GY2p2o

Еволюция на часовник:
http://www.youtube.com/watch?v=mcAq9bmCeR0

5
Други роботи / Самообучаващ се робот
« -: Август 22, 2010, 12:25:03 am »
Здравей, много съм заинтригуван от проекта ти! И аз смятам да направя нещо подобно като си купя ардуиното. Имам няколко идеи , които се нядавам че ще ти бъдат от полза:

1. Вместо да награждаваш робота за положително действие (да увеличаваш процентите) , ги намалявай при негативно действие. По този начин се избягва това гадно зацикляне при дадени ситуации. Например: датчиците отчитат 0000000 (няма препядствиа наоколо). това значи че напрактика няма действие, което да довед до сбъсък . Затова ако го награйдаваш за полойително действие в този случай, робота ще затвърди първото действие което направи (и ако е завой на 180 градуса става кофти). Вместо това го наказвай за негативни действя- по този начин в отворено пространство, вероятността да направи което и да е от осемте действия се запазва равна (12.5%). Като направи действие, което да доведе до сблъсък, просто изваждаш 7% (примерно) от това действие в тази ситуация и добавяш по 1% за всички други.


2. Това предложение може да се стори на някои като мамене ,но всеки със собственото си мнение!!!
Вместо в началото вероятността за всички действия да е еднаква (12.5%) ,да се увеличи вероятността за движение напред, за сметка на 180 градусовия завой (защото напрактика няма как да се блъсне в нищо при този завой, и тъй като взимаме проценти само при негативно действие, в крайна сметка завоя на 180 градуса може да се окаже "най-доброто" (според робота) действие).А като увеличим процентите за действието придвижване напред , теоритично ще  усигорим по целенасочено движение , а не просто хаотично движение.

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

6
във училище уча С++ но още не мога да различа С и С++.
на какъв взик се програмират микроконтролерите (С или С++).
копирах един от кодовете за мигащ светлодиод и го компилирах но ми дава грешка още при библиотеките.в началото ,при създаването на файла го давам "source file"
знам че въпросите ми могат да звучат тапо но съм нов в тази област и ми трябва помощ.
Благодаря!

7
и все пак моля ви обяснете ми точно как се определя дали робота ще следи светлината или ще бяга от нея.
това ми е първият проект и много бих искал да получа задоволителен резултат.
ако имате някакви препоръки моля кажете ги!!!!
 :sos:

8
днес ми доставиха една L293D и 5 фотодиода http://www.tpetrov.com/search.php?s=%F4%EE%F2%EE%E4%E8%EE%E4 (тези от 20 ст.) и имам няколко въпроса:
1.внимателно прочетох трите части на темата и във втора част неразбрах точно как да накараме робота да "търси" или да "бяга" от светлината (нещо там с подаване на напрежение към някакви крачета... :?:
2. дали тези фододиоди ми вършат работа (~200к ома на светло и ~1000к ома на тъмно)
3.дали ще е възможно вместо R1 и R2 се постави тример (потенциомер) с цел промяна на чувствителността (ако е твърде светло или тварде тъмно)


(офтопик)смятам да напрявя робота от трета част обаче тип къртица за да избягва препядствия.

Страници: [1]