نمايش پست تنها
قديمي ۰۷-۳-۱۳۸۷, ۰۶:۳۷ بعد از ظهر   #5 (لینک دائم)
Siavash Male
Administrator
 
آواتار Siavash
 
تاريخ عضويت: ارديبهشت ۱۳۸۷
محل سكونت: تهران
پست ها: 179
تشكرها: 27
439 تشكر در 108 پست
My Mood: Mehrabon
پيش فرض

دوست عزيز، من قبلاً كمي روي روبات هاي دو پا كار كردم.
يك مثال براتون مي زنم: در حال حاضر در مسابقات روبوكاپ يك ليگ بنام Standard Platform وجود داره. كه در اون روبات هاي دو پاي استانداردي با نام نائو (Nao) وجود دارند. اين روبات ها تا جايي كه يادم هست 20 درجه ي آزادي دارن. بدون شك به خاطر بزرگ بودن فضاي حالت ها با Hard Coding نمي شود براي اين روبات ها به عنوان مثال يك Skill راه رفتن در آورد. براي همين از الگوريتم هاي يادگيري و بهينه سازي براي اين كار بايد استفاده كرد. اما همونطوري كه مي دونيد اين روبات ها بسيار حساس هستند و در هر بار زمين خوردن كمي صدمه ممكن هست ببينند. حالا اين مورد براي روبات هايي كه دست ساز هستند خيلي بيشتر هست چون اكثر اوقات بدنه ندارند و قطعات فيكس نيستند. خيلي بار ها ممكنه به خاطر يك زمين خوردن ساده از كار بيوفتند و زمان زيادي رو براي پيدا كردن ايراد و درست كردن اون صرف كنيد.

خوب حالا راه حل چيست؟ براي روبات هاي نائو چند سيمولاتر مختلف وجود داره كه دو تا از اونا تو مسابقات روبوكاپ بكار ميره. مثلاً يكي از اين سيمولاتور ها از موتور فيزيك ODE استفاده مي كنه و با استفاده از اون و اطلاعات دقيق قطعات روبات نائو (مثلاً وزن هر بخش، نوع موتور ها و ...) دقيقاً اين روبات رو در يك محيط مجازي شبيه سازي كردن. ما از اين سيمولاتور و با استفاده از الگوريتم ژنتيك و سري فوريه و يك سري قوانين براي محدود كردن فضا به اين روبات راه رفتن ياد داديم. يعني روبات به قدري زمين خورد تا بالاخره ياد بگيره راه بره. نتيجه ي نهايي تعدادي سري فوريه بود كه سرعت زاويه اي هر موتور در هر لحظه را تعيين مي كرد. كه قابل اجرا روي پروسسور هاي ضعيف هست. (سري فوريه جمع چند تا سينوس با ضريب هاي مختلف هست)

خوب براي شبكه هاي عصبي هم همينطور هست. شما ابتدا با سيمولاتور شبكه ي عصبي رو آموزش مي ديد. در نهايت يك سري وزن براي هر نورون بدست مياد. ساده ترين حالت شبكه را در نظر مي گيريم. به عنوان مثال در يك شبكه ي پرسپترون چند لايه. فرض كنيد در مجموع 20 نورون داشته باشيم. هر نورون يك وزني پيدا كرده در فرآيند آموزش. خوب حالا با توجه به شبكه ي پرسپترون مي تونيم با يك سري if و ضرب و جمع به خروجي اون دست پيدا كنيم.
اگر Perceptron رو داخل اينترنت جستجو كنيد نتايج خوبي مي گيريد. توضيح كوتاهي از اون رو در مقدمه اي بر شبكه ي عصبي مي تونيد پيدا كنيد. مي بينيد كه اجراي پرسپترون خيلي سخت نيست. كافيه ورودي هر نورون رو در وزنش جمع كنيد. در صورتي كه از Threshold بيشتر بود اين نورون خروجي داشته باشه و در غير اين صورت خروجي نداشته باشه! كه اين كار كاملا در AVR قابل انجام هست.
حالا اگر شبكه ي عصبي شما پرسپترون نباشه و پيچيده تر باشه بايد الگوريتم اجراي اون شبكرو ياد بگيريد. پس براي آموزش اون مي تونيد مثلاً از Matlab استفاده كنيد و خروجي و نحوه ي اجراي اون رو فقط داخل AVR داشته باشيد.
__________________
Siavash آفلاين است   پاسخ با نقل قول
از Siavash تشكر كرده است:
ebtehaj (۱۰-۴-۱۳۹۰)